{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the different functions to run the operation postSubscriptions
module StripeAPI.Operations.PostSubscriptions where

import qualified Control.Monad.Fail
import qualified Control.Monad.Trans.Reader
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Either
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified Data.Vector
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified Network.HTTP.Client
import qualified Network.HTTP.Client as Network.HTTP.Client.Request
import qualified Network.HTTP.Client as Network.HTTP.Client.Types
import qualified Network.HTTP.Simple
import qualified Network.HTTP.Types
import qualified Network.HTTP.Types as Network.HTTP.Types.Status
import qualified Network.HTTP.Types as Network.HTTP.Types.URI
import qualified StripeAPI.Common
import StripeAPI.Types
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | > POST /v1/subscriptions
--
-- \<p>Creates a new subscription on an existing customer. Each customer can have up to 500 active or scheduled subscriptions.\<\/p>
postSubscriptions ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | The request body to send
  PostSubscriptionsRequestBody ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.ClientT m (Network.HTTP.Client.Types.Response PostSubscriptionsResponse)
postSubscriptions :: PostSubscriptionsRequestBody
-> ClientT m (Response PostSubscriptionsResponse)
postSubscriptions PostSubscriptionsRequestBody
body =
  (Response ByteString -> Response PostSubscriptionsResponse)
-> ClientT m (Response ByteString)
-> ClientT m (Response PostSubscriptionsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
    ( \Response ByteString
response_0 ->
        (ByteString -> PostSubscriptionsResponse)
-> Response ByteString -> Response PostSubscriptionsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
          ( (String -> PostSubscriptionsResponse)
-> (PostSubscriptionsResponse -> PostSubscriptionsResponse)
-> Either String PostSubscriptionsResponse
-> PostSubscriptionsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> PostSubscriptionsResponse
PostSubscriptionsResponseError PostSubscriptionsResponse -> PostSubscriptionsResponse
forall a. a -> a
GHC.Base.id
              (Either String PostSubscriptionsResponse
 -> PostSubscriptionsResponse)
-> (ByteString -> Either String PostSubscriptionsResponse)
-> ByteString
-> PostSubscriptionsResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. ( \Response ByteString
response ByteString
body ->
                             if
                                 | (\Status
status_1 -> Status -> Int
Network.HTTP.Types.Status.statusCode Status
status_1 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Int
200) (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                   Subscription -> PostSubscriptionsResponse
PostSubscriptionsResponse200
                                     (Subscription -> PostSubscriptionsResponse)
-> Either String Subscription
-> Either String PostSubscriptionsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Subscription
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            Subscription
                                                      )
                                 | Bool -> Status -> Bool
forall a b. a -> b -> a
GHC.Base.const Bool
GHC.Types.True (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                   Error -> PostSubscriptionsResponse
PostSubscriptionsResponseDefault
                                     (Error -> PostSubscriptionsResponse)
-> Either String Error -> Either String PostSubscriptionsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Error
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            Error
                                                      )
                                 | Bool
GHC.Base.otherwise -> String -> Either String PostSubscriptionsResponse
forall a b. a -> Either a b
Data.Either.Left String
"Missing default response type"
                         )
                Response ByteString
response_0
          )
          Response ByteString
response_0
    )
    (Text
-> Text
-> [QueryParameter]
-> Maybe PostSubscriptionsRequestBody
-> RequestBodyEncoding
-> ClientT m (Response ByteString)
forall (m :: * -> *) body.
(MonadHTTP m, ToJSON body) =>
Text
-> Text
-> [QueryParameter]
-> Maybe body
-> RequestBodyEncoding
-> ClientT m (Response ByteString)
StripeAPI.Common.doBodyCallWithConfigurationM (Text -> Text
Data.Text.toUpper (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
GHC.Base.$ String -> Text
Data.Text.pack String
"POST") (String -> Text
Data.Text.pack String
"/v1/subscriptions") [QueryParameter]
forall a. Monoid a => a
GHC.Base.mempty (PostSubscriptionsRequestBody -> Maybe PostSubscriptionsRequestBody
forall a. a -> Maybe a
GHC.Maybe.Just PostSubscriptionsRequestBody
body) RequestBodyEncoding
StripeAPI.Common.RequestBodyEncodingFormData)

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema@ in the specification.
data PostSubscriptionsRequestBody = PostSubscriptionsRequestBody
  { -- | add_invoice_items: A list of prices and quantities that will generate invoice items appended to the first invoice for this subscription. You may pass up to 20 items.
    PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
postSubscriptionsRequestBodyAddInvoiceItems :: (GHC.Maybe.Maybe ([PostSubscriptionsRequestBodyAddInvoiceItems'])),
    -- | application_fee_percent: A non-negative decimal between 0 and 100, with at most two decimal places. This represents the percentage of the subscription invoice subtotal that will be transferred to the application owner\'s Stripe account. The request must be made by a platform account on a connected account in order to set an application fee percentage. For more information, see the application fees [documentation](https:\/\/stripe.com\/docs\/connect\/subscriptions\#collecting-fees-on-subscriptions).
    PostSubscriptionsRequestBody -> Maybe Double
postSubscriptionsRequestBodyApplicationFeePercent :: (GHC.Maybe.Maybe GHC.Types.Double),
    -- | automatic_tax: Automatic tax settings for this subscription.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyAutomaticTax'
postSubscriptionsRequestBodyAutomaticTax :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyAutomaticTax'),
    -- | backdate_start_date: For new subscriptions, a past timestamp to backdate the subscription\'s start date to. If set, the first invoice will contain a proration for the timespan between the start date and the current time. Can be combined with trials and the billing cycle anchor.
    PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBackdateStartDate :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | billing_cycle_anchor: A future timestamp to anchor the subscription\'s [billing cycle](https:\/\/stripe.com\/docs\/subscriptions\/billing-cycle). This is used to determine the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
    PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
postSubscriptionsRequestBodyBillingThresholds :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants),
    -- | cancel_at: A timestamp at which the subscription should cancel. If set to a date before the current period ends, this will cause a proration if prorations have been enabled using \`proration_behavior\`. If set during a future period, this will always cause a proration for that period.
    PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyCancelAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | cancel_at_period_end: Boolean indicating whether this subscription should cancel at the end of the current period.
    PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyCancelAtPeriodEnd :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | collection_method: Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to \`charge_automatically\`.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyCollectionMethod'
postSubscriptionsRequestBodyCollectionMethod :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyCollectionMethod'),
    -- | coupon: The ID of the coupon to apply to this subscription. A coupon applied to a subscription will only affect invoices created for that particular subscription.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyCoupon :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | customer: The identifier of the customer to subscribe.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBody -> Text
postSubscriptionsRequestBodyCustomer :: Data.Text.Internal.Text,
    -- | days_until_due: Number of days a customer has to pay invoices generated by this subscription. Valid only for subscriptions where \`collection_method\` is set to \`send_invoice\`.
    PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyDaysUntilDue :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | default_payment_method: ID of the default payment method for the subscription. It must belong to the customer associated with the subscription. This takes precedence over \`default_source\`. If neither are set, invoices will use the customer\'s [invoice_settings.default_payment_method](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-invoice_settings-default_payment_method) or [default_source](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-default_source).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultPaymentMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | default_source: ID of the default payment source for the subscription. It must belong to the customer associated with the subscription and be in a chargeable state. If \`default_payment_method\` is also set, \`default_payment_method\` will take precedence. If neither are set, invoices will use the customer\'s [invoice_settings.default_payment_method](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-invoice_settings-default_payment_method) or [default_source](https:\/\/stripe.com\/docs\/api\/customers\/object\#customer_object-default_source).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultSource :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | default_tax_rates: The tax rates that will apply to any subscription item that does not have \`tax_rates\` set. Invoices created will have their \`default_tax_rates\` populated from the subscription.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
postSubscriptionsRequestBodyDefaultTaxRates :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants),
    -- | expand: Specifies which fields in the response should be expanded.
    PostSubscriptionsRequestBody -> Maybe [Text]
postSubscriptionsRequestBodyExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | items: A list of up to 20 subscription items, each with an attached price.
    PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyItems']
postSubscriptionsRequestBodyItems :: (GHC.Maybe.Maybe ([PostSubscriptionsRequestBodyItems'])),
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to \`metadata\`.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants
postSubscriptionsRequestBodyMetadata :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyMetadata'Variants),
    -- | off_session: Indicates if a customer is on or off-session while an invoice payment is attempted.
    PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyOffSession :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | payment_behavior: Use \`allow_incomplete\` to create subscriptions with \`status=incomplete\` if the first invoice cannot be paid. Creating subscriptions with this status allows you to manage scenarios where additional user actions are needed to pay a subscription\'s invoice. For example, SCA regulation may require 3DS authentication to complete payment. See the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication) for Billing to learn more. This is the default behavior.
    --
    -- Use \`default_incomplete\` to create Subscriptions with \`status=incomplete\` when the first invoice requires payment, otherwise start as active. Subscriptions transition to \`status=active\` when successfully confirming the payment intent on the first invoice. This allows simpler management of scenarios where additional user actions are needed to pay a subscription’s invoice. Such as failed payments, [SCA regulation](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication), or collecting a mandate for a bank debit payment method. If the payment intent is not confirmed within 23 hours subscriptions transition to \`status=expired_incomplete\`, which is a terminal state.
    --
    -- Use \`error_if_incomplete\` if you want Stripe to return an HTTP 402 status code if a subscription\'s first invoice cannot be paid. For example, if a payment method requires 3DS authentication due to SCA regulation and further user action is needed, this parameter does not create a subscription and returns an error instead. This was the default behavior for API versions prior to 2019-03-14. See the [changelog](https:\/\/stripe.com\/docs\/upgrades\#2019-03-14) to learn more.
    --
    -- \`pending_if_incomplete\` is only used with updates and cannot be passed when creating a subscription.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
postSubscriptionsRequestBodyPaymentBehavior :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyPaymentBehavior'),
    -- | pending_invoice_item_interval: Specifies an interval for how often to bill for any pending invoice items. It is analogous to calling [Create an invoice](https:\/\/stripe.com\/docs\/api\#create_invoice) for the given subscription at the specified interval.
    PostSubscriptionsRequestBody
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
postSubscriptionsRequestBodyPendingInvoiceItemInterval :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants),
    -- | promotion_code: The API ID of a promotion code to apply to this subscription. A promotion code applied to a subscription will only affect invoices created for that particular subscription.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyPromotionCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | proration_behavior: Determines how to handle [prorations](https:\/\/stripe.com\/docs\/subscriptions\/billing-cycle\#prorations) resulting from the \`billing_cycle_anchor\`. Valid values are \`create_prorations\` or \`none\`.
    --
    -- Passing \`create_prorations\` will cause proration invoice items to be created when applicable. Prorations can be disabled by passing \`none\`. If no value is passed, the default is \`create_prorations\`.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyProrationBehavior'
postSubscriptionsRequestBodyProrationBehavior :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyProrationBehavior'),
    -- | transfer_data: If specified, the funds from the subscription\'s invoices will be transferred to the destination and the ID of the resulting transfers will be found on the resulting charges.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTransferData'
postSubscriptionsRequestBodyTransferData :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyTransferData'),
    -- | trial_end: Unix timestamp representing the end of the trial period the customer will get before being charged for the first time. This will always overwrite any trials that might apply via a subscribed plan. If set, trial_end will override the default trial period of the plan the customer is being subscribed to. The special value \`now\` can be provided to end the customer\'s trial immediately. Can be at most two years from \`billing_cycle_anchor\`.
    PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
postSubscriptionsRequestBodyTrialEnd :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyTrialEnd'Variants),
    -- | trial_from_plan: Indicates if a plan\'s \`trial_period_days\` should be applied to the subscription. Setting \`trial_end\` per subscription is preferred, and this defaults to \`false\`. Setting this flag to \`true\` together with \`trial_end\` is not allowed.
    PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyTrialFromPlan :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | trial_period_days: Integer representing the number of trial period days before the customer is charged for the first time. This will always overwrite any trials that might apply via a subscribed plan.
    PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyTrialPeriodDays :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> PostSubscriptionsRequestBody -> ShowS
[PostSubscriptionsRequestBody] -> ShowS
PostSubscriptionsRequestBody -> String
(Int -> PostSubscriptionsRequestBody -> ShowS)
-> (PostSubscriptionsRequestBody -> String)
-> ([PostSubscriptionsRequestBody] -> ShowS)
-> Show PostSubscriptionsRequestBody
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBody] -> ShowS
$cshowList :: [PostSubscriptionsRequestBody] -> ShowS
show :: PostSubscriptionsRequestBody -> String
$cshow :: PostSubscriptionsRequestBody -> String
showsPrec :: Int -> PostSubscriptionsRequestBody -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBody -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBody
-> PostSubscriptionsRequestBody -> Bool
(PostSubscriptionsRequestBody
 -> PostSubscriptionsRequestBody -> Bool)
-> (PostSubscriptionsRequestBody
    -> PostSubscriptionsRequestBody -> Bool)
-> Eq PostSubscriptionsRequestBody
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBody
-> PostSubscriptionsRequestBody -> Bool
$c/= :: PostSubscriptionsRequestBody
-> PostSubscriptionsRequestBody -> Bool
== :: PostSubscriptionsRequestBody
-> PostSubscriptionsRequestBody -> Bool
$c== :: PostSubscriptionsRequestBody
-> PostSubscriptionsRequestBody -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBody where
  toJSON :: PostSubscriptionsRequestBody -> Value
toJSON PostSubscriptionsRequestBody
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"add_invoice_items" Text
-> Maybe [PostSubscriptionsRequestBodyAddInvoiceItems'] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
postSubscriptionsRequestBodyAddInvoiceItems PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application_fee_percent" Text -> Maybe Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Double
postSubscriptionsRequestBodyApplicationFeePercent PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"automatic_tax" Text -> Maybe PostSubscriptionsRequestBodyAutomaticTax' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyAutomaticTax'
postSubscriptionsRequestBodyAutomaticTax PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"backdate_start_date" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBackdateStartDate PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_cycle_anchor" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBillingCycleAnchor PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_thresholds" Text
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
postSubscriptionsRequestBodyBillingThresholds PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cancel_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyCancelAt PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cancel_at_period_end" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyCancelAtPeriodEnd PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"collection_method" Text -> Maybe PostSubscriptionsRequestBodyCollectionMethod' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyCollectionMethod'
postSubscriptionsRequestBodyCollectionMethod PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"coupon" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyCoupon PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Text
postSubscriptionsRequestBodyCustomer PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"days_until_due" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyDaysUntilDue PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_payment_method" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultPaymentMethod PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_source" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultSource PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_tax_rates" Text
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
postSubscriptionsRequestBodyDefaultTaxRates PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"expand" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe [Text]
postSubscriptionsRequestBodyExpand PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"items" Text -> Maybe [PostSubscriptionsRequestBodyItems'] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyItems']
postSubscriptionsRequestBodyItems PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe PostSubscriptionsRequestBodyMetadata'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants
postSubscriptionsRequestBodyMetadata PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"off_session" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyOffSession PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_behavior" Text -> Maybe PostSubscriptionsRequestBodyPaymentBehavior' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
postSubscriptionsRequestBodyPaymentBehavior PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pending_invoice_item_interval" Text
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
postSubscriptionsRequestBodyPendingInvoiceItemInterval PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"promotion_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyPromotionCode PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"proration_behavior" Text
-> Maybe PostSubscriptionsRequestBodyProrationBehavior' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyProrationBehavior'
postSubscriptionsRequestBodyProrationBehavior PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transfer_data" Text -> Maybe PostSubscriptionsRequestBodyTransferData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTransferData'
postSubscriptionsRequestBodyTransferData PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_end" Text -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
postSubscriptionsRequestBodyTrialEnd PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_from_plan" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyTrialFromPlan PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_period_days" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyTrialPeriodDays PostSubscriptionsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBody -> Encoding
toEncoding PostSubscriptionsRequestBody
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"add_invoice_items" Text
-> Maybe [PostSubscriptionsRequestBodyAddInvoiceItems'] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
postSubscriptionsRequestBodyAddInvoiceItems PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application_fee_percent" Text -> Maybe Double -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Double
postSubscriptionsRequestBodyApplicationFeePercent PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"automatic_tax" Text -> Maybe PostSubscriptionsRequestBodyAutomaticTax' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyAutomaticTax'
postSubscriptionsRequestBodyAutomaticTax PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"backdate_start_date" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBackdateStartDate PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_cycle_anchor" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyBillingCycleAnchor PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_thresholds" Text
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
postSubscriptionsRequestBodyBillingThresholds PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cancel_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyCancelAt PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cancel_at_period_end" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyCancelAtPeriodEnd PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"collection_method" Text
-> Maybe PostSubscriptionsRequestBodyCollectionMethod' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyCollectionMethod'
postSubscriptionsRequestBodyCollectionMethod PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"coupon" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyCoupon PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Text
postSubscriptionsRequestBodyCustomer PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"days_until_due" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyDaysUntilDue PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_payment_method" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultPaymentMethod PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_source" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyDefaultSource PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_tax_rates" Text
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
postSubscriptionsRequestBodyDefaultTaxRates PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"expand" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe [Text]
postSubscriptionsRequestBodyExpand PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"items" Text -> Maybe [PostSubscriptionsRequestBodyItems'] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe [PostSubscriptionsRequestBodyItems']
postSubscriptionsRequestBodyItems PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants
postSubscriptionsRequestBodyMetadata PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"off_session" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyOffSession PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_behavior" Text
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
postSubscriptionsRequestBodyPaymentBehavior PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pending_invoice_item_interval" Text
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
postSubscriptionsRequestBodyPendingInvoiceItemInterval PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"promotion_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Text
postSubscriptionsRequestBodyPromotionCode PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"proration_behavior" Text
-> Maybe PostSubscriptionsRequestBodyProrationBehavior' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyProrationBehavior'
postSubscriptionsRequestBodyProrationBehavior PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transfer_data" Text -> Maybe PostSubscriptionsRequestBodyTransferData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTransferData'
postSubscriptionsRequestBodyTransferData PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"trial_end" Text
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
postSubscriptionsRequestBodyTrialEnd PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"trial_from_plan" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Bool
postSubscriptionsRequestBodyTrialFromPlan PostSubscriptionsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"trial_period_days" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBody -> Maybe Int
postSubscriptionsRequestBodyTrialPeriodDays PostSubscriptionsRequestBody
obj)))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBody where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBody
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBody)
-> Value
-> Parser PostSubscriptionsRequestBody
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBody" (\Object
obj -> (((((((((((((((((((((((((((Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
 -> Maybe Double
 -> Maybe PostSubscriptionsRequestBodyAutomaticTax'
 -> Maybe Int
 -> Maybe Int
 -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
 -> Maybe Int
 -> Maybe Bool
 -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
 -> Maybe Text
 -> Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
 -> Maybe [Text]
 -> Maybe [PostSubscriptionsRequestBodyItems']
 -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
 -> Maybe Bool
 -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
 -> Maybe
      PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
 -> Maybe Text
 -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
 -> Maybe PostSubscriptionsRequestBodyTransferData'
 -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
 -> Maybe Bool
 -> Maybe Int
 -> PostSubscriptionsRequestBody)
-> Parser
     (Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
      -> Maybe Double
      -> Maybe PostSubscriptionsRequestBodyAutomaticTax'
      -> Maybe Int
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
-> Maybe Double
-> Maybe PostSubscriptionsRequestBodyAutomaticTax'
-> Maybe Int
-> Maybe Int
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Maybe Int
-> Maybe Bool
-> Maybe PostSubscriptionsRequestBodyCollectionMethod'
-> Maybe Text
-> Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Maybe [Text]
-> Maybe [PostSubscriptionsRequestBodyItems']
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants
-> Maybe Bool
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyProrationBehavior'
-> Maybe PostSubscriptionsRequestBodyTransferData'
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
-> Maybe Bool
-> Maybe Int
-> PostSubscriptionsRequestBody
PostSubscriptionsRequestBody Parser
  (Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
   -> Maybe Double
   -> Maybe PostSubscriptionsRequestBodyAutomaticTax'
   -> Maybe Int
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe [PostSubscriptionsRequestBodyAddInvoiceItems'])
-> Parser
     (Maybe Double
      -> Maybe PostSubscriptionsRequestBodyAutomaticTax'
      -> Maybe Int
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe [PostSubscriptionsRequestBodyAddInvoiceItems'])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"add_invoice_items")) Parser
  (Maybe Double
   -> Maybe PostSubscriptionsRequestBodyAutomaticTax'
   -> Maybe Int
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Double)
-> Parser
     (Maybe PostSubscriptionsRequestBodyAutomaticTax'
      -> Maybe Int
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"application_fee_percent")) Parser
  (Maybe PostSubscriptionsRequestBodyAutomaticTax'
   -> Maybe Int
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyAutomaticTax')
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PostSubscriptionsRequestBodyAutomaticTax')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"automatic_tax")) Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"backdate_start_date")) Parser
  (Maybe Int
   -> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"billing_cycle_anchor")) Parser
  (Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser
     (Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"billing_thresholds")) Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"cancel_at")) Parser
  (Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Bool)
-> Parser
     (Maybe PostSubscriptionsRequestBodyCollectionMethod'
      -> Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"cancel_at_period_end")) Parser
  (Maybe PostSubscriptionsRequestBodyCollectionMethod'
   -> Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyCollectionMethod')
-> Parser
     (Maybe Text
      -> Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyCollectionMethod')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"collection_method")) Parser
  (Maybe Text
   -> Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"coupon")) Parser
  (Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser Text
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"customer")) Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"days_until_due")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_payment_method")) Parser
  (Maybe Text
   -> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
      -> Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_source")) Parser
  (Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
   -> Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser
     (Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants)
-> Parser
     (Maybe [Text]
      -> Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_tax_rates")) Parser
  (Maybe [Text]
   -> Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [PostSubscriptionsRequestBodyItems']
      -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [Text])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"expand")) Parser
  (Maybe [PostSubscriptionsRequestBodyItems']
   -> Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe [PostSubscriptionsRequestBodyItems'])
-> Parser
     (Maybe PostSubscriptionsRequestBodyMetadata'Variants
      -> Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe [PostSubscriptionsRequestBodyItems'])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"items")) Parser
  (Maybe PostSubscriptionsRequestBodyMetadata'Variants
   -> Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyMetadata'Variants)
-> Parser
     (Maybe Bool
      -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyMetadata'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe Bool
   -> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Bool)
-> Parser
     (Maybe PostSubscriptionsRequestBodyPaymentBehavior'
      -> Maybe
           PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"off_session")) Parser
  (Maybe PostSubscriptionsRequestBodyPaymentBehavior'
   -> Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyPaymentBehavior')
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyPaymentBehavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_behavior")) Parser
  (Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants)
-> Parser
     (Maybe Text
      -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pending_invoice_item_interval")) Parser
  (Maybe Text
   -> Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSubscriptionsRequestBodyProrationBehavior'
      -> Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"promotion_code")) Parser
  (Maybe PostSubscriptionsRequestBodyProrationBehavior'
   -> Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyProrationBehavior')
-> Parser
     (Maybe PostSubscriptionsRequestBodyTransferData'
      -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool
      -> Maybe Int
      -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyProrationBehavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"proration_behavior")) Parser
  (Maybe PostSubscriptionsRequestBodyTransferData'
   -> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool
   -> Maybe Int
   -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyTransferData')
-> Parser
     (Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
      -> Maybe Bool -> Maybe Int -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PostSubscriptionsRequestBodyTransferData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"transfer_data")) Parser
  (Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
   -> Maybe Bool -> Maybe Int -> PostSubscriptionsRequestBody)
-> Parser (Maybe PostSubscriptionsRequestBodyTrialEnd'Variants)
-> Parser (Maybe Bool -> Maybe Int -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyTrialEnd'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"trial_end")) Parser (Maybe Bool -> Maybe Int -> PostSubscriptionsRequestBody)
-> Parser (Maybe Bool)
-> Parser (Maybe Int -> PostSubscriptionsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"trial_from_plan")) Parser (Maybe Int -> PostSubscriptionsRequestBody)
-> Parser (Maybe Int) -> Parser PostSubscriptionsRequestBody
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"trial_period_days"))

-- | Create a new 'PostSubscriptionsRequestBody' with all required fields.
mkPostSubscriptionsRequestBody ::
  -- | 'postSubscriptionsRequestBodyCustomer'
  Data.Text.Internal.Text ->
  PostSubscriptionsRequestBody
mkPostSubscriptionsRequestBody :: Text -> PostSubscriptionsRequestBody
mkPostSubscriptionsRequestBody Text
postSubscriptionsRequestBodyCustomer =
  PostSubscriptionsRequestBody :: Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
-> Maybe Double
-> Maybe PostSubscriptionsRequestBodyAutomaticTax'
-> Maybe Int
-> Maybe Int
-> Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Maybe Int
-> Maybe Bool
-> Maybe PostSubscriptionsRequestBodyCollectionMethod'
-> Maybe Text
-> Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Maybe [Text]
-> Maybe [PostSubscriptionsRequestBodyItems']
-> Maybe PostSubscriptionsRequestBodyMetadata'Variants
-> Maybe Bool
-> Maybe PostSubscriptionsRequestBodyPaymentBehavior'
-> Maybe
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyProrationBehavior'
-> Maybe PostSubscriptionsRequestBodyTransferData'
-> Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
-> Maybe Bool
-> Maybe Int
-> PostSubscriptionsRequestBody
PostSubscriptionsRequestBody
    { postSubscriptionsRequestBodyAddInvoiceItems :: Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
postSubscriptionsRequestBodyAddInvoiceItems = Maybe [PostSubscriptionsRequestBodyAddInvoiceItems']
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyApplicationFeePercent :: Maybe Double
postSubscriptionsRequestBodyApplicationFeePercent = Maybe Double
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAutomaticTax :: Maybe PostSubscriptionsRequestBodyAutomaticTax'
postSubscriptionsRequestBodyAutomaticTax = Maybe PostSubscriptionsRequestBodyAutomaticTax'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyBackdateStartDate :: Maybe Int
postSubscriptionsRequestBodyBackdateStartDate = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyBillingCycleAnchor :: Maybe Int
postSubscriptionsRequestBodyBillingCycleAnchor = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyBillingThresholds :: Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
postSubscriptionsRequestBodyBillingThresholds = Maybe PostSubscriptionsRequestBodyBillingThresholds'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyCancelAt :: Maybe Int
postSubscriptionsRequestBodyCancelAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyCancelAtPeriodEnd :: Maybe Bool
postSubscriptionsRequestBodyCancelAtPeriodEnd = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyCollectionMethod :: Maybe PostSubscriptionsRequestBodyCollectionMethod'
postSubscriptionsRequestBodyCollectionMethod = Maybe PostSubscriptionsRequestBodyCollectionMethod'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyCoupon :: Maybe Text
postSubscriptionsRequestBodyCoupon = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyCustomer :: Text
postSubscriptionsRequestBodyCustomer = Text
postSubscriptionsRequestBodyCustomer,
      postSubscriptionsRequestBodyDaysUntilDue :: Maybe Int
postSubscriptionsRequestBodyDaysUntilDue = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyDefaultPaymentMethod :: Maybe Text
postSubscriptionsRequestBodyDefaultPaymentMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyDefaultSource :: Maybe Text
postSubscriptionsRequestBodyDefaultSource = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyDefaultTaxRates :: Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
postSubscriptionsRequestBodyDefaultTaxRates = Maybe PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyExpand :: Maybe [Text]
postSubscriptionsRequestBodyExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems :: Maybe [PostSubscriptionsRequestBodyItems']
postSubscriptionsRequestBodyItems = Maybe [PostSubscriptionsRequestBodyItems']
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyMetadata :: Maybe PostSubscriptionsRequestBodyMetadata'Variants
postSubscriptionsRequestBodyMetadata = Maybe PostSubscriptionsRequestBodyMetadata'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyOffSession :: Maybe Bool
postSubscriptionsRequestBodyOffSession = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyPaymentBehavior :: Maybe PostSubscriptionsRequestBodyPaymentBehavior'
postSubscriptionsRequestBodyPaymentBehavior = Maybe PostSubscriptionsRequestBodyPaymentBehavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyPendingInvoiceItemInterval :: Maybe
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
postSubscriptionsRequestBodyPendingInvoiceItemInterval = Maybe
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyPromotionCode :: Maybe Text
postSubscriptionsRequestBodyPromotionCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyProrationBehavior :: Maybe PostSubscriptionsRequestBodyProrationBehavior'
postSubscriptionsRequestBodyProrationBehavior = Maybe PostSubscriptionsRequestBodyProrationBehavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyTransferData :: Maybe PostSubscriptionsRequestBodyTransferData'
postSubscriptionsRequestBodyTransferData = Maybe PostSubscriptionsRequestBodyTransferData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyTrialEnd :: Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
postSubscriptionsRequestBodyTrialEnd = Maybe PostSubscriptionsRequestBodyTrialEnd'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyTrialFromPlan :: Maybe Bool
postSubscriptionsRequestBodyTrialFromPlan = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyTrialPeriodDays :: Maybe Int
postSubscriptionsRequestBodyTrialPeriodDays = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.add_invoice_items.items@ in the specification.
data PostSubscriptionsRequestBodyAddInvoiceItems' = PostSubscriptionsRequestBodyAddInvoiceItems'
  { -- | price
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'Price :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | price_data
    PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'),
    -- | quantity
    PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'Quantity :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | tax_rates
    PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
postSubscriptionsRequestBodyAddInvoiceItems'TaxRates :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants)
  }
  deriving
    ( Int -> PostSubscriptionsRequestBodyAddInvoiceItems' -> ShowS
[PostSubscriptionsRequestBodyAddInvoiceItems'] -> ShowS
PostSubscriptionsRequestBodyAddInvoiceItems' -> String
(Int -> PostSubscriptionsRequestBodyAddInvoiceItems' -> ShowS)
-> (PostSubscriptionsRequestBodyAddInvoiceItems' -> String)
-> ([PostSubscriptionsRequestBodyAddInvoiceItems'] -> ShowS)
-> Show PostSubscriptionsRequestBodyAddInvoiceItems'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyAddInvoiceItems'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyAddInvoiceItems'] -> ShowS
show :: PostSubscriptionsRequestBodyAddInvoiceItems' -> String
$cshow :: PostSubscriptionsRequestBodyAddInvoiceItems' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyAddInvoiceItems' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyAddInvoiceItems' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyAddInvoiceItems'
-> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool
(PostSubscriptionsRequestBodyAddInvoiceItems'
 -> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'
    -> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool)
-> Eq PostSubscriptionsRequestBodyAddInvoiceItems'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyAddInvoiceItems'
-> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool
$c/= :: PostSubscriptionsRequestBodyAddInvoiceItems'
-> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool
== :: PostSubscriptionsRequestBodyAddInvoiceItems'
-> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool
$c== :: PostSubscriptionsRequestBodyAddInvoiceItems'
-> PostSubscriptionsRequestBodyAddInvoiceItems' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyAddInvoiceItems' where
  toJSON :: PostSubscriptionsRequestBodyAddInvoiceItems' -> Value
toJSON PostSubscriptionsRequestBodyAddInvoiceItems'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"price" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'Price PostSubscriptionsRequestBodyAddInvoiceItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"price_data" Text
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData PostSubscriptionsRequestBodyAddInvoiceItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"quantity" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'Quantity PostSubscriptionsRequestBodyAddInvoiceItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_rates" Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
postSubscriptionsRequestBodyAddInvoiceItems'TaxRates PostSubscriptionsRequestBodyAddInvoiceItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyAddInvoiceItems' -> Encoding
toEncoding PostSubscriptionsRequestBodyAddInvoiceItems'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"price" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'Price PostSubscriptionsRequestBodyAddInvoiceItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"price_data" Text
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData PostSubscriptionsRequestBodyAddInvoiceItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"quantity" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'Quantity PostSubscriptionsRequestBodyAddInvoiceItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"tax_rates" Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
postSubscriptionsRequestBodyAddInvoiceItems'TaxRates PostSubscriptionsRequestBodyAddInvoiceItems'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyAddInvoiceItems' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyAddInvoiceItems'
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBodyAddInvoiceItems')
-> Value
-> Parser PostSubscriptionsRequestBodyAddInvoiceItems'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyAddInvoiceItems'" (\Object
obj -> ((((Maybe Text
 -> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
 -> Maybe Int
 -> Maybe
      PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
 -> PostSubscriptionsRequestBodyAddInvoiceItems')
-> Parser
     (Maybe Text
      -> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
      -> Maybe Int
      -> Maybe
           PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyAddInvoiceItems')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe Int
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'
PostSubscriptionsRequestBodyAddInvoiceItems' Parser
  (Maybe Text
   -> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
   -> Maybe Int
   -> Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyAddInvoiceItems')
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
      -> Maybe Int
      -> Maybe
           PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyAddInvoiceItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"price")) Parser
  (Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
   -> Maybe Int
   -> Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyAddInvoiceItems')
-> Parser
     (Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser
     (Maybe Int
      -> Maybe
           PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyAddInvoiceItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"price_data")) Parser
  (Maybe Int
   -> Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyAddInvoiceItems')
-> Parser (Maybe Int)
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyAddInvoiceItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"quantity")) Parser
  (Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyAddInvoiceItems')
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants)
-> Parser PostSubscriptionsRequestBodyAddInvoiceItems'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_rates"))

-- | Create a new 'PostSubscriptionsRequestBodyAddInvoiceItems'' with all required fields.
mkPostSubscriptionsRequestBodyAddInvoiceItems' :: PostSubscriptionsRequestBodyAddInvoiceItems'
mkPostSubscriptionsRequestBodyAddInvoiceItems' :: PostSubscriptionsRequestBodyAddInvoiceItems'
mkPostSubscriptionsRequestBodyAddInvoiceItems' =
  PostSubscriptionsRequestBodyAddInvoiceItems' :: Maybe Text
-> Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe Int
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'
PostSubscriptionsRequestBodyAddInvoiceItems'
    { postSubscriptionsRequestBodyAddInvoiceItems'Price :: Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'Price = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAddInvoiceItems'PriceData :: Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData = Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAddInvoiceItems'Quantity :: Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'Quantity = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAddInvoiceItems'TaxRates :: Maybe PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
postSubscriptionsRequestBodyAddInvoiceItems'TaxRates = Maybe PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.add_invoice_items.items.properties.price_data@ in the specification.
data PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' = PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
  { -- | currency
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency :: Data.Text.Internal.Text,
    -- | product
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product :: Data.Text.Internal.Text,
    -- | tax_behavior
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'),
    -- | unit_amount
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | unit_amount_decimal
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> ShowS
[PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'] -> ShowS
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> String
(Int
 -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> ShowS)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
    -> String)
-> ([PostSubscriptionsRequestBodyAddInvoiceItems'PriceData']
    -> ShowS)
-> Show PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'] -> ShowS
show :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> String
$cshow :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool
(PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
 -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
    -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool)
-> Eq PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool
$c/= :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool
== :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool
$c== :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' where
  toJSON :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Value
toJSON PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"product" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_behavior" Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmount PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmountDecimal PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Encoding
toEncoding PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"product" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tax_behavior" Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmount PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"unit_amount_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
-> Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmountDecimal PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
parseJSON = String
-> (Object
    -> Parser PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Value
-> Parser PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'" (\Object
obj -> (((((Text
 -> Text
 -> Maybe
      PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
 -> Maybe Int
 -> Maybe Text
 -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser
     (Text
      -> Text
      -> Maybe
           PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' Parser
  (Text
   -> Text
   -> Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser Text
-> Parser
     (Text
      -> Maybe
           PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"currency")) Parser
  (Text
   -> Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser Text
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"product")) Parser
  (Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior')
-> Parser
     (Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_behavior")) Parser
  (Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"unit_amount")) Parser
  (Maybe Text
   -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData')
-> Parser (Maybe Text)
-> Parser PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"unit_amount_decimal"))

-- | Create a new 'PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'' with all required fields.
mkPostSubscriptionsRequestBodyAddInvoiceItems'PriceData' ::
  -- | 'postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency'
  Data.Text.Internal.Text ->
  -- | 'postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product'
  Data.Text.Internal.Text ->
  PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
mkPostSubscriptionsRequestBodyAddInvoiceItems'PriceData' :: Text
-> Text -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
mkPostSubscriptionsRequestBodyAddInvoiceItems'PriceData' Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product =
  PostSubscriptionsRequestBodyAddInvoiceItems'PriceData' :: Text
-> Text
-> Maybe
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'
    { postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency :: Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency = Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Currency,
      postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product :: Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product = Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'Product,
      postSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior :: Maybe
  PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior = Maybe
  PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmount :: Maybe Int
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmountDecimal :: Maybe Text
postSubscriptionsRequestBodyAddInvoiceItems'PriceData'UnitAmountDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.add_invoice_items.items.properties.price_data.properties.tax_behavior@ in the specification.
data PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"exclusive"@
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumExclusive
  | -- | Represents the JSON value @"inclusive"@
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumInclusive
  | -- | Represents the JSON value @"unspecified"@
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumUnspecified
  deriving (Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> ShowS
[PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior']
-> ShowS
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> String
(Int
 -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
 -> ShowS)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
    -> String)
-> ([PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior']
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior']
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior']
-> ShowS
show :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> String
$cshow :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Bool
(PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
 -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
 -> Bool)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
    -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
    -> Bool)
-> Eq
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Bool
$c/= :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Bool
== :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Bool
$c== :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior' where
  toJSON :: PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Value
toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumExclusive) = Value
"exclusive"
  toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumInclusive) = Value
"inclusive"
  toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumUnspecified) = Value
"unspecified"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior' where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
parseJSON Value
val =
    PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"exclusive" -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumExclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"inclusive" -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumInclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unspecified" -> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'EnumUnspecified
            | Bool
GHC.Base.otherwise -> Value
-> PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyAddInvoiceItems'PriceData'TaxBehavior'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.add_invoice_items.items.properties.tax_rates.anyOf@ in the specification.
data PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'EmptyString
  | PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'ListTText ([Data.Text.Internal.Text])
  deriving (Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> ShowS
[PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants]
-> ShowS
PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> String
(Int
 -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
 -> ShowS)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
    -> String)
-> ([PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants]
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants]
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants]
-> ShowS
show :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> String
$cshow :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Bool
(PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
 -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
 -> Bool)
-> (PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
    -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
    -> Bool)
-> Eq PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Bool
$c/= :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Bool
== :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Bool
$c== :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants where
  toJSON :: PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Value
toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'ListTText [Text]
a) = [Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON [Text]
a
  toJSON (PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'EmptyString
        | Bool
GHC.Base.otherwise -> case ([Text]
-> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'ListTText ([Text]
 -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants)
-> Result [Text]
-> Result
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result [Text]
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result
  PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Result
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Result
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
a -> PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser
     PostSubscriptionsRequestBodyAddInvoiceItems'TaxRates'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.automatic_tax@ in the specification.
--
-- Automatic tax settings for this subscription.
data PostSubscriptionsRequestBodyAutomaticTax' = PostSubscriptionsRequestBodyAutomaticTax'
  { -- | enabled
    PostSubscriptionsRequestBodyAutomaticTax' -> Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled :: GHC.Types.Bool
  }
  deriving
    ( Int -> PostSubscriptionsRequestBodyAutomaticTax' -> ShowS
[PostSubscriptionsRequestBodyAutomaticTax'] -> ShowS
PostSubscriptionsRequestBodyAutomaticTax' -> String
(Int -> PostSubscriptionsRequestBodyAutomaticTax' -> ShowS)
-> (PostSubscriptionsRequestBodyAutomaticTax' -> String)
-> ([PostSubscriptionsRequestBodyAutomaticTax'] -> ShowS)
-> Show PostSubscriptionsRequestBodyAutomaticTax'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyAutomaticTax'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyAutomaticTax'] -> ShowS
show :: PostSubscriptionsRequestBodyAutomaticTax' -> String
$cshow :: PostSubscriptionsRequestBodyAutomaticTax' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyAutomaticTax' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyAutomaticTax' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyAutomaticTax'
-> PostSubscriptionsRequestBodyAutomaticTax' -> Bool
(PostSubscriptionsRequestBodyAutomaticTax'
 -> PostSubscriptionsRequestBodyAutomaticTax' -> Bool)
-> (PostSubscriptionsRequestBodyAutomaticTax'
    -> PostSubscriptionsRequestBodyAutomaticTax' -> Bool)
-> Eq PostSubscriptionsRequestBodyAutomaticTax'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyAutomaticTax'
-> PostSubscriptionsRequestBodyAutomaticTax' -> Bool
$c/= :: PostSubscriptionsRequestBodyAutomaticTax'
-> PostSubscriptionsRequestBodyAutomaticTax' -> Bool
== :: PostSubscriptionsRequestBodyAutomaticTax'
-> PostSubscriptionsRequestBodyAutomaticTax' -> Bool
$c== :: PostSubscriptionsRequestBodyAutomaticTax'
-> PostSubscriptionsRequestBodyAutomaticTax' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyAutomaticTax' where
  toJSON :: PostSubscriptionsRequestBodyAutomaticTax' -> Value
toJSON PostSubscriptionsRequestBodyAutomaticTax'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"enabled" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAutomaticTax' -> Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled PostSubscriptionsRequestBodyAutomaticTax'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyAutomaticTax' -> Encoding
toEncoding PostSubscriptionsRequestBodyAutomaticTax'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"enabled" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyAutomaticTax' -> Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled PostSubscriptionsRequestBodyAutomaticTax'
obj)

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyAutomaticTax' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyAutomaticTax'
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBodyAutomaticTax')
-> Value
-> Parser PostSubscriptionsRequestBodyAutomaticTax'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyAutomaticTax'" (\Object
obj -> (Bool -> PostSubscriptionsRequestBodyAutomaticTax')
-> Parser (Bool -> PostSubscriptionsRequestBodyAutomaticTax')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Bool -> PostSubscriptionsRequestBodyAutomaticTax'
PostSubscriptionsRequestBodyAutomaticTax' Parser (Bool -> PostSubscriptionsRequestBodyAutomaticTax')
-> Parser Bool -> Parser PostSubscriptionsRequestBodyAutomaticTax'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"enabled"))

-- | Create a new 'PostSubscriptionsRequestBodyAutomaticTax'' with all required fields.
mkPostSubscriptionsRequestBodyAutomaticTax' ::
  -- | 'postSubscriptionsRequestBodyAutomaticTax'Enabled'
  GHC.Types.Bool ->
  PostSubscriptionsRequestBodyAutomaticTax'
mkPostSubscriptionsRequestBodyAutomaticTax' :: Bool -> PostSubscriptionsRequestBodyAutomaticTax'
mkPostSubscriptionsRequestBodyAutomaticTax' Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled = PostSubscriptionsRequestBodyAutomaticTax' :: Bool -> PostSubscriptionsRequestBodyAutomaticTax'
PostSubscriptionsRequestBodyAutomaticTax' {postSubscriptionsRequestBodyAutomaticTax'Enabled :: Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled = Bool
postSubscriptionsRequestBodyAutomaticTax'Enabled}

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.billing_thresholds.anyOf@ in the specification.
data PostSubscriptionsRequestBodyBillingThresholds'OneOf1 = PostSubscriptionsRequestBodyBillingThresholds'OneOf1
  { -- | amount_gte
    PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Int
postSubscriptionsRequestBodyBillingThresholds'OneOf1AmountGte :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | reset_billing_cycle_anchor
    PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Bool
postSubscriptionsRequestBodyBillingThresholds'OneOf1ResetBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Bool)
  }
  deriving
    ( Int
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> ShowS
[PostSubscriptionsRequestBodyBillingThresholds'OneOf1] -> ShowS
PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> String
(Int
 -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> ShowS)
-> (PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> String)
-> ([PostSubscriptionsRequestBodyBillingThresholds'OneOf1]
    -> ShowS)
-> Show PostSubscriptionsRequestBodyBillingThresholds'OneOf1
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyBillingThresholds'OneOf1] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyBillingThresholds'OneOf1] -> ShowS
show :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> String
$cshow :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool
(PostSubscriptionsRequestBodyBillingThresholds'OneOf1
 -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool)
-> (PostSubscriptionsRequestBodyBillingThresholds'OneOf1
    -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool)
-> Eq PostSubscriptionsRequestBodyBillingThresholds'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool
$c/= :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool
== :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool
$c== :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyBillingThresholds'OneOf1 where
  toJSON :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Value
toJSON PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount_gte" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Int
postSubscriptionsRequestBodyBillingThresholds'OneOf1AmountGte PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reset_billing_cycle_anchor" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Bool
postSubscriptionsRequestBodyBillingThresholds'OneOf1ResetBillingCycleAnchor PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Encoding
toEncoding PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount_gte" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Int
postSubscriptionsRequestBodyBillingThresholds'OneOf1AmountGte PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"reset_billing_cycle_anchor" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Maybe Bool
postSubscriptionsRequestBodyBillingThresholds'OneOf1ResetBillingCycleAnchor PostSubscriptionsRequestBodyBillingThresholds'OneOf1
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyBillingThresholds'OneOf1 where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyBillingThresholds'OneOf1
parseJSON = String
-> (Object
    -> Parser PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
-> Value
-> Parser PostSubscriptionsRequestBodyBillingThresholds'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyBillingThresholds'OneOf1" (\Object
obj -> ((Maybe Int
 -> Maybe Bool
 -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Bool
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1
PostSubscriptionsRequestBodyBillingThresholds'OneOf1 Parser
  (Maybe Int
   -> Maybe Bool
   -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount_gte")) Parser
  (Maybe Bool
   -> PostSubscriptionsRequestBodyBillingThresholds'OneOf1)
-> Parser (Maybe Bool)
-> Parser PostSubscriptionsRequestBodyBillingThresholds'OneOf1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"reset_billing_cycle_anchor"))

-- | Create a new 'PostSubscriptionsRequestBodyBillingThresholds'OneOf1' with all required fields.
mkPostSubscriptionsRequestBodyBillingThresholds'OneOf1 :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
mkPostSubscriptionsRequestBodyBillingThresholds'OneOf1 :: PostSubscriptionsRequestBodyBillingThresholds'OneOf1
mkPostSubscriptionsRequestBodyBillingThresholds'OneOf1 =
  PostSubscriptionsRequestBodyBillingThresholds'OneOf1 :: Maybe Int
-> Maybe Bool
-> PostSubscriptionsRequestBodyBillingThresholds'OneOf1
PostSubscriptionsRequestBodyBillingThresholds'OneOf1
    { postSubscriptionsRequestBodyBillingThresholds'OneOf1AmountGte :: Maybe Int
postSubscriptionsRequestBodyBillingThresholds'OneOf1AmountGte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyBillingThresholds'OneOf1ResetBillingCycleAnchor :: Maybe Bool
postSubscriptionsRequestBodyBillingThresholds'OneOf1ResetBillingCycleAnchor = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.billing_thresholds.anyOf@ in the specification.
--
-- Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period. Pass an empty string to remove previously-defined thresholds.
data PostSubscriptionsRequestBodyBillingThresholds'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyBillingThresholds'EmptyString
  | PostSubscriptionsRequestBodyBillingThresholds'PostSubscriptionsRequestBodyBillingThresholds'OneOf1 PostSubscriptionsRequestBodyBillingThresholds'OneOf1
  deriving (Int
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> ShowS
[PostSubscriptionsRequestBodyBillingThresholds'Variants] -> ShowS
PostSubscriptionsRequestBodyBillingThresholds'Variants -> String
(Int
 -> PostSubscriptionsRequestBodyBillingThresholds'Variants -> ShowS)
-> (PostSubscriptionsRequestBodyBillingThresholds'Variants
    -> String)
-> ([PostSubscriptionsRequestBodyBillingThresholds'Variants]
    -> ShowS)
-> Show PostSubscriptionsRequestBodyBillingThresholds'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyBillingThresholds'Variants] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyBillingThresholds'Variants] -> ShowS
show :: PostSubscriptionsRequestBodyBillingThresholds'Variants -> String
$cshow :: PostSubscriptionsRequestBodyBillingThresholds'Variants -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyBillingThresholds'Variants
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool
(PostSubscriptionsRequestBodyBillingThresholds'Variants
 -> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool)
-> (PostSubscriptionsRequestBodyBillingThresholds'Variants
    -> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool)
-> Eq PostSubscriptionsRequestBodyBillingThresholds'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyBillingThresholds'Variants
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool
$c/= :: PostSubscriptionsRequestBodyBillingThresholds'Variants
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool
== :: PostSubscriptionsRequestBodyBillingThresholds'Variants
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool
$c== :: PostSubscriptionsRequestBodyBillingThresholds'Variants
-> PostSubscriptionsRequestBodyBillingThresholds'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyBillingThresholds'Variants where
  toJSON :: PostSubscriptionsRequestBodyBillingThresholds'Variants -> Value
toJSON (PostSubscriptionsRequestBodyBillingThresholds'PostSubscriptionsRequestBodyBillingThresholds'OneOf1 PostSubscriptionsRequestBodyBillingThresholds'OneOf1
a) = PostSubscriptionsRequestBodyBillingThresholds'OneOf1 -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PostSubscriptionsRequestBodyBillingThresholds'OneOf1
a
  toJSON (PostSubscriptionsRequestBodyBillingThresholds'Variants
PostSubscriptionsRequestBodyBillingThresholds'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyBillingThresholds'Variants where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyBillingThresholds'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Parser PostSubscriptionsRequestBodyBillingThresholds'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyBillingThresholds'Variants
PostSubscriptionsRequestBodyBillingThresholds'EmptyString
        | Bool
GHC.Base.otherwise -> case (PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyBillingThresholds'Variants
PostSubscriptionsRequestBodyBillingThresholds'PostSubscriptionsRequestBodyBillingThresholds'OneOf1 (PostSubscriptionsRequestBodyBillingThresholds'OneOf1
 -> PostSubscriptionsRequestBodyBillingThresholds'Variants)
-> Result PostSubscriptionsRequestBodyBillingThresholds'OneOf1
-> Result PostSubscriptionsRequestBodyBillingThresholds'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value
-> Result PostSubscriptionsRequestBodyBillingThresholds'OneOf1
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Result PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Result PostSubscriptionsRequestBodyBillingThresholds'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostSubscriptionsRequestBodyBillingThresholds'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyBillingThresholds'Variants
a -> PostSubscriptionsRequestBodyBillingThresholds'Variants
-> Parser PostSubscriptionsRequestBodyBillingThresholds'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyBillingThresholds'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostSubscriptionsRequestBodyBillingThresholds'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.collection_method@ in the specification.
--
-- Either \`charge_automatically\`, or \`send_invoice\`. When charging automatically, Stripe will attempt to pay this subscription at the end of the cycle using the default source attached to the customer. When sending an invoice, Stripe will email your customer an invoice with payment instructions. Defaults to \`charge_automatically\`.
data PostSubscriptionsRequestBodyCollectionMethod'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyCollectionMethod'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyCollectionMethod'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"charge_automatically"@
    PostSubscriptionsRequestBodyCollectionMethod'EnumChargeAutomatically
  | -- | Represents the JSON value @"send_invoice"@
    PostSubscriptionsRequestBodyCollectionMethod'EnumSendInvoice
  deriving (Int -> PostSubscriptionsRequestBodyCollectionMethod' -> ShowS
[PostSubscriptionsRequestBodyCollectionMethod'] -> ShowS
PostSubscriptionsRequestBodyCollectionMethod' -> String
(Int -> PostSubscriptionsRequestBodyCollectionMethod' -> ShowS)
-> (PostSubscriptionsRequestBodyCollectionMethod' -> String)
-> ([PostSubscriptionsRequestBodyCollectionMethod'] -> ShowS)
-> Show PostSubscriptionsRequestBodyCollectionMethod'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyCollectionMethod'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyCollectionMethod'] -> ShowS
show :: PostSubscriptionsRequestBodyCollectionMethod' -> String
$cshow :: PostSubscriptionsRequestBodyCollectionMethod' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyCollectionMethod' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyCollectionMethod' -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyCollectionMethod'
-> PostSubscriptionsRequestBodyCollectionMethod' -> Bool
(PostSubscriptionsRequestBodyCollectionMethod'
 -> PostSubscriptionsRequestBodyCollectionMethod' -> Bool)
-> (PostSubscriptionsRequestBodyCollectionMethod'
    -> PostSubscriptionsRequestBodyCollectionMethod' -> Bool)
-> Eq PostSubscriptionsRequestBodyCollectionMethod'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyCollectionMethod'
-> PostSubscriptionsRequestBodyCollectionMethod' -> Bool
$c/= :: PostSubscriptionsRequestBodyCollectionMethod'
-> PostSubscriptionsRequestBodyCollectionMethod' -> Bool
== :: PostSubscriptionsRequestBodyCollectionMethod'
-> PostSubscriptionsRequestBodyCollectionMethod' -> Bool
$c== :: PostSubscriptionsRequestBodyCollectionMethod'
-> PostSubscriptionsRequestBodyCollectionMethod' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyCollectionMethod' where
  toJSON :: PostSubscriptionsRequestBodyCollectionMethod' -> Value
toJSON (PostSubscriptionsRequestBodyCollectionMethod'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyCollectionMethod'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyCollectionMethod'
PostSubscriptionsRequestBodyCollectionMethod'EnumChargeAutomatically) = Value
"charge_automatically"
  toJSON (PostSubscriptionsRequestBodyCollectionMethod'
PostSubscriptionsRequestBodyCollectionMethod'EnumSendInvoice) = Value
"send_invoice"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyCollectionMethod' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyCollectionMethod'
parseJSON Value
val =
    PostSubscriptionsRequestBodyCollectionMethod'
-> Parser PostSubscriptionsRequestBodyCollectionMethod'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"charge_automatically" -> PostSubscriptionsRequestBodyCollectionMethod'
PostSubscriptionsRequestBodyCollectionMethod'EnumChargeAutomatically
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"send_invoice" -> PostSubscriptionsRequestBodyCollectionMethod'
PostSubscriptionsRequestBodyCollectionMethod'EnumSendInvoice
            | Bool
GHC.Base.otherwise -> Value -> PostSubscriptionsRequestBodyCollectionMethod'
PostSubscriptionsRequestBodyCollectionMethod'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.default_tax_rates.anyOf@ in the specification.
--
-- The tax rates that will apply to any subscription item that does not have \`tax_rates\` set. Invoices created will have their \`default_tax_rates\` populated from the subscription.
data PostSubscriptionsRequestBodyDefaultTaxRates'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyDefaultTaxRates'EmptyString
  | PostSubscriptionsRequestBodyDefaultTaxRates'ListTText ([Data.Text.Internal.Text])
  deriving (Int
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> ShowS
[PostSubscriptionsRequestBodyDefaultTaxRates'Variants] -> ShowS
PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> String
(Int
 -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> ShowS)
-> (PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> String)
-> ([PostSubscriptionsRequestBodyDefaultTaxRates'Variants]
    -> ShowS)
-> Show PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyDefaultTaxRates'Variants] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyDefaultTaxRates'Variants] -> ShowS
show :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> String
$cshow :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool
(PostSubscriptionsRequestBodyDefaultTaxRates'Variants
 -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool)
-> (PostSubscriptionsRequestBodyDefaultTaxRates'Variants
    -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool)
-> Eq PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool
$c/= :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool
== :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool
$c== :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyDefaultTaxRates'Variants where
  toJSON :: PostSubscriptionsRequestBodyDefaultTaxRates'Variants -> Value
toJSON (PostSubscriptionsRequestBodyDefaultTaxRates'ListTText [Text]
a) = [Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON [Text]
a
  toJSON (PostSubscriptionsRequestBodyDefaultTaxRates'Variants
PostSubscriptionsRequestBodyDefaultTaxRates'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyDefaultTaxRates'Variants where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyDefaultTaxRates'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Parser PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyDefaultTaxRates'Variants
PostSubscriptionsRequestBodyDefaultTaxRates'EmptyString
        | Bool
GHC.Base.otherwise -> case ([Text] -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants
PostSubscriptionsRequestBodyDefaultTaxRates'ListTText ([Text] -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants)
-> Result [Text]
-> Result PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result [Text]
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Result PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Result PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyDefaultTaxRates'Variants
a -> PostSubscriptionsRequestBodyDefaultTaxRates'Variants
-> Parser PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyDefaultTaxRates'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostSubscriptionsRequestBodyDefaultTaxRates'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items@ in the specification.
data PostSubscriptionsRequestBodyItems' = PostSubscriptionsRequestBodyItems'
  { -- | billing_thresholds
    PostSubscriptionsRequestBodyItems'
-> Maybe
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
postSubscriptionsRequestBodyItems'BillingThresholds :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants),
    -- | metadata
    PostSubscriptionsRequestBodyItems' -> Maybe Object
postSubscriptionsRequestBodyItems'Metadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | price
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBodyItems' -> Maybe Text
postSubscriptionsRequestBodyItems'Price :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | price_data
    PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'
postSubscriptionsRequestBodyItems'PriceData :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyItems'PriceData'),
    -- | quantity
    PostSubscriptionsRequestBodyItems' -> Maybe Int
postSubscriptionsRequestBodyItems'Quantity :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | tax_rates
    PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
postSubscriptionsRequestBodyItems'TaxRates :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants)
  }
  deriving
    ( Int -> PostSubscriptionsRequestBodyItems' -> ShowS
[PostSubscriptionsRequestBodyItems'] -> ShowS
PostSubscriptionsRequestBodyItems' -> String
(Int -> PostSubscriptionsRequestBodyItems' -> ShowS)
-> (PostSubscriptionsRequestBodyItems' -> String)
-> ([PostSubscriptionsRequestBodyItems'] -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'] -> ShowS
show :: PostSubscriptionsRequestBodyItems' -> String
$cshow :: PostSubscriptionsRequestBodyItems' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyItems' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyItems' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyItems'
-> PostSubscriptionsRequestBodyItems' -> Bool
(PostSubscriptionsRequestBodyItems'
 -> PostSubscriptionsRequestBodyItems' -> Bool)
-> (PostSubscriptionsRequestBodyItems'
    -> PostSubscriptionsRequestBodyItems' -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'
-> PostSubscriptionsRequestBodyItems' -> Bool
$c/= :: PostSubscriptionsRequestBodyItems'
-> PostSubscriptionsRequestBodyItems' -> Bool
== :: PostSubscriptionsRequestBodyItems'
-> PostSubscriptionsRequestBodyItems' -> Bool
$c== :: PostSubscriptionsRequestBodyItems'
-> PostSubscriptionsRequestBodyItems' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems' where
  toJSON :: PostSubscriptionsRequestBodyItems' -> Value
toJSON PostSubscriptionsRequestBodyItems'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"billing_thresholds" Text
-> Maybe
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
postSubscriptionsRequestBodyItems'BillingThresholds PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Object
postSubscriptionsRequestBodyItems'Metadata PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"price" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Text
postSubscriptionsRequestBodyItems'Price PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"price_data" Text -> Maybe PostSubscriptionsRequestBodyItems'PriceData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'
postSubscriptionsRequestBodyItems'PriceData PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"quantity" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Int
postSubscriptionsRequestBodyItems'Quantity PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_rates" Text
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
postSubscriptionsRequestBodyItems'TaxRates PostSubscriptionsRequestBodyItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyItems' -> Encoding
toEncoding PostSubscriptionsRequestBodyItems'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"billing_thresholds" Text
-> Maybe
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
postSubscriptionsRequestBodyItems'BillingThresholds PostSubscriptionsRequestBodyItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Object
postSubscriptionsRequestBodyItems'Metadata PostSubscriptionsRequestBodyItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"price" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Text
postSubscriptionsRequestBodyItems'Price PostSubscriptionsRequestBodyItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"price_data" Text
-> Maybe PostSubscriptionsRequestBodyItems'PriceData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'
postSubscriptionsRequestBodyItems'PriceData PostSubscriptionsRequestBodyItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"quantity" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems' -> Maybe Int
postSubscriptionsRequestBodyItems'Quantity PostSubscriptionsRequestBodyItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"tax_rates" Text
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
postSubscriptionsRequestBodyItems'TaxRates PostSubscriptionsRequestBodyItems'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyItems'
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBodyItems')
-> Value
-> Parser PostSubscriptionsRequestBodyItems'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyItems'" (\Object
obj -> ((((((Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
 -> Maybe Object
 -> Maybe Text
 -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
 -> Maybe Int
 -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
 -> PostSubscriptionsRequestBodyItems')
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
      -> Maybe Object
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Maybe Object
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'
-> Maybe Int
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'
PostSubscriptionsRequestBodyItems' Parser
  (Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
   -> Maybe Object
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyItems'BillingThresholds'Variants)
-> Parser
     (Maybe Object
      -> Maybe Text
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSubscriptionsRequestBodyItems'BillingThresholds'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"billing_thresholds")) Parser
  (Maybe Object
   -> Maybe Text
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser (Maybe Object)
-> Parser
     (Maybe Text
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe Text
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'PriceData'
      -> Maybe Int
      -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"price")) Parser
  (Maybe PostSubscriptionsRequestBodyItems'PriceData'
   -> Maybe Int
   -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser (Maybe PostSubscriptionsRequestBodyItems'PriceData')
-> Parser
     (Maybe Int
      -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSubscriptionsRequestBodyItems'PriceData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"price_data")) Parser
  (Maybe Int
   -> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser (Maybe Int)
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
      -> PostSubscriptionsRequestBodyItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"quantity")) Parser
  (Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
   -> PostSubscriptionsRequestBodyItems')
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants)
-> Parser PostSubscriptionsRequestBodyItems'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_rates"))

-- | Create a new 'PostSubscriptionsRequestBodyItems'' with all required fields.
mkPostSubscriptionsRequestBodyItems' :: PostSubscriptionsRequestBodyItems'
mkPostSubscriptionsRequestBodyItems' :: PostSubscriptionsRequestBodyItems'
mkPostSubscriptionsRequestBodyItems' =
  PostSubscriptionsRequestBodyItems' :: Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Maybe Object
-> Maybe Text
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'
-> Maybe Int
-> Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'
PostSubscriptionsRequestBodyItems'
    { postSubscriptionsRequestBodyItems'BillingThresholds :: Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
postSubscriptionsRequestBodyItems'BillingThresholds = Maybe PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'Metadata :: Maybe Object
postSubscriptionsRequestBodyItems'Metadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'Price :: Maybe Text
postSubscriptionsRequestBodyItems'Price = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'PriceData :: Maybe PostSubscriptionsRequestBodyItems'PriceData'
postSubscriptionsRequestBodyItems'PriceData = Maybe PostSubscriptionsRequestBodyItems'PriceData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'Quantity :: Maybe Int
postSubscriptionsRequestBodyItems'Quantity = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'TaxRates :: Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
postSubscriptionsRequestBodyItems'TaxRates = Maybe PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.billing_thresholds.anyOf@ in the specification.
data PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 = PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
  { -- | usage_gte
    PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 -> Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte :: GHC.Types.Int
  }
  deriving
    ( Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> ShowS
[PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1]
-> ShowS
PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> String
(Int
 -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
 -> ShowS)
-> (PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
    -> String)
-> ([PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1]
    -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1]
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1]
-> ShowS
show :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> String
$cshow :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Bool
(PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
 -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
 -> Bool)
-> (PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
    -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
    -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Bool
$c/= :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Bool
== :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Bool
$c== :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 where
  toJSON :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 -> Value
toJSON PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"usage_gte" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 -> Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Encoding
toEncoding PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"usage_gte" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 -> Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
obj)

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
parseJSON = String
-> (Object
    -> Parser
         PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1)
-> Value
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1" (\Object
obj -> (Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1)
-> Parser
     (Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 Parser
  (Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1)
-> Parser Int
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"usage_gte"))

-- | Create a new 'PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1' with all required fields.
mkPostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 ::
  -- | 'postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte'
  GHC.Types.Int ->
  PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
mkPostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 :: Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
mkPostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte = PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 :: Int -> PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 {postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte :: Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte = Int
postSubscriptionsRequestBodyItems'BillingThresholds'OneOf1UsageGte}

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.billing_thresholds.anyOf@ in the specification.
data PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyItems'BillingThresholds'EmptyString
  | PostSubscriptionsRequestBodyItems'BillingThresholds'PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
  deriving (Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> ShowS
[PostSubscriptionsRequestBodyItems'BillingThresholds'Variants]
-> ShowS
PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> String
(Int
 -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
 -> ShowS)
-> (PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
    -> String)
-> ([PostSubscriptionsRequestBodyItems'BillingThresholds'Variants]
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'BillingThresholds'Variants]
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'BillingThresholds'Variants]
-> ShowS
show :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> String
$cshow :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Bool
(PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
 -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
 -> Bool)
-> (PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
    -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
    -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Bool
$c/= :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Bool
== :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Bool
$c== :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'BillingThresholds'Variants where
  toJSON :: PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Value
toJSON (PostSubscriptionsRequestBodyItems'BillingThresholds'PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
a) = PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
a
  toJSON (PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
PostSubscriptionsRequestBodyItems'BillingThresholds'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'BillingThresholds'Variants where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
PostSubscriptionsRequestBodyItems'BillingThresholds'EmptyString
        | Bool
GHC.Base.otherwise -> case (PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
PostSubscriptionsRequestBodyItems'BillingThresholds'PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1 (PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
 -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants)
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'OneOf1
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
a -> PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser
     PostSubscriptionsRequestBodyItems'BillingThresholds'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.price_data@ in the specification.
data PostSubscriptionsRequestBodyItems'PriceData' = PostSubscriptionsRequestBodyItems'PriceData'
  { -- | currency
    PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Currency :: Data.Text.Internal.Text,
    -- | product
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Product :: Data.Text.Internal.Text,
    -- | recurring
    PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring :: PostSubscriptionsRequestBodyItems'PriceData'Recurring',
    -- | tax_behavior
    PostSubscriptionsRequestBodyItems'PriceData'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyItems'PriceData'TaxBehavior :: (GHC.Maybe.Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'),
    -- | unit_amount
    PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'UnitAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | unit_amount_decimal
    PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Text
postSubscriptionsRequestBodyItems'PriceData'UnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PostSubscriptionsRequestBodyItems'PriceData' -> ShowS
[PostSubscriptionsRequestBodyItems'PriceData'] -> ShowS
PostSubscriptionsRequestBodyItems'PriceData' -> String
(Int -> PostSubscriptionsRequestBodyItems'PriceData' -> ShowS)
-> (PostSubscriptionsRequestBodyItems'PriceData' -> String)
-> ([PostSubscriptionsRequestBodyItems'PriceData'] -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'PriceData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'PriceData'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'PriceData'] -> ShowS
show :: PostSubscriptionsRequestBodyItems'PriceData' -> String
$cshow :: PostSubscriptionsRequestBodyItems'PriceData' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyItems'PriceData' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyItems'PriceData' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData' -> Bool
(PostSubscriptionsRequestBodyItems'PriceData'
 -> PostSubscriptionsRequestBodyItems'PriceData' -> Bool)
-> (PostSubscriptionsRequestBodyItems'PriceData'
    -> PostSubscriptionsRequestBodyItems'PriceData' -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'PriceData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData' -> Bool
$c/= :: PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData' -> Bool
== :: PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData' -> Bool
$c== :: PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'PriceData' where
  toJSON :: PostSubscriptionsRequestBodyItems'PriceData' -> Value
toJSON PostSubscriptionsRequestBodyItems'PriceData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Currency PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"product" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Product PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"recurring" Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_behavior" Text
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyItems'PriceData'TaxBehavior PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'UnitAmount PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Text
postSubscriptionsRequestBodyItems'PriceData'UnitAmountDecimal PostSubscriptionsRequestBodyItems'PriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyItems'PriceData' -> Encoding
toEncoding PostSubscriptionsRequestBodyItems'PriceData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Currency PostSubscriptionsRequestBodyItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"product" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Text
postSubscriptionsRequestBodyItems'PriceData'Product PostSubscriptionsRequestBodyItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"recurring" Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring PostSubscriptionsRequestBodyItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tax_behavior" Text
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyItems'PriceData'TaxBehavior PostSubscriptionsRequestBodyItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'UnitAmount PostSubscriptionsRequestBodyItems'PriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"unit_amount_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData' -> Maybe Text
postSubscriptionsRequestBodyItems'PriceData'UnitAmountDecimal PostSubscriptionsRequestBodyItems'PriceData'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'PriceData' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyItems'PriceData'
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBodyItems'PriceData')
-> Value
-> Parser PostSubscriptionsRequestBodyItems'PriceData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyItems'PriceData'" (\Object
obj -> ((((((Text
 -> Text
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
 -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
 -> Maybe Int
 -> Maybe Text
 -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser
     (Text
      -> Text
      -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostSubscriptionsRequestBodyItems'PriceData'
PostSubscriptionsRequestBodyItems'PriceData' Parser
  (Text
   -> Text
   -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser Text
-> Parser
     (Text
      -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"currency")) Parser
  (Text
   -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser Text
-> Parser
     (PostSubscriptionsRequestBodyItems'PriceData'Recurring'
      -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"product")) Parser
  (PostSubscriptionsRequestBodyItems'PriceData'Recurring'
   -> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"recurring")) Parser
  (Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior')
-> Parser
     (Maybe Int
      -> Maybe Text -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_behavior")) Parser
  (Maybe Int
   -> Maybe Text -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text -> PostSubscriptionsRequestBodyItems'PriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"unit_amount")) Parser (Maybe Text -> PostSubscriptionsRequestBodyItems'PriceData')
-> Parser (Maybe Text)
-> Parser PostSubscriptionsRequestBodyItems'PriceData'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"unit_amount_decimal"))

-- | Create a new 'PostSubscriptionsRequestBodyItems'PriceData'' with all required fields.
mkPostSubscriptionsRequestBodyItems'PriceData' ::
  -- | 'postSubscriptionsRequestBodyItems'PriceData'Currency'
  Data.Text.Internal.Text ->
  -- | 'postSubscriptionsRequestBodyItems'PriceData'Product'
  Data.Text.Internal.Text ->
  -- | 'postSubscriptionsRequestBodyItems'PriceData'Recurring'
  PostSubscriptionsRequestBodyItems'PriceData'Recurring' ->
  PostSubscriptionsRequestBodyItems'PriceData'
mkPostSubscriptionsRequestBodyItems'PriceData' :: Text
-> Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'
mkPostSubscriptionsRequestBodyItems'PriceData' Text
postSubscriptionsRequestBodyItems'PriceData'Currency Text
postSubscriptionsRequestBodyItems'PriceData'Product PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring =
  PostSubscriptionsRequestBodyItems'PriceData' :: Text
-> Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostSubscriptionsRequestBodyItems'PriceData'
PostSubscriptionsRequestBodyItems'PriceData'
    { postSubscriptionsRequestBodyItems'PriceData'Currency :: Text
postSubscriptionsRequestBodyItems'PriceData'Currency = Text
postSubscriptionsRequestBodyItems'PriceData'Currency,
      postSubscriptionsRequestBodyItems'PriceData'Product :: Text
postSubscriptionsRequestBodyItems'PriceData'Product = Text
postSubscriptionsRequestBodyItems'PriceData'Product,
      postSubscriptionsRequestBodyItems'PriceData'Recurring :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring = PostSubscriptionsRequestBodyItems'PriceData'Recurring'
postSubscriptionsRequestBodyItems'PriceData'Recurring,
      postSubscriptionsRequestBodyItems'PriceData'TaxBehavior :: Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
postSubscriptionsRequestBodyItems'PriceData'TaxBehavior = Maybe PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'PriceData'UnitAmount :: Maybe Int
postSubscriptionsRequestBodyItems'PriceData'UnitAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyItems'PriceData'UnitAmountDecimal :: Maybe Text
postSubscriptionsRequestBodyItems'PriceData'UnitAmountDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.price_data.properties.recurring@ in the specification.
data PostSubscriptionsRequestBodyItems'PriceData'Recurring' = PostSubscriptionsRequestBodyItems'PriceData'Recurring'
  { -- | interval
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval',
    -- | interval_count
    PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'Recurring'IntervalCount :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> ShowS
[PostSubscriptionsRequestBodyItems'PriceData'Recurring'] -> ShowS
PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> String
(Int
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> ShowS)
-> (PostSubscriptionsRequestBodyItems'PriceData'Recurring'
    -> String)
-> ([PostSubscriptionsRequestBodyItems'PriceData'Recurring']
    -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'PriceData'Recurring'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'PriceData'Recurring'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'PriceData'Recurring'] -> ShowS
show :: PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> String
$cshow :: PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool
(PostSubscriptionsRequestBodyItems'PriceData'Recurring'
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool)
-> (PostSubscriptionsRequestBodyItems'PriceData'Recurring'
    -> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'PriceData'Recurring'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool
$c/= :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool
== :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool
$c== :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'PriceData'Recurring' where
  toJSON :: PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Value
toJSON PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"interval" Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"interval_count" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'Recurring'IntervalCount PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Encoding
toEncoding PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"interval" Text
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'Recurring'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"interval_count" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyItems'PriceData'Recurring' -> Maybe Int
postSubscriptionsRequestBodyItems'PriceData'Recurring'IntervalCount PostSubscriptionsRequestBodyItems'PriceData'Recurring'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'PriceData'Recurring' where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring'
parseJSON = String
-> (Object
    -> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring')
-> Value
-> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyItems'PriceData'Recurring'" (\Object
obj -> ((PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
 -> Maybe Int
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring')
-> Parser
     (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
      -> Maybe Int
      -> PostSubscriptionsRequestBodyItems'PriceData'Recurring')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Maybe Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
PostSubscriptionsRequestBodyItems'PriceData'Recurring' Parser
  (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
   -> Maybe Int
   -> PostSubscriptionsRequestBodyItems'PriceData'Recurring')
-> Parser
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Parser
     (Maybe Int
      -> PostSubscriptionsRequestBodyItems'PriceData'Recurring')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"interval")) Parser
  (Maybe Int
   -> PostSubscriptionsRequestBodyItems'PriceData'Recurring')
-> Parser (Maybe Int)
-> Parser PostSubscriptionsRequestBodyItems'PriceData'Recurring'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"interval_count"))

-- | Create a new 'PostSubscriptionsRequestBodyItems'PriceData'Recurring'' with all required fields.
mkPostSubscriptionsRequestBodyItems'PriceData'Recurring' ::
  -- | 'postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
  PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval' ->
  PostSubscriptionsRequestBodyItems'PriceData'Recurring'
mkPostSubscriptionsRequestBodyItems'PriceData'Recurring' :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
mkPostSubscriptionsRequestBodyItems'PriceData'Recurring' PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval =
  PostSubscriptionsRequestBodyItems'PriceData'Recurring' :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Maybe Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'
    { postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval = PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
postSubscriptionsRequestBodyItems'PriceData'Recurring'Interval,
      postSubscriptionsRequestBodyItems'PriceData'Recurring'IntervalCount :: Maybe Int
postSubscriptionsRequestBodyItems'PriceData'Recurring'IntervalCount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.price_data.properties.recurring.properties.interval@ in the specification.
data PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"day"@
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumDay
  | -- | Represents the JSON value @"month"@
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumMonth
  | -- | Represents the JSON value @"week"@
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumWeek
  | -- | Represents the JSON value @"year"@
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumYear
  deriving (Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> ShowS
[PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval']
-> ShowS
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> String
(Int
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
 -> ShowS)
-> (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
    -> String)
-> ([PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval']
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval']
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval']
-> ShowS
show :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> String
$cshow :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Bool
(PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
 -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
 -> Bool)
-> (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
    -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
    -> Bool)
-> Eq
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Bool
$c/= :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Bool
== :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Bool
$c== :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval' where
  toJSON :: PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Value
toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumDay) = Value
"day"
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumMonth) = Value
"month"
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumWeek) = Value
"week"
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumYear) = Value
"year"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval' where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
parseJSON Value
val =
    PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
-> Parser
     PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"day" -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumDay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"month" -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumMonth
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"week" -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumWeek
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"year" -> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'EnumYear
            | Bool
GHC.Base.otherwise -> Value
-> PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'
PostSubscriptionsRequestBodyItems'PriceData'Recurring'Interval'Other Value
val
      )

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.price_data.properties.tax_behavior@ in the specification.
data PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"exclusive"@
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumExclusive
  | -- | Represents the JSON value @"inclusive"@
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumInclusive
  | -- | Represents the JSON value @"unspecified"@
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumUnspecified
  deriving (Int
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> ShowS
[PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'] -> ShowS
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> String
(Int
 -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
 -> ShowS)
-> (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
    -> String)
-> ([PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior']
    -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'] -> ShowS
show :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> String
$cshow :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Bool
(PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
 -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
 -> Bool)
-> (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
    -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
    -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Bool
$c/= :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Bool
== :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Bool
$c== :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' where
  toJSON :: PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' -> Value
toJSON (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumExclusive) = Value
"exclusive"
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumInclusive) = Value
"inclusive"
  toJSON (PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumUnspecified) = Value
"unspecified"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior' where
  parseJSON :: Value
-> Parser PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
parseJSON Value
val =
    PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
-> Parser PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"exclusive" -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumExclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"inclusive" -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumInclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unspecified" -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'EnumUnspecified
            | Bool
GHC.Base.otherwise -> Value -> PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'
PostSubscriptionsRequestBodyItems'PriceData'TaxBehavior'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.items.items.properties.tax_rates.anyOf@ in the specification.
data PostSubscriptionsRequestBodyItems'TaxRates'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyItems'TaxRates'EmptyString
  | PostSubscriptionsRequestBodyItems'TaxRates'ListTText ([Data.Text.Internal.Text])
  deriving (Int -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> ShowS
[PostSubscriptionsRequestBodyItems'TaxRates'Variants] -> ShowS
PostSubscriptionsRequestBodyItems'TaxRates'Variants -> String
(Int
 -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> ShowS)
-> (PostSubscriptionsRequestBodyItems'TaxRates'Variants -> String)
-> ([PostSubscriptionsRequestBodyItems'TaxRates'Variants] -> ShowS)
-> Show PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyItems'TaxRates'Variants] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyItems'TaxRates'Variants] -> ShowS
show :: PostSubscriptionsRequestBodyItems'TaxRates'Variants -> String
$cshow :: PostSubscriptionsRequestBodyItems'TaxRates'Variants -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool
(PostSubscriptionsRequestBodyItems'TaxRates'Variants
 -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool)
-> (PostSubscriptionsRequestBodyItems'TaxRates'Variants
    -> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool)
-> Eq PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool
$c/= :: PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool
== :: PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool
$c== :: PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyItems'TaxRates'Variants where
  toJSON :: PostSubscriptionsRequestBodyItems'TaxRates'Variants -> Value
toJSON (PostSubscriptionsRequestBodyItems'TaxRates'ListTText [Text]
a) = [Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON [Text]
a
  toJSON (PostSubscriptionsRequestBodyItems'TaxRates'Variants
PostSubscriptionsRequestBodyItems'TaxRates'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyItems'TaxRates'Variants where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyItems'TaxRates'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Parser PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyItems'TaxRates'Variants
PostSubscriptionsRequestBodyItems'TaxRates'EmptyString
        | Bool
GHC.Base.otherwise -> case ([Text] -> PostSubscriptionsRequestBodyItems'TaxRates'Variants
PostSubscriptionsRequestBodyItems'TaxRates'ListTText ([Text] -> PostSubscriptionsRequestBodyItems'TaxRates'Variants)
-> Result [Text]
-> Result PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result [Text]
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Result PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Result PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyItems'TaxRates'Variants
a -> PostSubscriptionsRequestBodyItems'TaxRates'Variants
-> Parser PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyItems'TaxRates'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostSubscriptionsRequestBodyItems'TaxRates'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.metadata.anyOf@ in the specification.
--
-- Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to \`metadata\`.
data PostSubscriptionsRequestBodyMetadata'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyMetadata'EmptyString
  | PostSubscriptionsRequestBodyMetadata'Object Data.Aeson.Types.Internal.Object
  deriving (Int -> PostSubscriptionsRequestBodyMetadata'Variants -> ShowS
[PostSubscriptionsRequestBodyMetadata'Variants] -> ShowS
PostSubscriptionsRequestBodyMetadata'Variants -> String
(Int -> PostSubscriptionsRequestBodyMetadata'Variants -> ShowS)
-> (PostSubscriptionsRequestBodyMetadata'Variants -> String)
-> ([PostSubscriptionsRequestBodyMetadata'Variants] -> ShowS)
-> Show PostSubscriptionsRequestBodyMetadata'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyMetadata'Variants] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyMetadata'Variants] -> ShowS
show :: PostSubscriptionsRequestBodyMetadata'Variants -> String
$cshow :: PostSubscriptionsRequestBodyMetadata'Variants -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyMetadata'Variants -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyMetadata'Variants -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyMetadata'Variants
-> PostSubscriptionsRequestBodyMetadata'Variants -> Bool
(PostSubscriptionsRequestBodyMetadata'Variants
 -> PostSubscriptionsRequestBodyMetadata'Variants -> Bool)
-> (PostSubscriptionsRequestBodyMetadata'Variants
    -> PostSubscriptionsRequestBodyMetadata'Variants -> Bool)
-> Eq PostSubscriptionsRequestBodyMetadata'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyMetadata'Variants
-> PostSubscriptionsRequestBodyMetadata'Variants -> Bool
$c/= :: PostSubscriptionsRequestBodyMetadata'Variants
-> PostSubscriptionsRequestBodyMetadata'Variants -> Bool
== :: PostSubscriptionsRequestBodyMetadata'Variants
-> PostSubscriptionsRequestBodyMetadata'Variants -> Bool
$c== :: PostSubscriptionsRequestBodyMetadata'Variants
-> PostSubscriptionsRequestBodyMetadata'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyMetadata'Variants where
  toJSON :: PostSubscriptionsRequestBodyMetadata'Variants -> Value
toJSON (PostSubscriptionsRequestBodyMetadata'Object Object
a) = Object -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Object
a
  toJSON (PostSubscriptionsRequestBodyMetadata'Variants
PostSubscriptionsRequestBodyMetadata'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyMetadata'Variants where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyMetadata'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyMetadata'Variants
-> Parser PostSubscriptionsRequestBodyMetadata'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyMetadata'Variants
PostSubscriptionsRequestBodyMetadata'EmptyString
        | Bool
GHC.Base.otherwise -> case (Object -> PostSubscriptionsRequestBodyMetadata'Variants
PostSubscriptionsRequestBodyMetadata'Object (Object -> PostSubscriptionsRequestBodyMetadata'Variants)
-> Result Object
-> Result PostSubscriptionsRequestBodyMetadata'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Object
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyMetadata'Variants
-> Result PostSubscriptionsRequestBodyMetadata'Variants
-> Result PostSubscriptionsRequestBodyMetadata'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result PostSubscriptionsRequestBodyMetadata'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyMetadata'Variants
a -> PostSubscriptionsRequestBodyMetadata'Variants
-> Parser PostSubscriptionsRequestBodyMetadata'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyMetadata'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String -> Parser PostSubscriptionsRequestBodyMetadata'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_behavior@ in the specification.
--
-- Use \`allow_incomplete\` to create subscriptions with \`status=incomplete\` if the first invoice cannot be paid. Creating subscriptions with this status allows you to manage scenarios where additional user actions are needed to pay a subscription\'s invoice. For example, SCA regulation may require 3DS authentication to complete payment. See the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication) for Billing to learn more. This is the default behavior.
--
-- Use \`default_incomplete\` to create Subscriptions with \`status=incomplete\` when the first invoice requires payment, otherwise start as active. Subscriptions transition to \`status=active\` when successfully confirming the payment intent on the first invoice. This allows simpler management of scenarios where additional user actions are needed to pay a subscription’s invoice. Such as failed payments, [SCA regulation](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication), or collecting a mandate for a bank debit payment method. If the payment intent is not confirmed within 23 hours subscriptions transition to \`status=expired_incomplete\`, which is a terminal state.
--
-- Use \`error_if_incomplete\` if you want Stripe to return an HTTP 402 status code if a subscription\'s first invoice cannot be paid. For example, if a payment method requires 3DS authentication due to SCA regulation and further user action is needed, this parameter does not create a subscription and returns an error instead. This was the default behavior for API versions prior to 2019-03-14. See the [changelog](https:\/\/stripe.com\/docs\/upgrades\#2019-03-14) to learn more.
--
-- \`pending_if_incomplete\` is only used with updates and cannot be passed when creating a subscription.
data PostSubscriptionsRequestBodyPaymentBehavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyPaymentBehavior'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyPaymentBehavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"allow_incomplete"@
    PostSubscriptionsRequestBodyPaymentBehavior'EnumAllowIncomplete
  | -- | Represents the JSON value @"default_incomplete"@
    PostSubscriptionsRequestBodyPaymentBehavior'EnumDefaultIncomplete
  | -- | Represents the JSON value @"error_if_incomplete"@
    PostSubscriptionsRequestBodyPaymentBehavior'EnumErrorIfIncomplete
  | -- | Represents the JSON value @"pending_if_incomplete"@
    PostSubscriptionsRequestBodyPaymentBehavior'EnumPendingIfIncomplete
  deriving (Int -> PostSubscriptionsRequestBodyPaymentBehavior' -> ShowS
[PostSubscriptionsRequestBodyPaymentBehavior'] -> ShowS
PostSubscriptionsRequestBodyPaymentBehavior' -> String
(Int -> PostSubscriptionsRequestBodyPaymentBehavior' -> ShowS)
-> (PostSubscriptionsRequestBodyPaymentBehavior' -> String)
-> ([PostSubscriptionsRequestBodyPaymentBehavior'] -> ShowS)
-> Show PostSubscriptionsRequestBodyPaymentBehavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyPaymentBehavior'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyPaymentBehavior'] -> ShowS
show :: PostSubscriptionsRequestBodyPaymentBehavior' -> String
$cshow :: PostSubscriptionsRequestBodyPaymentBehavior' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyPaymentBehavior' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyPaymentBehavior' -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyPaymentBehavior'
-> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool
(PostSubscriptionsRequestBodyPaymentBehavior'
 -> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool)
-> (PostSubscriptionsRequestBodyPaymentBehavior'
    -> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool)
-> Eq PostSubscriptionsRequestBodyPaymentBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyPaymentBehavior'
-> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool
$c/= :: PostSubscriptionsRequestBodyPaymentBehavior'
-> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool
== :: PostSubscriptionsRequestBodyPaymentBehavior'
-> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool
$c== :: PostSubscriptionsRequestBodyPaymentBehavior'
-> PostSubscriptionsRequestBodyPaymentBehavior' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyPaymentBehavior' where
  toJSON :: PostSubscriptionsRequestBodyPaymentBehavior' -> Value
toJSON (PostSubscriptionsRequestBodyPaymentBehavior'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyPaymentBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumAllowIncomplete) = Value
"allow_incomplete"
  toJSON (PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumDefaultIncomplete) = Value
"default_incomplete"
  toJSON (PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumErrorIfIncomplete) = Value
"error_if_incomplete"
  toJSON (PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumPendingIfIncomplete) = Value
"pending_if_incomplete"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyPaymentBehavior' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyPaymentBehavior'
parseJSON Value
val =
    PostSubscriptionsRequestBodyPaymentBehavior'
-> Parser PostSubscriptionsRequestBodyPaymentBehavior'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"allow_incomplete" -> PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumAllowIncomplete
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"default_incomplete" -> PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumDefaultIncomplete
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"error_if_incomplete" -> PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumErrorIfIncomplete
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"pending_if_incomplete" -> PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'EnumPendingIfIncomplete
            | Bool
GHC.Base.otherwise -> Value -> PostSubscriptionsRequestBodyPaymentBehavior'
PostSubscriptionsRequestBodyPaymentBehavior'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.pending_invoice_item_interval.anyOf@ in the specification.
data PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 = PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
  { -- | interval
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval',
    -- | interval_count
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Maybe Int
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1IntervalCount :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> ShowS
[PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1]
-> ShowS
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> String
(Int
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
 -> ShowS)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
    -> String)
-> ([PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1]
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1]
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1]
-> ShowS
show :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> String
$cshow :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Bool
(PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
 -> Bool)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
    -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
    -> Bool)
-> Eq PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Bool
$c/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Bool
== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Bool
$c== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 where
  toJSON :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Value
toJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"interval" Text
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"interval_count" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Maybe Int
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1IntervalCount PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Encoding
toEncoding PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"interval" Text
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"interval_count" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Maybe Int
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1IntervalCount PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
parseJSON = String
-> (Object
    -> Parser
         PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
-> Value
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1" (\Object
obj -> ((PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
 -> Maybe Int
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
-> Parser
     (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
      -> Maybe Int
      -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Maybe Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 Parser
  (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
   -> Maybe Int
   -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Parser
     (Maybe Int
      -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"interval")) Parser
  (Maybe Int
   -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1)
-> Parser (Maybe Int)
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"interval_count"))

-- | Create a new 'PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1' with all required fields.
mkPostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 ::
  -- | 'postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval' ->
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
mkPostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
mkPostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval =
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Maybe Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
    { postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval = PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval,
      postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1IntervalCount :: Maybe Int
postSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1IntervalCount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.pending_invoice_item_interval.anyOf.properties.interval@ in the specification.
data PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"day"@
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumDay
  | -- | Represents the JSON value @"month"@
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumMonth
  | -- | Represents the JSON value @"week"@
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumWeek
  | -- | Represents the JSON value @"year"@
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumYear
  deriving (Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> ShowS
[PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval']
-> ShowS
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> String
(Int
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
 -> ShowS)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
    -> String)
-> ([PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval']
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval']
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval']
-> ShowS
show :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> String
$cshow :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Bool
(PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
 -> Bool)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
    -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
    -> Bool)
-> Eq
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Bool
$c/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Bool
== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Bool
$c== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval' where
  toJSON :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Value
toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumDay) = Value
"day"
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumMonth) = Value
"month"
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumWeek) = Value
"week"
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumYear) = Value
"year"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval' where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
parseJSON Value
val =
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"day" -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumDay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"month" -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumMonth
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"week" -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumWeek
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"year" -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'EnumYear
            | Bool
GHC.Base.otherwise -> Value
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1Interval'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.pending_invoice_item_interval.anyOf@ in the specification.
--
-- Specifies an interval for how often to bill for any pending invoice items. It is analogous to calling [Create an invoice](https:\/\/stripe.com\/docs\/api\#create_invoice) for the given subscription at the specified interval.
data PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
  = -- | Represents the JSON value @""@
    PostSubscriptionsRequestBodyPendingInvoiceItemInterval'EmptyString
  | PostSubscriptionsRequestBodyPendingInvoiceItemInterval'PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
  deriving (Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> ShowS
[PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants]
-> ShowS
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> String
(Int
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
 -> ShowS)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
    -> String)
-> ([PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants]
    -> ShowS)
-> Show
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants]
-> ShowS
$cshowList :: [PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants]
-> ShowS
show :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> String
$cshow :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> String
showsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> ShowS
$cshowsPrec :: Int
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Bool
(PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
 -> Bool)
-> (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
    -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
    -> Bool)
-> Eq
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Bool
$c/= :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Bool
== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Bool
$c== :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants where
  toJSON :: PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Value
toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
a) = PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
a
  toJSON (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants where
  parseJSON :: Value
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'EmptyString
        | Bool
GHC.Base.otherwise -> case (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
PostSubscriptionsRequestBodyPendingInvoiceItemInterval'PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1 (PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
 -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants)
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'OneOf1
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result
  PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
a -> PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser
     PostSubscriptionsRequestBodyPendingInvoiceItemInterval'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.proration_behavior@ in the specification.
--
-- Determines how to handle [prorations](https:\/\/stripe.com\/docs\/subscriptions\/billing-cycle\#prorations) resulting from the \`billing_cycle_anchor\`. Valid values are \`create_prorations\` or \`none\`.
--
-- Passing \`create_prorations\` will cause proration invoice items to be created when applicable. Prorations can be disabled by passing \`none\`. If no value is passed, the default is \`create_prorations\`.
data PostSubscriptionsRequestBodyProrationBehavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSubscriptionsRequestBodyProrationBehavior'Other Data.Aeson.Types.Internal.Value
  | -- | This constructor can be used to send values to the server which are not present in the specification yet.
    PostSubscriptionsRequestBodyProrationBehavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"always_invoice"@
    PostSubscriptionsRequestBodyProrationBehavior'EnumAlwaysInvoice
  | -- | Represents the JSON value @"create_prorations"@
    PostSubscriptionsRequestBodyProrationBehavior'EnumCreateProrations
  | -- | Represents the JSON value @"none"@
    PostSubscriptionsRequestBodyProrationBehavior'EnumNone
  deriving (Int -> PostSubscriptionsRequestBodyProrationBehavior' -> ShowS
[PostSubscriptionsRequestBodyProrationBehavior'] -> ShowS
PostSubscriptionsRequestBodyProrationBehavior' -> String
(Int -> PostSubscriptionsRequestBodyProrationBehavior' -> ShowS)
-> (PostSubscriptionsRequestBodyProrationBehavior' -> String)
-> ([PostSubscriptionsRequestBodyProrationBehavior'] -> ShowS)
-> Show PostSubscriptionsRequestBodyProrationBehavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyProrationBehavior'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyProrationBehavior'] -> ShowS
show :: PostSubscriptionsRequestBodyProrationBehavior' -> String
$cshow :: PostSubscriptionsRequestBodyProrationBehavior' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyProrationBehavior' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyProrationBehavior' -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyProrationBehavior'
-> PostSubscriptionsRequestBodyProrationBehavior' -> Bool
(PostSubscriptionsRequestBodyProrationBehavior'
 -> PostSubscriptionsRequestBodyProrationBehavior' -> Bool)
-> (PostSubscriptionsRequestBodyProrationBehavior'
    -> PostSubscriptionsRequestBodyProrationBehavior' -> Bool)
-> Eq PostSubscriptionsRequestBodyProrationBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyProrationBehavior'
-> PostSubscriptionsRequestBodyProrationBehavior' -> Bool
$c/= :: PostSubscriptionsRequestBodyProrationBehavior'
-> PostSubscriptionsRequestBodyProrationBehavior' -> Bool
== :: PostSubscriptionsRequestBodyProrationBehavior'
-> PostSubscriptionsRequestBodyProrationBehavior' -> Bool
$c== :: PostSubscriptionsRequestBodyProrationBehavior'
-> PostSubscriptionsRequestBodyProrationBehavior' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyProrationBehavior' where
  toJSON :: PostSubscriptionsRequestBodyProrationBehavior' -> Value
toJSON (PostSubscriptionsRequestBodyProrationBehavior'Other Value
val) = Value
val
  toJSON (PostSubscriptionsRequestBodyProrationBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumAlwaysInvoice) = Value
"always_invoice"
  toJSON (PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumCreateProrations) = Value
"create_prorations"
  toJSON (PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumNone) = Value
"none"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyProrationBehavior' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyProrationBehavior'
parseJSON Value
val =
    PostSubscriptionsRequestBodyProrationBehavior'
-> Parser PostSubscriptionsRequestBodyProrationBehavior'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"always_invoice" -> PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumAlwaysInvoice
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"create_prorations" -> PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumCreateProrations
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"none" -> PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'EnumNone
            | Bool
GHC.Base.otherwise -> Value -> PostSubscriptionsRequestBodyProrationBehavior'
PostSubscriptionsRequestBodyProrationBehavior'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.transfer_data@ in the specification.
--
-- If specified, the funds from the subscription\'s invoices will be transferred to the destination and the ID of the resulting transfers will be found on the resulting charges.
data PostSubscriptionsRequestBodyTransferData' = PostSubscriptionsRequestBodyTransferData'
  { -- | amount_percent
    PostSubscriptionsRequestBodyTransferData' -> Maybe Double
postSubscriptionsRequestBodyTransferData'AmountPercent :: (GHC.Maybe.Maybe GHC.Types.Double),
    -- | destination
    PostSubscriptionsRequestBodyTransferData' -> Text
postSubscriptionsRequestBodyTransferData'Destination :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> PostSubscriptionsRequestBodyTransferData' -> ShowS
[PostSubscriptionsRequestBodyTransferData'] -> ShowS
PostSubscriptionsRequestBodyTransferData' -> String
(Int -> PostSubscriptionsRequestBodyTransferData' -> ShowS)
-> (PostSubscriptionsRequestBodyTransferData' -> String)
-> ([PostSubscriptionsRequestBodyTransferData'] -> ShowS)
-> Show PostSubscriptionsRequestBodyTransferData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyTransferData'] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyTransferData'] -> ShowS
show :: PostSubscriptionsRequestBodyTransferData' -> String
$cshow :: PostSubscriptionsRequestBodyTransferData' -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyTransferData' -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyTransferData' -> ShowS
GHC.Show.Show,
      PostSubscriptionsRequestBodyTransferData'
-> PostSubscriptionsRequestBodyTransferData' -> Bool
(PostSubscriptionsRequestBodyTransferData'
 -> PostSubscriptionsRequestBodyTransferData' -> Bool)
-> (PostSubscriptionsRequestBodyTransferData'
    -> PostSubscriptionsRequestBodyTransferData' -> Bool)
-> Eq PostSubscriptionsRequestBodyTransferData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyTransferData'
-> PostSubscriptionsRequestBodyTransferData' -> Bool
$c/= :: PostSubscriptionsRequestBodyTransferData'
-> PostSubscriptionsRequestBodyTransferData' -> Bool
== :: PostSubscriptionsRequestBodyTransferData'
-> PostSubscriptionsRequestBodyTransferData' -> Bool
$c== :: PostSubscriptionsRequestBodyTransferData'
-> PostSubscriptionsRequestBodyTransferData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyTransferData' where
  toJSON :: PostSubscriptionsRequestBodyTransferData' -> Value
toJSON PostSubscriptionsRequestBodyTransferData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount_percent" Text -> Maybe Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyTransferData' -> Maybe Double
postSubscriptionsRequestBodyTransferData'AmountPercent PostSubscriptionsRequestBodyTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"destination" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyTransferData' -> Text
postSubscriptionsRequestBodyTransferData'Destination PostSubscriptionsRequestBodyTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSubscriptionsRequestBodyTransferData' -> Encoding
toEncoding PostSubscriptionsRequestBodyTransferData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount_percent" Text -> Maybe Double -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyTransferData' -> Maybe Double
postSubscriptionsRequestBodyTransferData'AmountPercent PostSubscriptionsRequestBodyTransferData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"destination" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSubscriptionsRequestBodyTransferData' -> Text
postSubscriptionsRequestBodyTransferData'Destination PostSubscriptionsRequestBodyTransferData'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyTransferData' where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyTransferData'
parseJSON = String
-> (Object -> Parser PostSubscriptionsRequestBodyTransferData')
-> Value
-> Parser PostSubscriptionsRequestBodyTransferData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSubscriptionsRequestBodyTransferData'" (\Object
obj -> ((Maybe Double -> Text -> PostSubscriptionsRequestBodyTransferData')
-> Parser
     (Maybe Double -> Text -> PostSubscriptionsRequestBodyTransferData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Double -> Text -> PostSubscriptionsRequestBodyTransferData'
PostSubscriptionsRequestBodyTransferData' Parser
  (Maybe Double -> Text -> PostSubscriptionsRequestBodyTransferData')
-> Parser (Maybe Double)
-> Parser (Text -> PostSubscriptionsRequestBodyTransferData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Double)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount_percent")) Parser (Text -> PostSubscriptionsRequestBodyTransferData')
-> Parser Text -> Parser PostSubscriptionsRequestBodyTransferData'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"destination"))

-- | Create a new 'PostSubscriptionsRequestBodyTransferData'' with all required fields.
mkPostSubscriptionsRequestBodyTransferData' ::
  -- | 'postSubscriptionsRequestBodyTransferData'Destination'
  Data.Text.Internal.Text ->
  PostSubscriptionsRequestBodyTransferData'
mkPostSubscriptionsRequestBodyTransferData' :: Text -> PostSubscriptionsRequestBodyTransferData'
mkPostSubscriptionsRequestBodyTransferData' Text
postSubscriptionsRequestBodyTransferData'Destination =
  PostSubscriptionsRequestBodyTransferData' :: Maybe Double -> Text -> PostSubscriptionsRequestBodyTransferData'
PostSubscriptionsRequestBodyTransferData'
    { postSubscriptionsRequestBodyTransferData'AmountPercent :: Maybe Double
postSubscriptionsRequestBodyTransferData'AmountPercent = Maybe Double
forall a. Maybe a
GHC.Maybe.Nothing,
      postSubscriptionsRequestBodyTransferData'Destination :: Text
postSubscriptionsRequestBodyTransferData'Destination = Text
postSubscriptionsRequestBodyTransferData'Destination
    }

-- | Defines the oneOf schema located at @paths.\/v1\/subscriptions.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.trial_end.anyOf@ in the specification.
--
-- Unix timestamp representing the end of the trial period the customer will get before being charged for the first time. This will always overwrite any trials that might apply via a subscribed plan. If set, trial_end will override the default trial period of the plan the customer is being subscribed to. The special value \`now\` can be provided to end the customer\'s trial immediately. Can be at most two years from \`billing_cycle_anchor\`.
data PostSubscriptionsRequestBodyTrialEnd'Variants
  = -- | Represents the JSON value @"now"@
    PostSubscriptionsRequestBodyTrialEnd'Now
  | PostSubscriptionsRequestBodyTrialEnd'Int GHC.Types.Int
  deriving (Int -> PostSubscriptionsRequestBodyTrialEnd'Variants -> ShowS
[PostSubscriptionsRequestBodyTrialEnd'Variants] -> ShowS
PostSubscriptionsRequestBodyTrialEnd'Variants -> String
(Int -> PostSubscriptionsRequestBodyTrialEnd'Variants -> ShowS)
-> (PostSubscriptionsRequestBodyTrialEnd'Variants -> String)
-> ([PostSubscriptionsRequestBodyTrialEnd'Variants] -> ShowS)
-> Show PostSubscriptionsRequestBodyTrialEnd'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsRequestBodyTrialEnd'Variants] -> ShowS
$cshowList :: [PostSubscriptionsRequestBodyTrialEnd'Variants] -> ShowS
show :: PostSubscriptionsRequestBodyTrialEnd'Variants -> String
$cshow :: PostSubscriptionsRequestBodyTrialEnd'Variants -> String
showsPrec :: Int -> PostSubscriptionsRequestBodyTrialEnd'Variants -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsRequestBodyTrialEnd'Variants -> ShowS
GHC.Show.Show, PostSubscriptionsRequestBodyTrialEnd'Variants
-> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool
(PostSubscriptionsRequestBodyTrialEnd'Variants
 -> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool)
-> (PostSubscriptionsRequestBodyTrialEnd'Variants
    -> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool)
-> Eq PostSubscriptionsRequestBodyTrialEnd'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsRequestBodyTrialEnd'Variants
-> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool
$c/= :: PostSubscriptionsRequestBodyTrialEnd'Variants
-> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool
== :: PostSubscriptionsRequestBodyTrialEnd'Variants
-> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool
$c== :: PostSubscriptionsRequestBodyTrialEnd'Variants
-> PostSubscriptionsRequestBodyTrialEnd'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSubscriptionsRequestBodyTrialEnd'Variants where
  toJSON :: PostSubscriptionsRequestBodyTrialEnd'Variants -> Value
toJSON (PostSubscriptionsRequestBodyTrialEnd'Int Int
a) = Int -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Int
a
  toJSON (PostSubscriptionsRequestBodyTrialEnd'Variants
PostSubscriptionsRequestBodyTrialEnd'Now) = Value
"now"

instance Data.Aeson.Types.FromJSON.FromJSON PostSubscriptionsRequestBodyTrialEnd'Variants where
  parseJSON :: Value -> Parser PostSubscriptionsRequestBodyTrialEnd'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"now" -> PostSubscriptionsRequestBodyTrialEnd'Variants
-> Parser PostSubscriptionsRequestBodyTrialEnd'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyTrialEnd'Variants
PostSubscriptionsRequestBodyTrialEnd'Now
        | Bool
GHC.Base.otherwise -> case (Int -> PostSubscriptionsRequestBodyTrialEnd'Variants
PostSubscriptionsRequestBodyTrialEnd'Int (Int -> PostSubscriptionsRequestBodyTrialEnd'Variants)
-> Result Int
-> Result PostSubscriptionsRequestBodyTrialEnd'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Int
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostSubscriptionsRequestBodyTrialEnd'Variants
-> Result PostSubscriptionsRequestBodyTrialEnd'Variants
-> Result PostSubscriptionsRequestBodyTrialEnd'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result PostSubscriptionsRequestBodyTrialEnd'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSubscriptionsRequestBodyTrialEnd'Variants
a -> PostSubscriptionsRequestBodyTrialEnd'Variants
-> Parser PostSubscriptionsRequestBodyTrialEnd'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSubscriptionsRequestBodyTrialEnd'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String -> Parser PostSubscriptionsRequestBodyTrialEnd'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Represents a response of the operation 'postSubscriptions'.
--
-- The response constructor is chosen by the status code of the response. If no case matches (no specific case for the response code, no range case, no default case), 'PostSubscriptionsResponseError' is used.
data PostSubscriptionsResponse
  = -- | Means either no matching case available or a parse error
    PostSubscriptionsResponseError GHC.Base.String
  | -- | Successful response.
    PostSubscriptionsResponse200 Subscription
  | -- | Error response.
    PostSubscriptionsResponseDefault Error
  deriving (Int -> PostSubscriptionsResponse -> ShowS
[PostSubscriptionsResponse] -> ShowS
PostSubscriptionsResponse -> String
(Int -> PostSubscriptionsResponse -> ShowS)
-> (PostSubscriptionsResponse -> String)
-> ([PostSubscriptionsResponse] -> ShowS)
-> Show PostSubscriptionsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSubscriptionsResponse] -> ShowS
$cshowList :: [PostSubscriptionsResponse] -> ShowS
show :: PostSubscriptionsResponse -> String
$cshow :: PostSubscriptionsResponse -> String
showsPrec :: Int -> PostSubscriptionsResponse -> ShowS
$cshowsPrec :: Int -> PostSubscriptionsResponse -> ShowS
GHC.Show.Show, PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool
(PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool)
-> (PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool)
-> Eq PostSubscriptionsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool
$c/= :: PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool
== :: PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool
$c== :: PostSubscriptionsResponse -> PostSubscriptionsResponse -> Bool
GHC.Classes.Eq)