# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities
from . import outputs

__all__ = [
    'SubscriptionRedeemableUserItem',
    'GetSubscriptionProductItemResult',
    'GetSubscriptionProductsFilterResult',
    'GetSubscriptionProductsProductCollectionResult',
    'GetSubscriptionProductsProductCollectionItemResult',
    'GetSubscriptionProductsProductCollectionItemItemResult',
    'GetSubscriptionRedeemableUserItemResult',
    'GetSubscriptionRedeemableUsersFilterResult',
    'GetSubscriptionRedeemableUsersRedeemableUserCollectionResult',
    'GetSubscriptionRedeemableUsersRedeemableUserCollectionItemResult',
    'GetSubscriptionRedeemableUsersRedeemableUserCollectionItemItemResult',
    'GetSubscriptionRedemptionItemResult',
    'GetSubscriptionRedemptionsFilterResult',
    'GetSubscriptionRedemptionsRedemptionCollectionResult',
    'GetSubscriptionRedemptionsRedemptionCollectionItemResult',
    'GetSubscriptionRedemptionsRedemptionCollectionItemItemResult',
    'GetSubscriptionRewardItemResult',
    'GetSubscriptionRewardSummaryResult',
    'GetSubscriptionRewardsFilterResult',
    'GetSubscriptionRewardsRewardCollectionResult',
    'GetSubscriptionRewardsRewardCollectionItemResult',
    'GetSubscriptionRewardsRewardCollectionItemItemResult',
    'GetSubscriptionRewardsRewardCollectionItemSummaryResult',
]

@pulumi.output_type
class SubscriptionRedeemableUserItem(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "emailId":
            suggest = "email_id"
        elif key == "firstName":
            suggest = "first_name"
        elif key == "lastName":
            suggest = "last_name"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in SubscriptionRedeemableUserItem. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        SubscriptionRedeemableUserItem.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        SubscriptionRedeemableUserItem.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 email_id: str,
                 first_name: Optional[str] = None,
                 last_name: Optional[str] = None):
        """
        :param str email_id: The email ID for a user that can redeem rewards.
        :param str first_name: The first name of the user that can redeem rewards.
        :param str last_name: The last name of the user that can redeem rewards.
        """
        pulumi.set(__self__, "email_id", email_id)
        if first_name is not None:
            pulumi.set(__self__, "first_name", first_name)
        if last_name is not None:
            pulumi.set(__self__, "last_name", last_name)

    @property
    @pulumi.getter(name="emailId")
    def email_id(self) -> str:
        """
        The email ID for a user that can redeem rewards.
        """
        return pulumi.get(self, "email_id")

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> Optional[str]:
        """
        The first name of the user that can redeem rewards.
        """
        return pulumi.get(self, "first_name")

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> Optional[str]:
        """
        The last name of the user that can redeem rewards.
        """
        return pulumi.get(self, "last_name")


@pulumi.output_type
class GetSubscriptionProductItemResult(dict):
    def __init__(__self__, *,
                 earned_rewards: float,
                 is_eligible_to_earn_rewards: bool,
                 product_name: str,
                 product_number: str,
                 usage_amount: float):
        """
        :param float earned_rewards: The earned rewards for the product.
        :param bool is_eligible_to_earn_rewards: The boolean parameter to indicate if the product is eligible to earn rewards.
        :param str product_name: The rate card product name.
        :param str product_number: The rate card product number.
        :param float usage_amount: The rate card product usage amount.
        """
        pulumi.set(__self__, "earned_rewards", earned_rewards)
        pulumi.set(__self__, "is_eligible_to_earn_rewards", is_eligible_to_earn_rewards)
        pulumi.set(__self__, "product_name", product_name)
        pulumi.set(__self__, "product_number", product_number)
        pulumi.set(__self__, "usage_amount", usage_amount)

    @property
    @pulumi.getter(name="earnedRewards")
    def earned_rewards(self) -> float:
        """
        The earned rewards for the product.
        """
        return pulumi.get(self, "earned_rewards")

    @property
    @pulumi.getter(name="isEligibleToEarnRewards")
    def is_eligible_to_earn_rewards(self) -> bool:
        """
        The boolean parameter to indicate if the product is eligible to earn rewards.
        """
        return pulumi.get(self, "is_eligible_to_earn_rewards")

    @property
    @pulumi.getter(name="productName")
    def product_name(self) -> str:
        """
        The rate card product name.
        """
        return pulumi.get(self, "product_name")

    @property
    @pulumi.getter(name="productNumber")
    def product_number(self) -> str:
        """
        The rate card product number.
        """
        return pulumi.get(self, "product_number")

    @property
    @pulumi.getter(name="usageAmount")
    def usage_amount(self) -> float:
        """
        The rate card product usage amount.
        """
        return pulumi.get(self, "usage_amount")


@pulumi.output_type
class GetSubscriptionProductsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetSubscriptionProductsProductCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionProductsProductCollectionItemResult']):
        """
        :param Sequence['GetSubscriptionProductsProductCollectionItemArgs'] items: The list of product rewards summaries.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionProductsProductCollectionItemResult']:
        """
        The list of product rewards summaries.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionProductsProductCollectionItemResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionProductsProductCollectionItemItemResult']):
        """
        :param Sequence['GetSubscriptionProductsProductCollectionItemItemArgs'] items: The list of product rewards summaries.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionProductsProductCollectionItemItemResult']:
        """
        The list of product rewards summaries.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionProductsProductCollectionItemItemResult(dict):
    def __init__(__self__, *,
                 earned_rewards: float,
                 is_eligible_to_earn_rewards: bool,
                 product_name: str,
                 product_number: str,
                 usage_amount: float):
        """
        :param float earned_rewards: The earned rewards for the product.
        :param bool is_eligible_to_earn_rewards: The boolean parameter to indicate if the product is eligible to earn rewards.
        :param str product_name: The rate card product name.
        :param str product_number: The rate card product number.
        :param float usage_amount: The rate card product usage amount.
        """
        pulumi.set(__self__, "earned_rewards", earned_rewards)
        pulumi.set(__self__, "is_eligible_to_earn_rewards", is_eligible_to_earn_rewards)
        pulumi.set(__self__, "product_name", product_name)
        pulumi.set(__self__, "product_number", product_number)
        pulumi.set(__self__, "usage_amount", usage_amount)

    @property
    @pulumi.getter(name="earnedRewards")
    def earned_rewards(self) -> float:
        """
        The earned rewards for the product.
        """
        return pulumi.get(self, "earned_rewards")

    @property
    @pulumi.getter(name="isEligibleToEarnRewards")
    def is_eligible_to_earn_rewards(self) -> bool:
        """
        The boolean parameter to indicate if the product is eligible to earn rewards.
        """
        return pulumi.get(self, "is_eligible_to_earn_rewards")

    @property
    @pulumi.getter(name="productName")
    def product_name(self) -> str:
        """
        The rate card product name.
        """
        return pulumi.get(self, "product_name")

    @property
    @pulumi.getter(name="productNumber")
    def product_number(self) -> str:
        """
        The rate card product number.
        """
        return pulumi.get(self, "product_number")

    @property
    @pulumi.getter(name="usageAmount")
    def usage_amount(self) -> float:
        """
        The rate card product usage amount.
        """
        return pulumi.get(self, "usage_amount")


@pulumi.output_type
class GetSubscriptionRedeemableUserItemResult(dict):
    def __init__(__self__, *,
                 email_id: str,
                 first_name: str,
                 last_name: str):
        """
        :param str email_id: The email ID of the user that can redeem rewards.
        :param str first_name: The first name of the user that can redeem rewards.
        :param str last_name: The last name of the user that can redeem rewards.
        """
        pulumi.set(__self__, "email_id", email_id)
        pulumi.set(__self__, "first_name", first_name)
        pulumi.set(__self__, "last_name", last_name)

    @property
    @pulumi.getter(name="emailId")
    def email_id(self) -> str:
        """
        The email ID of the user that can redeem rewards.
        """
        return pulumi.get(self, "email_id")

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> str:
        """
        The first name of the user that can redeem rewards.
        """
        return pulumi.get(self, "first_name")

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> str:
        """
        The last name of the user that can redeem rewards.
        """
        return pulumi.get(self, "last_name")


@pulumi.output_type
class GetSubscriptionRedeemableUsersFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetSubscriptionRedeemableUsersRedeemableUserCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRedeemableUsersRedeemableUserCollectionItemResult']):
        """
        :param Sequence['GetSubscriptionRedeemableUsersRedeemableUserCollectionItemArgs'] items: The list of user summary that can redeem rewards.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRedeemableUsersRedeemableUserCollectionItemResult']:
        """
        The list of user summary that can redeem rewards.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionRedeemableUsersRedeemableUserCollectionItemResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRedeemableUsersRedeemableUserCollectionItemItemResult'],
                 subscription_id: str,
                 tenancy_id: str,
                 user_id: str):
        """
        :param Sequence['GetSubscriptionRedeemableUsersRedeemableUserCollectionItemItemArgs'] items: The list of user summary that can redeem rewards.
        :param str subscription_id: The subscription ID for which rewards information is requested for.
        :param str tenancy_id: The OCID of the tenancy.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "subscription_id", subscription_id)
        pulumi.set(__self__, "tenancy_id", tenancy_id)
        pulumi.set(__self__, "user_id", user_id)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRedeemableUsersRedeemableUserCollectionItemItemResult']:
        """
        The list of user summary that can redeem rewards.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> str:
        """
        The subscription ID for which rewards information is requested for.
        """
        return pulumi.get(self, "subscription_id")

    @property
    @pulumi.getter(name="tenancyId")
    def tenancy_id(self) -> str:
        """
        The OCID of the tenancy.
        """
        return pulumi.get(self, "tenancy_id")

    @property
    @pulumi.getter(name="userId")
    def user_id(self) -> str:
        return pulumi.get(self, "user_id")


@pulumi.output_type
class GetSubscriptionRedeemableUsersRedeemableUserCollectionItemItemResult(dict):
    def __init__(__self__, *,
                 email_id: str,
                 first_name: str,
                 last_name: str):
        """
        :param str email_id: The email ID of the user that can redeem rewards.
        :param str first_name: The first name of the user that can redeem rewards.
        :param str last_name: The last name of the user that can redeem rewards.
        """
        pulumi.set(__self__, "email_id", email_id)
        pulumi.set(__self__, "first_name", first_name)
        pulumi.set(__self__, "last_name", last_name)

    @property
    @pulumi.getter(name="emailId")
    def email_id(self) -> str:
        """
        The email ID of the user that can redeem rewards.
        """
        return pulumi.get(self, "email_id")

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> str:
        """
        The first name of the user that can redeem rewards.
        """
        return pulumi.get(self, "first_name")

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> str:
        """
        The last name of the user that can redeem rewards.
        """
        return pulumi.get(self, "last_name")


@pulumi.output_type
class GetSubscriptionRedemptionItemResult(dict):
    def __init__(__self__, *,
                 base_rewards: float,
                 fx_rate: float,
                 invoice_currency: str,
                 invoice_number: str,
                 invoice_total_amount: float,
                 redeemed_rewards: float,
                 redemption_code: str,
                 redemption_email: str,
                 time_invoiced: str,
                 time_redeemed: str):
        """
        :param float base_rewards: It provides the redeemed rewards in base/subscription currency.
        :param float fx_rate: It provides the fxRate between invoice currency and subscription currency.
        :param str invoice_currency: The currency associated with invoice.
        :param str invoice_number: It provides the invoice number against the redemption.
        :param float invoice_total_amount: It provides the invoice total amount of given redemption.
        :param float redeemed_rewards: It provides the redeemed rewards in invoice currency.
        :param str redemption_code: The redemption code used in the Billing Center during the reward redemption process.
        :param str redemption_email: It provides the redemption email id.
        :param str time_invoiced: It provides the invoice date.
        :param str time_redeemed: It provides redeem date.
        """
        pulumi.set(__self__, "base_rewards", base_rewards)
        pulumi.set(__self__, "fx_rate", fx_rate)
        pulumi.set(__self__, "invoice_currency", invoice_currency)
        pulumi.set(__self__, "invoice_number", invoice_number)
        pulumi.set(__self__, "invoice_total_amount", invoice_total_amount)
        pulumi.set(__self__, "redeemed_rewards", redeemed_rewards)
        pulumi.set(__self__, "redemption_code", redemption_code)
        pulumi.set(__self__, "redemption_email", redemption_email)
        pulumi.set(__self__, "time_invoiced", time_invoiced)
        pulumi.set(__self__, "time_redeemed", time_redeemed)

    @property
    @pulumi.getter(name="baseRewards")
    def base_rewards(self) -> float:
        """
        It provides the redeemed rewards in base/subscription currency.
        """
        return pulumi.get(self, "base_rewards")

    @property
    @pulumi.getter(name="fxRate")
    def fx_rate(self) -> float:
        """
        It provides the fxRate between invoice currency and subscription currency.
        """
        return pulumi.get(self, "fx_rate")

    @property
    @pulumi.getter(name="invoiceCurrency")
    def invoice_currency(self) -> str:
        """
        The currency associated with invoice.
        """
        return pulumi.get(self, "invoice_currency")

    @property
    @pulumi.getter(name="invoiceNumber")
    def invoice_number(self) -> str:
        """
        It provides the invoice number against the redemption.
        """
        return pulumi.get(self, "invoice_number")

    @property
    @pulumi.getter(name="invoiceTotalAmount")
    def invoice_total_amount(self) -> float:
        """
        It provides the invoice total amount of given redemption.
        """
        return pulumi.get(self, "invoice_total_amount")

    @property
    @pulumi.getter(name="redeemedRewards")
    def redeemed_rewards(self) -> float:
        """
        It provides the redeemed rewards in invoice currency.
        """
        return pulumi.get(self, "redeemed_rewards")

    @property
    @pulumi.getter(name="redemptionCode")
    def redemption_code(self) -> str:
        """
        The redemption code used in the Billing Center during the reward redemption process.
        """
        return pulumi.get(self, "redemption_code")

    @property
    @pulumi.getter(name="redemptionEmail")
    def redemption_email(self) -> str:
        """
        It provides the redemption email id.
        """
        return pulumi.get(self, "redemption_email")

    @property
    @pulumi.getter(name="timeInvoiced")
    def time_invoiced(self) -> str:
        """
        It provides the invoice date.
        """
        return pulumi.get(self, "time_invoiced")

    @property
    @pulumi.getter(name="timeRedeemed")
    def time_redeemed(self) -> str:
        """
        It provides redeem date.
        """
        return pulumi.get(self, "time_redeemed")


@pulumi.output_type
class GetSubscriptionRedemptionsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetSubscriptionRedemptionsRedemptionCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRedemptionsRedemptionCollectionItemResult']):
        """
        :param Sequence['GetSubscriptionRedemptionsRedemptionCollectionItemArgs'] items: The list of redemption summary.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRedemptionsRedemptionCollectionItemResult']:
        """
        The list of redemption summary.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionRedemptionsRedemptionCollectionItemResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRedemptionsRedemptionCollectionItemItemResult']):
        """
        :param Sequence['GetSubscriptionRedemptionsRedemptionCollectionItemItemArgs'] items: The list of redemption summary.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRedemptionsRedemptionCollectionItemItemResult']:
        """
        The list of redemption summary.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionRedemptionsRedemptionCollectionItemItemResult(dict):
    def __init__(__self__, *,
                 base_rewards: float,
                 fx_rate: float,
                 invoice_currency: str,
                 invoice_number: str,
                 invoice_total_amount: float,
                 redeemed_rewards: float,
                 redemption_code: str,
                 redemption_email: str,
                 time_invoiced: str,
                 time_redeemed: str):
        """
        :param float base_rewards: It provides the redeemed rewards in base/subscription currency.
        :param float fx_rate: It provides the fxRate between invoice currency and subscription currency.
        :param str invoice_currency: The currency associated with invoice.
        :param str invoice_number: It provides the invoice number against the redemption.
        :param float invoice_total_amount: It provides the invoice total amount of given redemption.
        :param float redeemed_rewards: It provides the redeemed rewards in invoice currency.
        :param str redemption_code: The redemption code used in the Billing Center during the reward redemption process.
        :param str redemption_email: It provides the redemption email id.
        :param str time_invoiced: It provides the invoice date.
        :param str time_redeemed: It provides redeem date.
        """
        pulumi.set(__self__, "base_rewards", base_rewards)
        pulumi.set(__self__, "fx_rate", fx_rate)
        pulumi.set(__self__, "invoice_currency", invoice_currency)
        pulumi.set(__self__, "invoice_number", invoice_number)
        pulumi.set(__self__, "invoice_total_amount", invoice_total_amount)
        pulumi.set(__self__, "redeemed_rewards", redeemed_rewards)
        pulumi.set(__self__, "redemption_code", redemption_code)
        pulumi.set(__self__, "redemption_email", redemption_email)
        pulumi.set(__self__, "time_invoiced", time_invoiced)
        pulumi.set(__self__, "time_redeemed", time_redeemed)

    @property
    @pulumi.getter(name="baseRewards")
    def base_rewards(self) -> float:
        """
        It provides the redeemed rewards in base/subscription currency.
        """
        return pulumi.get(self, "base_rewards")

    @property
    @pulumi.getter(name="fxRate")
    def fx_rate(self) -> float:
        """
        It provides the fxRate between invoice currency and subscription currency.
        """
        return pulumi.get(self, "fx_rate")

    @property
    @pulumi.getter(name="invoiceCurrency")
    def invoice_currency(self) -> str:
        """
        The currency associated with invoice.
        """
        return pulumi.get(self, "invoice_currency")

    @property
    @pulumi.getter(name="invoiceNumber")
    def invoice_number(self) -> str:
        """
        It provides the invoice number against the redemption.
        """
        return pulumi.get(self, "invoice_number")

    @property
    @pulumi.getter(name="invoiceTotalAmount")
    def invoice_total_amount(self) -> float:
        """
        It provides the invoice total amount of given redemption.
        """
        return pulumi.get(self, "invoice_total_amount")

    @property
    @pulumi.getter(name="redeemedRewards")
    def redeemed_rewards(self) -> float:
        """
        It provides the redeemed rewards in invoice currency.
        """
        return pulumi.get(self, "redeemed_rewards")

    @property
    @pulumi.getter(name="redemptionCode")
    def redemption_code(self) -> str:
        """
        The redemption code used in the Billing Center during the reward redemption process.
        """
        return pulumi.get(self, "redemption_code")

    @property
    @pulumi.getter(name="redemptionEmail")
    def redemption_email(self) -> str:
        """
        It provides the redemption email id.
        """
        return pulumi.get(self, "redemption_email")

    @property
    @pulumi.getter(name="timeInvoiced")
    def time_invoiced(self) -> str:
        """
        It provides the invoice date.
        """
        return pulumi.get(self, "time_invoiced")

    @property
    @pulumi.getter(name="timeRedeemed")
    def time_redeemed(self) -> str:
        """
        It provides redeem date.
        """
        return pulumi.get(self, "time_redeemed")


@pulumi.output_type
class GetSubscriptionRewardItemResult(dict):
    def __init__(__self__, *,
                 available_rewards: float,
                 earned_rewards: float,
                 eligible_usage_amount: float,
                 ineligible_usage_amount: float,
                 is_manual: bool,
                 redeemed_rewards: float,
                 time_rewards_earned: str,
                 time_rewards_expired: str,
                 time_usage_ended: str,
                 time_usage_started: str,
                 usage_amount: float,
                 usage_period_key: str):
        """
        :param float available_rewards: The number of rewards available for a specific usage period.
        :param float earned_rewards: The number of rewards earned for the specific usage period.
        :param float eligible_usage_amount: The eligible usage amount for the usage period.
        :param float ineligible_usage_amount: The ineligible usage amount for the usage period.
        :param bool is_manual: The boolean parameter to indicate whether or not the available rewards are manually posted.
        :param float redeemed_rewards: The number of rewards redeemed for a specific month.
        :param str time_rewards_earned: The date and time when rewards accrue.
        :param str time_rewards_expired: The date and time when rewards expire.
        :param str time_usage_ended: The end date and time for the usage period.
        :param str time_usage_started: The start date and time for the usage period.
        :param float usage_amount: The usage amount for the usage period.
        :param str usage_period_key: The usage period ID.
        """
        pulumi.set(__self__, "available_rewards", available_rewards)
        pulumi.set(__self__, "earned_rewards", earned_rewards)
        pulumi.set(__self__, "eligible_usage_amount", eligible_usage_amount)
        pulumi.set(__self__, "ineligible_usage_amount", ineligible_usage_amount)
        pulumi.set(__self__, "is_manual", is_manual)
        pulumi.set(__self__, "redeemed_rewards", redeemed_rewards)
        pulumi.set(__self__, "time_rewards_earned", time_rewards_earned)
        pulumi.set(__self__, "time_rewards_expired", time_rewards_expired)
        pulumi.set(__self__, "time_usage_ended", time_usage_ended)
        pulumi.set(__self__, "time_usage_started", time_usage_started)
        pulumi.set(__self__, "usage_amount", usage_amount)
        pulumi.set(__self__, "usage_period_key", usage_period_key)

    @property
    @pulumi.getter(name="availableRewards")
    def available_rewards(self) -> float:
        """
        The number of rewards available for a specific usage period.
        """
        return pulumi.get(self, "available_rewards")

    @property
    @pulumi.getter(name="earnedRewards")
    def earned_rewards(self) -> float:
        """
        The number of rewards earned for the specific usage period.
        """
        return pulumi.get(self, "earned_rewards")

    @property
    @pulumi.getter(name="eligibleUsageAmount")
    def eligible_usage_amount(self) -> float:
        """
        The eligible usage amount for the usage period.
        """
        return pulumi.get(self, "eligible_usage_amount")

    @property
    @pulumi.getter(name="ineligibleUsageAmount")
    def ineligible_usage_amount(self) -> float:
        """
        The ineligible usage amount for the usage period.
        """
        return pulumi.get(self, "ineligible_usage_amount")

    @property
    @pulumi.getter(name="isManual")
    def is_manual(self) -> bool:
        """
        The boolean parameter to indicate whether or not the available rewards are manually posted.
        """
        return pulumi.get(self, "is_manual")

    @property
    @pulumi.getter(name="redeemedRewards")
    def redeemed_rewards(self) -> float:
        """
        The number of rewards redeemed for a specific month.
        """
        return pulumi.get(self, "redeemed_rewards")

    @property
    @pulumi.getter(name="timeRewardsEarned")
    def time_rewards_earned(self) -> str:
        """
        The date and time when rewards accrue.
        """
        return pulumi.get(self, "time_rewards_earned")

    @property
    @pulumi.getter(name="timeRewardsExpired")
    def time_rewards_expired(self) -> str:
        """
        The date and time when rewards expire.
        """
        return pulumi.get(self, "time_rewards_expired")

    @property
    @pulumi.getter(name="timeUsageEnded")
    def time_usage_ended(self) -> str:
        """
        The end date and time for the usage period.
        """
        return pulumi.get(self, "time_usage_ended")

    @property
    @pulumi.getter(name="timeUsageStarted")
    def time_usage_started(self) -> str:
        """
        The start date and time for the usage period.
        """
        return pulumi.get(self, "time_usage_started")

    @property
    @pulumi.getter(name="usageAmount")
    def usage_amount(self) -> float:
        """
        The usage amount for the usage period.
        """
        return pulumi.get(self, "usage_amount")

    @property
    @pulumi.getter(name="usagePeriodKey")
    def usage_period_key(self) -> str:
        """
        The usage period ID.
        """
        return pulumi.get(self, "usage_period_key")


@pulumi.output_type
class GetSubscriptionRewardSummaryResult(dict):
    def __init__(__self__, *,
                 currency: str,
                 redemption_code: str,
                 rewards_rate: float,
                 subscription_id: str,
                 tenancy_id: str,
                 total_rewards_available: float):
        """
        :param str currency: The currency unit for the reward amount.
        :param str redemption_code: The redemption code used in the Billing Center during the reward redemption process.
        :param float rewards_rate: The current Rewards percentage in decimal format.
        :param str subscription_id: The subscription ID for which rewards information is requested for.
        :param str tenancy_id: The OCID of the tenancy.
        :param float total_rewards_available: The total number of available rewards for a given subscription ID.
        """
        pulumi.set(__self__, "currency", currency)
        pulumi.set(__self__, "redemption_code", redemption_code)
        pulumi.set(__self__, "rewards_rate", rewards_rate)
        pulumi.set(__self__, "subscription_id", subscription_id)
        pulumi.set(__self__, "tenancy_id", tenancy_id)
        pulumi.set(__self__, "total_rewards_available", total_rewards_available)

    @property
    @pulumi.getter
    def currency(self) -> str:
        """
        The currency unit for the reward amount.
        """
        return pulumi.get(self, "currency")

    @property
    @pulumi.getter(name="redemptionCode")
    def redemption_code(self) -> str:
        """
        The redemption code used in the Billing Center during the reward redemption process.
        """
        return pulumi.get(self, "redemption_code")

    @property
    @pulumi.getter(name="rewardsRate")
    def rewards_rate(self) -> float:
        """
        The current Rewards percentage in decimal format.
        """
        return pulumi.get(self, "rewards_rate")

    @property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> str:
        """
        The subscription ID for which rewards information is requested for.
        """
        return pulumi.get(self, "subscription_id")

    @property
    @pulumi.getter(name="tenancyId")
    def tenancy_id(self) -> str:
        """
        The OCID of the tenancy.
        """
        return pulumi.get(self, "tenancy_id")

    @property
    @pulumi.getter(name="totalRewardsAvailable")
    def total_rewards_available(self) -> float:
        """
        The total number of available rewards for a given subscription ID.
        """
        return pulumi.get(self, "total_rewards_available")


@pulumi.output_type
class GetSubscriptionRewardsFilterResult(dict):
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        pulumi.set(__self__, "name", name)
        pulumi.set(__self__, "values", values)
        if regex is not None:
            pulumi.set(__self__, "regex", regex)

    @property
    @pulumi.getter
    def name(self) -> str:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter
    def values(self) -> Sequence[str]:
        return pulumi.get(self, "values")

    @property
    @pulumi.getter
    def regex(self) -> Optional[bool]:
        return pulumi.get(self, "regex")


@pulumi.output_type
class GetSubscriptionRewardsRewardCollectionResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemResult']):
        """
        :param Sequence['GetSubscriptionRewardsRewardCollectionItemArgs'] items: The monthly summary of rewards.
        """
        pulumi.set(__self__, "items", items)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemResult']:
        """
        The monthly summary of rewards.
        """
        return pulumi.get(self, "items")


@pulumi.output_type
class GetSubscriptionRewardsRewardCollectionItemResult(dict):
    def __init__(__self__, *,
                 items: Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemItemResult'],
                 summaries: Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemSummaryResult']):
        """
        :param Sequence['GetSubscriptionRewardsRewardCollectionItemItemArgs'] items: The monthly summary of rewards.
        :param Sequence['GetSubscriptionRewardsRewardCollectionItemSummaryArgs'] summaries: The overall monthly reward summary.
        """
        pulumi.set(__self__, "items", items)
        pulumi.set(__self__, "summaries", summaries)

    @property
    @pulumi.getter
    def items(self) -> Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemItemResult']:
        """
        The monthly summary of rewards.
        """
        return pulumi.get(self, "items")

    @property
    @pulumi.getter
    def summaries(self) -> Sequence['outputs.GetSubscriptionRewardsRewardCollectionItemSummaryResult']:
        """
        The overall monthly reward summary.
        """
        return pulumi.get(self, "summaries")


@pulumi.output_type
class GetSubscriptionRewardsRewardCollectionItemItemResult(dict):
    def __init__(__self__, *,
                 available_rewards: float,
                 earned_rewards: float,
                 eligible_usage_amount: float,
                 ineligible_usage_amount: float,
                 is_manual: bool,
                 redeemed_rewards: float,
                 time_rewards_earned: str,
                 time_rewards_expired: str,
                 time_usage_ended: str,
                 time_usage_started: str,
                 usage_amount: float,
                 usage_period_key: str):
        """
        :param float available_rewards: The number of rewards available for a specific usage period.
        :param float earned_rewards: The number of rewards earned for the specific usage period.
        :param float eligible_usage_amount: The eligible usage amount for the usage period.
        :param float ineligible_usage_amount: The ineligible usage amount for the usage period.
        :param bool is_manual: The boolean parameter to indicate whether or not the available rewards are manually posted.
        :param float redeemed_rewards: The number of rewards redeemed for a specific month.
        :param str time_rewards_earned: The date and time when rewards accrue.
        :param str time_rewards_expired: The date and time when rewards expire.
        :param str time_usage_ended: The end date and time for the usage period.
        :param str time_usage_started: The start date and time for the usage period.
        :param float usage_amount: The usage amount for the usage period.
        :param str usage_period_key: The usage period ID.
        """
        pulumi.set(__self__, "available_rewards", available_rewards)
        pulumi.set(__self__, "earned_rewards", earned_rewards)
        pulumi.set(__self__, "eligible_usage_amount", eligible_usage_amount)
        pulumi.set(__self__, "ineligible_usage_amount", ineligible_usage_amount)
        pulumi.set(__self__, "is_manual", is_manual)
        pulumi.set(__self__, "redeemed_rewards", redeemed_rewards)
        pulumi.set(__self__, "time_rewards_earned", time_rewards_earned)
        pulumi.set(__self__, "time_rewards_expired", time_rewards_expired)
        pulumi.set(__self__, "time_usage_ended", time_usage_ended)
        pulumi.set(__self__, "time_usage_started", time_usage_started)
        pulumi.set(__self__, "usage_amount", usage_amount)
        pulumi.set(__self__, "usage_period_key", usage_period_key)

    @property
    @pulumi.getter(name="availableRewards")
    def available_rewards(self) -> float:
        """
        The number of rewards available for a specific usage period.
        """
        return pulumi.get(self, "available_rewards")

    @property
    @pulumi.getter(name="earnedRewards")
    def earned_rewards(self) -> float:
        """
        The number of rewards earned for the specific usage period.
        """
        return pulumi.get(self, "earned_rewards")

    @property
    @pulumi.getter(name="eligibleUsageAmount")
    def eligible_usage_amount(self) -> float:
        """
        The eligible usage amount for the usage period.
        """
        return pulumi.get(self, "eligible_usage_amount")

    @property
    @pulumi.getter(name="ineligibleUsageAmount")
    def ineligible_usage_amount(self) -> float:
        """
        The ineligible usage amount for the usage period.
        """
        return pulumi.get(self, "ineligible_usage_amount")

    @property
    @pulumi.getter(name="isManual")
    def is_manual(self) -> bool:
        """
        The boolean parameter to indicate whether or not the available rewards are manually posted.
        """
        return pulumi.get(self, "is_manual")

    @property
    @pulumi.getter(name="redeemedRewards")
    def redeemed_rewards(self) -> float:
        """
        The number of rewards redeemed for a specific month.
        """
        return pulumi.get(self, "redeemed_rewards")

    @property
    @pulumi.getter(name="timeRewardsEarned")
    def time_rewards_earned(self) -> str:
        """
        The date and time when rewards accrue.
        """
        return pulumi.get(self, "time_rewards_earned")

    @property
    @pulumi.getter(name="timeRewardsExpired")
    def time_rewards_expired(self) -> str:
        """
        The date and time when rewards expire.
        """
        return pulumi.get(self, "time_rewards_expired")

    @property
    @pulumi.getter(name="timeUsageEnded")
    def time_usage_ended(self) -> str:
        """
        The end date and time for the usage period.
        """
        return pulumi.get(self, "time_usage_ended")

    @property
    @pulumi.getter(name="timeUsageStarted")
    def time_usage_started(self) -> str:
        """
        The start date and time for the usage period.
        """
        return pulumi.get(self, "time_usage_started")

    @property
    @pulumi.getter(name="usageAmount")
    def usage_amount(self) -> float:
        """
        The usage amount for the usage period.
        """
        return pulumi.get(self, "usage_amount")

    @property
    @pulumi.getter(name="usagePeriodKey")
    def usage_period_key(self) -> str:
        """
        The usage period ID.
        """
        return pulumi.get(self, "usage_period_key")


@pulumi.output_type
class GetSubscriptionRewardsRewardCollectionItemSummaryResult(dict):
    def __init__(__self__, *,
                 currency: str,
                 redemption_code: str,
                 rewards_rate: float,
                 subscription_id: str,
                 tenancy_id: str,
                 total_rewards_available: float):
        """
        :param str currency: The currency unit for the reward amount.
        :param str redemption_code: The redemption code used in the Billing Center during the reward redemption process.
        :param float rewards_rate: The current Rewards percentage in decimal format.
        :param str subscription_id: The subscription ID for which rewards information is requested for.
        :param str tenancy_id: The OCID of the tenancy.
        :param float total_rewards_available: The total number of available rewards for a given subscription ID.
        """
        pulumi.set(__self__, "currency", currency)
        pulumi.set(__self__, "redemption_code", redemption_code)
        pulumi.set(__self__, "rewards_rate", rewards_rate)
        pulumi.set(__self__, "subscription_id", subscription_id)
        pulumi.set(__self__, "tenancy_id", tenancy_id)
        pulumi.set(__self__, "total_rewards_available", total_rewards_available)

    @property
    @pulumi.getter
    def currency(self) -> str:
        """
        The currency unit for the reward amount.
        """
        return pulumi.get(self, "currency")

    @property
    @pulumi.getter(name="redemptionCode")
    def redemption_code(self) -> str:
        """
        The redemption code used in the Billing Center during the reward redemption process.
        """
        return pulumi.get(self, "redemption_code")

    @property
    @pulumi.getter(name="rewardsRate")
    def rewards_rate(self) -> float:
        """
        The current Rewards percentage in decimal format.
        """
        return pulumi.get(self, "rewards_rate")

    @property
    @pulumi.getter(name="subscriptionId")
    def subscription_id(self) -> str:
        """
        The subscription ID for which rewards information is requested for.
        """
        return pulumi.get(self, "subscription_id")

    @property
    @pulumi.getter(name="tenancyId")
    def tenancy_id(self) -> str:
        """
        The OCID of the tenancy.
        """
        return pulumi.get(self, "tenancy_id")

    @property
    @pulumi.getter(name="totalRewardsAvailable")
    def total_rewards_available(self) -> float:
        """
        The total number of available rewards for a given subscription ID.
        """
        return pulumi.get(self, "total_rewards_available")


