{-# 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 PaymentMethodCard module StripeAPI.Types.PaymentMethodCard 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.CardGeneratedFromPaymentMethodDetails import {-# SOURCE #-} StripeAPI.Types.Networks import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCardChecks import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCardGeneratedCard import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCardWallet import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCardWalletMasterpass import {-# SOURCE #-} StripeAPI.Types.PaymentMethodCardWalletVisaCheckout import {-# SOURCE #-} StripeAPI.Types.PaymentMethodDetailsCardPresent import {-# SOURCE #-} StripeAPI.Types.SetupAttempt import {-# SOURCE #-} StripeAPI.Types.ThreeDSecureUsage import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | Defines the object schema located at @components.schemas.payment_method_card@ in the specification. data PaymentMethodCard = PaymentMethodCard { -- | brand: Card brand. Can be \`amex\`, \`diners\`, \`discover\`, \`jcb\`, \`mastercard\`, \`unionpay\`, \`visa\`, or \`unknown\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardBrand :: Data.Text.Internal.Text, -- | checks: Checks on Card address and CVC if provided. paymentMethodCardChecks :: (GHC.Maybe.Maybe PaymentMethodCardChecks'), -- | country: Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you\'ve collected. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | exp_month: Two-digit number representing the card\'s expiration month. paymentMethodCardExpMonth :: GHC.Types.Int, -- | exp_year: Four-digit number representing the card\'s expiration year. paymentMethodCardExpYear :: GHC.Types.Int, -- | fingerprint: Uniquely identifies this particular card number. You can use this attribute to check whether two customers who’ve signed up with you are using the same card number, for example. For payment methods that tokenize card information (Apple Pay, Google Pay), the tokenized number might be provided instead of the underlying card number. -- -- *Starting May 1, 2021, card fingerprint in India for Connect will change to allow two fingerprints for the same card --- one for India and one for the rest of the world.* -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardFingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardFunding :: Data.Text.Internal.Text, -- | generated_from: Details of the original PaymentMethod that created this object. paymentMethodCardGeneratedFrom :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedFrom'), -- | last4: The last four digits of the card. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardLast4 :: Data.Text.Internal.Text, -- | networks: Contains information about card networks that can be used to process the payment. paymentMethodCardNetworks :: (GHC.Maybe.Maybe PaymentMethodCardNetworks'), -- | three_d_secure_usage: Contains details on how this Card maybe be used for 3D Secure authentication. paymentMethodCardThreeDSecureUsage :: (GHC.Maybe.Maybe PaymentMethodCardThreeDSecureUsage'), -- | wallet: If this Card is part of a card wallet, this contains the details of the card wallet. paymentMethodCardWallet :: (GHC.Maybe.Maybe PaymentMethodCardWallet') } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCard where toJSON obj = Data.Aeson.Types.Internal.object ("brand" Data.Aeson.Types.ToJSON..= paymentMethodCardBrand obj : "checks" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks obj : "country" Data.Aeson.Types.ToJSON..= paymentMethodCardCountry obj : "exp_month" Data.Aeson.Types.ToJSON..= paymentMethodCardExpMonth obj : "exp_year" Data.Aeson.Types.ToJSON..= paymentMethodCardExpYear obj : "fingerprint" Data.Aeson.Types.ToJSON..= paymentMethodCardFingerprint obj : "funding" Data.Aeson.Types.ToJSON..= paymentMethodCardFunding obj : "generated_from" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom obj : "last4" Data.Aeson.Types.ToJSON..= paymentMethodCardLast4 obj : "networks" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks obj : "three_d_secure_usage" Data.Aeson.Types.ToJSON..= paymentMethodCardThreeDSecureUsage obj : "wallet" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("brand" Data.Aeson.Types.ToJSON..= paymentMethodCardBrand obj) GHC.Base.<> (("checks" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks obj) GHC.Base.<> (("country" Data.Aeson.Types.ToJSON..= paymentMethodCardCountry obj) GHC.Base.<> (("exp_month" Data.Aeson.Types.ToJSON..= paymentMethodCardExpMonth obj) GHC.Base.<> (("exp_year" Data.Aeson.Types.ToJSON..= paymentMethodCardExpYear obj) GHC.Base.<> (("fingerprint" Data.Aeson.Types.ToJSON..= paymentMethodCardFingerprint obj) GHC.Base.<> (("funding" Data.Aeson.Types.ToJSON..= paymentMethodCardFunding obj) GHC.Base.<> (("generated_from" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom obj) GHC.Base.<> (("last4" Data.Aeson.Types.ToJSON..= paymentMethodCardLast4 obj) GHC.Base.<> (("networks" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks obj) GHC.Base.<> (("three_d_secure_usage" Data.Aeson.Types.ToJSON..= paymentMethodCardThreeDSecureUsage obj) GHC.Base.<> ("wallet" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet obj)))))))))))) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCard where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCard" (\obj -> (((((((((((GHC.Base.pure PaymentMethodCard GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "brand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "checks")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "country")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_month")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "exp_year")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fingerprint")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "funding")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "generated_from")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "networks")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "three_d_secure_usage")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "wallet")) -- | Create a new 'PaymentMethodCard' with all required fields. mkPaymentMethodCard :: -- | 'paymentMethodCardBrand' Data.Text.Internal.Text -> -- | 'paymentMethodCardExpMonth' GHC.Types.Int -> -- | 'paymentMethodCardExpYear' GHC.Types.Int -> -- | 'paymentMethodCardFunding' Data.Text.Internal.Text -> -- | 'paymentMethodCardLast4' Data.Text.Internal.Text -> PaymentMethodCard mkPaymentMethodCard paymentMethodCardBrand paymentMethodCardExpMonth paymentMethodCardExpYear paymentMethodCardFunding paymentMethodCardLast4 = PaymentMethodCard { paymentMethodCardBrand = paymentMethodCardBrand, paymentMethodCardChecks = GHC.Maybe.Nothing, paymentMethodCardCountry = GHC.Maybe.Nothing, paymentMethodCardExpMonth = paymentMethodCardExpMonth, paymentMethodCardExpYear = paymentMethodCardExpYear, paymentMethodCardFingerprint = GHC.Maybe.Nothing, paymentMethodCardFunding = paymentMethodCardFunding, paymentMethodCardGeneratedFrom = GHC.Maybe.Nothing, paymentMethodCardLast4 = paymentMethodCardLast4, paymentMethodCardNetworks = GHC.Maybe.Nothing, paymentMethodCardThreeDSecureUsage = GHC.Maybe.Nothing, paymentMethodCardWallet = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.payment_method_card.properties.checks.anyOf@ in the specification. -- -- Checks on Card address and CVC if provided. data PaymentMethodCardChecks' = PaymentMethodCardChecks' { -- | address_line1_check: If a address line1 was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardChecks'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | address_postal_code_check: If a address postal code was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardChecks'AddressPostalCodeCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | cvc_check: If a CVC was provided, results of the check, one of \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardChecks'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardChecks' where toJSON obj = Data.Aeson.Types.Internal.object ("address_line1_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'AddressLine1Check obj : "address_postal_code_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'AddressPostalCodeCheck obj : "cvc_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'CvcCheck obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("address_line1_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'AddressLine1Check obj) GHC.Base.<> (("address_postal_code_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'AddressPostalCodeCheck obj) GHC.Base.<> ("cvc_check" Data.Aeson.Types.ToJSON..= paymentMethodCardChecks'CvcCheck obj))) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardChecks' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardChecks'" (\obj -> ((GHC.Base.pure PaymentMethodCardChecks' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_line1_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "address_postal_code_check")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cvc_check")) -- | Create a new 'PaymentMethodCardChecks'' with all required fields. mkPaymentMethodCardChecks' :: PaymentMethodCardChecks' mkPaymentMethodCardChecks' = PaymentMethodCardChecks' { paymentMethodCardChecks'AddressLine1Check = GHC.Maybe.Nothing, paymentMethodCardChecks'AddressPostalCodeCheck = GHC.Maybe.Nothing, paymentMethodCardChecks'CvcCheck = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.payment_method_card.properties.generated_from.anyOf@ in the specification. -- -- Details of the original PaymentMethod that created this object. data PaymentMethodCardGeneratedFrom' = PaymentMethodCardGeneratedFrom' { -- | charge: The charge that created this object. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardGeneratedFrom'Charge :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | payment_method_details: Transaction-specific details of the payment method used in the payment. paymentMethodCardGeneratedFrom'PaymentMethodDetails :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedFrom'PaymentMethodDetails'), -- | setup_attempt: The ID of the SetupAttempt that generated this PaymentMethod, if any. paymentMethodCardGeneratedFrom'SetupAttempt :: (GHC.Maybe.Maybe PaymentMethodCardGeneratedFrom'SetupAttempt'Variants) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardGeneratedFrom' where toJSON obj = Data.Aeson.Types.Internal.object ("charge" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'Charge obj : "payment_method_details" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails obj : "setup_attempt" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'SetupAttempt obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("charge" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'Charge obj) GHC.Base.<> (("payment_method_details" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails obj) GHC.Base.<> ("setup_attempt" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'SetupAttempt obj))) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedFrom' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedFrom'" (\obj -> ((GHC.Base.pure PaymentMethodCardGeneratedFrom' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "charge")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "payment_method_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "setup_attempt")) -- | Create a new 'PaymentMethodCardGeneratedFrom'' with all required fields. mkPaymentMethodCardGeneratedFrom' :: PaymentMethodCardGeneratedFrom' mkPaymentMethodCardGeneratedFrom' = PaymentMethodCardGeneratedFrom' { paymentMethodCardGeneratedFrom'Charge = GHC.Maybe.Nothing, paymentMethodCardGeneratedFrom'PaymentMethodDetails = GHC.Maybe.Nothing, paymentMethodCardGeneratedFrom'SetupAttempt = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.payment_method_card.properties.generated_from.anyOf.properties.payment_method_details.anyOf@ in the specification. -- -- Transaction-specific details of the payment method used in the payment. data PaymentMethodCardGeneratedFrom'PaymentMethodDetails' = PaymentMethodCardGeneratedFrom'PaymentMethodDetails' { -- | card_present: paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent :: (GHC.Maybe.Maybe PaymentMethodDetailsCardPresent), -- | type: The type of payment method transaction-specific details from the transaction that generated this \`card\` payment method. Always \`card_present\`. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardGeneratedFrom'PaymentMethodDetails' where toJSON obj = Data.Aeson.Types.Internal.object ("card_present" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent obj : "type" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("card_present" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent obj) GHC.Base.<> ("type" Data.Aeson.Types.ToJSON..= paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type obj)) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedFrom'PaymentMethodDetails' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardGeneratedFrom'PaymentMethodDetails'" (\obj -> (GHC.Base.pure PaymentMethodCardGeneratedFrom'PaymentMethodDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "card_present")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) -- | Create a new 'PaymentMethodCardGeneratedFrom'PaymentMethodDetails'' with all required fields. mkPaymentMethodCardGeneratedFrom'PaymentMethodDetails' :: PaymentMethodCardGeneratedFrom'PaymentMethodDetails' mkPaymentMethodCardGeneratedFrom'PaymentMethodDetails' = PaymentMethodCardGeneratedFrom'PaymentMethodDetails' { paymentMethodCardGeneratedFrom'PaymentMethodDetails'CardPresent = GHC.Maybe.Nothing, paymentMethodCardGeneratedFrom'PaymentMethodDetails'Type = GHC.Maybe.Nothing } -- | Defines the oneOf schema located at @components.schemas.payment_method_card.properties.generated_from.anyOf.properties.setup_attempt.anyOf@ in the specification. -- -- The ID of the SetupAttempt that generated this PaymentMethod, if any. data PaymentMethodCardGeneratedFrom'SetupAttempt'Variants = PaymentMethodCardGeneratedFrom'SetupAttempt'Text Data.Text.Internal.Text | PaymentMethodCardGeneratedFrom'SetupAttempt'SetupAttempt SetupAttempt deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardGeneratedFrom'SetupAttempt'Variants where toJSON (PaymentMethodCardGeneratedFrom'SetupAttempt'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (PaymentMethodCardGeneratedFrom'SetupAttempt'SetupAttempt a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardGeneratedFrom'SetupAttempt'Variants where parseJSON val = case (PaymentMethodCardGeneratedFrom'SetupAttempt'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((PaymentMethodCardGeneratedFrom'SetupAttempt'SetupAttempt Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a -- | Defines the object schema located at @components.schemas.payment_method_card.properties.networks.anyOf@ in the specification. -- -- Contains information about card networks that can be used to process the payment. data PaymentMethodCardNetworks' = PaymentMethodCardNetworks' { -- | available: All available networks for the card. paymentMethodCardNetworks'Available :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])), -- | preferred: The preferred network for the card. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardNetworks'Preferred :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardNetworks' where toJSON obj = Data.Aeson.Types.Internal.object ("available" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks'Available obj : "preferred" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks'Preferred obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("available" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks'Available obj) GHC.Base.<> ("preferred" Data.Aeson.Types.ToJSON..= paymentMethodCardNetworks'Preferred obj)) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardNetworks' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardNetworks'" (\obj -> (GHC.Base.pure PaymentMethodCardNetworks' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "available")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "preferred")) -- | Create a new 'PaymentMethodCardNetworks'' with all required fields. mkPaymentMethodCardNetworks' :: PaymentMethodCardNetworks' mkPaymentMethodCardNetworks' = PaymentMethodCardNetworks' { paymentMethodCardNetworks'Available = GHC.Maybe.Nothing, paymentMethodCardNetworks'Preferred = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.payment_method_card.properties.three_d_secure_usage.anyOf@ in the specification. -- -- Contains details on how this Card maybe be used for 3D Secure authentication. data PaymentMethodCardThreeDSecureUsage' = PaymentMethodCardThreeDSecureUsage' { -- | supported: Whether 3D Secure is supported on this card. paymentMethodCardThreeDSecureUsage'Supported :: (GHC.Maybe.Maybe GHC.Types.Bool) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardThreeDSecureUsage' where toJSON obj = Data.Aeson.Types.Internal.object ("supported" Data.Aeson.Types.ToJSON..= paymentMethodCardThreeDSecureUsage'Supported obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs ("supported" Data.Aeson.Types.ToJSON..= paymentMethodCardThreeDSecureUsage'Supported obj) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardThreeDSecureUsage' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardThreeDSecureUsage'" (\obj -> GHC.Base.pure PaymentMethodCardThreeDSecureUsage' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "supported")) -- | Create a new 'PaymentMethodCardThreeDSecureUsage'' with all required fields. mkPaymentMethodCardThreeDSecureUsage' :: PaymentMethodCardThreeDSecureUsage' mkPaymentMethodCardThreeDSecureUsage' = PaymentMethodCardThreeDSecureUsage' {paymentMethodCardThreeDSecureUsage'Supported = GHC.Maybe.Nothing} -- | Defines the object schema located at @components.schemas.payment_method_card.properties.wallet.anyOf@ in the specification. -- -- If this Card is part of a card wallet, this contains the details of the card wallet. data PaymentMethodCardWallet' = PaymentMethodCardWallet' { -- | amex_express_checkout: paymentMethodCardWallet'AmexExpressCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletAmexExpressCheckout), -- | apple_pay: paymentMethodCardWallet'ApplePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletApplePay), -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number. -- -- Constraints: -- -- * Maximum length of 5000 paymentMethodCardWallet'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | google_pay: paymentMethodCardWallet'GooglePay :: (GHC.Maybe.Maybe PaymentMethodCardWalletGooglePay), -- | masterpass: paymentMethodCardWallet'Masterpass :: (GHC.Maybe.Maybe PaymentMethodCardWalletMasterpass), -- | samsung_pay: paymentMethodCardWallet'SamsungPay :: (GHC.Maybe.Maybe PaymentMethodCardWalletSamsungPay), -- | type: The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type. paymentMethodCardWallet'Type :: (GHC.Maybe.Maybe PaymentMethodCardWallet'Type'), -- | visa_checkout: paymentMethodCardWallet'VisaCheckout :: (GHC.Maybe.Maybe PaymentMethodCardWalletVisaCheckout) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardWallet' where toJSON obj = Data.Aeson.Types.Internal.object ("amex_express_checkout" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'AmexExpressCheckout obj : "apple_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'ApplePay obj : "dynamic_last4" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'DynamicLast4 obj : "google_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'GooglePay obj : "masterpass" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'Masterpass obj : "samsung_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'SamsungPay obj : "type" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'Type obj : "visa_checkout" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'VisaCheckout obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("amex_express_checkout" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'AmexExpressCheckout obj) GHC.Base.<> (("apple_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'ApplePay obj) GHC.Base.<> (("dynamic_last4" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'DynamicLast4 obj) GHC.Base.<> (("google_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'GooglePay obj) GHC.Base.<> (("masterpass" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'Masterpass obj) GHC.Base.<> (("samsung_pay" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'SamsungPay obj) GHC.Base.<> (("type" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'Type obj) GHC.Base.<> ("visa_checkout" Data.Aeson.Types.ToJSON..= paymentMethodCardWallet'VisaCheckout obj)))))))) instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWallet' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PaymentMethodCardWallet'" (\obj -> (((((((GHC.Base.pure PaymentMethodCardWallet' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amex_express_checkout")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "apple_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "dynamic_last4")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "google_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "masterpass")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "samsung_pay")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "visa_checkout")) -- | Create a new 'PaymentMethodCardWallet'' with all required fields. mkPaymentMethodCardWallet' :: PaymentMethodCardWallet' mkPaymentMethodCardWallet' = PaymentMethodCardWallet' { paymentMethodCardWallet'AmexExpressCheckout = GHC.Maybe.Nothing, paymentMethodCardWallet'ApplePay = GHC.Maybe.Nothing, paymentMethodCardWallet'DynamicLast4 = GHC.Maybe.Nothing, paymentMethodCardWallet'GooglePay = GHC.Maybe.Nothing, paymentMethodCardWallet'Masterpass = GHC.Maybe.Nothing, paymentMethodCardWallet'SamsungPay = GHC.Maybe.Nothing, paymentMethodCardWallet'Type = GHC.Maybe.Nothing, paymentMethodCardWallet'VisaCheckout = GHC.Maybe.Nothing } -- | Defines the enum schema located at @components.schemas.payment_method_card.properties.wallet.anyOf.properties.type@ in the specification. -- -- The type of the card wallet, one of \`amex_express_checkout\`, \`apple_pay\`, \`google_pay\`, \`masterpass\`, \`samsung_pay\`, or \`visa_checkout\`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type. data PaymentMethodCardWallet'Type' = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. PaymentMethodCardWallet'Type'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. PaymentMethodCardWallet'Type'Typed Data.Text.Internal.Text | -- | Represents the JSON value @"amex_express_checkout"@ PaymentMethodCardWallet'Type'EnumAmexExpressCheckout | -- | Represents the JSON value @"apple_pay"@ PaymentMethodCardWallet'Type'EnumApplePay | -- | Represents the JSON value @"google_pay"@ PaymentMethodCardWallet'Type'EnumGooglePay | -- | Represents the JSON value @"masterpass"@ PaymentMethodCardWallet'Type'EnumMasterpass | -- | Represents the JSON value @"samsung_pay"@ PaymentMethodCardWallet'Type'EnumSamsungPay | -- | Represents the JSON value @"visa_checkout"@ PaymentMethodCardWallet'Type'EnumVisaCheckout deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PaymentMethodCardWallet'Type' where toJSON (PaymentMethodCardWallet'Type'Other val) = val toJSON (PaymentMethodCardWallet'Type'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (PaymentMethodCardWallet'Type'EnumAmexExpressCheckout) = "amex_express_checkout" toJSON (PaymentMethodCardWallet'Type'EnumApplePay) = "apple_pay" toJSON (PaymentMethodCardWallet'Type'EnumGooglePay) = "google_pay" toJSON (PaymentMethodCardWallet'Type'EnumMasterpass) = "masterpass" toJSON (PaymentMethodCardWallet'Type'EnumSamsungPay) = "samsung_pay" toJSON (PaymentMethodCardWallet'Type'EnumVisaCheckout) = "visa_checkout" instance Data.Aeson.Types.FromJSON.FromJSON PaymentMethodCardWallet'Type' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "amex_express_checkout" -> PaymentMethodCardWallet'Type'EnumAmexExpressCheckout | val GHC.Classes.== "apple_pay" -> PaymentMethodCardWallet'Type'EnumApplePay | val GHC.Classes.== "google_pay" -> PaymentMethodCardWallet'Type'EnumGooglePay | val GHC.Classes.== "masterpass" -> PaymentMethodCardWallet'Type'EnumMasterpass | val GHC.Classes.== "samsung_pay" -> PaymentMethodCardWallet'Type'EnumSamsungPay | val GHC.Classes.== "visa_checkout" -> PaymentMethodCardWallet'Type'EnumVisaCheckout | GHC.Base.otherwise -> PaymentMethodCardWallet'Type'Other val )