# 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

__all__ = [
    'SubscriptionBillingAddressArgs',
    'SubscriptionPaymentGatewayArgs',
    'SubscriptionPaymentGatewayMerchantDefinedDataArgs',
    'SubscriptionPaymentOptionArgs',
    'SubscriptionSubscriptionArgs',
    'SubscriptionSubscriptionBillingAddressArgs',
    'SubscriptionSubscriptionPaymentGatewayArgs',
    'SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs',
    'SubscriptionSubscriptionPaymentOptionArgs',
    'SubscriptionSubscriptionTaxInfoArgs',
    'SubscriptionTaxInfoArgs',
    'GetInvoicesFilterArgs',
    'GetInvoicesInvoiceLinesFilterArgs',
    'GetSubscriptionsFilterArgs',
]

@pulumi.input_type
class SubscriptionBillingAddressArgs:
    def __init__(__self__, *,
                 address_key: Optional[pulumi.Input[str]] = None,
                 city: Optional[pulumi.Input[str]] = None,
                 company_name: Optional[pulumi.Input[str]] = None,
                 country: Optional[pulumi.Input[str]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 first_name: Optional[pulumi.Input[str]] = None,
                 last_name: Optional[pulumi.Input[str]] = None,
                 line1: Optional[pulumi.Input[str]] = None,
                 line2: Optional[pulumi.Input[str]] = None,
                 postal_code: Optional[pulumi.Input[str]] = None,
                 state: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] address_key: (Updatable) Address identifier.
        :param pulumi.Input[str] city: (Updatable) Name of the city.
        :param pulumi.Input[str] company_name: (Updatable) Name of the customer company.
        :param pulumi.Input[str] country: (Updatable) Country of the address.
        :param pulumi.Input[str] email_address: (Updatable) The email address of the paypal user.
        :param pulumi.Input[str] first_name: (Updatable) First name of the paypal user.
        :param pulumi.Input[str] last_name: (Updatable) Last name of the paypal user.
        :param pulumi.Input[str] line1: (Updatable) Address line 1.
        :param pulumi.Input[str] line2: (Updatable) Address line 2.
        :param pulumi.Input[str] postal_code: (Updatable) Post code of the address.
        :param pulumi.Input[str] state: (Updatable) State of the address.
        """
        if address_key is not None:
            pulumi.set(__self__, "address_key", address_key)
        if city is not None:
            pulumi.set(__self__, "city", city)
        if company_name is not None:
            pulumi.set(__self__, "company_name", company_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        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)
        if line1 is not None:
            pulumi.set(__self__, "line1", line1)
        if line2 is not None:
            pulumi.set(__self__, "line2", line2)
        if postal_code is not None:
            pulumi.set(__self__, "postal_code", postal_code)
        if state is not None:
            pulumi.set(__self__, "state", state)

    @property
    @pulumi.getter(name="addressKey")
    def address_key(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address identifier.
        """
        return pulumi.get(self, "address_key")

    @address_key.setter
    def address_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "address_key", value)

    @property
    @pulumi.getter
    def city(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name of the city.
        """
        return pulumi.get(self, "city")

    @city.setter
    def city(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "city", value)

    @property
    @pulumi.getter(name="companyName")
    def company_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name of the customer company.
        """
        return pulumi.get(self, "company_name")

    @company_name.setter
    def company_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "company_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Country of the address.
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="emailAddress")
    def email_address(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The email address of the paypal user.
        """
        return pulumi.get(self, "email_address")

    @email_address.setter
    def email_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "email_address", value)

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) First name of the paypal user.
        """
        return pulumi.get(self, "first_name")

    @first_name.setter
    def first_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "first_name", value)

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last name of the paypal user.
        """
        return pulumi.get(self, "last_name")

    @last_name.setter
    def last_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_name", value)

    @property
    @pulumi.getter
    def line1(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address line 1.
        """
        return pulumi.get(self, "line1")

    @line1.setter
    def line1(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "line1", value)

    @property
    @pulumi.getter
    def line2(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address line 2.
        """
        return pulumi.get(self, "line2")

    @line2.setter
    def line2(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "line2", value)

    @property
    @pulumi.getter(name="postalCode")
    def postal_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Post code of the address.
        """
        return pulumi.get(self, "postal_code")

    @postal_code.setter
    def postal_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "postal_code", value)

    @property
    @pulumi.getter
    def state(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) State of the address.
        """
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state", value)


@pulumi.input_type
class SubscriptionPaymentGatewayArgs:
    def __init__(__self__, *,
                 merchant_defined_datas: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionPaymentGatewayMerchantDefinedDataArgs']]]] = None):
        """
        :param pulumi.Input[Sequence[pulumi.Input['SubscriptionPaymentGatewayMerchantDefinedDataArgs']]] merchant_defined_datas: (Updatable) Merchant details.
        """
        if merchant_defined_datas is not None:
            pulumi.set(__self__, "merchant_defined_datas", merchant_defined_datas)

    @property
    @pulumi.getter(name="merchantDefinedDatas")
    def merchant_defined_datas(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionPaymentGatewayMerchantDefinedDataArgs']]]]:
        """
        (Updatable) Merchant details.
        """
        return pulumi.get(self, "merchant_defined_datas")

    @merchant_defined_datas.setter
    def merchant_defined_datas(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionPaymentGatewayMerchantDefinedDataArgs']]]]):
        pulumi.set(self, "merchant_defined_datas", value)


@pulumi.input_type
class SubscriptionPaymentGatewayMerchantDefinedDataArgs:
    def __init__(__self__, *,
                 cloud_account_name: Optional[pulumi.Input[str]] = None,
                 promo_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] cloud_account_name: (Updatable) Cloud account name.
        :param pulumi.Input[str] promo_type: (Updatable) Promotion type code.
        """
        if cloud_account_name is not None:
            pulumi.set(__self__, "cloud_account_name", cloud_account_name)
        if promo_type is not None:
            pulumi.set(__self__, "promo_type", promo_type)

    @property
    @pulumi.getter(name="cloudAccountName")
    def cloud_account_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Cloud account name.
        """
        return pulumi.get(self, "cloud_account_name")

    @cloud_account_name.setter
    def cloud_account_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cloud_account_name", value)

    @property
    @pulumi.getter(name="promoType")
    def promo_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Promotion type code.
        """
        return pulumi.get(self, "promo_type")

    @promo_type.setter
    def promo_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "promo_type", value)


@pulumi.input_type
class SubscriptionPaymentOptionArgs:
    def __init__(__self__, *,
                 credit_card_type: Optional[pulumi.Input[str]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 ext_billing_agreement_id: Optional[pulumi.Input[str]] = None,
                 first_name: Optional[pulumi.Input[str]] = None,
                 last_digits: Optional[pulumi.Input[str]] = None,
                 last_name: Optional[pulumi.Input[str]] = None,
                 name_on_card: Optional[pulumi.Input[str]] = None,
                 payment_method: Optional[pulumi.Input[str]] = None,
                 time_expiration: Optional[pulumi.Input[str]] = None,
                 wallet_instrument_id: Optional[pulumi.Input[str]] = None,
                 wallet_transaction_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] credit_card_type: (Updatable) Credit card type.
        :param pulumi.Input[str] email_address: (Updatable) The email address of the paypal user.
        :param pulumi.Input[str] ext_billing_agreement_id: (Updatable) Agreement id for the paypal account.
        :param pulumi.Input[str] first_name: (Updatable) First name of the paypal user.
        :param pulumi.Input[str] last_digits: (Updatable) Last four digits of the card.
        :param pulumi.Input[str] last_name: (Updatable) Last name of the paypal user.
        :param pulumi.Input[str] name_on_card: (Updatable) Name on the credit card.
        :param pulumi.Input[str] payment_method: (Updatable) Payment method
        :param pulumi.Input[str] time_expiration: (Updatable) Expired date of the credit card.
        :param pulumi.Input[str] wallet_instrument_id: (Updatable) Wallet instrument internal id.
        :param pulumi.Input[str] wallet_transaction_id: (Updatable) Wallet transaction id.
        """
        if credit_card_type is not None:
            pulumi.set(__self__, "credit_card_type", credit_card_type)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        if ext_billing_agreement_id is not None:
            pulumi.set(__self__, "ext_billing_agreement_id", ext_billing_agreement_id)
        if first_name is not None:
            pulumi.set(__self__, "first_name", first_name)
        if last_digits is not None:
            pulumi.set(__self__, "last_digits", last_digits)
        if last_name is not None:
            pulumi.set(__self__, "last_name", last_name)
        if name_on_card is not None:
            pulumi.set(__self__, "name_on_card", name_on_card)
        if payment_method is not None:
            pulumi.set(__self__, "payment_method", payment_method)
        if time_expiration is not None:
            pulumi.set(__self__, "time_expiration", time_expiration)
        if wallet_instrument_id is not None:
            pulumi.set(__self__, "wallet_instrument_id", wallet_instrument_id)
        if wallet_transaction_id is not None:
            pulumi.set(__self__, "wallet_transaction_id", wallet_transaction_id)

    @property
    @pulumi.getter(name="creditCardType")
    def credit_card_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Credit card type.
        """
        return pulumi.get(self, "credit_card_type")

    @credit_card_type.setter
    def credit_card_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "credit_card_type", value)

    @property
    @pulumi.getter(name="emailAddress")
    def email_address(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The email address of the paypal user.
        """
        return pulumi.get(self, "email_address")

    @email_address.setter
    def email_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "email_address", value)

    @property
    @pulumi.getter(name="extBillingAgreementId")
    def ext_billing_agreement_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Agreement id for the paypal account.
        """
        return pulumi.get(self, "ext_billing_agreement_id")

    @ext_billing_agreement_id.setter
    def ext_billing_agreement_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ext_billing_agreement_id", value)

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) First name of the paypal user.
        """
        return pulumi.get(self, "first_name")

    @first_name.setter
    def first_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "first_name", value)

    @property
    @pulumi.getter(name="lastDigits")
    def last_digits(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last four digits of the card.
        """
        return pulumi.get(self, "last_digits")

    @last_digits.setter
    def last_digits(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_digits", value)

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last name of the paypal user.
        """
        return pulumi.get(self, "last_name")

    @last_name.setter
    def last_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_name", value)

    @property
    @pulumi.getter(name="nameOnCard")
    def name_on_card(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name on the credit card.
        """
        return pulumi.get(self, "name_on_card")

    @name_on_card.setter
    def name_on_card(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name_on_card", value)

    @property
    @pulumi.getter(name="paymentMethod")
    def payment_method(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Payment method
        """
        return pulumi.get(self, "payment_method")

    @payment_method.setter
    def payment_method(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "payment_method", value)

    @property
    @pulumi.getter(name="timeExpiration")
    def time_expiration(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Expired date of the credit card.
        """
        return pulumi.get(self, "time_expiration")

    @time_expiration.setter
    def time_expiration(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_expiration", value)

    @property
    @pulumi.getter(name="walletInstrumentId")
    def wallet_instrument_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Wallet instrument internal id.
        """
        return pulumi.get(self, "wallet_instrument_id")

    @wallet_instrument_id.setter
    def wallet_instrument_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "wallet_instrument_id", value)

    @property
    @pulumi.getter(name="walletTransactionId")
    def wallet_transaction_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Wallet transaction id.
        """
        return pulumi.get(self, "wallet_transaction_id")

    @wallet_transaction_id.setter
    def wallet_transaction_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "wallet_transaction_id", value)


@pulumi.input_type
class SubscriptionSubscriptionArgs:
    def __init__(__self__, *,
                 subscription_plan_number: pulumi.Input[str],
                 bill_to_cust_account_id: Optional[pulumi.Input[str]] = None,
                 billing_addresses: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionBillingAddressArgs']]]] = None,
                 currency_code: Optional[pulumi.Input[str]] = None,
                 gsi_org_code: Optional[pulumi.Input[str]] = None,
                 id: Optional[pulumi.Input[str]] = None,
                 is_intent_to_pay: Optional[pulumi.Input[bool]] = None,
                 language_code: Optional[pulumi.Input[str]] = None,
                 organization_id: Optional[pulumi.Input[str]] = None,
                 payment_gateway: Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayArgs']] = None,
                 payment_options: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionPaymentOptionArgs']]]] = None,
                 plan_type: Optional[pulumi.Input[str]] = None,
                 ship_to_cust_acct_role_id: Optional[pulumi.Input[str]] = None,
                 ship_to_cust_acct_site_id: Optional[pulumi.Input[str]] = None,
                 tax_info: Optional[pulumi.Input['SubscriptionSubscriptionTaxInfoArgs']] = None,
                 time_plan_upgrade: Optional[pulumi.Input[str]] = None,
                 time_start: Optional[pulumi.Input[str]] = None,
                 upgrade_state: Optional[pulumi.Input[str]] = None,
                 upgrade_state_details: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] subscription_plan_number: (Updatable) Subscription plan number.
        :param pulumi.Input[str] bill_to_cust_account_id: (Updatable) Bill to customer Account id.
        :param pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionBillingAddressArgs']]] billing_addresses: (Updatable) Billing address details model.
        :param pulumi.Input[str] currency_code: (Updatable) Currency code
        :param pulumi.Input[str] gsi_org_code: (Updatable) GSI Subscription external code.
        :param pulumi.Input[str] id: (Updatable) Subscription id identifier (OCID).
        :param pulumi.Input[bool] is_intent_to_pay: (Updatable) Payment intension.
        :param pulumi.Input[str] language_code: (Updatable) Language short code (en, de, hu, etc)
        :param pulumi.Input[str] organization_id: (Updatable) GSI organization external identifier.
        :param pulumi.Input['SubscriptionSubscriptionPaymentGatewayArgs'] payment_gateway: (Updatable) Payment gateway details.
        :param pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionPaymentOptionArgs']]] payment_options: (Updatable) Payment option list of a subscription.
        :param pulumi.Input[str] plan_type: (Updatable) Subscription plan type.
        :param pulumi.Input[str] ship_to_cust_acct_role_id: (Updatable) Ship to customer account role.
        :param pulumi.Input[str] ship_to_cust_acct_site_id: (Updatable) Ship to customer account site address id.
        :param pulumi.Input['SubscriptionSubscriptionTaxInfoArgs'] tax_info: (Updatable) Tax details.
        :param pulumi.Input[str] time_plan_upgrade: (Updatable) Date of upgrade/conversion when planType changed from FREE_TIER to PAYG
        :param pulumi.Input[str] time_start: (Updatable) Start date of the subscription.
        :param pulumi.Input[str] upgrade_state: (Updatable) Status of the upgrade.
        :param pulumi.Input[str] upgrade_state_details: (Updatable) This field is used to describe the Upgrade State in case of error (E.g. Upgrade failure caused by interfacing Tax details- TaxError)
        """
        pulumi.set(__self__, "subscription_plan_number", subscription_plan_number)
        if bill_to_cust_account_id is not None:
            pulumi.set(__self__, "bill_to_cust_account_id", bill_to_cust_account_id)
        if billing_addresses is not None:
            pulumi.set(__self__, "billing_addresses", billing_addresses)
        if currency_code is not None:
            pulumi.set(__self__, "currency_code", currency_code)
        if gsi_org_code is not None:
            pulumi.set(__self__, "gsi_org_code", gsi_org_code)
        if id is not None:
            pulumi.set(__self__, "id", id)
        if is_intent_to_pay is not None:
            pulumi.set(__self__, "is_intent_to_pay", is_intent_to_pay)
        if language_code is not None:
            pulumi.set(__self__, "language_code", language_code)
        if organization_id is not None:
            pulumi.set(__self__, "organization_id", organization_id)
        if payment_gateway is not None:
            pulumi.set(__self__, "payment_gateway", payment_gateway)
        if payment_options is not None:
            pulumi.set(__self__, "payment_options", payment_options)
        if plan_type is not None:
            pulumi.set(__self__, "plan_type", plan_type)
        if ship_to_cust_acct_role_id is not None:
            pulumi.set(__self__, "ship_to_cust_acct_role_id", ship_to_cust_acct_role_id)
        if ship_to_cust_acct_site_id is not None:
            pulumi.set(__self__, "ship_to_cust_acct_site_id", ship_to_cust_acct_site_id)
        if tax_info is not None:
            pulumi.set(__self__, "tax_info", tax_info)
        if time_plan_upgrade is not None:
            pulumi.set(__self__, "time_plan_upgrade", time_plan_upgrade)
        if time_start is not None:
            pulumi.set(__self__, "time_start", time_start)
        if upgrade_state is not None:
            pulumi.set(__self__, "upgrade_state", upgrade_state)
        if upgrade_state_details is not None:
            pulumi.set(__self__, "upgrade_state_details", upgrade_state_details)

    @property
    @pulumi.getter(name="subscriptionPlanNumber")
    def subscription_plan_number(self) -> pulumi.Input[str]:
        """
        (Updatable) Subscription plan number.
        """
        return pulumi.get(self, "subscription_plan_number")

    @subscription_plan_number.setter
    def subscription_plan_number(self, value: pulumi.Input[str]):
        pulumi.set(self, "subscription_plan_number", value)

    @property
    @pulumi.getter(name="billToCustAccountId")
    def bill_to_cust_account_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Bill to customer Account id.
        """
        return pulumi.get(self, "bill_to_cust_account_id")

    @bill_to_cust_account_id.setter
    def bill_to_cust_account_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "bill_to_cust_account_id", value)

    @property
    @pulumi.getter(name="billingAddresses")
    def billing_addresses(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionBillingAddressArgs']]]]:
        """
        (Updatable) Billing address details model.
        """
        return pulumi.get(self, "billing_addresses")

    @billing_addresses.setter
    def billing_addresses(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionBillingAddressArgs']]]]):
        pulumi.set(self, "billing_addresses", value)

    @property
    @pulumi.getter(name="currencyCode")
    def currency_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Currency code
        """
        return pulumi.get(self, "currency_code")

    @currency_code.setter
    def currency_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "currency_code", value)

    @property
    @pulumi.getter(name="gsiOrgCode")
    def gsi_org_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) GSI Subscription external code.
        """
        return pulumi.get(self, "gsi_org_code")

    @gsi_org_code.setter
    def gsi_org_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "gsi_org_code", value)

    @property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Subscription id identifier (OCID).
        """
        return pulumi.get(self, "id")

    @id.setter
    def id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "id", value)

    @property
    @pulumi.getter(name="isIntentToPay")
    def is_intent_to_pay(self) -> Optional[pulumi.Input[bool]]:
        """
        (Updatable) Payment intension.
        """
        return pulumi.get(self, "is_intent_to_pay")

    @is_intent_to_pay.setter
    def is_intent_to_pay(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "is_intent_to_pay", value)

    @property
    @pulumi.getter(name="languageCode")
    def language_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Language short code (en, de, hu, etc)
        """
        return pulumi.get(self, "language_code")

    @language_code.setter
    def language_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "language_code", value)

    @property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) GSI organization external identifier.
        """
        return pulumi.get(self, "organization_id")

    @organization_id.setter
    def organization_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "organization_id", value)

    @property
    @pulumi.getter(name="paymentGateway")
    def payment_gateway(self) -> Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayArgs']]:
        """
        (Updatable) Payment gateway details.
        """
        return pulumi.get(self, "payment_gateway")

    @payment_gateway.setter
    def payment_gateway(self, value: Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayArgs']]):
        pulumi.set(self, "payment_gateway", value)

    @property
    @pulumi.getter(name="paymentOptions")
    def payment_options(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionPaymentOptionArgs']]]]:
        """
        (Updatable) Payment option list of a subscription.
        """
        return pulumi.get(self, "payment_options")

    @payment_options.setter
    def payment_options(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['SubscriptionSubscriptionPaymentOptionArgs']]]]):
        pulumi.set(self, "payment_options", value)

    @property
    @pulumi.getter(name="planType")
    def plan_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Subscription plan type.
        """
        return pulumi.get(self, "plan_type")

    @plan_type.setter
    def plan_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "plan_type", value)

    @property
    @pulumi.getter(name="shipToCustAcctRoleId")
    def ship_to_cust_acct_role_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Ship to customer account role.
        """
        return pulumi.get(self, "ship_to_cust_acct_role_id")

    @ship_to_cust_acct_role_id.setter
    def ship_to_cust_acct_role_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ship_to_cust_acct_role_id", value)

    @property
    @pulumi.getter(name="shipToCustAcctSiteId")
    def ship_to_cust_acct_site_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Ship to customer account site address id.
        """
        return pulumi.get(self, "ship_to_cust_acct_site_id")

    @ship_to_cust_acct_site_id.setter
    def ship_to_cust_acct_site_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ship_to_cust_acct_site_id", value)

    @property
    @pulumi.getter(name="taxInfo")
    def tax_info(self) -> Optional[pulumi.Input['SubscriptionSubscriptionTaxInfoArgs']]:
        """
        (Updatable) Tax details.
        """
        return pulumi.get(self, "tax_info")

    @tax_info.setter
    def tax_info(self, value: Optional[pulumi.Input['SubscriptionSubscriptionTaxInfoArgs']]):
        pulumi.set(self, "tax_info", value)

    @property
    @pulumi.getter(name="timePlanUpgrade")
    def time_plan_upgrade(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Date of upgrade/conversion when planType changed from FREE_TIER to PAYG
        """
        return pulumi.get(self, "time_plan_upgrade")

    @time_plan_upgrade.setter
    def time_plan_upgrade(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_plan_upgrade", value)

    @property
    @pulumi.getter(name="timeStart")
    def time_start(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Start date of the subscription.
        """
        return pulumi.get(self, "time_start")

    @time_start.setter
    def time_start(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_start", value)

    @property
    @pulumi.getter(name="upgradeState")
    def upgrade_state(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Status of the upgrade.
        """
        return pulumi.get(self, "upgrade_state")

    @upgrade_state.setter
    def upgrade_state(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "upgrade_state", value)

    @property
    @pulumi.getter(name="upgradeStateDetails")
    def upgrade_state_details(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) This field is used to describe the Upgrade State in case of error (E.g. Upgrade failure caused by interfacing Tax details- TaxError)
        """
        return pulumi.get(self, "upgrade_state_details")

    @upgrade_state_details.setter
    def upgrade_state_details(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "upgrade_state_details", value)


@pulumi.input_type
class SubscriptionSubscriptionBillingAddressArgs:
    def __init__(__self__, *,
                 address_key: Optional[pulumi.Input[str]] = None,
                 city: Optional[pulumi.Input[str]] = None,
                 company_name: Optional[pulumi.Input[str]] = None,
                 country: Optional[pulumi.Input[str]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 first_name: Optional[pulumi.Input[str]] = None,
                 last_name: Optional[pulumi.Input[str]] = None,
                 line1: Optional[pulumi.Input[str]] = None,
                 line2: Optional[pulumi.Input[str]] = None,
                 postal_code: Optional[pulumi.Input[str]] = None,
                 state: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] address_key: (Updatable) Address identifier.
        :param pulumi.Input[str] city: (Updatable) Name of the city.
        :param pulumi.Input[str] company_name: (Updatable) Name of the customer company.
        :param pulumi.Input[str] country: (Updatable) Country of the address.
        :param pulumi.Input[str] email_address: (Updatable) The email address of the paypal user.
        :param pulumi.Input[str] first_name: (Updatable) First name of the paypal user.
        :param pulumi.Input[str] last_name: (Updatable) Last name of the paypal user.
        :param pulumi.Input[str] line1: (Updatable) Address line 1.
        :param pulumi.Input[str] line2: (Updatable) Address line 2.
        :param pulumi.Input[str] postal_code: (Updatable) Post code of the address.
        :param pulumi.Input[str] state: (Updatable) State of the address.
        """
        if address_key is not None:
            pulumi.set(__self__, "address_key", address_key)
        if city is not None:
            pulumi.set(__self__, "city", city)
        if company_name is not None:
            pulumi.set(__self__, "company_name", company_name)
        if country is not None:
            pulumi.set(__self__, "country", country)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        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)
        if line1 is not None:
            pulumi.set(__self__, "line1", line1)
        if line2 is not None:
            pulumi.set(__self__, "line2", line2)
        if postal_code is not None:
            pulumi.set(__self__, "postal_code", postal_code)
        if state is not None:
            pulumi.set(__self__, "state", state)

    @property
    @pulumi.getter(name="addressKey")
    def address_key(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address identifier.
        """
        return pulumi.get(self, "address_key")

    @address_key.setter
    def address_key(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "address_key", value)

    @property
    @pulumi.getter
    def city(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name of the city.
        """
        return pulumi.get(self, "city")

    @city.setter
    def city(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "city", value)

    @property
    @pulumi.getter(name="companyName")
    def company_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name of the customer company.
        """
        return pulumi.get(self, "company_name")

    @company_name.setter
    def company_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "company_name", value)

    @property
    @pulumi.getter
    def country(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Country of the address.
        """
        return pulumi.get(self, "country")

    @country.setter
    def country(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "country", value)

    @property
    @pulumi.getter(name="emailAddress")
    def email_address(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The email address of the paypal user.
        """
        return pulumi.get(self, "email_address")

    @email_address.setter
    def email_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "email_address", value)

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) First name of the paypal user.
        """
        return pulumi.get(self, "first_name")

    @first_name.setter
    def first_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "first_name", value)

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last name of the paypal user.
        """
        return pulumi.get(self, "last_name")

    @last_name.setter
    def last_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_name", value)

    @property
    @pulumi.getter
    def line1(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address line 1.
        """
        return pulumi.get(self, "line1")

    @line1.setter
    def line1(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "line1", value)

    @property
    @pulumi.getter
    def line2(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Address line 2.
        """
        return pulumi.get(self, "line2")

    @line2.setter
    def line2(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "line2", value)

    @property
    @pulumi.getter(name="postalCode")
    def postal_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Post code of the address.
        """
        return pulumi.get(self, "postal_code")

    @postal_code.setter
    def postal_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "postal_code", value)

    @property
    @pulumi.getter
    def state(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) State of the address.
        """
        return pulumi.get(self, "state")

    @state.setter
    def state(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "state", value)


@pulumi.input_type
class SubscriptionSubscriptionPaymentGatewayArgs:
    def __init__(__self__, *,
                 merchant_defined_data: Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs']] = None):
        """
        :param pulumi.Input['SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs'] merchant_defined_data: (Updatable) Merchant details.
        """
        if merchant_defined_data is not None:
            pulumi.set(__self__, "merchant_defined_data", merchant_defined_data)

    @property
    @pulumi.getter(name="merchantDefinedData")
    def merchant_defined_data(self) -> Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs']]:
        """
        (Updatable) Merchant details.
        """
        return pulumi.get(self, "merchant_defined_data")

    @merchant_defined_data.setter
    def merchant_defined_data(self, value: Optional[pulumi.Input['SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs']]):
        pulumi.set(self, "merchant_defined_data", value)


@pulumi.input_type
class SubscriptionSubscriptionPaymentGatewayMerchantDefinedDataArgs:
    def __init__(__self__, *,
                 cloud_account_name: Optional[pulumi.Input[str]] = None,
                 promo_type: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] cloud_account_name: (Updatable) Cloud account name.
        :param pulumi.Input[str] promo_type: (Updatable) Promotion type code.
        """
        if cloud_account_name is not None:
            pulumi.set(__self__, "cloud_account_name", cloud_account_name)
        if promo_type is not None:
            pulumi.set(__self__, "promo_type", promo_type)

    @property
    @pulumi.getter(name="cloudAccountName")
    def cloud_account_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Cloud account name.
        """
        return pulumi.get(self, "cloud_account_name")

    @cloud_account_name.setter
    def cloud_account_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "cloud_account_name", value)

    @property
    @pulumi.getter(name="promoType")
    def promo_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Promotion type code.
        """
        return pulumi.get(self, "promo_type")

    @promo_type.setter
    def promo_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "promo_type", value)


@pulumi.input_type
class SubscriptionSubscriptionPaymentOptionArgs:
    def __init__(__self__, *,
                 payment_method: pulumi.Input[str],
                 credit_card_type: Optional[pulumi.Input[str]] = None,
                 email_address: Optional[pulumi.Input[str]] = None,
                 ext_billing_agreement_id: Optional[pulumi.Input[str]] = None,
                 first_name: Optional[pulumi.Input[str]] = None,
                 last_digits: Optional[pulumi.Input[str]] = None,
                 last_name: Optional[pulumi.Input[str]] = None,
                 name_on_card: Optional[pulumi.Input[str]] = None,
                 time_expiration: Optional[pulumi.Input[str]] = None,
                 wallet_instrument_id: Optional[pulumi.Input[str]] = None,
                 wallet_transaction_id: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] payment_method: (Updatable) Payment method
        :param pulumi.Input[str] credit_card_type: (Updatable) Credit card type.
        :param pulumi.Input[str] email_address: (Updatable) The email address of the paypal user.
        :param pulumi.Input[str] ext_billing_agreement_id: (Updatable) Agreement id for the paypal account.
        :param pulumi.Input[str] first_name: (Updatable) First name of the paypal user.
        :param pulumi.Input[str] last_digits: (Updatable) Last four digits of the card.
        :param pulumi.Input[str] last_name: (Updatable) Last name of the paypal user.
        :param pulumi.Input[str] name_on_card: (Updatable) Name on the credit card.
        :param pulumi.Input[str] time_expiration: (Updatable) Expired date of the credit card.
        :param pulumi.Input[str] wallet_instrument_id: (Updatable) Wallet instrument internal id.
        :param pulumi.Input[str] wallet_transaction_id: (Updatable) Wallet transaction id.
        """
        pulumi.set(__self__, "payment_method", payment_method)
        if credit_card_type is not None:
            pulumi.set(__self__, "credit_card_type", credit_card_type)
        if email_address is not None:
            pulumi.set(__self__, "email_address", email_address)
        if ext_billing_agreement_id is not None:
            pulumi.set(__self__, "ext_billing_agreement_id", ext_billing_agreement_id)
        if first_name is not None:
            pulumi.set(__self__, "first_name", first_name)
        if last_digits is not None:
            pulumi.set(__self__, "last_digits", last_digits)
        if last_name is not None:
            pulumi.set(__self__, "last_name", last_name)
        if name_on_card is not None:
            pulumi.set(__self__, "name_on_card", name_on_card)
        if time_expiration is not None:
            pulumi.set(__self__, "time_expiration", time_expiration)
        if wallet_instrument_id is not None:
            pulumi.set(__self__, "wallet_instrument_id", wallet_instrument_id)
        if wallet_transaction_id is not None:
            pulumi.set(__self__, "wallet_transaction_id", wallet_transaction_id)

    @property
    @pulumi.getter(name="paymentMethod")
    def payment_method(self) -> pulumi.Input[str]:
        """
        (Updatable) Payment method
        """
        return pulumi.get(self, "payment_method")

    @payment_method.setter
    def payment_method(self, value: pulumi.Input[str]):
        pulumi.set(self, "payment_method", value)

    @property
    @pulumi.getter(name="creditCardType")
    def credit_card_type(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Credit card type.
        """
        return pulumi.get(self, "credit_card_type")

    @credit_card_type.setter
    def credit_card_type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "credit_card_type", value)

    @property
    @pulumi.getter(name="emailAddress")
    def email_address(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) The email address of the paypal user.
        """
        return pulumi.get(self, "email_address")

    @email_address.setter
    def email_address(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "email_address", value)

    @property
    @pulumi.getter(name="extBillingAgreementId")
    def ext_billing_agreement_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Agreement id for the paypal account.
        """
        return pulumi.get(self, "ext_billing_agreement_id")

    @ext_billing_agreement_id.setter
    def ext_billing_agreement_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "ext_billing_agreement_id", value)

    @property
    @pulumi.getter(name="firstName")
    def first_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) First name of the paypal user.
        """
        return pulumi.get(self, "first_name")

    @first_name.setter
    def first_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "first_name", value)

    @property
    @pulumi.getter(name="lastDigits")
    def last_digits(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last four digits of the card.
        """
        return pulumi.get(self, "last_digits")

    @last_digits.setter
    def last_digits(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_digits", value)

    @property
    @pulumi.getter(name="lastName")
    def last_name(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Last name of the paypal user.
        """
        return pulumi.get(self, "last_name")

    @last_name.setter
    def last_name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "last_name", value)

    @property
    @pulumi.getter(name="nameOnCard")
    def name_on_card(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Name on the credit card.
        """
        return pulumi.get(self, "name_on_card")

    @name_on_card.setter
    def name_on_card(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name_on_card", value)

    @property
    @pulumi.getter(name="timeExpiration")
    def time_expiration(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Expired date of the credit card.
        """
        return pulumi.get(self, "time_expiration")

    @time_expiration.setter
    def time_expiration(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "time_expiration", value)

    @property
    @pulumi.getter(name="walletInstrumentId")
    def wallet_instrument_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Wallet instrument internal id.
        """
        return pulumi.get(self, "wallet_instrument_id")

    @wallet_instrument_id.setter
    def wallet_instrument_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "wallet_instrument_id", value)

    @property
    @pulumi.getter(name="walletTransactionId")
    def wallet_transaction_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Wallet transaction id.
        """
        return pulumi.get(self, "wallet_transaction_id")

    @wallet_transaction_id.setter
    def wallet_transaction_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "wallet_transaction_id", value)


@pulumi.input_type
class SubscriptionSubscriptionTaxInfoArgs:
    def __init__(__self__, *,
                 no_tax_reason_code: Optional[pulumi.Input[str]] = None,
                 no_tax_reason_code_details: Optional[pulumi.Input[str]] = None,
                 tax_cnpj: Optional[pulumi.Input[str]] = None,
                 tax_payer_id: Optional[pulumi.Input[str]] = None,
                 tax_reg_number: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] no_tax_reason_code: (Updatable) Tax exemption reason code.
        :param pulumi.Input[str] no_tax_reason_code_details: (Updatable) Tax exemption reason description.
        :param pulumi.Input[str] tax_cnpj: (Updatable) Brazilian companies' CNPJ number.
        :param pulumi.Input[str] tax_payer_id: (Updatable) Tay payer identifier.
        :param pulumi.Input[str] tax_reg_number: (Updatable) Tax registration number.
        """
        if no_tax_reason_code is not None:
            pulumi.set(__self__, "no_tax_reason_code", no_tax_reason_code)
        if no_tax_reason_code_details is not None:
            pulumi.set(__self__, "no_tax_reason_code_details", no_tax_reason_code_details)
        if tax_cnpj is not None:
            pulumi.set(__self__, "tax_cnpj", tax_cnpj)
        if tax_payer_id is not None:
            pulumi.set(__self__, "tax_payer_id", tax_payer_id)
        if tax_reg_number is not None:
            pulumi.set(__self__, "tax_reg_number", tax_reg_number)

    @property
    @pulumi.getter(name="noTaxReasonCode")
    def no_tax_reason_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax exemption reason code.
        """
        return pulumi.get(self, "no_tax_reason_code")

    @no_tax_reason_code.setter
    def no_tax_reason_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "no_tax_reason_code", value)

    @property
    @pulumi.getter(name="noTaxReasonCodeDetails")
    def no_tax_reason_code_details(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax exemption reason description.
        """
        return pulumi.get(self, "no_tax_reason_code_details")

    @no_tax_reason_code_details.setter
    def no_tax_reason_code_details(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "no_tax_reason_code_details", value)

    @property
    @pulumi.getter(name="taxCnpj")
    def tax_cnpj(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Brazilian companies' CNPJ number.
        """
        return pulumi.get(self, "tax_cnpj")

    @tax_cnpj.setter
    def tax_cnpj(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_cnpj", value)

    @property
    @pulumi.getter(name="taxPayerId")
    def tax_payer_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tay payer identifier.
        """
        return pulumi.get(self, "tax_payer_id")

    @tax_payer_id.setter
    def tax_payer_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_payer_id", value)

    @property
    @pulumi.getter(name="taxRegNumber")
    def tax_reg_number(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax registration number.
        """
        return pulumi.get(self, "tax_reg_number")

    @tax_reg_number.setter
    def tax_reg_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_reg_number", value)


@pulumi.input_type
class SubscriptionTaxInfoArgs:
    def __init__(__self__, *,
                 no_tax_reason_code: Optional[pulumi.Input[str]] = None,
                 no_tax_reason_code_details: Optional[pulumi.Input[str]] = None,
                 tax_cnpj: Optional[pulumi.Input[str]] = None,
                 tax_payer_id: Optional[pulumi.Input[str]] = None,
                 tax_reg_number: Optional[pulumi.Input[str]] = None):
        """
        :param pulumi.Input[str] no_tax_reason_code: (Updatable) Tax exemption reason code.
        :param pulumi.Input[str] no_tax_reason_code_details: (Updatable) Tax exemption reason description.
        :param pulumi.Input[str] tax_cnpj: (Updatable) Brazilian companies' CNPJ number.
        :param pulumi.Input[str] tax_payer_id: (Updatable) Tay payer identifier.
        :param pulumi.Input[str] tax_reg_number: (Updatable) Tax registration number.
        """
        if no_tax_reason_code is not None:
            pulumi.set(__self__, "no_tax_reason_code", no_tax_reason_code)
        if no_tax_reason_code_details is not None:
            pulumi.set(__self__, "no_tax_reason_code_details", no_tax_reason_code_details)
        if tax_cnpj is not None:
            pulumi.set(__self__, "tax_cnpj", tax_cnpj)
        if tax_payer_id is not None:
            pulumi.set(__self__, "tax_payer_id", tax_payer_id)
        if tax_reg_number is not None:
            pulumi.set(__self__, "tax_reg_number", tax_reg_number)

    @property
    @pulumi.getter(name="noTaxReasonCode")
    def no_tax_reason_code(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax exemption reason code.
        """
        return pulumi.get(self, "no_tax_reason_code")

    @no_tax_reason_code.setter
    def no_tax_reason_code(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "no_tax_reason_code", value)

    @property
    @pulumi.getter(name="noTaxReasonCodeDetails")
    def no_tax_reason_code_details(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax exemption reason description.
        """
        return pulumi.get(self, "no_tax_reason_code_details")

    @no_tax_reason_code_details.setter
    def no_tax_reason_code_details(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "no_tax_reason_code_details", value)

    @property
    @pulumi.getter(name="taxCnpj")
    def tax_cnpj(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Brazilian companies' CNPJ number.
        """
        return pulumi.get(self, "tax_cnpj")

    @tax_cnpj.setter
    def tax_cnpj(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_cnpj", value)

    @property
    @pulumi.getter(name="taxPayerId")
    def tax_payer_id(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tay payer identifier.
        """
        return pulumi.get(self, "tax_payer_id")

    @tax_payer_id.setter
    def tax_payer_id(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_payer_id", value)

    @property
    @pulumi.getter(name="taxRegNumber")
    def tax_reg_number(self) -> Optional[pulumi.Input[str]]:
        """
        (Updatable) Tax registration number.
        """
        return pulumi.get(self, "tax_reg_number")

    @tax_reg_number.setter
    def tax_reg_number(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "tax_reg_number", value)


@pulumi.input_type
class GetInvoicesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: Name of the currency
        """
        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:
        """
        Name of the currency
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

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

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

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

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetInvoicesInvoiceLinesFilterArgs:
    def __init__(__self__, *,
                 name: str,
                 values: Sequence[str],
                 regex: Optional[bool] = None):
        """
        :param str name: Name of the currency
        """
        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:
        """
        Name of the currency
        """
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

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

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

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

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


@pulumi.input_type
class GetSubscriptionsFilterArgs:
    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")

    @name.setter
    def name(self, value: str):
        pulumi.set(self, "name", value)

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

    @values.setter
    def values(self, value: Sequence[str]):
        pulumi.set(self, "values", value)

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

    @regex.setter
    def regex(self, value: Optional[bool]):
        pulumi.set(self, "regex", value)


