# coding: utf-8

"""
    Selling Partner API for Replenishment

    The Selling Partner API for Replenishment (Replenishment API) provides programmatic access to replenishment program metrics and offers. These programs provide recurring delivery of any replenishable item at a frequency chosen by the customer.  The Replenishment API is available worldwide wherever Amazon Subscribe & Save is available or is supported. The API is available to vendors and FBA selling partners.

    The version of the OpenAPI document: 2022-11-07
    Generated by OpenAPI Generator (https://openapi-generator.tech)

    Do not edit the class manually.
"""  # noqa: E501


import pprint
import re  # noqa: F401

import six

from spapi.configuration import Configuration


class GetSellingPartnerMetricsResponseMetric(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 = {
        'not_delivered_due_to_oos': 'float',
        'total_subscriptions_revenue': 'float',
        'shipped_subscription_units': 'float',
        'active_subscriptions': 'float',
        'subscriber_average_revenue': 'float',
        'non_subscriber_average_revenue': 'float',
        'lost_revenue_due_to_oos': 'float',
        'subscriber_average_reorders': 'float',
        'non_subscriber_average_reorders': 'float',
        'coupons_revenue_penetration': 'float',
        'revenue_from_subscriptions_with_multiple_deliveries': 'float',
        'revenue_from_active_subscriptions_with_single_delivery': 'float',
        'revenue_from_cancelled_subscriptions_after_single_delivery': 'float',
        'subscriber_retention_for30_days': 'float',
        'subscriber_retention_for90_days': 'float',
        'revenue_penetration_for0_percent_seller_funding': 'float',
        'revenue_penetration_for5_percent_seller_funding': 'float',
        'revenue_penetration_for10_percent_seller_funding': 'float',
        'revenue_penetration_for5_plus_percent_seller_funding': 'float',
        'share_of_coupon_subscriptions': 'float',
        'time_interval': 'TimeInterval',
        'currency_code': 'str',
    }

    attribute_map = {
        'not_delivered_due_to_oos': 'notDeliveredDueToOOS',
        'total_subscriptions_revenue': 'totalSubscriptionsRevenue',
        'shipped_subscription_units': 'shippedSubscriptionUnits',
        'active_subscriptions': 'activeSubscriptions',
        'subscriber_average_revenue': 'subscriberAverageRevenue',
        'non_subscriber_average_revenue': 'nonSubscriberAverageRevenue',
        'lost_revenue_due_to_oos': 'lostRevenueDueToOOS',
        'subscriber_average_reorders': 'subscriberAverageReorders',
        'non_subscriber_average_reorders': 'nonSubscriberAverageReorders',
        'coupons_revenue_penetration': 'couponsRevenuePenetration',
        'revenue_from_subscriptions_with_multiple_deliveries': 'revenueFromSubscriptionsWithMultipleDeliveries',
        'revenue_from_active_subscriptions_with_single_delivery': 'revenueFromActiveSubscriptionsWithSingleDelivery',
        'revenue_from_cancelled_subscriptions_after_single_delivery': 'revenueFromCancelledSubscriptionsAfterSingleDelivery',
        'subscriber_retention_for30_days': 'subscriberRetentionFor30Days',
        'subscriber_retention_for90_days': 'subscriberRetentionFor90Days',
        'revenue_penetration_for0_percent_seller_funding': 'revenuePenetrationFor0PercentSellerFunding',
        'revenue_penetration_for5_percent_seller_funding': 'revenuePenetrationFor5PercentSellerFunding',
        'revenue_penetration_for10_percent_seller_funding': 'revenuePenetrationFor10PercentSellerFunding',
        'revenue_penetration_for5_plus_percent_seller_funding': 'revenuePenetrationFor5PlusPercentSellerFunding',
        'share_of_coupon_subscriptions': 'shareOfCouponSubscriptions',
        'time_interval': 'timeInterval',
        'currency_code': 'currencyCode',
    }

    def __init__(self, not_delivered_due_to_oos=None, total_subscriptions_revenue=None, shipped_subscription_units=None, active_subscriptions=None, subscriber_average_revenue=None, non_subscriber_average_revenue=None, lost_revenue_due_to_oos=None, subscriber_average_reorders=None, non_subscriber_average_reorders=None, coupons_revenue_penetration=None, revenue_from_subscriptions_with_multiple_deliveries=None, revenue_from_active_subscriptions_with_single_delivery=None, revenue_from_cancelled_subscriptions_after_single_delivery=None, subscriber_retention_for30_days=None, subscriber_retention_for90_days=None, revenue_penetration_for0_percent_seller_funding=None, revenue_penetration_for5_percent_seller_funding=None, revenue_penetration_for10_percent_seller_funding=None, revenue_penetration_for5_plus_percent_seller_funding=None, share_of_coupon_subscriptions=None, time_interval=None, currency_code=None, _configuration=None):  # noqa: E501
        """GetSellingPartnerMetricsResponseMetric - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._not_delivered_due_to_oos = None
        self._total_subscriptions_revenue = None
        self._shipped_subscription_units = None
        self._active_subscriptions = None
        self._subscriber_average_revenue = None
        self._non_subscriber_average_revenue = None
        self._lost_revenue_due_to_oos = None
        self._subscriber_average_reorders = None
        self._non_subscriber_average_reorders = None
        self._coupons_revenue_penetration = None
        self._revenue_from_subscriptions_with_multiple_deliveries = None
        self._revenue_from_active_subscriptions_with_single_delivery = None
        self._revenue_from_cancelled_subscriptions_after_single_delivery = None
        self._subscriber_retention_for30_days = None
        self._subscriber_retention_for90_days = None
        self._revenue_penetration_for0_percent_seller_funding = None
        self._revenue_penetration_for5_percent_seller_funding = None
        self._revenue_penetration_for10_percent_seller_funding = None
        self._revenue_penetration_for5_plus_percent_seller_funding = None
        self._share_of_coupon_subscriptions = None
        self._time_interval = None
        self._currency_code = None
        self.discriminator = None

        if not_delivered_due_to_oos is not None:
            self.not_delivered_due_to_oos = not_delivered_due_to_oos
        if total_subscriptions_revenue is not None:
            self.total_subscriptions_revenue = total_subscriptions_revenue
        if shipped_subscription_units is not None:
            self.shipped_subscription_units = shipped_subscription_units
        if active_subscriptions is not None:
            self.active_subscriptions = active_subscriptions
        if subscriber_average_revenue is not None:
            self.subscriber_average_revenue = subscriber_average_revenue
        if non_subscriber_average_revenue is not None:
            self.non_subscriber_average_revenue = non_subscriber_average_revenue
        if lost_revenue_due_to_oos is not None:
            self.lost_revenue_due_to_oos = lost_revenue_due_to_oos
        if subscriber_average_reorders is not None:
            self.subscriber_average_reorders = subscriber_average_reorders
        if non_subscriber_average_reorders is not None:
            self.non_subscriber_average_reorders = non_subscriber_average_reorders
        if coupons_revenue_penetration is not None:
            self.coupons_revenue_penetration = coupons_revenue_penetration
        if revenue_from_subscriptions_with_multiple_deliveries is not None:
            self.revenue_from_subscriptions_with_multiple_deliveries = revenue_from_subscriptions_with_multiple_deliveries
        if revenue_from_active_subscriptions_with_single_delivery is not None:
            self.revenue_from_active_subscriptions_with_single_delivery = revenue_from_active_subscriptions_with_single_delivery
        if revenue_from_cancelled_subscriptions_after_single_delivery is not None:
            self.revenue_from_cancelled_subscriptions_after_single_delivery = revenue_from_cancelled_subscriptions_after_single_delivery
        if subscriber_retention_for30_days is not None:
            self.subscriber_retention_for30_days = subscriber_retention_for30_days
        if subscriber_retention_for90_days is not None:
            self.subscriber_retention_for90_days = subscriber_retention_for90_days
        if revenue_penetration_for0_percent_seller_funding is not None:
            self.revenue_penetration_for0_percent_seller_funding = revenue_penetration_for0_percent_seller_funding
        if revenue_penetration_for5_percent_seller_funding is not None:
            self.revenue_penetration_for5_percent_seller_funding = revenue_penetration_for5_percent_seller_funding
        if revenue_penetration_for10_percent_seller_funding is not None:
            self.revenue_penetration_for10_percent_seller_funding = revenue_penetration_for10_percent_seller_funding
        if revenue_penetration_for5_plus_percent_seller_funding is not None:
            self.revenue_penetration_for5_plus_percent_seller_funding = revenue_penetration_for5_plus_percent_seller_funding
        if share_of_coupon_subscriptions is not None:
            self.share_of_coupon_subscriptions = share_of_coupon_subscriptions
        if time_interval is not None:
            self.time_interval = time_interval
        if currency_code is not None:
            self.currency_code = currency_code

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

        The percentage of items that were not shipped out of the total shipped units over a period of time due to being out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The not_delivered_due_to_oos of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._not_delivered_due_to_oos

    @not_delivered_due_to_oos.setter
    def not_delivered_due_to_oos(self, not_delivered_due_to_oos):
        """Sets the not_delivered_due_to_oos of this GetSellingPartnerMetricsResponseMetric.

        The percentage of items that were not shipped out of the total shipped units over a period of time due to being out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param not_delivered_due_to_oos: The not_delivered_due_to_oos of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                not_delivered_due_to_oos is not None and not_delivered_due_to_oos > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `not_delivered_due_to_oos`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                not_delivered_due_to_oos is not None and not_delivered_due_to_oos < 0):  # noqa: E501
            raise ValueError("Invalid value for `not_delivered_due_to_oos`, must be a value greater than or equal to `0`")  # noqa: E501

        self._not_delivered_due_to_oos = not_delivered_due_to_oos

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

        The revenue generated from subscriptions over a period of time. Applicable for both the PERFORMANCE and FORECAST timePeriodType.  # noqa: E501

        :return: The total_subscriptions_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._total_subscriptions_revenue

    @total_subscriptions_revenue.setter
    def total_subscriptions_revenue(self, total_subscriptions_revenue):
        """Sets the total_subscriptions_revenue of this GetSellingPartnerMetricsResponseMetric.

        The revenue generated from subscriptions over a period of time. Applicable for both the PERFORMANCE and FORECAST timePeriodType.  # noqa: E501

        :param total_subscriptions_revenue: The total_subscriptions_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                total_subscriptions_revenue is not None and total_subscriptions_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `total_subscriptions_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._total_subscriptions_revenue = total_subscriptions_revenue

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

        The number of units shipped to the subscribers over a period of time. Applicable for both the PERFORMANCE and FORECAST timePeriodType.  # noqa: E501

        :return: The shipped_subscription_units of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._shipped_subscription_units

    @shipped_subscription_units.setter
    def shipped_subscription_units(self, shipped_subscription_units):
        """Sets the shipped_subscription_units of this GetSellingPartnerMetricsResponseMetric.

        The number of units shipped to the subscribers over a period of time. Applicable for both the PERFORMANCE and FORECAST timePeriodType.  # noqa: E501

        :param shipped_subscription_units: The shipped_subscription_units of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                shipped_subscription_units is not None and shipped_subscription_units < 0):  # noqa: E501
            raise ValueError("Invalid value for `shipped_subscription_units`, must be a value greater than or equal to `0`")  # noqa: E501

        self._shipped_subscription_units = shipped_subscription_units

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

        The number of active subscriptions present at the end of the period. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The active_subscriptions of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._active_subscriptions

    @active_subscriptions.setter
    def active_subscriptions(self, active_subscriptions):
        """Sets the active_subscriptions of this GetSellingPartnerMetricsResponseMetric.

        The number of active subscriptions present at the end of the period. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param active_subscriptions: The active_subscriptions of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                active_subscriptions is not None and active_subscriptions < 0):  # noqa: E501
            raise ValueError("Invalid value for `active_subscriptions`, must be a value greater than or equal to `0`")  # noqa: E501

        self._active_subscriptions = active_subscriptions

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

        The average revenue per subscriber of the program over a period of past 12 months for sellers and 6 months for vendors. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._subscriber_average_revenue

    @subscriber_average_revenue.setter
    def subscriber_average_revenue(self, subscriber_average_revenue):
        """Sets the subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.

        The average revenue per subscriber of the program over a period of past 12 months for sellers and 6 months for vendors. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param subscriber_average_revenue: The subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                subscriber_average_revenue is not None and subscriber_average_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_average_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._subscriber_average_revenue = subscriber_average_revenue

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

        The average revenue per non-subscriber of the program over a period of past 12 months for sellers and 6 months for vendors. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The non_subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._non_subscriber_average_revenue

    @non_subscriber_average_revenue.setter
    def non_subscriber_average_revenue(self, non_subscriber_average_revenue):
        """Sets the non_subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.

        The average revenue per non-subscriber of the program over a period of past 12 months for sellers and 6 months for vendors. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param non_subscriber_average_revenue: The non_subscriber_average_revenue of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                non_subscriber_average_revenue is not None and non_subscriber_average_revenue < 0):  # noqa: E501
            raise ValueError("Invalid value for `non_subscriber_average_revenue`, must be a value greater than or equal to `0`")  # noqa: E501

        self._non_subscriber_average_revenue = non_subscriber_average_revenue

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

        The revenue that would have been generated had there not been out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The lost_revenue_due_to_oos of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._lost_revenue_due_to_oos

    @lost_revenue_due_to_oos.setter
    def lost_revenue_due_to_oos(self, lost_revenue_due_to_oos):
        """Sets the lost_revenue_due_to_oos of this GetSellingPartnerMetricsResponseMetric.

        The revenue that would have been generated had there not been out of stock. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param lost_revenue_due_to_oos: The lost_revenue_due_to_oos of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                lost_revenue_due_to_oos is not None and lost_revenue_due_to_oos < 0):  # noqa: E501
            raise ValueError("Invalid value for `lost_revenue_due_to_oos`, must be a value greater than or equal to `0`")  # noqa: E501

        self._lost_revenue_due_to_oos = lost_revenue_due_to_oos

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

        The average reorders per subscriber of the program over a period of 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._subscriber_average_reorders

    @subscriber_average_reorders.setter
    def subscriber_average_reorders(self, subscriber_average_reorders):
        """Sets the subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.

        The average reorders per subscriber of the program over a period of 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param subscriber_average_reorders: The subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                subscriber_average_reorders is not None and subscriber_average_reorders < 0):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_average_reorders`, must be a value greater than or equal to `0`")  # noqa: E501

        self._subscriber_average_reorders = subscriber_average_reorders

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

        The average reorders per non-subscriber of the program over a period of past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The non_subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._non_subscriber_average_reorders

    @non_subscriber_average_reorders.setter
    def non_subscriber_average_reorders(self, non_subscriber_average_reorders):
        """Sets the non_subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.

        The average reorders per non-subscriber of the program over a period of past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param non_subscriber_average_reorders: The non_subscriber_average_reorders of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                non_subscriber_average_reorders is not None and non_subscriber_average_reorders < 0):  # noqa: E501
            raise ValueError("Invalid value for `non_subscriber_average_reorders`, must be a value greater than or equal to `0`")  # noqa: E501

        self._non_subscriber_average_reorders = non_subscriber_average_reorders

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

        The percentage of revenue from ASINs with coupons out of total revenue from all ASINs. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The coupons_revenue_penetration of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._coupons_revenue_penetration

    @coupons_revenue_penetration.setter
    def coupons_revenue_penetration(self, coupons_revenue_penetration):
        """Sets the coupons_revenue_penetration of this GetSellingPartnerMetricsResponseMetric.

        The percentage of revenue from ASINs with coupons out of total revenue from all ASINs. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param coupons_revenue_penetration: The coupons_revenue_penetration of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                coupons_revenue_penetration is not None and coupons_revenue_penetration > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `coupons_revenue_penetration`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                coupons_revenue_penetration is not None and coupons_revenue_penetration < 0):  # noqa: E501
            raise ValueError("Invalid value for `coupons_revenue_penetration`, must be a value greater than or equal to `0`")  # noqa: E501

        self._coupons_revenue_penetration = coupons_revenue_penetration

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

        The subscription revenue generated from subscriptions with over two deliveries over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_from_subscriptions_with_multiple_deliveries of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_from_subscriptions_with_multiple_deliveries

    @revenue_from_subscriptions_with_multiple_deliveries.setter
    def revenue_from_subscriptions_with_multiple_deliveries(self, revenue_from_subscriptions_with_multiple_deliveries):
        """Sets the revenue_from_subscriptions_with_multiple_deliveries of this GetSellingPartnerMetricsResponseMetric.

        The subscription revenue generated from subscriptions with over two deliveries over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_from_subscriptions_with_multiple_deliveries: The revenue_from_subscriptions_with_multiple_deliveries of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_from_subscriptions_with_multiple_deliveries is not None and revenue_from_subscriptions_with_multiple_deliveries < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_from_subscriptions_with_multiple_deliveries`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_from_subscriptions_with_multiple_deliveries = revenue_from_subscriptions_with_multiple_deliveries

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

        The subscription revenue generated from active subscriptions with one delivery over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_from_active_subscriptions_with_single_delivery of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_from_active_subscriptions_with_single_delivery

    @revenue_from_active_subscriptions_with_single_delivery.setter
    def revenue_from_active_subscriptions_with_single_delivery(self, revenue_from_active_subscriptions_with_single_delivery):
        """Sets the revenue_from_active_subscriptions_with_single_delivery of this GetSellingPartnerMetricsResponseMetric.

        The subscription revenue generated from active subscriptions with one delivery over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_from_active_subscriptions_with_single_delivery: The revenue_from_active_subscriptions_with_single_delivery of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_from_active_subscriptions_with_single_delivery is not None and revenue_from_active_subscriptions_with_single_delivery < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_from_active_subscriptions_with_single_delivery`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_from_active_subscriptions_with_single_delivery = revenue_from_active_subscriptions_with_single_delivery

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

        The subscription revenue generated from subscriptions which are cancelled after one delivery over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_from_cancelled_subscriptions_after_single_delivery of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_from_cancelled_subscriptions_after_single_delivery

    @revenue_from_cancelled_subscriptions_after_single_delivery.setter
    def revenue_from_cancelled_subscriptions_after_single_delivery(self, revenue_from_cancelled_subscriptions_after_single_delivery):
        """Sets the revenue_from_cancelled_subscriptions_after_single_delivery of this GetSellingPartnerMetricsResponseMetric.

        The subscription revenue generated from subscriptions which are cancelled after one delivery over the past 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_from_cancelled_subscriptions_after_single_delivery: The revenue_from_cancelled_subscriptions_after_single_delivery of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_from_cancelled_subscriptions_after_single_delivery is not None and revenue_from_cancelled_subscriptions_after_single_delivery < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_from_cancelled_subscriptions_after_single_delivery`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_from_cancelled_subscriptions_after_single_delivery = revenue_from_cancelled_subscriptions_after_single_delivery

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

        The percentage of subscriptions retained after 30 days of subscription creation. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The subscriber_retention_for30_days of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._subscriber_retention_for30_days

    @subscriber_retention_for30_days.setter
    def subscriber_retention_for30_days(self, subscriber_retention_for30_days):
        """Sets the subscriber_retention_for30_days of this GetSellingPartnerMetricsResponseMetric.

        The percentage of subscriptions retained after 30 days of subscription creation. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param subscriber_retention_for30_days: The subscriber_retention_for30_days of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                subscriber_retention_for30_days is not None and subscriber_retention_for30_days > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_retention_for30_days`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                subscriber_retention_for30_days is not None and subscriber_retention_for30_days < 0):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_retention_for30_days`, must be a value greater than or equal to `0`")  # noqa: E501

        self._subscriber_retention_for30_days = subscriber_retention_for30_days

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

        The percentage of subscriptions retained after 90 days of subscription creation. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The subscriber_retention_for90_days of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._subscriber_retention_for90_days

    @subscriber_retention_for90_days.setter
    def subscriber_retention_for90_days(self, subscriber_retention_for90_days):
        """Sets the subscriber_retention_for90_days of this GetSellingPartnerMetricsResponseMetric.

        The percentage of subscriptions retained after 90 days of subscription creation. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param subscriber_retention_for90_days: The subscriber_retention_for90_days of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                subscriber_retention_for90_days is not None and subscriber_retention_for90_days > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_retention_for90_days`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                subscriber_retention_for90_days is not None and subscriber_retention_for90_days < 0):  # noqa: E501
            raise ValueError("Invalid value for `subscriber_retention_for90_days`, must be a value greater than or equal to `0`")  # noqa: E501

        self._subscriber_retention_for90_days = subscriber_retention_for90_days

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

        The percentage of subscription revenue generated by offers with 0% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_penetration_for0_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_penetration_for0_percent_seller_funding

    @revenue_penetration_for0_percent_seller_funding.setter
    def revenue_penetration_for0_percent_seller_funding(self, revenue_penetration_for0_percent_seller_funding):
        """Sets the revenue_penetration_for0_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.

        The percentage of subscription revenue generated by offers with 0% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_penetration_for0_percent_seller_funding: The revenue_penetration_for0_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_penetration_for0_percent_seller_funding is not None and revenue_penetration_for0_percent_seller_funding > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for0_percent_seller_funding`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                revenue_penetration_for0_percent_seller_funding is not None and revenue_penetration_for0_percent_seller_funding < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for0_percent_seller_funding`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_penetration_for0_percent_seller_funding = revenue_penetration_for0_percent_seller_funding

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

        [Applicable only for Sellers] The percentage of subscription revenue generated by offers with 5% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_penetration_for5_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_penetration_for5_percent_seller_funding

    @revenue_penetration_for5_percent_seller_funding.setter
    def revenue_penetration_for5_percent_seller_funding(self, revenue_penetration_for5_percent_seller_funding):
        """Sets the revenue_penetration_for5_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.

        [Applicable only for Sellers] The percentage of subscription revenue generated by offers with 5% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_penetration_for5_percent_seller_funding: The revenue_penetration_for5_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_penetration_for5_percent_seller_funding is not None and revenue_penetration_for5_percent_seller_funding > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for5_percent_seller_funding`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                revenue_penetration_for5_percent_seller_funding is not None and revenue_penetration_for5_percent_seller_funding < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for5_percent_seller_funding`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_penetration_for5_percent_seller_funding = revenue_penetration_for5_percent_seller_funding

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

        [Applicable only for Sellers] The percentage of subscription revenue generated by offers with 10% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_penetration_for10_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_penetration_for10_percent_seller_funding

    @revenue_penetration_for10_percent_seller_funding.setter
    def revenue_penetration_for10_percent_seller_funding(self, revenue_penetration_for10_percent_seller_funding):
        """Sets the revenue_penetration_for10_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.

        [Applicable only for Sellers] The percentage of subscription revenue generated by offers with 10% seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_penetration_for10_percent_seller_funding: The revenue_penetration_for10_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_penetration_for10_percent_seller_funding is not None and revenue_penetration_for10_percent_seller_funding > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for10_percent_seller_funding`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                revenue_penetration_for10_percent_seller_funding is not None and revenue_penetration_for10_percent_seller_funding < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for10_percent_seller_funding`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_penetration_for10_percent_seller_funding = revenue_penetration_for10_percent_seller_funding

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

        [Applicable only for vendors] The percentage of subscription revenue generated by offers with 5% or above seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The revenue_penetration_for5_plus_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._revenue_penetration_for5_plus_percent_seller_funding

    @revenue_penetration_for5_plus_percent_seller_funding.setter
    def revenue_penetration_for5_plus_percent_seller_funding(self, revenue_penetration_for5_plus_percent_seller_funding):
        """Sets the revenue_penetration_for5_plus_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.

        [Applicable only for vendors] The percentage of subscription revenue generated by offers with 5% or above seller-funded discount over the last 12 months. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param revenue_penetration_for5_plus_percent_seller_funding: The revenue_penetration_for5_plus_percent_seller_funding of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                revenue_penetration_for5_plus_percent_seller_funding is not None and revenue_penetration_for5_plus_percent_seller_funding > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for5_plus_percent_seller_funding`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                revenue_penetration_for5_plus_percent_seller_funding is not None and revenue_penetration_for5_plus_percent_seller_funding < 0):  # noqa: E501
            raise ValueError("Invalid value for `revenue_penetration_for5_plus_percent_seller_funding`, must be a value greater than or equal to `0`")  # noqa: E501

        self._revenue_penetration_for5_plus_percent_seller_funding = revenue_penetration_for5_plus_percent_seller_funding

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

        The percentage of new subscriptions acquired through coupons. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :return: The share_of_coupon_subscriptions of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: float
        """
        return self._share_of_coupon_subscriptions

    @share_of_coupon_subscriptions.setter
    def share_of_coupon_subscriptions(self, share_of_coupon_subscriptions):
        """Sets the share_of_coupon_subscriptions of this GetSellingPartnerMetricsResponseMetric.

        The percentage of new subscriptions acquired through coupons. Applicable to PERFORMANCE timePeriodType.  # noqa: E501

        :param share_of_coupon_subscriptions: The share_of_coupon_subscriptions of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: float
        """
        if (self._configuration.client_side_validation and
                share_of_coupon_subscriptions is not None and share_of_coupon_subscriptions > 1E+2):  # noqa: E501
            raise ValueError("Invalid value for `share_of_coupon_subscriptions`, must be a value less than or equal to `1E+2`")  # noqa: E501
        if (self._configuration.client_side_validation and
                share_of_coupon_subscriptions is not None and share_of_coupon_subscriptions < 0):  # noqa: E501
            raise ValueError("Invalid value for `share_of_coupon_subscriptions`, must be a value greater than or equal to `0`")  # noqa: E501

        self._share_of_coupon_subscriptions = share_of_coupon_subscriptions

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


        :return: The time_interval of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: TimeInterval
        """
        return self._time_interval

    @time_interval.setter
    def time_interval(self, time_interval):
        """Sets the time_interval of this GetSellingPartnerMetricsResponseMetric.


        :param time_interval: The time_interval of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: TimeInterval
        """

        self._time_interval = time_interval

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

        The currency code in ISO 4217 format.  # noqa: E501

        :return: The currency_code of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :rtype: str
        """
        return self._currency_code

    @currency_code.setter
    def currency_code(self, currency_code):
        """Sets the currency_code of this GetSellingPartnerMetricsResponseMetric.

        The currency code in ISO 4217 format.  # noqa: E501

        :param currency_code: The currency_code of this GetSellingPartnerMetricsResponseMetric.  # noqa: E501
        :type: str
        """

        self._currency_code = currency_code

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
