# coding: utf-8

"""
    NamSor API v2

    NamSor API v2 : enpoints to process personal names (gender, cultural origin or ethnicity) in all alphabets or languages. Use GET methods for small tests, but prefer POST methods for higher throughput (batch processing of up to 100 names at a time). Need something you can't find here? We have many more features coming soon. Let us know, we'll do our best to add it!   # noqa: E501

    OpenAPI spec version: 2.0.10
    Contact: <EMAIL>
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class APIBillingPeriodUsageOut(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'api_key': 'str',
        'subscription_started': 'int',
        'period_started': 'int',
        'period_ended': 'int',
        'stripe_current_period_end': 'int',
        'stripe_current_period_start': 'int',
        'billing_status': 'str',
        'usage': 'int',
        'soft_limit': 'int',
        'hard_limit': 'int'
    }

    attribute_map = {
        'api_key': 'apiKey',
        'subscription_started': 'subscriptionStarted',
        'period_started': 'periodStarted',
        'period_ended': 'periodEnded',
        'stripe_current_period_end': 'stripeCurrentPeriodEnd',
        'stripe_current_period_start': 'stripeCurrentPeriodStart',
        'billing_status': 'billingStatus',
        'usage': 'usage',
        'soft_limit': 'softLimit',
        'hard_limit': 'hardLimit'
    }

    def __init__(self, api_key=None, subscription_started=None, period_started=None, period_ended=None, stripe_current_period_end=None, stripe_current_period_start=None, billing_status=None, usage=None, soft_limit=None, hard_limit=None):  # noqa: E501
        """APIBillingPeriodUsageOut - a model defined in OpenAPI"""  # noqa: E501

        self._api_key = None
        self._subscription_started = None
        self._period_started = None
        self._period_ended = None
        self._stripe_current_period_end = None
        self._stripe_current_period_start = None
        self._billing_status = None
        self._usage = None
        self._soft_limit = None
        self._hard_limit = None
        self.discriminator = None

        if api_key is not None:
            self.api_key = api_key
        if subscription_started is not None:
            self.subscription_started = subscription_started
        if period_started is not None:
            self.period_started = period_started
        if period_ended is not None:
            self.period_ended = period_ended
        if stripe_current_period_end is not None:
            self.stripe_current_period_end = stripe_current_period_end
        if stripe_current_period_start is not None:
            self.stripe_current_period_start = stripe_current_period_start
        if billing_status is not None:
            self.billing_status = billing_status
        if usage is not None:
            self.usage = usage
        if soft_limit is not None:
            self.soft_limit = soft_limit
        if hard_limit is not None:
            self.hard_limit = hard_limit

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


        :return: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: str
        """
        return self._api_key

    @api_key.setter
    def api_key(self, api_key):
        """Sets the api_key of this APIBillingPeriodUsageOut.


        :param api_key: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: str
        """

        self._api_key = api_key

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


        :return: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._subscription_started

    @subscription_started.setter
    def subscription_started(self, subscription_started):
        """Sets the subscription_started of this APIBillingPeriodUsageOut.


        :param subscription_started: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._subscription_started = subscription_started

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


        :return: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._period_started

    @period_started.setter
    def period_started(self, period_started):
        """Sets the period_started of this APIBillingPeriodUsageOut.


        :param period_started: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._period_started = period_started

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


        :return: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._period_ended

    @period_ended.setter
    def period_ended(self, period_ended):
        """Sets the period_ended of this APIBillingPeriodUsageOut.


        :param period_ended: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._period_ended = period_ended

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


        :return: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._stripe_current_period_end

    @stripe_current_period_end.setter
    def stripe_current_period_end(self, stripe_current_period_end):
        """Sets the stripe_current_period_end of this APIBillingPeriodUsageOut.


        :param stripe_current_period_end: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._stripe_current_period_end = stripe_current_period_end

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


        :return: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._stripe_current_period_start

    @stripe_current_period_start.setter
    def stripe_current_period_start(self, stripe_current_period_start):
        """Sets the stripe_current_period_start of this APIBillingPeriodUsageOut.


        :param stripe_current_period_start: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._stripe_current_period_start = stripe_current_period_start

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


        :return: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: str
        """
        return self._billing_status

    @billing_status.setter
    def billing_status(self, billing_status):
        """Sets the billing_status of this APIBillingPeriodUsageOut.


        :param billing_status: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: str
        """

        self._billing_status = billing_status

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


        :return: The usage of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._usage

    @usage.setter
    def usage(self, usage):
        """Sets the usage of this APIBillingPeriodUsageOut.


        :param usage: The usage of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._usage = usage

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


        :return: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._soft_limit

    @soft_limit.setter
    def soft_limit(self, soft_limit):
        """Sets the soft_limit of this APIBillingPeriodUsageOut.


        :param soft_limit: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._soft_limit = soft_limit

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


        :return: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._hard_limit

    @hard_limit.setter
    def hard_limit(self, hard_limit):
        """Sets the hard_limit of this APIBillingPeriodUsageOut.


        :param hard_limit: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._hard_limit = hard_limit

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_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

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

        return self.__dict__ == other.__dict__

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

# coding: utf-8

"""
    NamSor API v2

    NamSor API v2 : enpoints to process personal names (gender, cultural origin or ethnicity) in all alphabets or languages. Use GET methods for small tests, but prefer POST methods for higher throughput (batch processing of up to 100 names at a time). Need something you can't find here? We have many more features coming soon. Let us know, we'll do our best to add it!   # noqa: E501

    OpenAPI spec version: 2.0.10
    Contact: <EMAIL>
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class APIBillingPeriodUsageOut(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'api_key': 'str',
        'subscription_started': 'int',
        'period_started': 'int',
        'period_ended': 'int',
        'stripe_current_period_end': 'int',
        'stripe_current_period_start': 'int',
        'billing_status': 'str',
        'usage': 'int',
        'soft_limit': 'int',
        'hard_limit': 'int'
    }

    attribute_map = {
        'api_key': 'apiKey',
        'subscription_started': 'subscriptionStarted',
        'period_started': 'periodStarted',
        'period_ended': 'periodEnded',
        'stripe_current_period_end': 'stripeCurrentPeriodEnd',
        'stripe_current_period_start': 'stripeCurrentPeriodStart',
        'billing_status': 'billingStatus',
        'usage': 'usage',
        'soft_limit': 'softLimit',
        'hard_limit': 'hardLimit'
    }

    def __init__(self, api_key=None, subscription_started=None, period_started=None, period_ended=None, stripe_current_period_end=None, stripe_current_period_start=None, billing_status=None, usage=None, soft_limit=None, hard_limit=None):  # noqa: E501
        """APIBillingPeriodUsageOut - a model defined in OpenAPI"""  # noqa: E501

        self._api_key = None
        self._subscription_started = None
        self._period_started = None
        self._period_ended = None
        self._stripe_current_period_end = None
        self._stripe_current_period_start = None
        self._billing_status = None
        self._usage = None
        self._soft_limit = None
        self._hard_limit = None
        self.discriminator = None

        if api_key is not None:
            self.api_key = api_key
        if subscription_started is not None:
            self.subscription_started = subscription_started
        if period_started is not None:
            self.period_started = period_started
        if period_ended is not None:
            self.period_ended = period_ended
        if stripe_current_period_end is not None:
            self.stripe_current_period_end = stripe_current_period_end
        if stripe_current_period_start is not None:
            self.stripe_current_period_start = stripe_current_period_start
        if billing_status is not None:
            self.billing_status = billing_status
        if usage is not None:
            self.usage = usage
        if soft_limit is not None:
            self.soft_limit = soft_limit
        if hard_limit is not None:
            self.hard_limit = hard_limit

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


        :return: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: str
        """
        return self._api_key

    @api_key.setter
    def api_key(self, api_key):
        """Sets the api_key of this APIBillingPeriodUsageOut.


        :param api_key: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: str
        """

        self._api_key = api_key

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


        :return: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._subscription_started

    @subscription_started.setter
    def subscription_started(self, subscription_started):
        """Sets the subscription_started of this APIBillingPeriodUsageOut.


        :param subscription_started: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._subscription_started = subscription_started

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


        :return: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._period_started

    @period_started.setter
    def period_started(self, period_started):
        """Sets the period_started of this APIBillingPeriodUsageOut.


        :param period_started: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._period_started = period_started

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


        :return: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._period_ended

    @period_ended.setter
    def period_ended(self, period_ended):
        """Sets the period_ended of this APIBillingPeriodUsageOut.


        :param period_ended: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._period_ended = period_ended

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


        :return: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._stripe_current_period_end

    @stripe_current_period_end.setter
    def stripe_current_period_end(self, stripe_current_period_end):
        """Sets the stripe_current_period_end of this APIBillingPeriodUsageOut.


        :param stripe_current_period_end: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._stripe_current_period_end = stripe_current_period_end

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


        :return: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._stripe_current_period_start

    @stripe_current_period_start.setter
    def stripe_current_period_start(self, stripe_current_period_start):
        """Sets the stripe_current_period_start of this APIBillingPeriodUsageOut.


        :param stripe_current_period_start: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._stripe_current_period_start = stripe_current_period_start

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


        :return: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: str
        """
        return self._billing_status

    @billing_status.setter
    def billing_status(self, billing_status):
        """Sets the billing_status of this APIBillingPeriodUsageOut.


        :param billing_status: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: str
        """

        self._billing_status = billing_status

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


        :return: The usage of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._usage

    @usage.setter
    def usage(self, usage):
        """Sets the usage of this APIBillingPeriodUsageOut.


        :param usage: The usage of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._usage = usage

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


        :return: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._soft_limit

    @soft_limit.setter
    def soft_limit(self, soft_limit):
        """Sets the soft_limit of this APIBillingPeriodUsageOut.


        :param soft_limit: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._soft_limit = soft_limit

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


        :return: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :rtype: int
        """
        return self._hard_limit

    @hard_limit.setter
    def hard_limit(self, hard_limit):
        """Sets the hard_limit of this APIBillingPeriodUsageOut.


        :param hard_limit: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501
        :type: int
        """

        self._hard_limit = hard_limit

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_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

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

        return self.__dict__ == other.__dict__

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

# coding: utf-8 NamSor API v2      NamSor API v2 : enpoints to process personal names (gender, cultural origin or ethnicity) in all alphabets or languages. Use GET methods for small tests, but prefer POST methods for higher throughput (batch processing of up to 100 names at a time). Need something you can't find here? We have many more features coming soon. Let us know, we'll do our best to add it!   # noqa: E501      OpenAPI spec version: 2.0.10     Contact: <EMAIL>     Generated by: https://openapi-generator.tech # noqa: F401 NOTE: This class is auto generated by OpenAPI Generator.     Ref: https://openapi-generator.tech      Do not edit the class manually. Attributes:       openapi_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. # noqa: E501 APIBillingPeriodUsageOut - a model defined in OpenAPI # noqa: E501 Gets the api_key of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: str Sets the api_key of this APIBillingPeriodUsageOut.           :param api_key: The api_key of this APIBillingPeriodUsageOut.  # noqa: E501         :type: str Gets the subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the subscription_started of this APIBillingPeriodUsageOut.           :param subscription_started: The subscription_started of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the period_started of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the period_started of this APIBillingPeriodUsageOut.           :param period_started: The period_started of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the period_ended of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the period_ended of this APIBillingPeriodUsageOut.           :param period_ended: The period_ended of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the stripe_current_period_end of this APIBillingPeriodUsageOut.           :param stripe_current_period_end: The stripe_current_period_end of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the stripe_current_period_start of this APIBillingPeriodUsageOut.           :param stripe_current_period_start: The stripe_current_period_start of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the billing_status of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: str Sets the billing_status of this APIBillingPeriodUsageOut.           :param billing_status: The billing_status of this APIBillingPeriodUsageOut.  # noqa: E501         :type: str Gets the usage of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The usage of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the usage of this APIBillingPeriodUsageOut.           :param usage: The usage of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the soft_limit of this APIBillingPeriodUsageOut.           :param soft_limit: The soft_limit of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Gets the hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501           :return: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501         :rtype: int Sets the hard_limit of this APIBillingPeriodUsageOut.           :param hard_limit: The hard_limit of this APIBillingPeriodUsageOut.  # noqa: E501         :type: int Returns the model properties as a dict Returns the string representation of the model For `print` and `pprint` Returns true if both objects are equal Returns true if both objects are not equal