{-# 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 types generated from the schema Subscription
module StripeAPI.Types.Subscription where

import qualified Control.Monad.Fail
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.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 GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.Account
import {-# SOURCE #-} StripeAPI.Types.AlipayAccount
import {-# SOURCE #-} StripeAPI.Types.BankAccount
import {-# SOURCE #-} StripeAPI.Types.BitcoinReceiver
import {-# SOURCE #-} StripeAPI.Types.Card
import {-# SOURCE #-} StripeAPI.Types.Coupon
import {-# SOURCE #-} StripeAPI.Types.Customer
import {-# SOURCE #-} StripeAPI.Types.DeletedCustomer
import {-# SOURCE #-} StripeAPI.Types.Discount
import {-# SOURCE #-} StripeAPI.Types.Invoice
import {-# SOURCE #-} StripeAPI.Types.PaymentMethod
import {-# SOURCE #-} StripeAPI.Types.PromotionCode
import {-# SOURCE #-} StripeAPI.Types.SetupIntent
import {-# SOURCE #-} StripeAPI.Types.Source
import {-# SOURCE #-} StripeAPI.Types.SubscriptionAutomaticTax
import {-# SOURCE #-} StripeAPI.Types.SubscriptionBillingThresholds
import {-# SOURCE #-} StripeAPI.Types.SubscriptionItem
import {-# SOURCE #-} StripeAPI.Types.SubscriptionPendingInvoiceItemInterval
import {-# SOURCE #-} StripeAPI.Types.SubscriptionSchedule
import {-# SOURCE #-} StripeAPI.Types.SubscriptionTransferData
import {-# SOURCE #-} StripeAPI.Types.SubscriptionsResourcePauseCollection
import {-# SOURCE #-} StripeAPI.Types.SubscriptionsResourcePendingUpdate
import {-# SOURCE #-} StripeAPI.Types.TaxRate
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.subscription@ in the specification.
--
-- Subscriptions allow you to charge a customer on a recurring basis.
--
-- Related guide: [Creating Subscriptions](https:\/\/stripe.com\/docs\/billing\/subscriptions\/creating).
data Subscription = Subscription
  { -- | 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.
    Subscription -> Maybe Double
subscriptionApplicationFeePercent :: (GHC.Maybe.Maybe GHC.Types.Double),
    -- | automatic_tax:
    Subscription -> SubscriptionAutomaticTax
subscriptionAutomaticTax :: SubscriptionAutomaticTax,
    -- | billing_cycle_anchor: Determines the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
    Subscription -> Int
subscriptionBillingCycleAnchor :: GHC.Types.Int,
    -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period
    Subscription -> Maybe SubscriptionBillingThresholds'
subscriptionBillingThresholds :: (GHC.Maybe.Maybe SubscriptionBillingThresholds'),
    -- | cancel_at: A date in the future at which the subscription will automatically get canceled
    Subscription -> Maybe Int
subscriptionCancelAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | cancel_at_period_end: If the subscription has been canceled with the \`at_period_end\` flag set to \`true\`, \`cancel_at_period_end\` on the subscription will be true. You can use this attribute to determine whether a subscription that has a status of active is scheduled to be canceled at the end of the current period.
    Subscription -> Bool
subscriptionCancelAtPeriodEnd :: GHC.Types.Bool,
    -- | canceled_at: If the subscription has been canceled, the date of that cancellation. If the subscription was canceled with \`cancel_at_period_end\`, \`canceled_at\` will reflect the time of the most recent update request, not the end of the subscription period when the subscription is automatically moved to a canceled state.
    Subscription -> Maybe Int
subscriptionCanceledAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | 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.
    Subscription -> Maybe SubscriptionCollectionMethod'
subscriptionCollectionMethod :: (GHC.Maybe.Maybe SubscriptionCollectionMethod'),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Subscription -> Int
subscriptionCreated :: GHC.Types.Int,
    -- | current_period_end: End of the current period that the subscription has been invoiced for. At the end of this period, a new invoice will be created.
    Subscription -> Int
subscriptionCurrentPeriodEnd :: GHC.Types.Int,
    -- | current_period_start: Start of the current period that the subscription has been invoiced for.
    Subscription -> Int
subscriptionCurrentPeriodStart :: GHC.Types.Int,
    -- | customer: ID of the customer who owns the subscription.
    Subscription -> SubscriptionCustomer'Variants
subscriptionCustomer :: SubscriptionCustomer'Variants,
    -- | days_until_due: Number of days a customer has to pay invoices generated by this subscription. This value will be \`null\` for subscriptions where \`collection_method=charge_automatically\`.
    Subscription -> Maybe Int
subscriptionDaysUntilDue :: (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).
    Subscription -> Maybe SubscriptionDefaultPaymentMethod'Variants
subscriptionDefaultPaymentMethod :: (GHC.Maybe.Maybe SubscriptionDefaultPaymentMethod'Variants),
    -- | 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).
    Subscription -> Maybe SubscriptionDefaultSource'Variants
subscriptionDefaultSource :: (GHC.Maybe.Maybe SubscriptionDefaultSource'Variants),
    -- | 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.
    Subscription -> Maybe [TaxRate]
subscriptionDefaultTaxRates :: (GHC.Maybe.Maybe ([TaxRate])),
    -- | discount: Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a subscription overrides a discount applied on a customer-wide basis.
    Subscription -> Maybe SubscriptionDiscount'
subscriptionDiscount :: (GHC.Maybe.Maybe SubscriptionDiscount'),
    -- | ended_at: If the subscription has ended, the date the subscription ended.
    Subscription -> Maybe Int
subscriptionEndedAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Subscription -> Text
subscriptionId :: Data.Text.Internal.Text,
    -- | items: List of subscription items, each with an attached price.
    Subscription -> SubscriptionItems'
subscriptionItems :: SubscriptionItems',
    -- | latest_invoice: The most recent invoice this subscription has generated.
    Subscription -> Maybe SubscriptionLatestInvoice'Variants
subscriptionLatestInvoice :: (GHC.Maybe.Maybe SubscriptionLatestInvoice'Variants),
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    Subscription -> Bool
subscriptionLivemode :: GHC.Types.Bool,
    -- | 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.
    Subscription -> Object
subscriptionMetadata :: Data.Aeson.Types.Internal.Object,
    -- | next_pending_invoice_item_invoice: Specifies the approximate timestamp on which any pending invoice items will be billed according to the schedule provided at \`pending_invoice_item_interval\`.
    Subscription -> Maybe Int
subscriptionNextPendingInvoiceItemInvoice :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | pause_collection: If specified, payment collection for this subscription will be paused.
    Subscription -> Maybe SubscriptionPauseCollection'
subscriptionPauseCollection :: (GHC.Maybe.Maybe SubscriptionPauseCollection'),
    -- | 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.
    Subscription -> Maybe SubscriptionPendingInvoiceItemInterval'
subscriptionPendingInvoiceItemInterval :: (GHC.Maybe.Maybe SubscriptionPendingInvoiceItemInterval'),
    -- | pending_setup_intent: You can use this [SetupIntent](https:\/\/stripe.com\/docs\/api\/setup_intents) to collect user authentication when creating a subscription without immediate payment or updating a subscription\'s payment method, allowing you to optimize for off-session payments. Learn more in the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication\#scenario-2).
    Subscription -> Maybe SubscriptionPendingSetupIntent'Variants
subscriptionPendingSetupIntent :: (GHC.Maybe.Maybe SubscriptionPendingSetupIntent'Variants),
    -- | pending_update: If specified, [pending updates](https:\/\/stripe.com\/docs\/billing\/subscriptions\/pending-updates) that will be applied to the subscription once the \`latest_invoice\` has been paid.
    Subscription -> Maybe SubscriptionPendingUpdate'
subscriptionPendingUpdate :: (GHC.Maybe.Maybe SubscriptionPendingUpdate'),
    -- | schedule: The schedule attached to the subscription
    Subscription -> Maybe SubscriptionSchedule'Variants
subscriptionSchedule :: (GHC.Maybe.Maybe SubscriptionSchedule'Variants),
    -- | start_date: Date when the subscription was first created. The date might differ from the \`created\` date due to backdating.
    Subscription -> Int
subscriptionStartDate :: GHC.Types.Int,
    -- | status: Possible values are \`incomplete\`, \`incomplete_expired\`, \`trialing\`, \`active\`, \`past_due\`, \`canceled\`, or \`unpaid\`.
    --
    -- For \`collection_method=charge_automatically\` a subscription moves into \`incomplete\` if the initial payment attempt fails. A subscription in this state can only have metadata and default_source updated. Once the first invoice is paid, the subscription moves into an \`active\` state. If the first invoice is not paid within 23 hours, the subscription transitions to \`incomplete_expired\`. This is a terminal state, the open invoice will be voided and no further invoices will be generated.
    --
    -- A subscription that is currently in a trial period is \`trialing\` and moves to \`active\` when the trial period is over.
    --
    -- If subscription \`collection_method=charge_automatically\` it becomes \`past_due\` when payment to renew it fails and \`canceled\` or \`unpaid\` (depending on your subscriptions settings) when Stripe has exhausted all payment retry attempts.
    --
    -- If subscription \`collection_method=send_invoice\` it becomes \`past_due\` when its invoice is not paid by the due date, and \`canceled\` or \`unpaid\` if it is still not paid by an additional deadline after that. Note that when a subscription has a status of \`unpaid\`, no subsequent invoices will be attempted (invoices will be created, but then immediately automatically closed). After receiving updated payment information from a customer, you may choose to reopen and pay their closed invoices.
    Subscription -> SubscriptionStatus'
subscriptionStatus :: SubscriptionStatus',
    -- | transfer_data: The account (if any) the subscription\'s payments will be attributed to for tax reporting, and where funds from each payment will be transferred to for each of the subscription\'s invoices.
    Subscription -> Maybe SubscriptionTransferData'
subscriptionTransferData :: (GHC.Maybe.Maybe SubscriptionTransferData'),
    -- | trial_end: If the subscription has a trial, the end of that trial.
    Subscription -> Maybe Int
subscriptionTrialEnd :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | trial_start: If the subscription has a trial, the beginning of that trial.
    Subscription -> Maybe Int
subscriptionTrialStart :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> Subscription -> ShowS
[Subscription] -> ShowS
Subscription -> String
(Int -> Subscription -> ShowS)
-> (Subscription -> String)
-> ([Subscription] -> ShowS)
-> Show Subscription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Subscription] -> ShowS
$cshowList :: [Subscription] -> ShowS
show :: Subscription -> String
$cshow :: Subscription -> String
showsPrec :: Int -> Subscription -> ShowS
$cshowsPrec :: Int -> Subscription -> ShowS
GHC.Show.Show,
      Subscription -> Subscription -> Bool
(Subscription -> Subscription -> Bool)
-> (Subscription -> Subscription -> Bool) -> Eq Subscription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Subscription -> Subscription -> Bool
$c/= :: Subscription -> Subscription -> Bool
== :: Subscription -> Subscription -> Bool
$c== :: Subscription -> Subscription -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Subscription where
  toJSON :: Subscription -> Value
toJSON Subscription
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"application_fee_percent" Text -> Maybe Double -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Double
subscriptionApplicationFeePercent Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"automatic_tax" Text -> SubscriptionAutomaticTax -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionAutomaticTax
subscriptionAutomaticTax Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_cycle_anchor" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionBillingCycleAnchor Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"billing_thresholds" Text -> Maybe SubscriptionBillingThresholds' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionBillingThresholds'
subscriptionBillingThresholds Subscription
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..= Subscription -> Maybe Int
subscriptionCancelAt Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cancel_at_period_end" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Bool
subscriptionCancelAtPeriodEnd Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"canceled_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionCanceledAt Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"collection_method" Text -> Maybe SubscriptionCollectionMethod' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionCollectionMethod'
subscriptionCollectionMethod Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCreated Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"current_period_end" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCurrentPeriodEnd Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"current_period_start" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCurrentPeriodStart Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> SubscriptionCustomer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionCustomer'Variants
subscriptionCustomer Subscription
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..= Subscription -> Maybe Int
subscriptionDaysUntilDue Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_payment_method" Text -> Maybe SubscriptionDefaultPaymentMethod'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDefaultPaymentMethod'Variants
subscriptionDefaultPaymentMethod Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_source" Text -> Maybe SubscriptionDefaultSource'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDefaultSource'Variants
subscriptionDefaultSource Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_tax_rates" Text -> Maybe [TaxRate] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe [TaxRate]
subscriptionDefaultTaxRates Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"discount" Text -> Maybe SubscriptionDiscount' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDiscount'
subscriptionDiscount Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"ended_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionEndedAt Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Text
subscriptionId Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"items" Text -> SubscriptionItems' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionItems'
subscriptionItems Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"latest_invoice" Text -> Maybe SubscriptionLatestInvoice'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionLatestInvoice'Variants
subscriptionLatestInvoice Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Bool
subscriptionLivemode Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Object
subscriptionMetadata Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"next_pending_invoice_item_invoice" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionNextPendingInvoiceItemInvoice Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pause_collection" Text -> Maybe SubscriptionPauseCollection' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPauseCollection'
subscriptionPauseCollection Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pending_invoice_item_interval" Text -> Maybe SubscriptionPendingInvoiceItemInterval' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingInvoiceItemInterval'
subscriptionPendingInvoiceItemInterval Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pending_setup_intent" Text -> Maybe SubscriptionPendingSetupIntent'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingSetupIntent'Variants
subscriptionPendingSetupIntent Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pending_update" Text -> Maybe SubscriptionPendingUpdate' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingUpdate'
subscriptionPendingUpdate Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"schedule" Text -> Maybe SubscriptionSchedule'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionSchedule'Variants
subscriptionSchedule Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"start_date" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionStartDate Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> SubscriptionStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionStatus'
subscriptionStatus Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transfer_data" Text -> Maybe SubscriptionTransferData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionTransferData'
subscriptionTransferData Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_end" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionTrialEnd Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_start" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionTrialStart Subscription
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"subscription" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Subscription -> Encoding
toEncoding Subscription
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"application_fee_percent" Text -> Maybe Double -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Double
subscriptionApplicationFeePercent Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"automatic_tax" Text -> SubscriptionAutomaticTax -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionAutomaticTax
subscriptionAutomaticTax Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_cycle_anchor" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionBillingCycleAnchor Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"billing_thresholds" Text -> Maybe SubscriptionBillingThresholds' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionBillingThresholds'
subscriptionBillingThresholds Subscription
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..= Subscription -> Maybe Int
subscriptionCancelAt Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cancel_at_period_end" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Bool
subscriptionCancelAtPeriodEnd Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"canceled_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionCanceledAt Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"collection_method" Text -> Maybe SubscriptionCollectionMethod' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionCollectionMethod'
subscriptionCollectionMethod Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCreated Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"current_period_end" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCurrentPeriodEnd Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"current_period_start" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionCurrentPeriodStart Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> SubscriptionCustomer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionCustomer'Variants
subscriptionCustomer Subscription
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..= Subscription -> Maybe Int
subscriptionDaysUntilDue Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_payment_method" Text -> Maybe SubscriptionDefaultPaymentMethod'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDefaultPaymentMethod'Variants
subscriptionDefaultPaymentMethod Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_source" Text -> Maybe SubscriptionDefaultSource'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDefaultSource'Variants
subscriptionDefaultSource Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_tax_rates" Text -> Maybe [TaxRate] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe [TaxRate]
subscriptionDefaultTaxRates Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"discount" Text -> Maybe SubscriptionDiscount' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionDiscount'
subscriptionDiscount Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"ended_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionEndedAt Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Text
subscriptionId Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"items" Text -> SubscriptionItems' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionItems'
subscriptionItems Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"latest_invoice" Text -> Maybe SubscriptionLatestInvoice'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionLatestInvoice'Variants
subscriptionLatestInvoice Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Bool
subscriptionLivemode Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Object
subscriptionMetadata Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"next_pending_invoice_item_invoice" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionNextPendingInvoiceItemInvoice Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pause_collection" Text -> Maybe SubscriptionPauseCollection' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPauseCollection'
subscriptionPauseCollection Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pending_invoice_item_interval" Text -> Maybe SubscriptionPendingInvoiceItemInterval' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingInvoiceItemInterval'
subscriptionPendingInvoiceItemInterval Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pending_setup_intent" Text -> Maybe SubscriptionPendingSetupIntent'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingSetupIntent'Variants
subscriptionPendingSetupIntent Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pending_update" Text -> Maybe SubscriptionPendingUpdate' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionPendingUpdate'
subscriptionPendingUpdate Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"schedule" Text -> Maybe SubscriptionSchedule'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionSchedule'Variants
subscriptionSchedule Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"start_date" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Int
subscriptionStartDate Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> SubscriptionStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> SubscriptionStatus'
subscriptionStatus Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transfer_data" Text -> Maybe SubscriptionTransferData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe SubscriptionTransferData'
subscriptionTransferData Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"trial_end" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionTrialEnd Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"trial_start" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Subscription -> Maybe Int
subscriptionTrialStart Subscription
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"subscription")))))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Subscription where
  parseJSON :: Value -> Parser Subscription
parseJSON = String
-> (Object -> Parser Subscription) -> Value -> Parser Subscription
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Subscription" (\Object
obj -> ((((((((((((((((((((((((((((((((((Maybe Double
 -> SubscriptionAutomaticTax
 -> Int
 -> Maybe SubscriptionBillingThresholds'
 -> Maybe Int
 -> Bool
 -> Maybe Int
 -> Maybe SubscriptionCollectionMethod'
 -> Int
 -> Int
 -> Int
 -> SubscriptionCustomer'Variants
 -> Maybe Int
 -> Maybe SubscriptionDefaultPaymentMethod'Variants
 -> Maybe SubscriptionDefaultSource'Variants
 -> Maybe [TaxRate]
 -> Maybe SubscriptionDiscount'
 -> Maybe Int
 -> Text
 -> SubscriptionItems'
 -> Maybe SubscriptionLatestInvoice'Variants
 -> Bool
 -> Object
 -> Maybe Int
 -> Maybe SubscriptionPauseCollection'
 -> Maybe SubscriptionPendingInvoiceItemInterval'
 -> Maybe SubscriptionPendingSetupIntent'Variants
 -> Maybe SubscriptionPendingUpdate'
 -> Maybe SubscriptionSchedule'Variants
 -> Int
 -> SubscriptionStatus'
 -> Maybe SubscriptionTransferData'
 -> Maybe Int
 -> Maybe Int
 -> Subscription)
-> Parser
     (Maybe Double
      -> SubscriptionAutomaticTax
      -> Int
      -> Maybe SubscriptionBillingThresholds'
      -> Maybe Int
      -> Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Double
-> SubscriptionAutomaticTax
-> Int
-> Maybe SubscriptionBillingThresholds'
-> Maybe Int
-> Bool
-> Maybe Int
-> Maybe SubscriptionCollectionMethod'
-> Int
-> Int
-> Int
-> SubscriptionCustomer'Variants
-> Maybe Int
-> Maybe SubscriptionDefaultPaymentMethod'Variants
-> Maybe SubscriptionDefaultSource'Variants
-> Maybe [TaxRate]
-> Maybe SubscriptionDiscount'
-> Maybe Int
-> Text
-> SubscriptionItems'
-> Maybe SubscriptionLatestInvoice'Variants
-> Bool
-> Object
-> Maybe Int
-> Maybe SubscriptionPauseCollection'
-> Maybe SubscriptionPendingInvoiceItemInterval'
-> Maybe SubscriptionPendingSetupIntent'Variants
-> Maybe SubscriptionPendingUpdate'
-> Maybe SubscriptionSchedule'Variants
-> Int
-> SubscriptionStatus'
-> Maybe SubscriptionTransferData'
-> Maybe Int
-> Maybe Int
-> Subscription
Subscription Parser
  (Maybe Double
   -> SubscriptionAutomaticTax
   -> Int
   -> Maybe SubscriptionBillingThresholds'
   -> Maybe Int
   -> Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Double)
-> Parser
     (SubscriptionAutomaticTax
      -> Int
      -> Maybe SubscriptionBillingThresholds'
      -> Maybe Int
      -> Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
  (SubscriptionAutomaticTax
   -> Int
   -> Maybe SubscriptionBillingThresholds'
   -> Maybe Int
   -> Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser SubscriptionAutomaticTax
-> Parser
     (Int
      -> Maybe SubscriptionBillingThresholds'
      -> Maybe Int
      -> Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionAutomaticTax
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"automatic_tax")) Parser
  (Int
   -> Maybe SubscriptionBillingThresholds'
   -> Maybe Int
   -> Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Int
-> Parser
     (Maybe SubscriptionBillingThresholds'
      -> Maybe Int
      -> Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"billing_cycle_anchor")) Parser
  (Maybe SubscriptionBillingThresholds'
   -> Maybe Int
   -> Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionBillingThresholds')
-> Parser
     (Maybe Int
      -> Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionBillingThresholds')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"billing_thresholds")) Parser
  (Maybe Int
   -> Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Int)
-> Parser
     (Bool
      -> Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
  (Bool
   -> Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Bool
-> Parser
     (Maybe Int
      -> Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"cancel_at_period_end")) Parser
  (Maybe Int
   -> Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Int)
-> Parser
     (Maybe SubscriptionCollectionMethod'
      -> Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"canceled_at")) Parser
  (Maybe SubscriptionCollectionMethod'
   -> Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionCollectionMethod')
-> Parser
     (Int
      -> Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionCollectionMethod')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"collection_method")) Parser
  (Int
   -> Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Int
-> Parser
     (Int
      -> Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"created")) Parser
  (Int
   -> Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Int
-> Parser
     (Int
      -> SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"current_period_end")) Parser
  (Int
   -> SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Int
-> Parser
     (SubscriptionCustomer'Variants
      -> Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"current_period_start")) Parser
  (SubscriptionCustomer'Variants
   -> Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser SubscriptionCustomer'Variants
-> Parser
     (Maybe Int
      -> Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionCustomer'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"customer")) Parser
  (Maybe Int
   -> Maybe SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Int)
-> Parser
     (Maybe SubscriptionDefaultPaymentMethod'Variants
      -> Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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 SubscriptionDefaultPaymentMethod'Variants
   -> Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionDefaultPaymentMethod'Variants)
-> Parser
     (Maybe SubscriptionDefaultSource'Variants
      -> Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionDefaultPaymentMethod'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_payment_method")) Parser
  (Maybe SubscriptionDefaultSource'Variants
   -> Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionDefaultSource'Variants)
-> Parser
     (Maybe [TaxRate]
      -> Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionDefaultSource'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_source")) Parser
  (Maybe [TaxRate]
   -> Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe [TaxRate])
-> Parser
     (Maybe SubscriptionDiscount'
      -> Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [TaxRate])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_tax_rates")) Parser
  (Maybe SubscriptionDiscount'
   -> Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionDiscount')
-> Parser
     (Maybe Int
      -> Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionDiscount')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"discount")) Parser
  (Maybe Int
   -> Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Int)
-> Parser
     (Text
      -> SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"ended_at")) Parser
  (Text
   -> SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Text
-> Parser
     (SubscriptionItems'
      -> Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"id")) Parser
  (SubscriptionItems'
   -> Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser SubscriptionItems'
-> Parser
     (Maybe SubscriptionLatestInvoice'Variants
      -> Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionItems'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"items")) Parser
  (Maybe SubscriptionLatestInvoice'Variants
   -> Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionLatestInvoice'Variants)
-> Parser
     (Bool
      -> Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionLatestInvoice'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"latest_invoice")) Parser
  (Bool
   -> Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Bool
-> Parser
     (Object
      -> Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"livemode")) Parser
  (Object
   -> Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Object
-> Parser
     (Maybe Int
      -> Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"metadata")) Parser
  (Maybe Int
   -> Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe Int)
-> Parser
     (Maybe SubscriptionPauseCollection'
      -> Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"next_pending_invoice_item_invoice")) Parser
  (Maybe SubscriptionPauseCollection'
   -> Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionPauseCollection')
-> Parser
     (Maybe SubscriptionPendingInvoiceItemInterval'
      -> Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionPauseCollection')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pause_collection")) Parser
  (Maybe SubscriptionPendingInvoiceItemInterval'
   -> Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionPendingInvoiceItemInterval')
-> Parser
     (Maybe SubscriptionPendingSetupIntent'Variants
      -> Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionPendingInvoiceItemInterval')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pending_invoice_item_interval")) Parser
  (Maybe SubscriptionPendingSetupIntent'Variants
   -> Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionPendingSetupIntent'Variants)
-> Parser
     (Maybe SubscriptionPendingUpdate'
      -> Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionPendingSetupIntent'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pending_setup_intent")) Parser
  (Maybe SubscriptionPendingUpdate'
   -> Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionPendingUpdate')
-> Parser
     (Maybe SubscriptionSchedule'Variants
      -> Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionPendingUpdate')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pending_update")) Parser
  (Maybe SubscriptionSchedule'Variants
   -> Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser (Maybe SubscriptionSchedule'Variants)
-> Parser
     (Int
      -> SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionSchedule'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"schedule")) Parser
  (Int
   -> SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser Int
-> Parser
     (SubscriptionStatus'
      -> Maybe SubscriptionTransferData'
      -> Maybe Int
      -> Maybe Int
      -> Subscription)
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
"start_date")) Parser
  (SubscriptionStatus'
   -> Maybe SubscriptionTransferData'
   -> Maybe Int
   -> Maybe Int
   -> Subscription)
-> Parser SubscriptionStatus'
-> Parser
     (Maybe SubscriptionTransferData'
      -> Maybe Int -> Maybe Int -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser SubscriptionStatus'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status")) Parser
  (Maybe SubscriptionTransferData'
   -> Maybe Int -> Maybe Int -> Subscription)
-> Parser (Maybe SubscriptionTransferData')
-> Parser (Maybe Int -> Maybe Int -> Subscription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe SubscriptionTransferData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"transfer_data")) Parser (Maybe Int -> Maybe Int -> Subscription)
-> Parser (Maybe Int) -> Parser (Maybe Int -> Subscription)
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_end")) Parser (Maybe Int -> Subscription)
-> Parser (Maybe Int) -> Parser Subscription
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_start"))

-- | Create a new 'Subscription' with all required fields.
mkSubscription ::
  -- | 'subscriptionAutomaticTax'
  SubscriptionAutomaticTax ->
  -- | 'subscriptionBillingCycleAnchor'
  GHC.Types.Int ->
  -- | 'subscriptionCancelAtPeriodEnd'
  GHC.Types.Bool ->
  -- | 'subscriptionCreated'
  GHC.Types.Int ->
  -- | 'subscriptionCurrentPeriodEnd'
  GHC.Types.Int ->
  -- | 'subscriptionCurrentPeriodStart'
  GHC.Types.Int ->
  -- | 'subscriptionCustomer'
  SubscriptionCustomer'Variants ->
  -- | 'subscriptionId'
  Data.Text.Internal.Text ->
  -- | 'subscriptionItems'
  SubscriptionItems' ->
  -- | 'subscriptionLivemode'
  GHC.Types.Bool ->
  -- | 'subscriptionMetadata'
  Data.Aeson.Types.Internal.Object ->
  -- | 'subscriptionStartDate'
  GHC.Types.Int ->
  -- | 'subscriptionStatus'
  SubscriptionStatus' ->
  Subscription
mkSubscription :: SubscriptionAutomaticTax
-> Int
-> Bool
-> Int
-> Int
-> Int
-> SubscriptionCustomer'Variants
-> Text
-> SubscriptionItems'
-> Bool
-> Object
-> Int
-> SubscriptionStatus'
-> Subscription
mkSubscription SubscriptionAutomaticTax
subscriptionAutomaticTax Int
subscriptionBillingCycleAnchor Bool
subscriptionCancelAtPeriodEnd Int
subscriptionCreated Int
subscriptionCurrentPeriodEnd Int
subscriptionCurrentPeriodStart SubscriptionCustomer'Variants
subscriptionCustomer Text
subscriptionId SubscriptionItems'
subscriptionItems Bool
subscriptionLivemode Object
subscriptionMetadata Int
subscriptionStartDate SubscriptionStatus'
subscriptionStatus =
  Subscription :: Maybe Double
-> SubscriptionAutomaticTax
-> Int
-> Maybe SubscriptionBillingThresholds'
-> Maybe Int
-> Bool
-> Maybe Int
-> Maybe SubscriptionCollectionMethod'
-> Int
-> Int
-> Int
-> SubscriptionCustomer'Variants
-> Maybe Int
-> Maybe SubscriptionDefaultPaymentMethod'Variants
-> Maybe SubscriptionDefaultSource'Variants
-> Maybe [TaxRate]
-> Maybe SubscriptionDiscount'
-> Maybe Int
-> Text
-> SubscriptionItems'
-> Maybe SubscriptionLatestInvoice'Variants
-> Bool
-> Object
-> Maybe Int
-> Maybe SubscriptionPauseCollection'
-> Maybe SubscriptionPendingInvoiceItemInterval'
-> Maybe SubscriptionPendingSetupIntent'Variants
-> Maybe SubscriptionPendingUpdate'
-> Maybe SubscriptionSchedule'Variants
-> Int
-> SubscriptionStatus'
-> Maybe SubscriptionTransferData'
-> Maybe Int
-> Maybe Int
-> Subscription
Subscription
    { subscriptionApplicationFeePercent :: Maybe Double
subscriptionApplicationFeePercent = Maybe Double
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionAutomaticTax :: SubscriptionAutomaticTax
subscriptionAutomaticTax = SubscriptionAutomaticTax
subscriptionAutomaticTax,
      subscriptionBillingCycleAnchor :: Int
subscriptionBillingCycleAnchor = Int
subscriptionBillingCycleAnchor,
      subscriptionBillingThresholds :: Maybe SubscriptionBillingThresholds'
subscriptionBillingThresholds = Maybe SubscriptionBillingThresholds'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionCancelAt :: Maybe Int
subscriptionCancelAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionCancelAtPeriodEnd :: Bool
subscriptionCancelAtPeriodEnd = Bool
subscriptionCancelAtPeriodEnd,
      subscriptionCanceledAt :: Maybe Int
subscriptionCanceledAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionCollectionMethod :: Maybe SubscriptionCollectionMethod'
subscriptionCollectionMethod = Maybe SubscriptionCollectionMethod'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionCreated :: Int
subscriptionCreated = Int
subscriptionCreated,
      subscriptionCurrentPeriodEnd :: Int
subscriptionCurrentPeriodEnd = Int
subscriptionCurrentPeriodEnd,
      subscriptionCurrentPeriodStart :: Int
subscriptionCurrentPeriodStart = Int
subscriptionCurrentPeriodStart,
      subscriptionCustomer :: SubscriptionCustomer'Variants
subscriptionCustomer = SubscriptionCustomer'Variants
subscriptionCustomer,
      subscriptionDaysUntilDue :: Maybe Int
subscriptionDaysUntilDue = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDefaultPaymentMethod :: Maybe SubscriptionDefaultPaymentMethod'Variants
subscriptionDefaultPaymentMethod = Maybe SubscriptionDefaultPaymentMethod'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDefaultSource :: Maybe SubscriptionDefaultSource'Variants
subscriptionDefaultSource = Maybe SubscriptionDefaultSource'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDefaultTaxRates :: Maybe [TaxRate]
subscriptionDefaultTaxRates = Maybe [TaxRate]
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount :: Maybe SubscriptionDiscount'
subscriptionDiscount = Maybe SubscriptionDiscount'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionEndedAt :: Maybe Int
subscriptionEndedAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionId :: Text
subscriptionId = Text
subscriptionId,
      subscriptionItems :: SubscriptionItems'
subscriptionItems = SubscriptionItems'
subscriptionItems,
      subscriptionLatestInvoice :: Maybe SubscriptionLatestInvoice'Variants
subscriptionLatestInvoice = Maybe SubscriptionLatestInvoice'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionLivemode :: Bool
subscriptionLivemode = Bool
subscriptionLivemode,
      subscriptionMetadata :: Object
subscriptionMetadata = Object
subscriptionMetadata,
      subscriptionNextPendingInvoiceItemInvoice :: Maybe Int
subscriptionNextPendingInvoiceItemInvoice = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPauseCollection :: Maybe SubscriptionPauseCollection'
subscriptionPauseCollection = Maybe SubscriptionPauseCollection'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingInvoiceItemInterval :: Maybe SubscriptionPendingInvoiceItemInterval'
subscriptionPendingInvoiceItemInterval = Maybe SubscriptionPendingInvoiceItemInterval'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingSetupIntent :: Maybe SubscriptionPendingSetupIntent'Variants
subscriptionPendingSetupIntent = Maybe SubscriptionPendingSetupIntent'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingUpdate :: Maybe SubscriptionPendingUpdate'
subscriptionPendingUpdate = Maybe SubscriptionPendingUpdate'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionSchedule :: Maybe SubscriptionSchedule'Variants
subscriptionSchedule = Maybe SubscriptionSchedule'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionStartDate :: Int
subscriptionStartDate = Int
subscriptionStartDate,
      subscriptionStatus :: SubscriptionStatus'
subscriptionStatus = SubscriptionStatus'
subscriptionStatus,
      subscriptionTransferData :: Maybe SubscriptionTransferData'
subscriptionTransferData = Maybe SubscriptionTransferData'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionTrialEnd :: Maybe Int
subscriptionTrialEnd = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionTrialStart :: Maybe Int
subscriptionTrialStart = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.subscription.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
data SubscriptionBillingThresholds' = SubscriptionBillingThresholds'
  { -- | amount_gte: Monetary threshold that triggers the subscription to create an invoice
    SubscriptionBillingThresholds' -> Maybe Int
subscriptionBillingThresholds'AmountGte :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | reset_billing_cycle_anchor: Indicates if the \`billing_cycle_anchor\` should be reset when a threshold is reached. If true, \`billing_cycle_anchor\` will be updated to the date\/time the threshold was last reached; otherwise, the value will remain unchanged. This value may not be \`true\` if the subscription contains items with plans that have \`aggregate_usage=last_ever\`.
    SubscriptionBillingThresholds' -> Maybe Bool
subscriptionBillingThresholds'ResetBillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Bool)
  }
  deriving
    ( Int -> SubscriptionBillingThresholds' -> ShowS
[SubscriptionBillingThresholds'] -> ShowS
SubscriptionBillingThresholds' -> String
(Int -> SubscriptionBillingThresholds' -> ShowS)
-> (SubscriptionBillingThresholds' -> String)
-> ([SubscriptionBillingThresholds'] -> ShowS)
-> Show SubscriptionBillingThresholds'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionBillingThresholds'] -> ShowS
$cshowList :: [SubscriptionBillingThresholds'] -> ShowS
show :: SubscriptionBillingThresholds' -> String
$cshow :: SubscriptionBillingThresholds' -> String
showsPrec :: Int -> SubscriptionBillingThresholds' -> ShowS
$cshowsPrec :: Int -> SubscriptionBillingThresholds' -> ShowS
GHC.Show.Show,
      SubscriptionBillingThresholds'
-> SubscriptionBillingThresholds' -> Bool
(SubscriptionBillingThresholds'
 -> SubscriptionBillingThresholds' -> Bool)
-> (SubscriptionBillingThresholds'
    -> SubscriptionBillingThresholds' -> Bool)
-> Eq SubscriptionBillingThresholds'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionBillingThresholds'
-> SubscriptionBillingThresholds' -> Bool
$c/= :: SubscriptionBillingThresholds'
-> SubscriptionBillingThresholds' -> Bool
== :: SubscriptionBillingThresholds'
-> SubscriptionBillingThresholds' -> Bool
$c== :: SubscriptionBillingThresholds'
-> SubscriptionBillingThresholds' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionBillingThresholds' where
  toJSON :: SubscriptionBillingThresholds' -> Value
toJSON SubscriptionBillingThresholds'
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..= SubscriptionBillingThresholds' -> Maybe Int
subscriptionBillingThresholds'AmountGte SubscriptionBillingThresholds'
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..= SubscriptionBillingThresholds' -> Maybe Bool
subscriptionBillingThresholds'ResetBillingCycleAnchor SubscriptionBillingThresholds'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionBillingThresholds' -> Encoding
toEncoding SubscriptionBillingThresholds'
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..= SubscriptionBillingThresholds' -> Maybe Int
subscriptionBillingThresholds'AmountGte SubscriptionBillingThresholds'
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..= SubscriptionBillingThresholds' -> Maybe Bool
subscriptionBillingThresholds'ResetBillingCycleAnchor SubscriptionBillingThresholds'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionBillingThresholds' where
  parseJSON :: Value -> Parser SubscriptionBillingThresholds'
parseJSON = String
-> (Object -> Parser SubscriptionBillingThresholds')
-> Value
-> Parser SubscriptionBillingThresholds'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionBillingThresholds'" (\Object
obj -> ((Maybe Int -> Maybe Bool -> SubscriptionBillingThresholds')
-> Parser
     (Maybe Int -> Maybe Bool -> SubscriptionBillingThresholds')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Maybe Bool -> SubscriptionBillingThresholds'
SubscriptionBillingThresholds' Parser (Maybe Int -> Maybe Bool -> SubscriptionBillingThresholds')
-> Parser (Maybe Int)
-> Parser (Maybe Bool -> SubscriptionBillingThresholds')
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 -> SubscriptionBillingThresholds')
-> Parser (Maybe Bool) -> Parser SubscriptionBillingThresholds'
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 'SubscriptionBillingThresholds'' with all required fields.
mkSubscriptionBillingThresholds' :: SubscriptionBillingThresholds'
mkSubscriptionBillingThresholds' :: SubscriptionBillingThresholds'
mkSubscriptionBillingThresholds' =
  SubscriptionBillingThresholds' :: Maybe Int -> Maybe Bool -> SubscriptionBillingThresholds'
SubscriptionBillingThresholds'
    { subscriptionBillingThresholds'AmountGte :: Maybe Int
subscriptionBillingThresholds'AmountGte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionBillingThresholds'ResetBillingCycleAnchor :: Maybe Bool
subscriptionBillingThresholds'ResetBillingCycleAnchor = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.subscription.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.
data SubscriptionCollectionMethod'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionCollectionMethod'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.
    SubscriptionCollectionMethod'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"charge_automatically"@
    SubscriptionCollectionMethod'EnumChargeAutomatically
  | -- | Represents the JSON value @"send_invoice"@
    SubscriptionCollectionMethod'EnumSendInvoice
  deriving (Int -> SubscriptionCollectionMethod' -> ShowS
[SubscriptionCollectionMethod'] -> ShowS
SubscriptionCollectionMethod' -> String
(Int -> SubscriptionCollectionMethod' -> ShowS)
-> (SubscriptionCollectionMethod' -> String)
-> ([SubscriptionCollectionMethod'] -> ShowS)
-> Show SubscriptionCollectionMethod'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionCollectionMethod'] -> ShowS
$cshowList :: [SubscriptionCollectionMethod'] -> ShowS
show :: SubscriptionCollectionMethod' -> String
$cshow :: SubscriptionCollectionMethod' -> String
showsPrec :: Int -> SubscriptionCollectionMethod' -> ShowS
$cshowsPrec :: Int -> SubscriptionCollectionMethod' -> ShowS
GHC.Show.Show, SubscriptionCollectionMethod'
-> SubscriptionCollectionMethod' -> Bool
(SubscriptionCollectionMethod'
 -> SubscriptionCollectionMethod' -> Bool)
-> (SubscriptionCollectionMethod'
    -> SubscriptionCollectionMethod' -> Bool)
-> Eq SubscriptionCollectionMethod'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionCollectionMethod'
-> SubscriptionCollectionMethod' -> Bool
$c/= :: SubscriptionCollectionMethod'
-> SubscriptionCollectionMethod' -> Bool
== :: SubscriptionCollectionMethod'
-> SubscriptionCollectionMethod' -> Bool
$c== :: SubscriptionCollectionMethod'
-> SubscriptionCollectionMethod' -> Bool
GHC.Classes.Eq)

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

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionCollectionMethod' where
  parseJSON :: Value -> Parser SubscriptionCollectionMethod'
parseJSON Value
val =
    SubscriptionCollectionMethod'
-> Parser SubscriptionCollectionMethod'
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" -> SubscriptionCollectionMethod'
SubscriptionCollectionMethod'EnumChargeAutomatically
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"send_invoice" -> SubscriptionCollectionMethod'
SubscriptionCollectionMethod'EnumSendInvoice
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionCollectionMethod'
SubscriptionCollectionMethod'Other Value
val
      )

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.customer.anyOf@ in the specification.
--
-- ID of the customer who owns the subscription.
data SubscriptionCustomer'Variants
  = SubscriptionCustomer'Text Data.Text.Internal.Text
  | SubscriptionCustomer'Customer Customer
  | SubscriptionCustomer'DeletedCustomer DeletedCustomer
  deriving (Int -> SubscriptionCustomer'Variants -> ShowS
[SubscriptionCustomer'Variants] -> ShowS
SubscriptionCustomer'Variants -> String
(Int -> SubscriptionCustomer'Variants -> ShowS)
-> (SubscriptionCustomer'Variants -> String)
-> ([SubscriptionCustomer'Variants] -> ShowS)
-> Show SubscriptionCustomer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionCustomer'Variants] -> ShowS
$cshowList :: [SubscriptionCustomer'Variants] -> ShowS
show :: SubscriptionCustomer'Variants -> String
$cshow :: SubscriptionCustomer'Variants -> String
showsPrec :: Int -> SubscriptionCustomer'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionCustomer'Variants -> ShowS
GHC.Show.Show, SubscriptionCustomer'Variants
-> SubscriptionCustomer'Variants -> Bool
(SubscriptionCustomer'Variants
 -> SubscriptionCustomer'Variants -> Bool)
-> (SubscriptionCustomer'Variants
    -> SubscriptionCustomer'Variants -> Bool)
-> Eq SubscriptionCustomer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionCustomer'Variants
-> SubscriptionCustomer'Variants -> Bool
$c/= :: SubscriptionCustomer'Variants
-> SubscriptionCustomer'Variants -> Bool
== :: SubscriptionCustomer'Variants
-> SubscriptionCustomer'Variants -> Bool
$c== :: SubscriptionCustomer'Variants
-> SubscriptionCustomer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionCustomer'Variants where
  toJSON :: SubscriptionCustomer'Variants -> Value
toJSON (SubscriptionCustomer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionCustomer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a
  toJSON (SubscriptionCustomer'DeletedCustomer DeletedCustomer
a) = DeletedCustomer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON DeletedCustomer
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionCustomer'Variants where
  parseJSON :: Value -> Parser SubscriptionCustomer'Variants
parseJSON Value
val = case (Text -> SubscriptionCustomer'Variants
SubscriptionCustomer'Text (Text -> SubscriptionCustomer'Variants)
-> Result Text -> Result SubscriptionCustomer'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 SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Customer -> SubscriptionCustomer'Variants
SubscriptionCustomer'Customer (Customer -> SubscriptionCustomer'Variants)
-> Result Customer -> Result SubscriptionCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Customer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((DeletedCustomer -> SubscriptionCustomer'Variants
SubscriptionCustomer'DeletedCustomer (DeletedCustomer -> SubscriptionCustomer'Variants)
-> Result DeletedCustomer -> Result SubscriptionCustomer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result DeletedCustomer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
-> Result SubscriptionCustomer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionCustomer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched")) of
    Data.Aeson.Types.Internal.Success SubscriptionCustomer'Variants
a -> SubscriptionCustomer'Variants
-> Parser SubscriptionCustomer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionCustomer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionCustomer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.default_payment_method.anyOf@ in the specification.
--
-- 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).
data SubscriptionDefaultPaymentMethod'Variants
  = SubscriptionDefaultPaymentMethod'Text Data.Text.Internal.Text
  | SubscriptionDefaultPaymentMethod'PaymentMethod PaymentMethod
  deriving (Int -> SubscriptionDefaultPaymentMethod'Variants -> ShowS
[SubscriptionDefaultPaymentMethod'Variants] -> ShowS
SubscriptionDefaultPaymentMethod'Variants -> String
(Int -> SubscriptionDefaultPaymentMethod'Variants -> ShowS)
-> (SubscriptionDefaultPaymentMethod'Variants -> String)
-> ([SubscriptionDefaultPaymentMethod'Variants] -> ShowS)
-> Show SubscriptionDefaultPaymentMethod'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionDefaultPaymentMethod'Variants] -> ShowS
$cshowList :: [SubscriptionDefaultPaymentMethod'Variants] -> ShowS
show :: SubscriptionDefaultPaymentMethod'Variants -> String
$cshow :: SubscriptionDefaultPaymentMethod'Variants -> String
showsPrec :: Int -> SubscriptionDefaultPaymentMethod'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionDefaultPaymentMethod'Variants -> ShowS
GHC.Show.Show, SubscriptionDefaultPaymentMethod'Variants
-> SubscriptionDefaultPaymentMethod'Variants -> Bool
(SubscriptionDefaultPaymentMethod'Variants
 -> SubscriptionDefaultPaymentMethod'Variants -> Bool)
-> (SubscriptionDefaultPaymentMethod'Variants
    -> SubscriptionDefaultPaymentMethod'Variants -> Bool)
-> Eq SubscriptionDefaultPaymentMethod'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionDefaultPaymentMethod'Variants
-> SubscriptionDefaultPaymentMethod'Variants -> Bool
$c/= :: SubscriptionDefaultPaymentMethod'Variants
-> SubscriptionDefaultPaymentMethod'Variants -> Bool
== :: SubscriptionDefaultPaymentMethod'Variants
-> SubscriptionDefaultPaymentMethod'Variants -> Bool
$c== :: SubscriptionDefaultPaymentMethod'Variants
-> SubscriptionDefaultPaymentMethod'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionDefaultPaymentMethod'Variants where
  toJSON :: SubscriptionDefaultPaymentMethod'Variants -> Value
toJSON (SubscriptionDefaultPaymentMethod'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionDefaultPaymentMethod'PaymentMethod PaymentMethod
a) = PaymentMethod -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PaymentMethod
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDefaultPaymentMethod'Variants where
  parseJSON :: Value -> Parser SubscriptionDefaultPaymentMethod'Variants
parseJSON Value
val = case (Text -> SubscriptionDefaultPaymentMethod'Variants
SubscriptionDefaultPaymentMethod'Text (Text -> SubscriptionDefaultPaymentMethod'Variants)
-> Result Text -> Result SubscriptionDefaultPaymentMethod'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 SubscriptionDefaultPaymentMethod'Variants
-> Result SubscriptionDefaultPaymentMethod'Variants
-> Result SubscriptionDefaultPaymentMethod'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((PaymentMethod -> SubscriptionDefaultPaymentMethod'Variants
SubscriptionDefaultPaymentMethod'PaymentMethod (PaymentMethod -> SubscriptionDefaultPaymentMethod'Variants)
-> Result PaymentMethod
-> Result SubscriptionDefaultPaymentMethod'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result PaymentMethod
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultPaymentMethod'Variants
-> Result SubscriptionDefaultPaymentMethod'Variants
-> Result SubscriptionDefaultPaymentMethod'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionDefaultPaymentMethod'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionDefaultPaymentMethod'Variants
a -> SubscriptionDefaultPaymentMethod'Variants
-> Parser SubscriptionDefaultPaymentMethod'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionDefaultPaymentMethod'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionDefaultPaymentMethod'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.default_source.anyOf@ in the specification.
--
-- 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).
data SubscriptionDefaultSource'Variants
  = SubscriptionDefaultSource'Text Data.Text.Internal.Text
  | SubscriptionDefaultSource'AlipayAccount AlipayAccount
  | SubscriptionDefaultSource'BankAccount BankAccount
  | SubscriptionDefaultSource'BitcoinReceiver BitcoinReceiver
  | SubscriptionDefaultSource'Card Card
  | SubscriptionDefaultSource'Source Source
  deriving (Int -> SubscriptionDefaultSource'Variants -> ShowS
[SubscriptionDefaultSource'Variants] -> ShowS
SubscriptionDefaultSource'Variants -> String
(Int -> SubscriptionDefaultSource'Variants -> ShowS)
-> (SubscriptionDefaultSource'Variants -> String)
-> ([SubscriptionDefaultSource'Variants] -> ShowS)
-> Show SubscriptionDefaultSource'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionDefaultSource'Variants] -> ShowS
$cshowList :: [SubscriptionDefaultSource'Variants] -> ShowS
show :: SubscriptionDefaultSource'Variants -> String
$cshow :: SubscriptionDefaultSource'Variants -> String
showsPrec :: Int -> SubscriptionDefaultSource'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionDefaultSource'Variants -> ShowS
GHC.Show.Show, SubscriptionDefaultSource'Variants
-> SubscriptionDefaultSource'Variants -> Bool
(SubscriptionDefaultSource'Variants
 -> SubscriptionDefaultSource'Variants -> Bool)
-> (SubscriptionDefaultSource'Variants
    -> SubscriptionDefaultSource'Variants -> Bool)
-> Eq SubscriptionDefaultSource'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionDefaultSource'Variants
-> SubscriptionDefaultSource'Variants -> Bool
$c/= :: SubscriptionDefaultSource'Variants
-> SubscriptionDefaultSource'Variants -> Bool
== :: SubscriptionDefaultSource'Variants
-> SubscriptionDefaultSource'Variants -> Bool
$c== :: SubscriptionDefaultSource'Variants
-> SubscriptionDefaultSource'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionDefaultSource'Variants where
  toJSON :: SubscriptionDefaultSource'Variants -> Value
toJSON (SubscriptionDefaultSource'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionDefaultSource'AlipayAccount AlipayAccount
a) = AlipayAccount -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON AlipayAccount
a
  toJSON (SubscriptionDefaultSource'BankAccount BankAccount
a) = BankAccount -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON BankAccount
a
  toJSON (SubscriptionDefaultSource'BitcoinReceiver BitcoinReceiver
a) = BitcoinReceiver -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON BitcoinReceiver
a
  toJSON (SubscriptionDefaultSource'Card Card
a) = Card -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Card
a
  toJSON (SubscriptionDefaultSource'Source Source
a) = Source -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Source
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDefaultSource'Variants where
  parseJSON :: Value -> Parser SubscriptionDefaultSource'Variants
parseJSON Value
val = case (Text -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'Text (Text -> SubscriptionDefaultSource'Variants)
-> Result Text -> Result SubscriptionDefaultSource'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 SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((AlipayAccount -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'AlipayAccount (AlipayAccount -> SubscriptionDefaultSource'Variants)
-> Result AlipayAccount
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result AlipayAccount
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((BankAccount -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'BankAccount (BankAccount -> SubscriptionDefaultSource'Variants)
-> Result BankAccount -> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result BankAccount
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((BitcoinReceiver -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'BitcoinReceiver (BitcoinReceiver -> SubscriptionDefaultSource'Variants)
-> Result BitcoinReceiver
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result BitcoinReceiver
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Card -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'Card (Card -> SubscriptionDefaultSource'Variants)
-> Result Card -> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Card
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Source -> SubscriptionDefaultSource'Variants
SubscriptionDefaultSource'Source (Source -> SubscriptionDefaultSource'Variants)
-> Result Source -> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Source
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
-> Result SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionDefaultSource'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched"))))) of
    Data.Aeson.Types.Internal.Success SubscriptionDefaultSource'Variants
a -> SubscriptionDefaultSource'Variants
-> Parser SubscriptionDefaultSource'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionDefaultSource'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionDefaultSource'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.subscription.properties.discount.anyOf@ in the specification.
--
-- Describes the current discount applied to this subscription, if there is one. When billing, a discount applied to a subscription overrides a discount applied on a customer-wide basis.
data SubscriptionDiscount' = SubscriptionDiscount'
  { -- | checkout_session: The Checkout session that this coupon is applied to, if it is applied to a particular session in payment mode. Will not be present for subscription mode.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'CheckoutSession :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | coupon: A coupon contains information about a percent-off or amount-off discount you
    -- might want to apply to a customer. Coupons may be applied to [invoices](https:\/\/stripe.com\/docs\/api\#invoices) or
    -- [orders](https:\/\/stripe.com\/docs\/api\#create_order-coupon). Coupons do not work with conventional one-off [charges](https:\/\/stripe.com\/docs\/api\#create_charge).
    SubscriptionDiscount' -> Maybe Coupon
subscriptionDiscount'Coupon :: (GHC.Maybe.Maybe Coupon),
    -- | customer: The ID of the customer associated with this discount.
    SubscriptionDiscount'
-> Maybe SubscriptionDiscount'Customer'Variants
subscriptionDiscount'Customer :: (GHC.Maybe.Maybe SubscriptionDiscount'Customer'Variants),
    -- | end: If the coupon has a duration of \`repeating\`, the date that this discount will end. If the coupon has a duration of \`once\` or \`forever\`, this attribute will be null.
    SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'End :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | id: The ID of the discount object. Discounts cannot be fetched by ID. Use \`expand[]=discounts\` in API calls to expand discount IDs in an array.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | invoice: The invoice that the discount\'s coupon was applied to, if it was applied directly to a particular invoice.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Invoice :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | invoice_item: The invoice item \`id\` (or invoice line item \`id\` for invoice line items of type=\'subscription\') that the discount\'s coupon was applied to, if it was applied directly to a particular invoice item or invoice line item.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'InvoiceItem :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | promotion_code: The promotion code applied to create this discount.
    SubscriptionDiscount'
-> Maybe SubscriptionDiscount'PromotionCode'Variants
subscriptionDiscount'PromotionCode :: (GHC.Maybe.Maybe SubscriptionDiscount'PromotionCode'Variants),
    -- | start: Date that the coupon was applied.
    SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'Start :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | subscription: The subscription that this coupon is applied to, if it is applied to a particular subscription.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Subscription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> SubscriptionDiscount' -> ShowS
[SubscriptionDiscount'] -> ShowS
SubscriptionDiscount' -> String
(Int -> SubscriptionDiscount' -> ShowS)
-> (SubscriptionDiscount' -> String)
-> ([SubscriptionDiscount'] -> ShowS)
-> Show SubscriptionDiscount'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionDiscount'] -> ShowS
$cshowList :: [SubscriptionDiscount'] -> ShowS
show :: SubscriptionDiscount' -> String
$cshow :: SubscriptionDiscount' -> String
showsPrec :: Int -> SubscriptionDiscount' -> ShowS
$cshowsPrec :: Int -> SubscriptionDiscount' -> ShowS
GHC.Show.Show,
      SubscriptionDiscount' -> SubscriptionDiscount' -> Bool
(SubscriptionDiscount' -> SubscriptionDiscount' -> Bool)
-> (SubscriptionDiscount' -> SubscriptionDiscount' -> Bool)
-> Eq SubscriptionDiscount'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionDiscount' -> SubscriptionDiscount' -> Bool
$c/= :: SubscriptionDiscount' -> SubscriptionDiscount' -> Bool
== :: SubscriptionDiscount' -> SubscriptionDiscount' -> Bool
$c== :: SubscriptionDiscount' -> SubscriptionDiscount' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionDiscount' where
  toJSON :: SubscriptionDiscount' -> Value
toJSON SubscriptionDiscount'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"checkout_session" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'CheckoutSession SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"coupon" Text -> Maybe Coupon -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Coupon
subscriptionDiscount'Coupon SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Maybe SubscriptionDiscount'Customer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount'
-> Maybe SubscriptionDiscount'Customer'Variants
subscriptionDiscount'Customer SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"end" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'End SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Id SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"invoice" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Invoice SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"invoice_item" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'InvoiceItem SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"promotion_code" Text -> Maybe SubscriptionDiscount'PromotionCode'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount'
-> Maybe SubscriptionDiscount'PromotionCode'Variants
subscriptionDiscount'PromotionCode SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"start" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'Start SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"subscription" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Subscription SubscriptionDiscount'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"discount" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionDiscount' -> Encoding
toEncoding SubscriptionDiscount'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"checkout_session" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'CheckoutSession SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"coupon" Text -> Maybe Coupon -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Coupon
subscriptionDiscount'Coupon SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Maybe SubscriptionDiscount'Customer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount'
-> Maybe SubscriptionDiscount'Customer'Variants
subscriptionDiscount'Customer SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"end" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'End SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Id SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"invoice" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Invoice SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"invoice_item" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'InvoiceItem SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"promotion_code" Text -> Maybe SubscriptionDiscount'PromotionCode'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount'
-> Maybe SubscriptionDiscount'PromotionCode'Variants
subscriptionDiscount'PromotionCode SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"start" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Int
subscriptionDiscount'Start SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"subscription" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionDiscount' -> Maybe Text
subscriptionDiscount'Subscription SubscriptionDiscount'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"discount")))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDiscount' where
  parseJSON :: Value -> Parser SubscriptionDiscount'
parseJSON = String
-> (Object -> Parser SubscriptionDiscount')
-> Value
-> Parser SubscriptionDiscount'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionDiscount'" (\Object
obj -> ((((((((((Maybe Text
 -> Maybe Coupon
 -> Maybe SubscriptionDiscount'Customer'Variants
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe SubscriptionDiscount'PromotionCode'Variants
 -> Maybe Int
 -> Maybe Text
 -> SubscriptionDiscount')
-> Parser
     (Maybe Text
      -> Maybe Coupon
      -> Maybe SubscriptionDiscount'Customer'Variants
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Coupon
-> Maybe SubscriptionDiscount'Customer'Variants
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe SubscriptionDiscount'PromotionCode'Variants
-> Maybe Int
-> Maybe Text
-> SubscriptionDiscount'
SubscriptionDiscount' Parser
  (Maybe Text
   -> Maybe Coupon
   -> Maybe SubscriptionDiscount'Customer'Variants
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Text)
-> Parser
     (Maybe Coupon
      -> Maybe SubscriptionDiscount'Customer'Variants
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
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
"checkout_session")) Parser
  (Maybe Coupon
   -> Maybe SubscriptionDiscount'Customer'Variants
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Coupon)
-> Parser
     (Maybe SubscriptionDiscount'Customer'Variants
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Coupon)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"coupon")) Parser
  (Maybe SubscriptionDiscount'Customer'Variants
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe SubscriptionDiscount'Customer'Variants)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionDiscount'Customer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"customer")) Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
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
"end")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
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
"id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int
      -> Maybe Text
      -> SubscriptionDiscount')
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
"invoice")) Parser
  (Maybe Text
   -> Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int
   -> Maybe Text
   -> SubscriptionDiscount')
-> Parser (Maybe Text)
-> Parser
     (Maybe SubscriptionDiscount'PromotionCode'Variants
      -> Maybe Int -> Maybe Text -> SubscriptionDiscount')
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
"invoice_item")) Parser
  (Maybe SubscriptionDiscount'PromotionCode'Variants
   -> Maybe Int -> Maybe Text -> SubscriptionDiscount')
-> Parser (Maybe SubscriptionDiscount'PromotionCode'Variants)
-> Parser (Maybe Int -> Maybe Text -> SubscriptionDiscount')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe SubscriptionDiscount'PromotionCode'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"promotion_code")) Parser (Maybe Int -> Maybe Text -> SubscriptionDiscount')
-> Parser (Maybe Int)
-> Parser (Maybe Text -> SubscriptionDiscount')
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
"start")) Parser (Maybe Text -> SubscriptionDiscount')
-> Parser (Maybe Text) -> Parser SubscriptionDiscount'
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
"subscription"))

-- | Create a new 'SubscriptionDiscount'' with all required fields.
mkSubscriptionDiscount' :: SubscriptionDiscount'
mkSubscriptionDiscount' :: SubscriptionDiscount'
mkSubscriptionDiscount' =
  SubscriptionDiscount' :: Maybe Text
-> Maybe Coupon
-> Maybe SubscriptionDiscount'Customer'Variants
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe SubscriptionDiscount'PromotionCode'Variants
-> Maybe Int
-> Maybe Text
-> SubscriptionDiscount'
SubscriptionDiscount'
    { subscriptionDiscount'CheckoutSession :: Maybe Text
subscriptionDiscount'CheckoutSession = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Coupon :: Maybe Coupon
subscriptionDiscount'Coupon = Maybe Coupon
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Customer :: Maybe SubscriptionDiscount'Customer'Variants
subscriptionDiscount'Customer = Maybe SubscriptionDiscount'Customer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'End :: Maybe Int
subscriptionDiscount'End = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Id :: Maybe Text
subscriptionDiscount'Id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Invoice :: Maybe Text
subscriptionDiscount'Invoice = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'InvoiceItem :: Maybe Text
subscriptionDiscount'InvoiceItem = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'PromotionCode :: Maybe SubscriptionDiscount'PromotionCode'Variants
subscriptionDiscount'PromotionCode = Maybe SubscriptionDiscount'PromotionCode'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Start :: Maybe Int
subscriptionDiscount'Start = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionDiscount'Subscription :: Maybe Text
subscriptionDiscount'Subscription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.discount.anyOf.properties.customer.anyOf@ in the specification.
--
-- The ID of the customer associated with this discount.
data SubscriptionDiscount'Customer'Variants
  = SubscriptionDiscount'Customer'Text Data.Text.Internal.Text
  | SubscriptionDiscount'Customer'Customer Customer
  | SubscriptionDiscount'Customer'DeletedCustomer DeletedCustomer
  deriving (Int -> SubscriptionDiscount'Customer'Variants -> ShowS
[SubscriptionDiscount'Customer'Variants] -> ShowS
SubscriptionDiscount'Customer'Variants -> String
(Int -> SubscriptionDiscount'Customer'Variants -> ShowS)
-> (SubscriptionDiscount'Customer'Variants -> String)
-> ([SubscriptionDiscount'Customer'Variants] -> ShowS)
-> Show SubscriptionDiscount'Customer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionDiscount'Customer'Variants] -> ShowS
$cshowList :: [SubscriptionDiscount'Customer'Variants] -> ShowS
show :: SubscriptionDiscount'Customer'Variants -> String
$cshow :: SubscriptionDiscount'Customer'Variants -> String
showsPrec :: Int -> SubscriptionDiscount'Customer'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionDiscount'Customer'Variants -> ShowS
GHC.Show.Show, SubscriptionDiscount'Customer'Variants
-> SubscriptionDiscount'Customer'Variants -> Bool
(SubscriptionDiscount'Customer'Variants
 -> SubscriptionDiscount'Customer'Variants -> Bool)
-> (SubscriptionDiscount'Customer'Variants
    -> SubscriptionDiscount'Customer'Variants -> Bool)
-> Eq SubscriptionDiscount'Customer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionDiscount'Customer'Variants
-> SubscriptionDiscount'Customer'Variants -> Bool
$c/= :: SubscriptionDiscount'Customer'Variants
-> SubscriptionDiscount'Customer'Variants -> Bool
== :: SubscriptionDiscount'Customer'Variants
-> SubscriptionDiscount'Customer'Variants -> Bool
$c== :: SubscriptionDiscount'Customer'Variants
-> SubscriptionDiscount'Customer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionDiscount'Customer'Variants where
  toJSON :: SubscriptionDiscount'Customer'Variants -> Value
toJSON (SubscriptionDiscount'Customer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionDiscount'Customer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a
  toJSON (SubscriptionDiscount'Customer'DeletedCustomer DeletedCustomer
a) = DeletedCustomer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON DeletedCustomer
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDiscount'Customer'Variants where
  parseJSON :: Value -> Parser SubscriptionDiscount'Customer'Variants
parseJSON Value
val = case (Text -> SubscriptionDiscount'Customer'Variants
SubscriptionDiscount'Customer'Text (Text -> SubscriptionDiscount'Customer'Variants)
-> Result Text -> Result SubscriptionDiscount'Customer'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 SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Customer -> SubscriptionDiscount'Customer'Variants
SubscriptionDiscount'Customer'Customer (Customer -> SubscriptionDiscount'Customer'Variants)
-> Result Customer -> Result SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Customer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((DeletedCustomer -> SubscriptionDiscount'Customer'Variants
SubscriptionDiscount'Customer'DeletedCustomer (DeletedCustomer -> SubscriptionDiscount'Customer'Variants)
-> Result DeletedCustomer
-> Result SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result DeletedCustomer
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
-> Result SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionDiscount'Customer'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched")) of
    Data.Aeson.Types.Internal.Success SubscriptionDiscount'Customer'Variants
a -> SubscriptionDiscount'Customer'Variants
-> Parser SubscriptionDiscount'Customer'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionDiscount'Customer'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionDiscount'Customer'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.discount.anyOf.properties.promotion_code.anyOf@ in the specification.
--
-- The promotion code applied to create this discount.
data SubscriptionDiscount'PromotionCode'Variants
  = SubscriptionDiscount'PromotionCode'Text Data.Text.Internal.Text
  | SubscriptionDiscount'PromotionCode'PromotionCode PromotionCode
  deriving (Int -> SubscriptionDiscount'PromotionCode'Variants -> ShowS
[SubscriptionDiscount'PromotionCode'Variants] -> ShowS
SubscriptionDiscount'PromotionCode'Variants -> String
(Int -> SubscriptionDiscount'PromotionCode'Variants -> ShowS)
-> (SubscriptionDiscount'PromotionCode'Variants -> String)
-> ([SubscriptionDiscount'PromotionCode'Variants] -> ShowS)
-> Show SubscriptionDiscount'PromotionCode'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionDiscount'PromotionCode'Variants] -> ShowS
$cshowList :: [SubscriptionDiscount'PromotionCode'Variants] -> ShowS
show :: SubscriptionDiscount'PromotionCode'Variants -> String
$cshow :: SubscriptionDiscount'PromotionCode'Variants -> String
showsPrec :: Int -> SubscriptionDiscount'PromotionCode'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionDiscount'PromotionCode'Variants -> ShowS
GHC.Show.Show, SubscriptionDiscount'PromotionCode'Variants
-> SubscriptionDiscount'PromotionCode'Variants -> Bool
(SubscriptionDiscount'PromotionCode'Variants
 -> SubscriptionDiscount'PromotionCode'Variants -> Bool)
-> (SubscriptionDiscount'PromotionCode'Variants
    -> SubscriptionDiscount'PromotionCode'Variants -> Bool)
-> Eq SubscriptionDiscount'PromotionCode'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionDiscount'PromotionCode'Variants
-> SubscriptionDiscount'PromotionCode'Variants -> Bool
$c/= :: SubscriptionDiscount'PromotionCode'Variants
-> SubscriptionDiscount'PromotionCode'Variants -> Bool
== :: SubscriptionDiscount'PromotionCode'Variants
-> SubscriptionDiscount'PromotionCode'Variants -> Bool
$c== :: SubscriptionDiscount'PromotionCode'Variants
-> SubscriptionDiscount'PromotionCode'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionDiscount'PromotionCode'Variants where
  toJSON :: SubscriptionDiscount'PromotionCode'Variants -> Value
toJSON (SubscriptionDiscount'PromotionCode'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionDiscount'PromotionCode'PromotionCode PromotionCode
a) = PromotionCode -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON PromotionCode
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionDiscount'PromotionCode'Variants where
  parseJSON :: Value -> Parser SubscriptionDiscount'PromotionCode'Variants
parseJSON Value
val = case (Text -> SubscriptionDiscount'PromotionCode'Variants
SubscriptionDiscount'PromotionCode'Text (Text -> SubscriptionDiscount'PromotionCode'Variants)
-> Result Text
-> Result SubscriptionDiscount'PromotionCode'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 SubscriptionDiscount'PromotionCode'Variants
-> Result SubscriptionDiscount'PromotionCode'Variants
-> Result SubscriptionDiscount'PromotionCode'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((PromotionCode -> SubscriptionDiscount'PromotionCode'Variants
SubscriptionDiscount'PromotionCode'PromotionCode (PromotionCode -> SubscriptionDiscount'PromotionCode'Variants)
-> Result PromotionCode
-> Result SubscriptionDiscount'PromotionCode'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result PromotionCode
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionDiscount'PromotionCode'Variants
-> Result SubscriptionDiscount'PromotionCode'Variants
-> Result SubscriptionDiscount'PromotionCode'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionDiscount'PromotionCode'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionDiscount'PromotionCode'Variants
a -> SubscriptionDiscount'PromotionCode'Variants
-> Parser SubscriptionDiscount'PromotionCode'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionDiscount'PromotionCode'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionDiscount'PromotionCode'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.subscription.properties.items@ in the specification.
--
-- List of subscription items, each with an attached price.
data SubscriptionItems' = SubscriptionItems'
  { -- | data: Details about each object.
    SubscriptionItems' -> [SubscriptionItem]
subscriptionItems'Data :: ([SubscriptionItem]),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    SubscriptionItems' -> Bool
subscriptionItems'HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    SubscriptionItems' -> Text
subscriptionItems'Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> SubscriptionItems' -> ShowS
[SubscriptionItems'] -> ShowS
SubscriptionItems' -> String
(Int -> SubscriptionItems' -> ShowS)
-> (SubscriptionItems' -> String)
-> ([SubscriptionItems'] -> ShowS)
-> Show SubscriptionItems'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionItems'] -> ShowS
$cshowList :: [SubscriptionItems'] -> ShowS
show :: SubscriptionItems' -> String
$cshow :: SubscriptionItems' -> String
showsPrec :: Int -> SubscriptionItems' -> ShowS
$cshowsPrec :: Int -> SubscriptionItems' -> ShowS
GHC.Show.Show,
      SubscriptionItems' -> SubscriptionItems' -> Bool
(SubscriptionItems' -> SubscriptionItems' -> Bool)
-> (SubscriptionItems' -> SubscriptionItems' -> Bool)
-> Eq SubscriptionItems'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionItems' -> SubscriptionItems' -> Bool
$c/= :: SubscriptionItems' -> SubscriptionItems' -> Bool
== :: SubscriptionItems' -> SubscriptionItems' -> Bool
$c== :: SubscriptionItems' -> SubscriptionItems' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionItems' where
  toJSON :: SubscriptionItems' -> Value
toJSON SubscriptionItems'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text -> [SubscriptionItem] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> [SubscriptionItem]
subscriptionItems'Data SubscriptionItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"has_more" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> Bool
subscriptionItems'HasMore SubscriptionItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"url" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> Text
subscriptionItems'Url SubscriptionItems'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionItems' -> Encoding
toEncoding SubscriptionItems'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text -> [SubscriptionItem] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> [SubscriptionItem]
subscriptionItems'Data SubscriptionItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"has_more" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> Bool
subscriptionItems'HasMore SubscriptionItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"url" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionItems' -> Text
subscriptionItems'Url SubscriptionItems'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list"))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItems' where
  parseJSON :: Value -> Parser SubscriptionItems'
parseJSON = String
-> (Object -> Parser SubscriptionItems')
-> Value
-> Parser SubscriptionItems'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionItems'" (\Object
obj -> ((([SubscriptionItem] -> Bool -> Text -> SubscriptionItems')
-> Parser
     ([SubscriptionItem] -> Bool -> Text -> SubscriptionItems')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [SubscriptionItem] -> Bool -> Text -> SubscriptionItems'
SubscriptionItems' Parser ([SubscriptionItem] -> Bool -> Text -> SubscriptionItems')
-> Parser [SubscriptionItem]
-> Parser (Bool -> Text -> SubscriptionItems')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [SubscriptionItem]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser (Bool -> Text -> SubscriptionItems')
-> Parser Bool -> Parser (Text -> SubscriptionItems')
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
"has_more")) Parser (Text -> SubscriptionItems')
-> Parser Text -> Parser SubscriptionItems'
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
"url"))

-- | Create a new 'SubscriptionItems'' with all required fields.
mkSubscriptionItems' ::
  -- | 'subscriptionItems'Data'
  [SubscriptionItem] ->
  -- | 'subscriptionItems'HasMore'
  GHC.Types.Bool ->
  -- | 'subscriptionItems'Url'
  Data.Text.Internal.Text ->
  SubscriptionItems'
mkSubscriptionItems' :: [SubscriptionItem] -> Bool -> Text -> SubscriptionItems'
mkSubscriptionItems' [SubscriptionItem]
subscriptionItems'Data Bool
subscriptionItems'HasMore Text
subscriptionItems'Url =
  SubscriptionItems' :: [SubscriptionItem] -> Bool -> Text -> SubscriptionItems'
SubscriptionItems'
    { subscriptionItems'Data :: [SubscriptionItem]
subscriptionItems'Data = [SubscriptionItem]
subscriptionItems'Data,
      subscriptionItems'HasMore :: Bool
subscriptionItems'HasMore = Bool
subscriptionItems'HasMore,
      subscriptionItems'Url :: Text
subscriptionItems'Url = Text
subscriptionItems'Url
    }

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.latest_invoice.anyOf@ in the specification.
--
-- The most recent invoice this subscription has generated.
data SubscriptionLatestInvoice'Variants
  = SubscriptionLatestInvoice'Text Data.Text.Internal.Text
  | SubscriptionLatestInvoice'Invoice Invoice
  deriving (Int -> SubscriptionLatestInvoice'Variants -> ShowS
[SubscriptionLatestInvoice'Variants] -> ShowS
SubscriptionLatestInvoice'Variants -> String
(Int -> SubscriptionLatestInvoice'Variants -> ShowS)
-> (SubscriptionLatestInvoice'Variants -> String)
-> ([SubscriptionLatestInvoice'Variants] -> ShowS)
-> Show SubscriptionLatestInvoice'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionLatestInvoice'Variants] -> ShowS
$cshowList :: [SubscriptionLatestInvoice'Variants] -> ShowS
show :: SubscriptionLatestInvoice'Variants -> String
$cshow :: SubscriptionLatestInvoice'Variants -> String
showsPrec :: Int -> SubscriptionLatestInvoice'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionLatestInvoice'Variants -> ShowS
GHC.Show.Show, SubscriptionLatestInvoice'Variants
-> SubscriptionLatestInvoice'Variants -> Bool
(SubscriptionLatestInvoice'Variants
 -> SubscriptionLatestInvoice'Variants -> Bool)
-> (SubscriptionLatestInvoice'Variants
    -> SubscriptionLatestInvoice'Variants -> Bool)
-> Eq SubscriptionLatestInvoice'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionLatestInvoice'Variants
-> SubscriptionLatestInvoice'Variants -> Bool
$c/= :: SubscriptionLatestInvoice'Variants
-> SubscriptionLatestInvoice'Variants -> Bool
== :: SubscriptionLatestInvoice'Variants
-> SubscriptionLatestInvoice'Variants -> Bool
$c== :: SubscriptionLatestInvoice'Variants
-> SubscriptionLatestInvoice'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionLatestInvoice'Variants where
  toJSON :: SubscriptionLatestInvoice'Variants -> Value
toJSON (SubscriptionLatestInvoice'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionLatestInvoice'Invoice Invoice
a) = Invoice -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Invoice
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionLatestInvoice'Variants where
  parseJSON :: Value -> Parser SubscriptionLatestInvoice'Variants
parseJSON Value
val = case (Text -> SubscriptionLatestInvoice'Variants
SubscriptionLatestInvoice'Text (Text -> SubscriptionLatestInvoice'Variants)
-> Result Text -> Result SubscriptionLatestInvoice'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 SubscriptionLatestInvoice'Variants
-> Result SubscriptionLatestInvoice'Variants
-> Result SubscriptionLatestInvoice'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Invoice -> SubscriptionLatestInvoice'Variants
SubscriptionLatestInvoice'Invoice (Invoice -> SubscriptionLatestInvoice'Variants)
-> Result Invoice -> Result SubscriptionLatestInvoice'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Invoice
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionLatestInvoice'Variants
-> Result SubscriptionLatestInvoice'Variants
-> Result SubscriptionLatestInvoice'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionLatestInvoice'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionLatestInvoice'Variants
a -> SubscriptionLatestInvoice'Variants
-> Parser SubscriptionLatestInvoice'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionLatestInvoice'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionLatestInvoice'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.subscription.properties.pause_collection.anyOf@ in the specification.
--
-- If specified, payment collection for this subscription will be paused.
data SubscriptionPauseCollection' = SubscriptionPauseCollection'
  { -- | behavior: The payment collection behavior for this subscription while paused. One of \`keep_as_draft\`, \`mark_uncollectible\`, or \`void\`.
    SubscriptionPauseCollection'
-> Maybe SubscriptionPauseCollection'Behavior'
subscriptionPauseCollection'Behavior :: (GHC.Maybe.Maybe SubscriptionPauseCollection'Behavior'),
    -- | resumes_at: The time after which the subscription will resume collecting payments.
    SubscriptionPauseCollection' -> Maybe Int
subscriptionPauseCollection'ResumesAt :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> SubscriptionPauseCollection' -> ShowS
[SubscriptionPauseCollection'] -> ShowS
SubscriptionPauseCollection' -> String
(Int -> SubscriptionPauseCollection' -> ShowS)
-> (SubscriptionPauseCollection' -> String)
-> ([SubscriptionPauseCollection'] -> ShowS)
-> Show SubscriptionPauseCollection'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPauseCollection'] -> ShowS
$cshowList :: [SubscriptionPauseCollection'] -> ShowS
show :: SubscriptionPauseCollection' -> String
$cshow :: SubscriptionPauseCollection' -> String
showsPrec :: Int -> SubscriptionPauseCollection' -> ShowS
$cshowsPrec :: Int -> SubscriptionPauseCollection' -> ShowS
GHC.Show.Show,
      SubscriptionPauseCollection'
-> SubscriptionPauseCollection' -> Bool
(SubscriptionPauseCollection'
 -> SubscriptionPauseCollection' -> Bool)
-> (SubscriptionPauseCollection'
    -> SubscriptionPauseCollection' -> Bool)
-> Eq SubscriptionPauseCollection'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPauseCollection'
-> SubscriptionPauseCollection' -> Bool
$c/= :: SubscriptionPauseCollection'
-> SubscriptionPauseCollection' -> Bool
== :: SubscriptionPauseCollection'
-> SubscriptionPauseCollection' -> Bool
$c== :: SubscriptionPauseCollection'
-> SubscriptionPauseCollection' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionPauseCollection' where
  toJSON :: SubscriptionPauseCollection' -> Value
toJSON SubscriptionPauseCollection'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"behavior" Text -> Maybe SubscriptionPauseCollection'Behavior' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPauseCollection'
-> Maybe SubscriptionPauseCollection'Behavior'
subscriptionPauseCollection'Behavior SubscriptionPauseCollection'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"resumes_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPauseCollection' -> Maybe Int
subscriptionPauseCollection'ResumesAt SubscriptionPauseCollection'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionPauseCollection' -> Encoding
toEncoding SubscriptionPauseCollection'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"behavior" Text -> Maybe SubscriptionPauseCollection'Behavior' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPauseCollection'
-> Maybe SubscriptionPauseCollection'Behavior'
subscriptionPauseCollection'Behavior SubscriptionPauseCollection'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"resumes_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPauseCollection' -> Maybe Int
subscriptionPauseCollection'ResumesAt SubscriptionPauseCollection'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPauseCollection' where
  parseJSON :: Value -> Parser SubscriptionPauseCollection'
parseJSON = String
-> (Object -> Parser SubscriptionPauseCollection')
-> Value
-> Parser SubscriptionPauseCollection'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionPauseCollection'" (\Object
obj -> ((Maybe SubscriptionPauseCollection'Behavior'
 -> Maybe Int -> SubscriptionPauseCollection')
-> Parser
     (Maybe SubscriptionPauseCollection'Behavior'
      -> Maybe Int -> SubscriptionPauseCollection')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe SubscriptionPauseCollection'Behavior'
-> Maybe Int -> SubscriptionPauseCollection'
SubscriptionPauseCollection' Parser
  (Maybe SubscriptionPauseCollection'Behavior'
   -> Maybe Int -> SubscriptionPauseCollection')
-> Parser (Maybe SubscriptionPauseCollection'Behavior')
-> Parser (Maybe Int -> SubscriptionPauseCollection')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe SubscriptionPauseCollection'Behavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"behavior")) Parser (Maybe Int -> SubscriptionPauseCollection')
-> Parser (Maybe Int) -> Parser SubscriptionPauseCollection'
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
"resumes_at"))

-- | Create a new 'SubscriptionPauseCollection'' with all required fields.
mkSubscriptionPauseCollection' :: SubscriptionPauseCollection'
mkSubscriptionPauseCollection' :: SubscriptionPauseCollection'
mkSubscriptionPauseCollection' =
  SubscriptionPauseCollection' :: Maybe SubscriptionPauseCollection'Behavior'
-> Maybe Int -> SubscriptionPauseCollection'
SubscriptionPauseCollection'
    { subscriptionPauseCollection'Behavior :: Maybe SubscriptionPauseCollection'Behavior'
subscriptionPauseCollection'Behavior = Maybe SubscriptionPauseCollection'Behavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPauseCollection'ResumesAt :: Maybe Int
subscriptionPauseCollection'ResumesAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.subscription.properties.pause_collection.anyOf.properties.behavior@ in the specification.
--
-- The payment collection behavior for this subscription while paused. One of \`keep_as_draft\`, \`mark_uncollectible\`, or \`void\`.
data SubscriptionPauseCollection'Behavior'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionPauseCollection'Behavior'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.
    SubscriptionPauseCollection'Behavior'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"keep_as_draft"@
    SubscriptionPauseCollection'Behavior'EnumKeepAsDraft
  | -- | Represents the JSON value @"mark_uncollectible"@
    SubscriptionPauseCollection'Behavior'EnumMarkUncollectible
  | -- | Represents the JSON value @"void"@
    SubscriptionPauseCollection'Behavior'EnumVoid
  deriving (Int -> SubscriptionPauseCollection'Behavior' -> ShowS
[SubscriptionPauseCollection'Behavior'] -> ShowS
SubscriptionPauseCollection'Behavior' -> String
(Int -> SubscriptionPauseCollection'Behavior' -> ShowS)
-> (SubscriptionPauseCollection'Behavior' -> String)
-> ([SubscriptionPauseCollection'Behavior'] -> ShowS)
-> Show SubscriptionPauseCollection'Behavior'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPauseCollection'Behavior'] -> ShowS
$cshowList :: [SubscriptionPauseCollection'Behavior'] -> ShowS
show :: SubscriptionPauseCollection'Behavior' -> String
$cshow :: SubscriptionPauseCollection'Behavior' -> String
showsPrec :: Int -> SubscriptionPauseCollection'Behavior' -> ShowS
$cshowsPrec :: Int -> SubscriptionPauseCollection'Behavior' -> ShowS
GHC.Show.Show, SubscriptionPauseCollection'Behavior'
-> SubscriptionPauseCollection'Behavior' -> Bool
(SubscriptionPauseCollection'Behavior'
 -> SubscriptionPauseCollection'Behavior' -> Bool)
-> (SubscriptionPauseCollection'Behavior'
    -> SubscriptionPauseCollection'Behavior' -> Bool)
-> Eq SubscriptionPauseCollection'Behavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPauseCollection'Behavior'
-> SubscriptionPauseCollection'Behavior' -> Bool
$c/= :: SubscriptionPauseCollection'Behavior'
-> SubscriptionPauseCollection'Behavior' -> Bool
== :: SubscriptionPauseCollection'Behavior'
-> SubscriptionPauseCollection'Behavior' -> Bool
$c== :: SubscriptionPauseCollection'Behavior'
-> SubscriptionPauseCollection'Behavior' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionPauseCollection'Behavior' where
  toJSON :: SubscriptionPauseCollection'Behavior' -> Value
toJSON (SubscriptionPauseCollection'Behavior'Other Value
val) = Value
val
  toJSON (SubscriptionPauseCollection'Behavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumKeepAsDraft) = Value
"keep_as_draft"
  toJSON (SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumMarkUncollectible) = Value
"mark_uncollectible"
  toJSON (SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumVoid) = Value
"void"

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPauseCollection'Behavior' where
  parseJSON :: Value -> Parser SubscriptionPauseCollection'Behavior'
parseJSON Value
val =
    SubscriptionPauseCollection'Behavior'
-> Parser SubscriptionPauseCollection'Behavior'
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
"keep_as_draft" -> SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumKeepAsDraft
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"mark_uncollectible" -> SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumMarkUncollectible
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"void" -> SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'EnumVoid
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionPauseCollection'Behavior'
SubscriptionPauseCollection'Behavior'Other Value
val
      )

-- | Defines the object schema located at @components.schemas.subscription.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 SubscriptionPendingInvoiceItemInterval' = SubscriptionPendingInvoiceItemInterval'
  { -- | interval: Specifies invoicing frequency. Either \`day\`, \`week\`, \`month\` or \`year\`.
    SubscriptionPendingInvoiceItemInterval'
-> Maybe SubscriptionPendingInvoiceItemInterval'Interval'
subscriptionPendingInvoiceItemInterval'Interval :: (GHC.Maybe.Maybe SubscriptionPendingInvoiceItemInterval'Interval'),
    -- | interval_count: The number of intervals between invoices. For example, \`interval=month\` and \`interval_count=3\` bills every 3 months. Maximum of one year interval allowed (1 year, 12 months, or 52 weeks).
    SubscriptionPendingInvoiceItemInterval' -> Maybe Int
subscriptionPendingInvoiceItemInterval'IntervalCount :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> SubscriptionPendingInvoiceItemInterval' -> ShowS
[SubscriptionPendingInvoiceItemInterval'] -> ShowS
SubscriptionPendingInvoiceItemInterval' -> String
(Int -> SubscriptionPendingInvoiceItemInterval' -> ShowS)
-> (SubscriptionPendingInvoiceItemInterval' -> String)
-> ([SubscriptionPendingInvoiceItemInterval'] -> ShowS)
-> Show SubscriptionPendingInvoiceItemInterval'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPendingInvoiceItemInterval'] -> ShowS
$cshowList :: [SubscriptionPendingInvoiceItemInterval'] -> ShowS
show :: SubscriptionPendingInvoiceItemInterval' -> String
$cshow :: SubscriptionPendingInvoiceItemInterval' -> String
showsPrec :: Int -> SubscriptionPendingInvoiceItemInterval' -> ShowS
$cshowsPrec :: Int -> SubscriptionPendingInvoiceItemInterval' -> ShowS
GHC.Show.Show,
      SubscriptionPendingInvoiceItemInterval'
-> SubscriptionPendingInvoiceItemInterval' -> Bool
(SubscriptionPendingInvoiceItemInterval'
 -> SubscriptionPendingInvoiceItemInterval' -> Bool)
-> (SubscriptionPendingInvoiceItemInterval'
    -> SubscriptionPendingInvoiceItemInterval' -> Bool)
-> Eq SubscriptionPendingInvoiceItemInterval'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPendingInvoiceItemInterval'
-> SubscriptionPendingInvoiceItemInterval' -> Bool
$c/= :: SubscriptionPendingInvoiceItemInterval'
-> SubscriptionPendingInvoiceItemInterval' -> Bool
== :: SubscriptionPendingInvoiceItemInterval'
-> SubscriptionPendingInvoiceItemInterval' -> Bool
$c== :: SubscriptionPendingInvoiceItemInterval'
-> SubscriptionPendingInvoiceItemInterval' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionPendingInvoiceItemInterval' where
  toJSON :: SubscriptionPendingInvoiceItemInterval' -> Value
toJSON SubscriptionPendingInvoiceItemInterval'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"interval" Text
-> Maybe SubscriptionPendingInvoiceItemInterval'Interval' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingInvoiceItemInterval'
-> Maybe SubscriptionPendingInvoiceItemInterval'Interval'
subscriptionPendingInvoiceItemInterval'Interval SubscriptionPendingInvoiceItemInterval'
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..= SubscriptionPendingInvoiceItemInterval' -> Maybe Int
subscriptionPendingInvoiceItemInterval'IntervalCount SubscriptionPendingInvoiceItemInterval'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionPendingInvoiceItemInterval' -> Encoding
toEncoding SubscriptionPendingInvoiceItemInterval'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"interval" Text
-> Maybe SubscriptionPendingInvoiceItemInterval'Interval' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingInvoiceItemInterval'
-> Maybe SubscriptionPendingInvoiceItemInterval'Interval'
subscriptionPendingInvoiceItemInterval'Interval SubscriptionPendingInvoiceItemInterval'
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..= SubscriptionPendingInvoiceItemInterval' -> Maybe Int
subscriptionPendingInvoiceItemInterval'IntervalCount SubscriptionPendingInvoiceItemInterval'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingInvoiceItemInterval' where
  parseJSON :: Value -> Parser SubscriptionPendingInvoiceItemInterval'
parseJSON = String
-> (Object -> Parser SubscriptionPendingInvoiceItemInterval')
-> Value
-> Parser SubscriptionPendingInvoiceItemInterval'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionPendingInvoiceItemInterval'" (\Object
obj -> ((Maybe SubscriptionPendingInvoiceItemInterval'Interval'
 -> Maybe Int -> SubscriptionPendingInvoiceItemInterval')
-> Parser
     (Maybe SubscriptionPendingInvoiceItemInterval'Interval'
      -> Maybe Int -> SubscriptionPendingInvoiceItemInterval')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe SubscriptionPendingInvoiceItemInterval'Interval'
-> Maybe Int -> SubscriptionPendingInvoiceItemInterval'
SubscriptionPendingInvoiceItemInterval' Parser
  (Maybe SubscriptionPendingInvoiceItemInterval'Interval'
   -> Maybe Int -> SubscriptionPendingInvoiceItemInterval')
-> Parser (Maybe SubscriptionPendingInvoiceItemInterval'Interval')
-> Parser (Maybe Int -> SubscriptionPendingInvoiceItemInterval')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe SubscriptionPendingInvoiceItemInterval'Interval')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"interval")) Parser (Maybe Int -> SubscriptionPendingInvoiceItemInterval')
-> Parser (Maybe Int)
-> Parser SubscriptionPendingInvoiceItemInterval'
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 'SubscriptionPendingInvoiceItemInterval'' with all required fields.
mkSubscriptionPendingInvoiceItemInterval' :: SubscriptionPendingInvoiceItemInterval'
mkSubscriptionPendingInvoiceItemInterval' :: SubscriptionPendingInvoiceItemInterval'
mkSubscriptionPendingInvoiceItemInterval' =
  SubscriptionPendingInvoiceItemInterval' :: Maybe SubscriptionPendingInvoiceItemInterval'Interval'
-> Maybe Int -> SubscriptionPendingInvoiceItemInterval'
SubscriptionPendingInvoiceItemInterval'
    { subscriptionPendingInvoiceItemInterval'Interval :: Maybe SubscriptionPendingInvoiceItemInterval'Interval'
subscriptionPendingInvoiceItemInterval'Interval = Maybe SubscriptionPendingInvoiceItemInterval'Interval'
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingInvoiceItemInterval'IntervalCount :: Maybe Int
subscriptionPendingInvoiceItemInterval'IntervalCount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.subscription.properties.pending_invoice_item_interval.anyOf.properties.interval@ in the specification.
--
-- Specifies invoicing frequency. Either \`day\`, \`week\`, \`month\` or \`year\`.
data SubscriptionPendingInvoiceItemInterval'Interval'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionPendingInvoiceItemInterval'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.
    SubscriptionPendingInvoiceItemInterval'Interval'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"day"@
    SubscriptionPendingInvoiceItemInterval'Interval'EnumDay
  | -- | Represents the JSON value @"month"@
    SubscriptionPendingInvoiceItemInterval'Interval'EnumMonth
  | -- | Represents the JSON value @"week"@
    SubscriptionPendingInvoiceItemInterval'Interval'EnumWeek
  | -- | Represents the JSON value @"year"@
    SubscriptionPendingInvoiceItemInterval'Interval'EnumYear
  deriving (Int -> SubscriptionPendingInvoiceItemInterval'Interval' -> ShowS
[SubscriptionPendingInvoiceItemInterval'Interval'] -> ShowS
SubscriptionPendingInvoiceItemInterval'Interval' -> String
(Int -> SubscriptionPendingInvoiceItemInterval'Interval' -> ShowS)
-> (SubscriptionPendingInvoiceItemInterval'Interval' -> String)
-> ([SubscriptionPendingInvoiceItemInterval'Interval'] -> ShowS)
-> Show SubscriptionPendingInvoiceItemInterval'Interval'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPendingInvoiceItemInterval'Interval'] -> ShowS
$cshowList :: [SubscriptionPendingInvoiceItemInterval'Interval'] -> ShowS
show :: SubscriptionPendingInvoiceItemInterval'Interval' -> String
$cshow :: SubscriptionPendingInvoiceItemInterval'Interval' -> String
showsPrec :: Int -> SubscriptionPendingInvoiceItemInterval'Interval' -> ShowS
$cshowsPrec :: Int -> SubscriptionPendingInvoiceItemInterval'Interval' -> ShowS
GHC.Show.Show, SubscriptionPendingInvoiceItemInterval'Interval'
-> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool
(SubscriptionPendingInvoiceItemInterval'Interval'
 -> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool)
-> (SubscriptionPendingInvoiceItemInterval'Interval'
    -> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool)
-> Eq SubscriptionPendingInvoiceItemInterval'Interval'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPendingInvoiceItemInterval'Interval'
-> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool
$c/= :: SubscriptionPendingInvoiceItemInterval'Interval'
-> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool
== :: SubscriptionPendingInvoiceItemInterval'Interval'
-> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool
$c== :: SubscriptionPendingInvoiceItemInterval'Interval'
-> SubscriptionPendingInvoiceItemInterval'Interval' -> Bool
GHC.Classes.Eq)

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

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingInvoiceItemInterval'Interval' where
  parseJSON :: Value -> Parser SubscriptionPendingInvoiceItemInterval'Interval'
parseJSON Value
val =
    SubscriptionPendingInvoiceItemInterval'Interval'
-> Parser SubscriptionPendingInvoiceItemInterval'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" -> SubscriptionPendingInvoiceItemInterval'Interval'
SubscriptionPendingInvoiceItemInterval'Interval'EnumDay
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"month" -> SubscriptionPendingInvoiceItemInterval'Interval'
SubscriptionPendingInvoiceItemInterval'Interval'EnumMonth
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"week" -> SubscriptionPendingInvoiceItemInterval'Interval'
SubscriptionPendingInvoiceItemInterval'Interval'EnumWeek
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"year" -> SubscriptionPendingInvoiceItemInterval'Interval'
SubscriptionPendingInvoiceItemInterval'Interval'EnumYear
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionPendingInvoiceItemInterval'Interval'
SubscriptionPendingInvoiceItemInterval'Interval'Other Value
val
      )

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.pending_setup_intent.anyOf@ in the specification.
--
-- You can use this [SetupIntent](https:\/\/stripe.com\/docs\/api\/setup_intents) to collect user authentication when creating a subscription without immediate payment or updating a subscription\'s payment method, allowing you to optimize for off-session payments. Learn more in the [SCA Migration Guide](https:\/\/stripe.com\/docs\/billing\/migration\/strong-customer-authentication\#scenario-2).
data SubscriptionPendingSetupIntent'Variants
  = SubscriptionPendingSetupIntent'Text Data.Text.Internal.Text
  | SubscriptionPendingSetupIntent'SetupIntent SetupIntent
  deriving (Int -> SubscriptionPendingSetupIntent'Variants -> ShowS
[SubscriptionPendingSetupIntent'Variants] -> ShowS
SubscriptionPendingSetupIntent'Variants -> String
(Int -> SubscriptionPendingSetupIntent'Variants -> ShowS)
-> (SubscriptionPendingSetupIntent'Variants -> String)
-> ([SubscriptionPendingSetupIntent'Variants] -> ShowS)
-> Show SubscriptionPendingSetupIntent'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPendingSetupIntent'Variants] -> ShowS
$cshowList :: [SubscriptionPendingSetupIntent'Variants] -> ShowS
show :: SubscriptionPendingSetupIntent'Variants -> String
$cshow :: SubscriptionPendingSetupIntent'Variants -> String
showsPrec :: Int -> SubscriptionPendingSetupIntent'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionPendingSetupIntent'Variants -> ShowS
GHC.Show.Show, SubscriptionPendingSetupIntent'Variants
-> SubscriptionPendingSetupIntent'Variants -> Bool
(SubscriptionPendingSetupIntent'Variants
 -> SubscriptionPendingSetupIntent'Variants -> Bool)
-> (SubscriptionPendingSetupIntent'Variants
    -> SubscriptionPendingSetupIntent'Variants -> Bool)
-> Eq SubscriptionPendingSetupIntent'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPendingSetupIntent'Variants
-> SubscriptionPendingSetupIntent'Variants -> Bool
$c/= :: SubscriptionPendingSetupIntent'Variants
-> SubscriptionPendingSetupIntent'Variants -> Bool
== :: SubscriptionPendingSetupIntent'Variants
-> SubscriptionPendingSetupIntent'Variants -> Bool
$c== :: SubscriptionPendingSetupIntent'Variants
-> SubscriptionPendingSetupIntent'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionPendingSetupIntent'Variants where
  toJSON :: SubscriptionPendingSetupIntent'Variants -> Value
toJSON (SubscriptionPendingSetupIntent'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionPendingSetupIntent'SetupIntent SetupIntent
a) = SetupIntent -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON SetupIntent
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingSetupIntent'Variants where
  parseJSON :: Value -> Parser SubscriptionPendingSetupIntent'Variants
parseJSON Value
val = case (Text -> SubscriptionPendingSetupIntent'Variants
SubscriptionPendingSetupIntent'Text (Text -> SubscriptionPendingSetupIntent'Variants)
-> Result Text -> Result SubscriptionPendingSetupIntent'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 SubscriptionPendingSetupIntent'Variants
-> Result SubscriptionPendingSetupIntent'Variants
-> Result SubscriptionPendingSetupIntent'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((SetupIntent -> SubscriptionPendingSetupIntent'Variants
SubscriptionPendingSetupIntent'SetupIntent (SetupIntent -> SubscriptionPendingSetupIntent'Variants)
-> Result SetupIntent
-> Result SubscriptionPendingSetupIntent'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result SetupIntent
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionPendingSetupIntent'Variants
-> Result SubscriptionPendingSetupIntent'Variants
-> Result SubscriptionPendingSetupIntent'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionPendingSetupIntent'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionPendingSetupIntent'Variants
a -> SubscriptionPendingSetupIntent'Variants
-> Parser SubscriptionPendingSetupIntent'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionPendingSetupIntent'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionPendingSetupIntent'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the object schema located at @components.schemas.subscription.properties.pending_update.anyOf@ in the specification.
--
-- If specified, [pending updates](https:\\\/\\\/stripe.com\\\/docs\\\/billing\\\/subscriptions\\\/pending-updates) that will be applied to the subscription once the \\\`latest_invoice\\\` has been paid.
data SubscriptionPendingUpdate' = SubscriptionPendingUpdate'
  { -- | billing_cycle_anchor: If the update is applied, determines the date of the first full invoice, and, for plans with \`month\` or \`year\` intervals, the day of the month for subsequent invoices.
    SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'BillingCycleAnchor :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | expires_at: The point after which the changes reflected by this update will be discarded and no longer applied.
    SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'ExpiresAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | subscription_items: List of subscription items, each with an attached plan, that will be set if the update is applied.
    SubscriptionPendingUpdate' -> Maybe [SubscriptionItem]
subscriptionPendingUpdate'SubscriptionItems :: (GHC.Maybe.Maybe ([SubscriptionItem])),
    -- | trial_end: Unix timestamp representing the end of the trial period the customer will get before being charged for the first time, if the update is applied.
    SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'TrialEnd :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | 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.
    SubscriptionPendingUpdate' -> Maybe Bool
subscriptionPendingUpdate'TrialFromPlan :: (GHC.Maybe.Maybe GHC.Types.Bool)
  }
  deriving
    ( Int -> SubscriptionPendingUpdate' -> ShowS
[SubscriptionPendingUpdate'] -> ShowS
SubscriptionPendingUpdate' -> String
(Int -> SubscriptionPendingUpdate' -> ShowS)
-> (SubscriptionPendingUpdate' -> String)
-> ([SubscriptionPendingUpdate'] -> ShowS)
-> Show SubscriptionPendingUpdate'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionPendingUpdate'] -> ShowS
$cshowList :: [SubscriptionPendingUpdate'] -> ShowS
show :: SubscriptionPendingUpdate' -> String
$cshow :: SubscriptionPendingUpdate' -> String
showsPrec :: Int -> SubscriptionPendingUpdate' -> ShowS
$cshowsPrec :: Int -> SubscriptionPendingUpdate' -> ShowS
GHC.Show.Show,
      SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool
(SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool)
-> (SubscriptionPendingUpdate'
    -> SubscriptionPendingUpdate' -> Bool)
-> Eq SubscriptionPendingUpdate'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool
$c/= :: SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool
== :: SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool
$c== :: SubscriptionPendingUpdate' -> SubscriptionPendingUpdate' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionPendingUpdate' where
  toJSON :: SubscriptionPendingUpdate' -> Value
toJSON SubscriptionPendingUpdate'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"billing_cycle_anchor" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'BillingCycleAnchor SubscriptionPendingUpdate'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"expires_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'ExpiresAt SubscriptionPendingUpdate'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"subscription_items" Text -> Maybe [SubscriptionItem] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe [SubscriptionItem]
subscriptionPendingUpdate'SubscriptionItems SubscriptionPendingUpdate'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"trial_end" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'TrialEnd SubscriptionPendingUpdate'
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..= SubscriptionPendingUpdate' -> Maybe Bool
subscriptionPendingUpdate'TrialFromPlan SubscriptionPendingUpdate'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionPendingUpdate' -> Encoding
toEncoding SubscriptionPendingUpdate'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"billing_cycle_anchor" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'BillingCycleAnchor SubscriptionPendingUpdate'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"expires_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'ExpiresAt SubscriptionPendingUpdate'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"subscription_items" Text -> Maybe [SubscriptionItem] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe [SubscriptionItem]
subscriptionPendingUpdate'SubscriptionItems SubscriptionPendingUpdate'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"trial_end" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionPendingUpdate' -> Maybe Int
subscriptionPendingUpdate'TrialEnd SubscriptionPendingUpdate'
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..= SubscriptionPendingUpdate' -> Maybe Bool
subscriptionPendingUpdate'TrialFromPlan SubscriptionPendingUpdate'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionPendingUpdate' where
  parseJSON :: Value -> Parser SubscriptionPendingUpdate'
parseJSON = String
-> (Object -> Parser SubscriptionPendingUpdate')
-> Value
-> Parser SubscriptionPendingUpdate'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionPendingUpdate'" (\Object
obj -> (((((Maybe Int
 -> Maybe Int
 -> Maybe [SubscriptionItem]
 -> Maybe Int
 -> Maybe Bool
 -> SubscriptionPendingUpdate')
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe [SubscriptionItem]
      -> Maybe Int
      -> Maybe Bool
      -> SubscriptionPendingUpdate')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Int
-> Maybe [SubscriptionItem]
-> Maybe Int
-> Maybe Bool
-> SubscriptionPendingUpdate'
SubscriptionPendingUpdate' Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe [SubscriptionItem]
   -> Maybe Int
   -> Maybe Bool
   -> SubscriptionPendingUpdate')
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe [SubscriptionItem]
      -> Maybe Int
      -> Maybe Bool
      -> SubscriptionPendingUpdate')
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 Int
   -> Maybe [SubscriptionItem]
   -> Maybe Int
   -> Maybe Bool
   -> SubscriptionPendingUpdate')
-> Parser (Maybe Int)
-> Parser
     (Maybe [SubscriptionItem]
      -> Maybe Int -> Maybe Bool -> SubscriptionPendingUpdate')
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
"expires_at")) Parser
  (Maybe [SubscriptionItem]
   -> Maybe Int -> Maybe Bool -> SubscriptionPendingUpdate')
-> Parser (Maybe [SubscriptionItem])
-> Parser (Maybe Int -> Maybe Bool -> SubscriptionPendingUpdate')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [SubscriptionItem])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"subscription_items")) Parser (Maybe Int -> Maybe Bool -> SubscriptionPendingUpdate')
-> Parser (Maybe Int)
-> Parser (Maybe Bool -> SubscriptionPendingUpdate')
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_end")) Parser (Maybe Bool -> SubscriptionPendingUpdate')
-> Parser (Maybe Bool) -> Parser SubscriptionPendingUpdate'
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"))

-- | Create a new 'SubscriptionPendingUpdate'' with all required fields.
mkSubscriptionPendingUpdate' :: SubscriptionPendingUpdate'
mkSubscriptionPendingUpdate' :: SubscriptionPendingUpdate'
mkSubscriptionPendingUpdate' =
  SubscriptionPendingUpdate' :: Maybe Int
-> Maybe Int
-> Maybe [SubscriptionItem]
-> Maybe Int
-> Maybe Bool
-> SubscriptionPendingUpdate'
SubscriptionPendingUpdate'
    { subscriptionPendingUpdate'BillingCycleAnchor :: Maybe Int
subscriptionPendingUpdate'BillingCycleAnchor = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingUpdate'ExpiresAt :: Maybe Int
subscriptionPendingUpdate'ExpiresAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingUpdate'SubscriptionItems :: Maybe [SubscriptionItem]
subscriptionPendingUpdate'SubscriptionItems = Maybe [SubscriptionItem]
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingUpdate'TrialEnd :: Maybe Int
subscriptionPendingUpdate'TrialEnd = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionPendingUpdate'TrialFromPlan :: Maybe Bool
subscriptionPendingUpdate'TrialFromPlan = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.schedule.anyOf@ in the specification.
--
-- The schedule attached to the subscription
data SubscriptionSchedule'Variants
  = SubscriptionSchedule'Text Data.Text.Internal.Text
  | SubscriptionSchedule'SubscriptionSchedule SubscriptionSchedule
  deriving (Int -> SubscriptionSchedule'Variants -> ShowS
[SubscriptionSchedule'Variants] -> ShowS
SubscriptionSchedule'Variants -> String
(Int -> SubscriptionSchedule'Variants -> ShowS)
-> (SubscriptionSchedule'Variants -> String)
-> ([SubscriptionSchedule'Variants] -> ShowS)
-> Show SubscriptionSchedule'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionSchedule'Variants] -> ShowS
$cshowList :: [SubscriptionSchedule'Variants] -> ShowS
show :: SubscriptionSchedule'Variants -> String
$cshow :: SubscriptionSchedule'Variants -> String
showsPrec :: Int -> SubscriptionSchedule'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionSchedule'Variants -> ShowS
GHC.Show.Show, SubscriptionSchedule'Variants
-> SubscriptionSchedule'Variants -> Bool
(SubscriptionSchedule'Variants
 -> SubscriptionSchedule'Variants -> Bool)
-> (SubscriptionSchedule'Variants
    -> SubscriptionSchedule'Variants -> Bool)
-> Eq SubscriptionSchedule'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionSchedule'Variants
-> SubscriptionSchedule'Variants -> Bool
$c/= :: SubscriptionSchedule'Variants
-> SubscriptionSchedule'Variants -> Bool
== :: SubscriptionSchedule'Variants
-> SubscriptionSchedule'Variants -> Bool
$c== :: SubscriptionSchedule'Variants
-> SubscriptionSchedule'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionSchedule'Variants where
  toJSON :: SubscriptionSchedule'Variants -> Value
toJSON (SubscriptionSchedule'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionSchedule'SubscriptionSchedule SubscriptionSchedule
a) = SubscriptionSchedule -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON SubscriptionSchedule
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionSchedule'Variants where
  parseJSON :: Value -> Parser SubscriptionSchedule'Variants
parseJSON Value
val = case (Text -> SubscriptionSchedule'Variants
SubscriptionSchedule'Text (Text -> SubscriptionSchedule'Variants)
-> Result Text -> Result SubscriptionSchedule'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 SubscriptionSchedule'Variants
-> Result SubscriptionSchedule'Variants
-> Result SubscriptionSchedule'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((SubscriptionSchedule -> SubscriptionSchedule'Variants
SubscriptionSchedule'SubscriptionSchedule (SubscriptionSchedule -> SubscriptionSchedule'Variants)
-> Result SubscriptionSchedule
-> Result SubscriptionSchedule'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result SubscriptionSchedule
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionSchedule'Variants
-> Result SubscriptionSchedule'Variants
-> Result SubscriptionSchedule'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionSchedule'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionSchedule'Variants
a -> SubscriptionSchedule'Variants
-> Parser SubscriptionSchedule'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionSchedule'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionSchedule'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @components.schemas.subscription.properties.status@ in the specification.
--
-- Possible values are \`incomplete\`, \`incomplete_expired\`, \`trialing\`, \`active\`, \`past_due\`, \`canceled\`, or \`unpaid\`.
--
-- For \`collection_method=charge_automatically\` a subscription moves into \`incomplete\` if the initial payment attempt fails. A subscription in this state can only have metadata and default_source updated. Once the first invoice is paid, the subscription moves into an \`active\` state. If the first invoice is not paid within 23 hours, the subscription transitions to \`incomplete_expired\`. This is a terminal state, the open invoice will be voided and no further invoices will be generated.
--
-- A subscription that is currently in a trial period is \`trialing\` and moves to \`active\` when the trial period is over.
--
-- If subscription \`collection_method=charge_automatically\` it becomes \`past_due\` when payment to renew it fails and \`canceled\` or \`unpaid\` (depending on your subscriptions settings) when Stripe has exhausted all payment retry attempts.
--
-- If subscription \`collection_method=send_invoice\` it becomes \`past_due\` when its invoice is not paid by the due date, and \`canceled\` or \`unpaid\` if it is still not paid by an additional deadline after that. Note that when a subscription has a status of \`unpaid\`, no subsequent invoices will be attempted (invoices will be created, but then immediately automatically closed). After receiving updated payment information from a customer, you may choose to reopen and pay their closed invoices.
data SubscriptionStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    SubscriptionStatus'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.
    SubscriptionStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"active"@
    SubscriptionStatus'EnumActive
  | -- | Represents the JSON value @"canceled"@
    SubscriptionStatus'EnumCanceled
  | -- | Represents the JSON value @"incomplete"@
    SubscriptionStatus'EnumIncomplete
  | -- | Represents the JSON value @"incomplete_expired"@
    SubscriptionStatus'EnumIncompleteExpired
  | -- | Represents the JSON value @"past_due"@
    SubscriptionStatus'EnumPastDue
  | -- | Represents the JSON value @"trialing"@
    SubscriptionStatus'EnumTrialing
  | -- | Represents the JSON value @"unpaid"@
    SubscriptionStatus'EnumUnpaid
  deriving (Int -> SubscriptionStatus' -> ShowS
[SubscriptionStatus'] -> ShowS
SubscriptionStatus' -> String
(Int -> SubscriptionStatus' -> ShowS)
-> (SubscriptionStatus' -> String)
-> ([SubscriptionStatus'] -> ShowS)
-> Show SubscriptionStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionStatus'] -> ShowS
$cshowList :: [SubscriptionStatus'] -> ShowS
show :: SubscriptionStatus' -> String
$cshow :: SubscriptionStatus' -> String
showsPrec :: Int -> SubscriptionStatus' -> ShowS
$cshowsPrec :: Int -> SubscriptionStatus' -> ShowS
GHC.Show.Show, SubscriptionStatus' -> SubscriptionStatus' -> Bool
(SubscriptionStatus' -> SubscriptionStatus' -> Bool)
-> (SubscriptionStatus' -> SubscriptionStatus' -> Bool)
-> Eq SubscriptionStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionStatus' -> SubscriptionStatus' -> Bool
$c/= :: SubscriptionStatus' -> SubscriptionStatus' -> Bool
== :: SubscriptionStatus' -> SubscriptionStatus' -> Bool
$c== :: SubscriptionStatus' -> SubscriptionStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionStatus' where
  toJSON :: SubscriptionStatus' -> Value
toJSON (SubscriptionStatus'Other Value
val) = Value
val
  toJSON (SubscriptionStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumActive) = Value
"active"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumCanceled) = Value
"canceled"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumIncomplete) = Value
"incomplete"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumIncompleteExpired) = Value
"incomplete_expired"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumPastDue) = Value
"past_due"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumTrialing) = Value
"trialing"
  toJSON (SubscriptionStatus'
SubscriptionStatus'EnumUnpaid) = Value
"unpaid"

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionStatus' where
  parseJSON :: Value -> Parser SubscriptionStatus'
parseJSON Value
val =
    SubscriptionStatus' -> Parser SubscriptionStatus'
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
"active" -> SubscriptionStatus'
SubscriptionStatus'EnumActive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"canceled" -> SubscriptionStatus'
SubscriptionStatus'EnumCanceled
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"incomplete" -> SubscriptionStatus'
SubscriptionStatus'EnumIncomplete
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"incomplete_expired" -> SubscriptionStatus'
SubscriptionStatus'EnumIncompleteExpired
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"past_due" -> SubscriptionStatus'
SubscriptionStatus'EnumPastDue
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"trialing" -> SubscriptionStatus'
SubscriptionStatus'EnumTrialing
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unpaid" -> SubscriptionStatus'
SubscriptionStatus'EnumUnpaid
            | Bool
GHC.Base.otherwise -> Value -> SubscriptionStatus'
SubscriptionStatus'Other Value
val
      )

-- | Defines the object schema located at @components.schemas.subscription.properties.transfer_data.anyOf@ in the specification.
--
-- The account (if any) the subscription\\\'s payments will be attributed to for tax reporting, and where funds from each payment will be transferred to for each of the subscription\\\'s invoices.
data SubscriptionTransferData' = SubscriptionTransferData'
  { -- | amount_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 destination account. By default, the entire amount is transferred to the destination.
    SubscriptionTransferData' -> Maybe Double
subscriptionTransferData'AmountPercent :: (GHC.Maybe.Maybe GHC.Types.Double),
    -- | destination: The account where funds from the payment will be transferred to upon payment success.
    SubscriptionTransferData'
-> Maybe SubscriptionTransferData'Destination'Variants
subscriptionTransferData'Destination :: (GHC.Maybe.Maybe SubscriptionTransferData'Destination'Variants)
  }
  deriving
    ( Int -> SubscriptionTransferData' -> ShowS
[SubscriptionTransferData'] -> ShowS
SubscriptionTransferData' -> String
(Int -> SubscriptionTransferData' -> ShowS)
-> (SubscriptionTransferData' -> String)
-> ([SubscriptionTransferData'] -> ShowS)
-> Show SubscriptionTransferData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionTransferData'] -> ShowS
$cshowList :: [SubscriptionTransferData'] -> ShowS
show :: SubscriptionTransferData' -> String
$cshow :: SubscriptionTransferData' -> String
showsPrec :: Int -> SubscriptionTransferData' -> ShowS
$cshowsPrec :: Int -> SubscriptionTransferData' -> ShowS
GHC.Show.Show,
      SubscriptionTransferData' -> SubscriptionTransferData' -> Bool
(SubscriptionTransferData' -> SubscriptionTransferData' -> Bool)
-> (SubscriptionTransferData' -> SubscriptionTransferData' -> Bool)
-> Eq SubscriptionTransferData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionTransferData' -> SubscriptionTransferData' -> Bool
$c/= :: SubscriptionTransferData' -> SubscriptionTransferData' -> Bool
== :: SubscriptionTransferData' -> SubscriptionTransferData' -> Bool
$c== :: SubscriptionTransferData' -> SubscriptionTransferData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionTransferData' where
  toJSON :: SubscriptionTransferData' -> Value
toJSON SubscriptionTransferData'
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..= SubscriptionTransferData' -> Maybe Double
subscriptionTransferData'AmountPercent SubscriptionTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"destination" Text -> Maybe SubscriptionTransferData'Destination'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionTransferData'
-> Maybe SubscriptionTransferData'Destination'Variants
subscriptionTransferData'Destination SubscriptionTransferData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: SubscriptionTransferData' -> Encoding
toEncoding SubscriptionTransferData'
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..= SubscriptionTransferData' -> Maybe Double
subscriptionTransferData'AmountPercent SubscriptionTransferData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"destination" Text
-> Maybe SubscriptionTransferData'Destination'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= SubscriptionTransferData'
-> Maybe SubscriptionTransferData'Destination'Variants
subscriptionTransferData'Destination SubscriptionTransferData'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionTransferData' where
  parseJSON :: Value -> Parser SubscriptionTransferData'
parseJSON = String
-> (Object -> Parser SubscriptionTransferData')
-> Value
-> Parser SubscriptionTransferData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"SubscriptionTransferData'" (\Object
obj -> ((Maybe Double
 -> Maybe SubscriptionTransferData'Destination'Variants
 -> SubscriptionTransferData')
-> Parser
     (Maybe Double
      -> Maybe SubscriptionTransferData'Destination'Variants
      -> SubscriptionTransferData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Double
-> Maybe SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'
SubscriptionTransferData' Parser
  (Maybe Double
   -> Maybe SubscriptionTransferData'Destination'Variants
   -> SubscriptionTransferData')
-> Parser (Maybe Double)
-> Parser
     (Maybe SubscriptionTransferData'Destination'Variants
      -> SubscriptionTransferData')
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
  (Maybe SubscriptionTransferData'Destination'Variants
   -> SubscriptionTransferData')
-> Parser (Maybe SubscriptionTransferData'Destination'Variants)
-> Parser SubscriptionTransferData'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe SubscriptionTransferData'Destination'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"destination"))

-- | Create a new 'SubscriptionTransferData'' with all required fields.
mkSubscriptionTransferData' :: SubscriptionTransferData'
mkSubscriptionTransferData' :: SubscriptionTransferData'
mkSubscriptionTransferData' =
  SubscriptionTransferData' :: Maybe Double
-> Maybe SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'
SubscriptionTransferData'
    { subscriptionTransferData'AmountPercent :: Maybe Double
subscriptionTransferData'AmountPercent = Maybe Double
forall a. Maybe a
GHC.Maybe.Nothing,
      subscriptionTransferData'Destination :: Maybe SubscriptionTransferData'Destination'Variants
subscriptionTransferData'Destination = Maybe SubscriptionTransferData'Destination'Variants
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.subscription.properties.transfer_data.anyOf.properties.destination.anyOf@ in the specification.
--
-- The account where funds from the payment will be transferred to upon payment success.
data SubscriptionTransferData'Destination'Variants
  = SubscriptionTransferData'Destination'Text Data.Text.Internal.Text
  | SubscriptionTransferData'Destination'Account Account
  deriving (Int -> SubscriptionTransferData'Destination'Variants -> ShowS
[SubscriptionTransferData'Destination'Variants] -> ShowS
SubscriptionTransferData'Destination'Variants -> String
(Int -> SubscriptionTransferData'Destination'Variants -> ShowS)
-> (SubscriptionTransferData'Destination'Variants -> String)
-> ([SubscriptionTransferData'Destination'Variants] -> ShowS)
-> Show SubscriptionTransferData'Destination'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SubscriptionTransferData'Destination'Variants] -> ShowS
$cshowList :: [SubscriptionTransferData'Destination'Variants] -> ShowS
show :: SubscriptionTransferData'Destination'Variants -> String
$cshow :: SubscriptionTransferData'Destination'Variants -> String
showsPrec :: Int -> SubscriptionTransferData'Destination'Variants -> ShowS
$cshowsPrec :: Int -> SubscriptionTransferData'Destination'Variants -> ShowS
GHC.Show.Show, SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'Destination'Variants -> Bool
(SubscriptionTransferData'Destination'Variants
 -> SubscriptionTransferData'Destination'Variants -> Bool)
-> (SubscriptionTransferData'Destination'Variants
    -> SubscriptionTransferData'Destination'Variants -> Bool)
-> Eq SubscriptionTransferData'Destination'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'Destination'Variants -> Bool
$c/= :: SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'Destination'Variants -> Bool
== :: SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'Destination'Variants -> Bool
$c== :: SubscriptionTransferData'Destination'Variants
-> SubscriptionTransferData'Destination'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionTransferData'Destination'Variants where
  toJSON :: SubscriptionTransferData'Destination'Variants -> Value
toJSON (SubscriptionTransferData'Destination'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (SubscriptionTransferData'Destination'Account Account
a) = Account -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Account
a

instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionTransferData'Destination'Variants where
  parseJSON :: Value -> Parser SubscriptionTransferData'Destination'Variants
parseJSON Value
val = case (Text -> SubscriptionTransferData'Destination'Variants
SubscriptionTransferData'Destination'Text (Text -> SubscriptionTransferData'Destination'Variants)
-> Result Text
-> Result SubscriptionTransferData'Destination'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 SubscriptionTransferData'Destination'Variants
-> Result SubscriptionTransferData'Destination'Variants
-> Result SubscriptionTransferData'Destination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Account -> SubscriptionTransferData'Destination'Variants
SubscriptionTransferData'Destination'Account (Account -> SubscriptionTransferData'Destination'Variants)
-> Result Account
-> Result SubscriptionTransferData'Destination'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Account
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result SubscriptionTransferData'Destination'Variants
-> Result SubscriptionTransferData'Destination'Variants
-> Result SubscriptionTransferData'Destination'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result SubscriptionTransferData'Destination'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success SubscriptionTransferData'Destination'Variants
a -> SubscriptionTransferData'Destination'Variants
-> Parser SubscriptionTransferData'Destination'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure SubscriptionTransferData'Destination'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser SubscriptionTransferData'Destination'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a