{-# 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 SubscriptionsResourcePaymentSettings module StripeAPI.Types.SubscriptionsResourcePaymentSettings 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.Foldable import qualified Data.Functor import qualified Data.Maybe 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.InvoiceMandateOptionsCard import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsAcssDebit import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsAcssDebitMandateOptions import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsBancontact import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsCustomerBalance import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsCustomerBalanceBankTransfer import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsUsBankAccount import {-# SOURCE #-} StripeAPI.Types.InvoicePaymentMethodOptionsUsBankAccountLinkedAccountOptions import {-# SOURCE #-} StripeAPI.Types.SubscriptionPaymentMethodOptionsCard import {-# SOURCE #-} StripeAPI.Types.SubscriptionsResourcePaymentMethodOptions import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings@ in the specification. data SubscriptionsResourcePaymentSettings = SubscriptionsResourcePaymentSettings { -- | payment_method_options: Payment-method-specific configuration to provide to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable)), -- | payment_method_types: The list of payment method types to provide to every invoice created by the subscription. If not set, Stripe attempts to automatically determine the types to use by looking at the invoice’s default payment method, the subscription’s default payment method, the customer’s default payment method, and your [invoice template settings](https:\/\/dashboard.stripe.com\/settings\/billing\/invoice). subscriptionsResourcePaymentSettingsPaymentMethodTypes :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable ([SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullable]))), -- | save_default_payment_method: Either \`off\`, or \`on_subscription\`. With \`on_subscription\` Stripe updates \`subscription.default_payment_method\` when a subscription payment succeeds. subscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullable)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettings where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("payment_method_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("payment_method_types" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodTypes obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("save_default_payment_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("payment_method_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("payment_method_types" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodTypes obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("save_default_payment_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettings where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettings" (\obj -> ((GHC.Base.pure SubscriptionsResourcePaymentSettings GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "payment_method_options")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "payment_method_types")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "save_default_payment_method")) -- | Create a new 'SubscriptionsResourcePaymentSettings' with all required fields. mkSubscriptionsResourcePaymentSettings :: SubscriptionsResourcePaymentSettings mkSubscriptionsResourcePaymentSettings = SubscriptionsResourcePaymentSettings { subscriptionsResourcePaymentSettingsPaymentMethodOptions = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodTypes = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf@ in the specification. -- -- Payment-method-specific configuration to provide to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable { -- | acss_debit: This sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable)), -- | bancontact: This sub-hash contains details about the Bancontact payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable)), -- | card: This sub-hash contains details about the Card payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable)), -- | customer_balance: This sub-hash contains details about the Bank transfer payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable)), -- | konbini: This sub-hash contains details about the Konbini payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableKonbini :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable Data.Aeson.Types.Internal.Object)), -- | us_bank_account: This sub-hash contains details about the ACH direct debit payment method options to pass to invoices created by the subscription. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("acss_debit" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("bancontact" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("card" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("customer_balance" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("konbini" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableKonbini obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("us_bank_account" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("acss_debit" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("bancontact" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("card" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("customer_balance" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("konbini" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableKonbini obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("us_bank_account" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable" (\obj -> (((((GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "acss_debit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "bancontact")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "customer_balance")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "konbini")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "us_bank_account")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullable { subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableKonbini = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.acss_debit.anyOf@ in the specification. -- -- This sub-hash contains details about the Canadian pre-authorized debit payment method options to pass to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable { -- | mandate_options: subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableMandateOptions :: (GHC.Maybe.Maybe InvoicePaymentMethodOptionsAcssDebitMandateOptions), -- | verification_method: Bank account verification method. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod :: (GHC.Maybe.Maybe SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod') } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("mandate_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableMandateOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("verification_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("mandate_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableMandateOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("verification_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable" (\obj -> (GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "mandate_options")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "verification_method")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullable { subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableMandateOptions = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod = GHC.Maybe.Nothing } -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.acss_debit.anyOf.properties.verification_method@ in the specification. -- -- Bank account verification method. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod' = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'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. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'Typed Data.Text.Internal.Text | -- | Represents the JSON value @"automatic"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumAutomatic | -- | Represents the JSON value @"instant"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumInstant | -- | Represents the JSON value @"microdeposits"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumMicrodeposits deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod' where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'Other val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumAutomatic) = "automatic" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumInstant) = "instant" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumMicrodeposits) = "microdeposits" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "automatic" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumAutomatic | val GHC.Classes.== "instant" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumInstant | val GHC.Classes.== "microdeposits" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'EnumMicrodeposits | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableAcssDebit'NonNullableVerificationMethod'Other val ) -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.bancontact.anyOf@ in the specification. -- -- This sub-hash contains details about the Bancontact payment method options to pass to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable { -- | preferred_language: Preferred language of the Bancontact authorization page that the customer is redirected to. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage :: (GHC.Maybe.Maybe SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage') } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("preferred_language" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("preferred_language" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable" (\obj -> GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "preferred_language")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullable {subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage = GHC.Maybe.Nothing} -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.bancontact.anyOf.properties.preferred_language@ in the specification. -- -- Preferred language of the Bancontact authorization page that the customer is redirected to. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage' = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'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. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'Typed Data.Text.Internal.Text | -- | Represents the JSON value @"de"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumDe | -- | Represents the JSON value @"en"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumEn | -- | Represents the JSON value @"fr"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumFr | -- | Represents the JSON value @"nl"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumNl deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage' where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'Other val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumDe) = "de" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumEn) = "en" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumFr) = "fr" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumNl) = "nl" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "de" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumDe | val GHC.Classes.== "en" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumEn | val GHC.Classes.== "fr" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumFr | val GHC.Classes.== "nl" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'EnumNl | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableBancontact'NonNullablePreferredLanguage'Other val ) -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.card.anyOf@ in the specification. -- -- This sub-hash contains details about the Card payment method options to pass to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable { -- | mandate_options: subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableMandateOptions :: (GHC.Maybe.Maybe InvoiceMandateOptionsCard), -- | request_three_d_secure: We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https:\/\/stripe.com\/docs\/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https:\/\/stripe.com\/docs\/payments\/3d-secure\#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullable)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("mandate_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableMandateOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("request_three_d_secure" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("mandate_options" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableMandateOptions obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("request_three_d_secure" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable" (\obj -> (GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "mandate_options")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "request_three_d_secure")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullable { subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableMandateOptions = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure = GHC.Maybe.Nothing } -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.card.anyOf.properties.request_three_d_secure@ in the specification. -- -- We strongly recommend that you rely on our SCA Engine to automatically prompt your customers for authentication based on risk level and [other requirements](https:\/\/stripe.com\/docs\/strong-customer-authentication). However, if you wish to request 3D Secure based on logic from your own fraud engine, provide this option. Read our guide on [manually requesting 3D Secure](https:\/\/stripe.com\/docs\/payments\/3d-secure\#manual-three-ds) for more information on how this configuration interacts with Radar and our SCA Engine. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullable = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableOther Data.Aeson.Types.Internal.Value | -- | This constructor can be used to send values to the server which are not present in the specification yet. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableTyped Data.Text.Internal.Text | -- | Represents the JSON value @"any"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAny | -- | Represents the JSON value @"automatic"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAutomatic deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullable where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableOther val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableTyped val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAny) = "any" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAutomatic) = "automatic" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullable where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "any" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAny | val GHC.Classes.== "automatic" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableEnumAutomatic | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCard'NonNullableRequestThreeDSecure'NonNullableOther val ) -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.customer_balance.anyOf@ in the specification. -- -- This sub-hash contains details about the Bank transfer payment method options to pass to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable { -- | bank_transfer: subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableBankTransfer :: (GHC.Maybe.Maybe InvoicePaymentMethodOptionsCustomerBalanceBankTransfer), -- | funding_type: The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: \`bank_transfer\`. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullable)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("bank_transfer" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableBankTransfer obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("funding_type" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("bank_transfer" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableBankTransfer obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("funding_type" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable" (\obj -> (GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "bank_transfer")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "funding_type")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullable { subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableBankTransfer = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType = GHC.Maybe.Nothing } -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.customer_balance.anyOf.properties.funding_type@ in the specification. -- -- The funding method type to be used when there are not enough funds in the customer balance. Permitted values include: \`bank_transfer\`. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullable = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableOther Data.Aeson.Types.Internal.Value | -- | This constructor can be used to send values to the server which are not present in the specification yet. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableTyped Data.Text.Internal.Text | -- | Represents the JSON value @"bank_transfer"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableEnumBankTransfer deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullable where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableOther val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableTyped val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableEnumBankTransfer) = "bank_transfer" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullable where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "bank_transfer" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableEnumBankTransfer | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableCustomerBalance'NonNullableFundingType'NonNullableOther val ) -- | Defines the object schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.us_bank_account.anyOf@ in the specification. -- -- This sub-hash contains details about the ACH direct debit payment method options to pass to invoices created by the subscription. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable { -- | financial_connections: subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableFinancialConnections :: (GHC.Maybe.Maybe InvoicePaymentMethodOptionsUsBankAccountLinkedAccountOptions), -- | verification_method: Bank account verification method. subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod :: (GHC.Maybe.Maybe SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod') } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("financial_connections" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableFinancialConnections obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("verification_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("financial_connections" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableFinancialConnections obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("verification_method" Data.Aeson.Types.ToJSON..=)) (subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable" (\obj -> (GHC.Base.pure SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "financial_connections")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "verification_method")) -- | Create a new 'SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable' with all required fields. mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable :: SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable mkSubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable = SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullable { subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableFinancialConnections = GHC.Maybe.Nothing, subscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod = GHC.Maybe.Nothing } -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_options.anyOf.properties.us_bank_account.anyOf.properties.verification_method@ in the specification. -- -- Bank account verification method. data SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod' = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'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. SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'Typed Data.Text.Internal.Text | -- | Represents the JSON value @"automatic"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumAutomatic | -- | Represents the JSON value @"instant"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumInstant | -- | Represents the JSON value @"microdeposits"@ SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumMicrodeposits deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod' where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'Other val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumAutomatic) = "automatic" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumInstant) = "instant" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumMicrodeposits) = "microdeposits" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "automatic" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumAutomatic | val GHC.Classes.== "instant" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumInstant | val GHC.Classes.== "microdeposits" -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'EnumMicrodeposits | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodOptions'NonNullableUsBankAccount'NonNullableVerificationMethod'Other val ) -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.payment_method_types.items@ in the specification. data SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullable = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableOther Data.Aeson.Types.Internal.Value | -- | This constructor can be used to send values to the server which are not present in the specification yet. SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableTyped Data.Text.Internal.Text | -- | Represents the JSON value @"ach_credit_transfer"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchCreditTransfer | -- | Represents the JSON value @"ach_debit"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchDebit | -- | Represents the JSON value @"acss_debit"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAcssDebit | -- | Represents the JSON value @"au_becs_debit"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAuBecsDebit | -- | Represents the JSON value @"bacs_debit"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBacsDebit | -- | Represents the JSON value @"bancontact"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBancontact | -- | Represents the JSON value @"boleto"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBoleto | -- | Represents the JSON value @"card"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCard | -- | Represents the JSON value @"customer_balance"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCustomerBalance | -- | Represents the JSON value @"fpx"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumFpx | -- | Represents the JSON value @"giropay"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGiropay | -- | Represents the JSON value @"grabpay"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGrabpay | -- | Represents the JSON value @"ideal"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumIdeal | -- | Represents the JSON value @"konbini"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumKonbini | -- | Represents the JSON value @"link"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumLink | -- | Represents the JSON value @"paynow"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPaynow | -- | Represents the JSON value @"promptpay"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPromptpay | -- | Represents the JSON value @"sepa_debit"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSepaDebit | -- | Represents the JSON value @"sofort"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSofort | -- | Represents the JSON value @"us_bank_account"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumUsBankAccount | -- | Represents the JSON value @"wechat_pay"@ SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumWechatPay deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullable where toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableOther val) = val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableTyped val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchCreditTransfer) = "ach_credit_transfer" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchDebit) = "ach_debit" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAcssDebit) = "acss_debit" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAuBecsDebit) = "au_becs_debit" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBacsDebit) = "bacs_debit" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBancontact) = "bancontact" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBoleto) = "boleto" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCard) = "card" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCustomerBalance) = "customer_balance" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumFpx) = "fpx" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGiropay) = "giropay" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGrabpay) = "grabpay" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumIdeal) = "ideal" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumKonbini) = "konbini" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumLink) = "link" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPaynow) = "paynow" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPromptpay) = "promptpay" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSepaDebit) = "sepa_debit" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSofort) = "sofort" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumUsBankAccount) = "us_bank_account" toJSON (SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumWechatPay) = "wechat_pay" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullable where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "ach_credit_transfer" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchCreditTransfer | val GHC.Classes.== "ach_debit" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAchDebit | val GHC.Classes.== "acss_debit" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAcssDebit | val GHC.Classes.== "au_becs_debit" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumAuBecsDebit | val GHC.Classes.== "bacs_debit" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBacsDebit | val GHC.Classes.== "bancontact" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBancontact | val GHC.Classes.== "boleto" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumBoleto | val GHC.Classes.== "card" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCard | val GHC.Classes.== "customer_balance" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumCustomerBalance | val GHC.Classes.== "fpx" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumFpx | val GHC.Classes.== "giropay" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGiropay | val GHC.Classes.== "grabpay" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumGrabpay | val GHC.Classes.== "ideal" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumIdeal | val GHC.Classes.== "konbini" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumKonbini | val GHC.Classes.== "link" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumLink | val GHC.Classes.== "paynow" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPaynow | val GHC.Classes.== "promptpay" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumPromptpay | val GHC.Classes.== "sepa_debit" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSepaDebit | val GHC.Classes.== "sofort" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumSofort | val GHC.Classes.== "us_bank_account" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumUsBankAccount | val GHC.Classes.== "wechat_pay" -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableEnumWechatPay | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsPaymentMethodTypes'NonNullableOther val ) -- | Defines the enum schema located at @components.schemas.subscriptions_resource_payment_settings.properties.save_default_payment_method@ in the specification. -- -- Either \`off\`, or \`on_subscription\`. With \`on_subscription\` Stripe updates \`subscription.default_payment_method\` when a subscription payment succeeds. data SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullable = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableOther Data.Aeson.Types.Internal.Value | -- | This constructor can be used to send values to the server which are not present in the specification yet. SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableTyped Data.Text.Internal.Text | -- | Represents the JSON value @"off"@ SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOff | -- | Represents the JSON value @"on_subscription"@ SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOnSubscription deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullable where toJSON (SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableOther val) = val toJSON (SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableTyped val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOff) = "off" toJSON (SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOnSubscription) = "on_subscription" instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullable where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "off" -> SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOff | val GHC.Classes.== "on_subscription" -> SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableEnumOnSubscription | GHC.Base.otherwise -> SubscriptionsResourcePaymentSettingsSaveDefaultPaymentMethod'NonNullableOther val )