# coding: utf-8

"""
    Metadata API

    The Metadata API has operations that retrieve configuration details pertaining to the different eBay marketplaces. In addition to marketplace information, the API also has operations that get information that helps sellers list items on eBay.  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class ShippingService(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 = {
        'description': 'str',
        'international_service': 'bool',
        'max_shipping_time': 'int',
        'min_shipping_time': 'int',
        'package_limits': 'PackageLimits',
        'shipping_carrier': 'str',
        'shipping_category': 'str',
        'shipping_cost_types': 'list[str]',
        'shipping_service': 'str',
        'valid_for_selling_flow': 'bool'
    }

    attribute_map = {
        'description': 'description',
        'international_service': 'internationalService',
        'max_shipping_time': 'maxShippingTime',
        'min_shipping_time': 'minShippingTime',
        'package_limits': 'packageLimits',
        'shipping_carrier': 'shippingCarrier',
        'shipping_category': 'shippingCategory',
        'shipping_cost_types': 'shippingCostTypes',
        'shipping_service': 'shippingService',
        'valid_for_selling_flow': 'validForSellingFlow'
    }

    def __init__(self, description=None, international_service=None, max_shipping_time=None, min_shipping_time=None, package_limits=None, shipping_carrier=None, shipping_category=None, shipping_cost_types=None, shipping_service=None, valid_for_selling_flow=None):  # noqa: E501
        """ShippingService - a model defined in Swagger"""  # noqa: E501
        self._description = None
        self._international_service = None
        self._max_shipping_time = None
        self._min_shipping_time = None
        self._package_limits = None
        self._shipping_carrier = None
        self._shipping_category = None
        self._shipping_cost_types = None
        self._shipping_service = None
        self._valid_for_selling_flow = None
        self.discriminator = None
        if description is not None:
            self.description = description
        if international_service is not None:
            self.international_service = international_service
        if max_shipping_time is not None:
            self.max_shipping_time = max_shipping_time
        if min_shipping_time is not None:
            self.min_shipping_time = min_shipping_time
        if package_limits is not None:
            self.package_limits = package_limits
        if shipping_carrier is not None:
            self.shipping_carrier = shipping_carrier
        if shipping_category is not None:
            self.shipping_category = shipping_category
        if shipping_cost_types is not None:
            self.shipping_cost_types = shipping_cost_types
        if shipping_service is not None:
            self.shipping_service = shipping_service
        if valid_for_selling_flow is not None:
            self.valid_for_selling_flow = valid_for_selling_flow

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

        This field returns the localized name of the shipping service.  # noqa: E501

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

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

        This field returns the localized name of the shipping service.  # noqa: E501

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

        self._description = description

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

        A value of <code>true</code> indicates that the shipping service is international. An international shipping service option is required if an item is being shipped from one country (origin) to another (destination).  # noqa: E501

        :return: The international_service of this ShippingService.  # noqa: E501
        :rtype: bool
        """
        return self._international_service

    @international_service.setter
    def international_service(self, international_service):
        """Sets the international_service of this ShippingService.

        A value of <code>true</code> indicates that the shipping service is international. An international shipping service option is required if an item is being shipped from one country (origin) to another (destination).  # noqa: E501

        :param international_service: The international_service of this ShippingService.  # noqa: E501
        :type: bool
        """

        self._international_service = international_service

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

        This value indicates the maximum number of business days that it takes the <b>shippingCarrier</b> to ship an item using the corresponding <b>shippingService</b>.   # noqa: E501

        :return: The max_shipping_time of this ShippingService.  # noqa: E501
        :rtype: int
        """
        return self._max_shipping_time

    @max_shipping_time.setter
    def max_shipping_time(self, max_shipping_time):
        """Sets the max_shipping_time of this ShippingService.

        This value indicates the maximum number of business days that it takes the <b>shippingCarrier</b> to ship an item using the corresponding <b>shippingService</b>.   # noqa: E501

        :param max_shipping_time: The max_shipping_time of this ShippingService.  # noqa: E501
        :type: int
        """

        self._max_shipping_time = max_shipping_time

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

        This value indicates the minimum number of business days that it takes the <b>shippingCarrier</b> to ship an item using the corresponding <b>shippingService</b>.   # noqa: E501

        :return: The min_shipping_time of this ShippingService.  # noqa: E501
        :rtype: int
        """
        return self._min_shipping_time

    @min_shipping_time.setter
    def min_shipping_time(self, min_shipping_time):
        """Sets the min_shipping_time of this ShippingService.

        This value indicates the minimum number of business days that it takes the <b>shippingCarrier</b> to ship an item using the corresponding <b>shippingService</b>.   # noqa: E501

        :param min_shipping_time: The min_shipping_time of this ShippingService.  # noqa: E501
        :type: int
        """

        self._min_shipping_time = min_shipping_time

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


        :return: The package_limits of this ShippingService.  # noqa: E501
        :rtype: PackageLimits
        """
        return self._package_limits

    @package_limits.setter
    def package_limits(self, package_limits):
        """Sets the package_limits of this ShippingService.


        :param package_limits: The package_limits of this ShippingService.  # noqa: E501
        :type: PackageLimits
        """

        self._package_limits = package_limits

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

        The code for the shipping carrier returned, for example, <code>UPS</code>, <code>FedEx</code>, and <code>USPS</code>.  # noqa: E501

        :return: The shipping_carrier of this ShippingService.  # noqa: E501
        :rtype: str
        """
        return self._shipping_carrier

    @shipping_carrier.setter
    def shipping_carrier(self, shipping_carrier):
        """Sets the shipping_carrier of this ShippingService.

        The code for the shipping carrier returned, for example, <code>UPS</code>, <code>FedEx</code>, and <code>USPS</code>.  # noqa: E501

        :param shipping_carrier: The shipping_carrier of this ShippingService.  # noqa: E501
        :type: str
        """

        self._shipping_carrier = shipping_carrier

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

        The shipping category of the shipping service including:  <code>ECONOMY</code>, <code>STANDARD</code>, <code>EXPEDITED</code>, <code>ONE_DAY</code>, <code>PICKUP</code>, and other similar categories.  # noqa: E501

        :return: The shipping_category of this ShippingService.  # noqa: E501
        :rtype: str
        """
        return self._shipping_category

    @shipping_category.setter
    def shipping_category(self, shipping_category):
        """Sets the shipping_category of this ShippingService.

        The shipping category of the shipping service including:  <code>ECONOMY</code>, <code>STANDARD</code>, <code>EXPEDITED</code>, <code>ONE_DAY</code>, <code>PICKUP</code>, and other similar categories.  # noqa: E501

        :param shipping_category: The shipping_category of this ShippingService.  # noqa: E501
        :type: str
        """

        self._shipping_category = shipping_category

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

        A list of shipping cost types that this shipping service option supports. For example, <code>FLAT_RATE</code>, <code>CALCULATED</code>, and <code>FREIGHT</code>.  # noqa: E501

        :return: The shipping_cost_types of this ShippingService.  # noqa: E501
        :rtype: list[str]
        """
        return self._shipping_cost_types

    @shipping_cost_types.setter
    def shipping_cost_types(self, shipping_cost_types):
        """Sets the shipping_cost_types of this ShippingService.

        A list of shipping cost types that this shipping service option supports. For example, <code>FLAT_RATE</code>, <code>CALCULATED</code>, and <code>FREIGHT</code>.  # noqa: E501

        :param shipping_cost_types: The shipping_cost_types of this ShippingService.  # noqa: E501
        :type: list[str]
        """

        self._shipping_cost_types = shipping_cost_types

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

        The name of the shipping service. The shipping service named here can only be used in listings or in business policies if <b>validForSellingFlow</b> is <code>true</code>. The value returned in this field is used in listing APIs and business policies to set the shipping service.  # noqa: E501

        :return: The shipping_service of this ShippingService.  # noqa: E501
        :rtype: str
        """
        return self._shipping_service

    @shipping_service.setter
    def shipping_service(self, shipping_service):
        """Sets the shipping_service of this ShippingService.

        The name of the shipping service. The shipping service named here can only be used in listings or in business policies if <b>validForSellingFlow</b> is <code>true</code>. The value returned in this field is used in listing APIs and business policies to set the shipping service.  # noqa: E501

        :param shipping_service: The shipping_service of this ShippingService.  # noqa: E501
        :type: str
        """

        self._shipping_service = shipping_service

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

        A value of <code>true</code> indicates that the <b>shippingService</b> can be set as an available shipping service in the listing or through the fulfillment business policy.  # noqa: E501

        :return: The valid_for_selling_flow of this ShippingService.  # noqa: E501
        :rtype: bool
        """
        return self._valid_for_selling_flow

    @valid_for_selling_flow.setter
    def valid_for_selling_flow(self, valid_for_selling_flow):
        """Sets the valid_for_selling_flow of this ShippingService.

        A value of <code>true</code> indicates that the <b>shippingService</b> can be set as an available shipping service in the listing or through the fulfillment business policy.  # noqa: E501

        :param valid_for_selling_flow: The valid_for_selling_flow of this ShippingService.  # noqa: E501
        :type: bool
        """

        self._valid_for_selling_flow = valid_for_selling_flow

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

        return self.__dict__ == other.__dict__

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