# coding: utf-8

"""
    Zuora API Reference

    REST API reference for the Zuora Billing, Payments, and Central Platform! Check out the [REST API Overview](https://www.zuora.com/developer/api-references/api/overview/).

    The version of the OpenAPI document: 2024-05-20
    Contact: docs@zuora.com
    Generated by OpenAPI Generator (https://openapi-generator.tech)

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


from __future__ import annotations
import json
from enum import Enum
from typing_extensions import Self


class BillingPeriod(str, Enum):
    """
    Billing frequency of the charge. The value of this field controls the duration of each billing period.  Allows billing period to be overridden on the rate plan charge.  If the value of this field is `Specific_Months` or `Specific_Weeks`, use the `specificBillingPeriod` field to specify the duration of each billing period. 
    """

    """
    allowed enum values
    """
    MONTH = 'Month'
    QUARTER = 'Quarter'
    SEMI_ANNUAL = 'Semi_Annual'
    ANNUAL = 'Annual'
    EIGHTEEN_MONTHS = 'Eighteen_Months'
    TWO_YEARS = 'Two_Years'
    THREE_YEARS = 'Three_Years'
    FIVE_YEARS = 'Five_Years'
    SPECIFIC_MONTHS = 'Specific_Months'
    SUBSCRIPTION_TERM = 'Subscription_Term'
    WEEK = 'Week'
    SPECIFIC_WEEKS = 'Specific_Weeks'

    @classmethod
    def from_json(cls, json_str: str) -> Self:
        """Create an instance of BillingPeriod from a JSON string"""
        return cls(json.loads(json_str))


