# coding: utf-8

"""
    Marketing API

    <p>The <i>Marketing API </i> offers two platforms that sellers can use to promote and advertise their products:</p> <ul><li><b>Promoted Listings</b> is an eBay ad service that lets sellers set up <i>ad campaigns </i> for the products they want to promote. eBay displays the ads in search results and in other marketing modules as <b>SPONSORED</b> listings. If an item in a Promoted Listings campaign sells, the seller is assessed a Promoted Listings fee, which is a seller-specified percentage applied to the sales price. For complete details, refer to the <a href=\"/api-docs/sell/static/marketing/pl-landing.html\">Promoted Listings playbook</a>.</li><li><b>Promotions Manager</b> gives sellers a way to offer discounts on specific items as a way to attract buyers to their inventory. Sellers can set up discounts (such as \"20% off\" and other types of offers) on specific items or on an entire customer order. To further attract buyers, eBay prominently displays promotion <i>teasers</i> throughout buyer flows. For complete details, see <a href=\"/api-docs/sell/static/marketing/promotions-manager.html\">Promotions Manager</a>.</li></ul>  <p><b>Marketing reports</b>, on both the Promoted Listings and Promotions Manager platforms, give sellers information that shows the effectiveness of their marketing strategies. The data gives sellers the ability to review and fine tune their marketing efforts.</p><p><b>Store Email Campaign</b> allows sellers to create and send email campaigns to customers who have signed up to receive their newsletter. For more information on email campaigns, see <a href=\"/api-docs/sell/static/marketing/store-email-campaigns.html#email-campain-types\" target=\"_blank\">Store Email Campaigns</a>.<p class=\"tablenote\"><b>Important!</b> Sellers must have an active eBay Store subscription, and they must accept the <b>Terms and Conditions</b> before they can make requests to these APIs in the Production environment. There are also site-specific listings requirements and restrictions associated with these marketing tools, as listed in the \"requirements and restrictions\" sections for <a href=\"/api-docs/sell/marketing/static/overview.html#PL-requirements\">Promoted Listings</a> and <a href=\"/api-docs/sell/marketing/static/overview.html#PM-requirements\">Promotions Manager</a>.</p> <p>The table below lists all the Marketing API calls grouped by resource.</p>  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class CampaignDTO(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 = {
        'audiences': 'list[CampaignAudience]',
        'creation_date': 'str',
        'email_campaign_id': 'str',
        'email_campaign_status': 'str',
        'email_campaign_type': 'str',
        'marketplace_id': 'str',
        'modification_date': 'str',
        'schedule_date': 'str',
        'schedule_date_type': 'str',
        'sent_date': 'str',
        'subject': 'str'
    }

    attribute_map = {
        'audiences': 'audiences',
        'creation_date': 'creationDate',
        'email_campaign_id': 'emailCampaignId',
        'email_campaign_status': 'emailCampaignStatus',
        'email_campaign_type': 'emailCampaignType',
        'marketplace_id': 'marketplaceId',
        'modification_date': 'modificationDate',
        'schedule_date': 'scheduleDate',
        'schedule_date_type': 'scheduleDateType',
        'sent_date': 'sentDate',
        'subject': 'subject'
    }

    def __init__(self, audiences=None, creation_date=None, email_campaign_id=None, email_campaign_status=None, email_campaign_type=None, marketplace_id=None, modification_date=None, schedule_date=None, schedule_date_type=None, sent_date=None, subject=None):  # noqa: E501
        """CampaignDTO - a model defined in Swagger"""  # noqa: E501
        self._audiences = None
        self._creation_date = None
        self._email_campaign_id = None
        self._email_campaign_status = None
        self._email_campaign_type = None
        self._marketplace_id = None
        self._modification_date = None
        self._schedule_date = None
        self._schedule_date_type = None
        self._sent_date = None
        self._subject = None
        self.discriminator = None
        if audiences is not None:
            self.audiences = audiences
        if creation_date is not None:
            self.creation_date = creation_date
        if email_campaign_id is not None:
            self.email_campaign_id = email_campaign_id
        if email_campaign_status is not None:
            self.email_campaign_status = email_campaign_status
        if email_campaign_type is not None:
            self.email_campaign_type = email_campaign_type
        if marketplace_id is not None:
            self.marketplace_id = marketplace_id
        if modification_date is not None:
            self.modification_date = modification_date
        if schedule_date is not None:
            self.schedule_date = schedule_date
        if schedule_date_type is not None:
            self.schedule_date_type = schedule_date_type
        if sent_date is not None:
            self.sent_date = sent_date
        if subject is not None:
            self.subject = subject

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

        The audiences that the email campaign is being sent to. See <a href=\"/api-docs/sell/marketing/types/api:AudienceTypeEnum\">AudienceTypeEnum</a> for a list of audience types.  # noqa: E501

        :return: The audiences of this CampaignDTO.  # noqa: E501
        :rtype: list[CampaignAudience]
        """
        return self._audiences

    @audiences.setter
    def audiences(self, audiences):
        """Sets the audiences of this CampaignDTO.

        The audiences that the email campaign is being sent to. See <a href=\"/api-docs/sell/marketing/types/api:AudienceTypeEnum\">AudienceTypeEnum</a> for a list of audience types.  # noqa: E501

        :param audiences: The audiences of this CampaignDTO.  # noqa: E501
        :type: list[CampaignAudience]
        """

        self._audiences = audiences

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

        The date and time that the email campaign was created, given in UTC format.  # noqa: E501

        :return: The creation_date of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._creation_date

    @creation_date.setter
    def creation_date(self, creation_date):
        """Sets the creation_date of this CampaignDTO.

        The date and time that the email campaign was created, given in UTC format.  # noqa: E501

        :param creation_date: The creation_date of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._creation_date = creation_date

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

        The unique eBay identifier for the email campaign assigned automatically when the email campaign is created.  # noqa: E501

        :return: The email_campaign_id of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._email_campaign_id

    @email_campaign_id.setter
    def email_campaign_id(self, email_campaign_id):
        """Sets the email_campaign_id of this CampaignDTO.

        The unique eBay identifier for the email campaign assigned automatically when the email campaign is created.  # noqa: E501

        :param email_campaign_id: The email_campaign_id of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._email_campaign_id = email_campaign_id

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

        The email campaign status. See <a href=\"/api-docs/sell/marketing/types/api:EmailCampaignStatusEnum\">EmailCampaignStatusEnum</a> for information on statuses. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:EmailCampaignStatusEnum'>eBay API documentation</a>  # noqa: E501

        :return: The email_campaign_status of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._email_campaign_status

    @email_campaign_status.setter
    def email_campaign_status(self, email_campaign_status):
        """Sets the email_campaign_status of this CampaignDTO.

        The email campaign status. See <a href=\"/api-docs/sell/marketing/types/api:EmailCampaignStatusEnum\">EmailCampaignStatusEnum</a> for information on statuses. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:EmailCampaignStatusEnum'>eBay API documentation</a>  # noqa: E501

        :param email_campaign_status: The email_campaign_status of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._email_campaign_status = email_campaign_status

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

        The email campaign type. See <a href=\"/api-docs/sell/marketing/types/api:CampaignTypeEnum\">CampaignTypeEnum</a> for definitions of email campaign types. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:CampaignTypeEnum'>eBay API documentation</a>  # noqa: E501

        :return: The email_campaign_type of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._email_campaign_type

    @email_campaign_type.setter
    def email_campaign_type(self, email_campaign_type):
        """Sets the email_campaign_type of this CampaignDTO.

        The email campaign type. See <a href=\"/api-docs/sell/marketing/types/api:CampaignTypeEnum\">CampaignTypeEnum</a> for definitions of email campaign types. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:CampaignTypeEnum'>eBay API documentation</a>  # noqa: E501

        :param email_campaign_type: The email_campaign_type of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._email_campaign_type = email_campaign_type

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

        The eBay marketplace where the email campaign is active.  # noqa: E501

        :return: The marketplace_id of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._marketplace_id

    @marketplace_id.setter
    def marketplace_id(self, marketplace_id):
        """Sets the marketplace_id of this CampaignDTO.

        The eBay marketplace where the email campaign is active.  # noqa: E501

        :param marketplace_id: The marketplace_id of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._marketplace_id = marketplace_id

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

        The date and time the email campaign was last modified, given in UTC format.  # noqa: E501

        :return: The modification_date of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._modification_date

    @modification_date.setter
    def modification_date(self, modification_date):
        """Sets the modification_date of this CampaignDTO.

        The date and time the email campaign was last modified, given in UTC format.  # noqa: E501

        :param modification_date: The modification_date of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._modification_date = modification_date

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

        The date and time that the email campaign newsletter is scheduled to send, given in UTC format.  # noqa: E501

        :return: The schedule_date of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._schedule_date

    @schedule_date.setter
    def schedule_date(self, schedule_date):
        """Sets the schedule_date of this CampaignDTO.

        The date and time that the email campaign newsletter is scheduled to send, given in UTC format.  # noqa: E501

        :param schedule_date: The schedule_date of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._schedule_date = schedule_date

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

        The schedule type used for sending the email campaign. See <a href=\"/api-docs/sell/marketing/types/api:ScheduleDateTypeEnum\">ScheduleDateTypeEnum</a> for available schedule types. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:ScheduleDateTypeEnum'>eBay API documentation</a>  # noqa: E501

        :return: The schedule_date_type of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._schedule_date_type

    @schedule_date_type.setter
    def schedule_date_type(self, schedule_date_type):
        """Sets the schedule_date_type of this CampaignDTO.

        The schedule type used for sending the email campaign. See <a href=\"/api-docs/sell/marketing/types/api:ScheduleDateTypeEnum\">ScheduleDateTypeEnum</a> for available schedule types. For implementation help, refer to <a href='https://developer.ebay.com/api-docs/sell/marketing/types/api:ScheduleDateTypeEnum'>eBay API documentation</a>  # noqa: E501

        :param schedule_date_type: The schedule_date_type of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._schedule_date_type = schedule_date_type

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

        The date and time that the email campaign was last sent, given in UTC format.  # noqa: E501

        :return: The sent_date of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._sent_date

    @sent_date.setter
    def sent_date(self, sent_date):
        """Sets the sent_date of this CampaignDTO.

        The date and time that the email campaign was last sent, given in UTC format.  # noqa: E501

        :param sent_date: The sent_date of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._sent_date = sent_date

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

        The email campaign subject line..  # noqa: E501

        :return: The subject of this CampaignDTO.  # noqa: E501
        :rtype: str
        """
        return self._subject

    @subject.setter
    def subject(self, subject):
        """Sets the subject of this CampaignDTO.

        The email campaign subject line..  # noqa: E501

        :param subject: The subject of this CampaignDTO.  # noqa: E501
        :type: str
        """

        self._subject = subject

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

        return self.__dict__ == other.__dict__

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