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

-- | Contains the different functions to run the operation postSetupIntentsIntentConfirm
module StripeAPI.Operations.PostSetupIntentsIntentConfirm where

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

-- | > POST /v1/setup_intents/{intent}/confirm
--
-- \<p>Confirm that your customer intends to set up the current or
-- provided payment method. For example, you would confirm a SetupIntent
-- when a customer hits the “Save” button on a payment method management
-- page on your website.\<\/p>
--
-- \<p>If the selected payment method does not require any additional
-- steps from the customer, the SetupIntent will transition to the
-- \<code>succeeded\<\/code> status.\<\/p>
--
-- \<p>Otherwise, it will transition to the \<code>requires_action\<\/code> status and
-- suggest additional actions via \<code>next_action\<\/code>. If setup fails,
-- the SetupIntent will transition to the
-- \<code>requires_payment_method\<\/code> status.\<\/p>
postSetupIntentsIntentConfirm ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | intent | Constraints: Maximum length of 5000
  Data.Text.Internal.Text ->
  -- | The request body to send
  GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBody ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.ClientT m (Network.HTTP.Client.Types.Response PostSetupIntentsIntentConfirmResponse)
postSetupIntentsIntentConfirm :: Text
-> Maybe PostSetupIntentsIntentConfirmRequestBody
-> ClientT m (Response PostSetupIntentsIntentConfirmResponse)
postSetupIntentsIntentConfirm
  Text
intent
  Maybe PostSetupIntentsIntentConfirmRequestBody
body =
    (Response ByteString
 -> Response PostSetupIntentsIntentConfirmResponse)
-> ClientT m (Response ByteString)
-> ClientT m (Response PostSetupIntentsIntentConfirmResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
      ( \Response ByteString
response_0 ->
          (ByteString -> PostSetupIntentsIntentConfirmResponse)
-> Response ByteString
-> Response PostSetupIntentsIntentConfirmResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
            ( (String -> PostSetupIntentsIntentConfirmResponse)
-> (PostSetupIntentsIntentConfirmResponse
    -> PostSetupIntentsIntentConfirmResponse)
-> Either String PostSetupIntentsIntentConfirmResponse
-> PostSetupIntentsIntentConfirmResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> PostSetupIntentsIntentConfirmResponse
PostSetupIntentsIntentConfirmResponseError PostSetupIntentsIntentConfirmResponse
-> PostSetupIntentsIntentConfirmResponse
forall a. a -> a
GHC.Base.id
                (Either String PostSetupIntentsIntentConfirmResponse
 -> PostSetupIntentsIntentConfirmResponse)
-> (ByteString
    -> Either String PostSetupIntentsIntentConfirmResponse)
-> ByteString
-> PostSetupIntentsIntentConfirmResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. ( \Response ByteString
response ByteString
body ->
                               if
                                   | (\Status
status_1 -> Status -> Int
Network.HTTP.Types.Status.statusCode Status
status_1 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Int
200) (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                     SetupIntent -> PostSetupIntentsIntentConfirmResponse
PostSetupIntentsIntentConfirmResponse200
                                       (SetupIntent -> PostSetupIntentsIntentConfirmResponse)
-> Either String SetupIntent
-> Either String PostSetupIntentsIntentConfirmResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String SetupIntent
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                            Data.Either.Either
                                                              GHC.Base.String
                                                              SetupIntent
                                                        )
                                   | Bool -> Status -> Bool
forall a b. a -> b -> a
GHC.Base.const Bool
GHC.Types.True (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                     Error -> PostSetupIntentsIntentConfirmResponse
PostSetupIntentsIntentConfirmResponseDefault
                                       (Error -> PostSetupIntentsIntentConfirmResponse)
-> Either String Error
-> Either String PostSetupIntentsIntentConfirmResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Error
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                            Data.Either.Either
                                                              GHC.Base.String
                                                              Error
                                                        )
                                   | Bool
GHC.Base.otherwise -> String -> Either String PostSetupIntentsIntentConfirmResponse
forall a b. a -> Either a b
Data.Either.Left String
"Missing default response type"
                           )
                  Response ByteString
response_0
            )
            Response ByteString
response_0
      )
      (Text
-> Text
-> [QueryParameter]
-> Maybe PostSetupIntentsIntentConfirmRequestBody
-> RequestBodyEncoding
-> ClientT m (Response ByteString)
forall (m :: * -> *) body.
(MonadHTTP m, ToJSON body) =>
Text
-> Text
-> [QueryParameter]
-> Maybe body
-> RequestBodyEncoding
-> ClientT m (Response ByteString)
StripeAPI.Common.doBodyCallWithConfigurationM (Text -> Text
Data.Text.toUpper (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
GHC.Base.$ String -> Text
Data.Text.pack String
"POST") (String -> Text
Data.Text.pack (String
"/v1/setup_intents/" String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ (ByteString -> String
Data.ByteString.Char8.unpack (Bool -> ByteString -> ByteString
Network.HTTP.Types.URI.urlEncode Bool
GHC.Types.True (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ (String -> ByteString
Data.ByteString.Char8.pack (String -> ByteString) -> String -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ Text -> String
forall a. StringifyModel a => a -> String
StripeAPI.Common.stringifyModel Text
intent)) String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ String
"/confirm"))) [QueryParameter]
forall a. Monoid a => a
GHC.Base.mempty Maybe PostSetupIntentsIntentConfirmRequestBody
body RequestBodyEncoding
StripeAPI.Common.RequestBodyEncodingFormData)

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema@ in the specification.
data PostSetupIntentsIntentConfirmRequestBody = PostSetupIntentsIntentConfirmRequestBody
  { -- | client_secret: The client secret of the SetupIntent.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyClientSecret :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | expand: Specifies which fields in the response should be expanded.
    PostSetupIntentsIntentConfirmRequestBody -> Maybe [Text]
postSetupIntentsIntentConfirmRequestBodyExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | mandate_data: This hash contains details about the Mandate to create
    PostSetupIntentsIntentConfirmRequestBody
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
postSetupIntentsIntentConfirmRequestBodyMandateData :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'),
    -- | payment_method: ID of the payment method (a PaymentMethod, Card, or saved Source object) to attach to this SetupIntent.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | payment_method_options: Payment-method-specific configuration for this SetupIntent.
    PostSetupIntentsIntentConfirmRequestBody
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'),
    -- | return_url: The URL to redirect your customer back to after they authenticate on the payment method\'s app or site.
    -- If you\'d prefer to redirect to a mobile application, you can alternatively supply an application URI scheme.
    -- This parameter is only used for cards and other redirect-based payment methods.
    PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyReturnUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PostSetupIntentsIntentConfirmRequestBody -> String -> String
[PostSetupIntentsIntentConfirmRequestBody] -> String -> String
PostSetupIntentsIntentConfirmRequestBody -> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBody -> String -> String)
-> (PostSetupIntentsIntentConfirmRequestBody -> String)
-> ([PostSetupIntentsIntentConfirmRequestBody] -> String -> String)
-> Show PostSetupIntentsIntentConfirmRequestBody
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBody] -> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBody] -> String -> String
show :: PostSetupIntentsIntentConfirmRequestBody -> String
$cshow :: PostSetupIntentsIntentConfirmRequestBody -> String
showsPrec :: Int -> PostSetupIntentsIntentConfirmRequestBody -> String -> String
$cshowsPrec :: Int -> PostSetupIntentsIntentConfirmRequestBody -> String -> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBody
-> PostSetupIntentsIntentConfirmRequestBody -> Bool
(PostSetupIntentsIntentConfirmRequestBody
 -> PostSetupIntentsIntentConfirmRequestBody -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBody
    -> PostSetupIntentsIntentConfirmRequestBody -> Bool)
-> Eq PostSetupIntentsIntentConfirmRequestBody
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBody
-> PostSetupIntentsIntentConfirmRequestBody -> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBody
-> PostSetupIntentsIntentConfirmRequestBody -> Bool
== :: PostSetupIntentsIntentConfirmRequestBody
-> PostSetupIntentsIntentConfirmRequestBody -> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBody
-> PostSetupIntentsIntentConfirmRequestBody -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBody where
  toJSON :: PostSetupIntentsIntentConfirmRequestBody -> Value
toJSON PostSetupIntentsIntentConfirmRequestBody
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"client_secret" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyClientSecret PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"expand" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe [Text]
postSetupIntentsIntentConfirmRequestBodyExpand PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"mandate_data" Text
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
postSetupIntentsIntentConfirmRequestBodyMandateData PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethod PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method_options" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"return_url" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyReturnUrl PostSetupIntentsIntentConfirmRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBody -> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBody
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"client_secret" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyClientSecret PostSetupIntentsIntentConfirmRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"expand" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe [Text]
postSetupIntentsIntentConfirmRequestBodyExpand PostSetupIntentsIntentConfirmRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"mandate_data" Text
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
postSetupIntentsIntentConfirmRequestBodyMandateData PostSetupIntentsIntentConfirmRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethod PostSetupIntentsIntentConfirmRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method_options" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions PostSetupIntentsIntentConfirmRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"return_url" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBody -> Maybe Text
postSetupIntentsIntentConfirmRequestBodyReturnUrl PostSetupIntentsIntentConfirmRequestBody
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBody where
  parseJSON :: Value -> Parser PostSetupIntentsIntentConfirmRequestBody
parseJSON = String
-> (Object -> Parser PostSetupIntentsIntentConfirmRequestBody)
-> Value
-> Parser PostSetupIntentsIntentConfirmRequestBody
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBody" (\Object
obj -> ((((((Maybe Text
 -> Maybe [Text]
 -> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
 -> Maybe Text
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
 -> Maybe Text
 -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
      -> Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
      -> Maybe Text
      -> PostSetupIntentsIntentConfirmRequestBody)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe [Text]
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Maybe Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe Text
-> PostSetupIntentsIntentConfirmRequestBody
PostSetupIntentsIntentConfirmRequestBody Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
   -> Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
   -> Maybe Text
   -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
      -> Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
      -> Maybe Text
      -> PostSetupIntentsIntentConfirmRequestBody)
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
"client_secret")) Parser
  (Maybe [Text]
   -> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
   -> Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
   -> Maybe Text
   -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
      -> Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
      -> Maybe Text
      -> PostSetupIntentsIntentConfirmRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [Text])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"expand")) Parser
  (Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
   -> Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
   -> Maybe Text
   -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser
     (Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData')
-> Parser
     (Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
      -> Maybe Text
      -> PostSetupIntentsIntentConfirmRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"mandate_data")) Parser
  (Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
   -> Maybe Text
   -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
      -> Maybe Text -> PostSetupIntentsIntentConfirmRequestBody)
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
"payment_method")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
   -> Maybe Text -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Parser (Maybe Text -> PostSetupIntentsIntentConfirmRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_method_options")) Parser (Maybe Text -> PostSetupIntentsIntentConfirmRequestBody)
-> Parser (Maybe Text)
-> Parser PostSetupIntentsIntentConfirmRequestBody
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
"return_url"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBody' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBody :: PostSetupIntentsIntentConfirmRequestBody
mkPostSetupIntentsIntentConfirmRequestBody :: PostSetupIntentsIntentConfirmRequestBody
mkPostSetupIntentsIntentConfirmRequestBody =
  PostSetupIntentsIntentConfirmRequestBody :: Maybe Text
-> Maybe [Text]
-> Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Maybe Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe Text
-> PostSetupIntentsIntentConfirmRequestBody
PostSetupIntentsIntentConfirmRequestBody
    { postSetupIntentsIntentConfirmRequestBodyClientSecret :: Maybe Text
postSetupIntentsIntentConfirmRequestBodyClientSecret = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyExpand :: Maybe [Text]
postSetupIntentsIntentConfirmRequestBodyExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyMandateData :: Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
postSetupIntentsIntentConfirmRequestBodyMandateData = Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethod :: Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions :: Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions = Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyReturnUrl :: Maybe Text
postSetupIntentsIntentConfirmRequestBodyReturnUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.mandate_data.anyOf@ in the specification.
--
-- This hash contains details about the Mandate to create
data PostSetupIntentsIntentConfirmRequestBodyMandateData' = PostSetupIntentsIntentConfirmRequestBodyMandateData'
  { -- | customer_acceptance
    PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyMandateData']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyMandateData' -> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData' -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyMandateData']
    -> String -> String)
-> Show PostSetupIntentsIntentConfirmRequestBodyMandateData'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyMandateData' -> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyMandateData' -> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool
(PostSetupIntentsIntentConfirmRequestBodyMandateData'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'
    -> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool)
-> Eq PostSetupIntentsIntentConfirmRequestBodyMandateData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyMandateData' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"customer_acceptance" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance PostSetupIntentsIntentConfirmRequestBodyMandateData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyMandateData' -> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyMandateData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"customer_acceptance" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance PostSetupIntentsIntentConfirmRequestBodyMandateData'
obj)

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

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyMandateData'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyMandateData' :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData' :: PostSetupIntentsIntentConfirmRequestBodyMandateData'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData' = PostSetupIntentsIntentConfirmRequestBodyMandateData' :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'
PostSetupIntentsIntentConfirmRequestBodyMandateData' {postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance = Maybe
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
forall a. Maybe a
GHC.Maybe.Nothing}

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.mandate_data.anyOf.properties.customer_acceptance@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' = PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
  { -- | accepted_at
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Int
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'AcceptedAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | offline
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Offline :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | online
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'),
    -- | type
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
    -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"accepted_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Int
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'AcceptedAt PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"offline" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Offline PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"online" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"accepted_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Int
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'AcceptedAt PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"offline" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Offline PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"online" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"type" Text
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'" (\Object
obj -> ((((Maybe Int
 -> Maybe Object
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Parser
     (Maybe Int
      -> Maybe Object
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Object
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' Parser
  (Maybe Int
   -> Maybe Object
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Parser (Maybe Int)
-> Parser
     (Maybe Object
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
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
"accepted_at")) Parser
  (Maybe Object
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Parser (Maybe Object)
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"offline")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser
     (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"online")) Parser
  (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance')
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"type"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' ::
  -- | 'postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type' ->
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type =
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance' :: Maybe Int
-> Maybe Object
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'
    { postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'AcceptedAt :: Maybe Int
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'AcceptedAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Offline :: Maybe Object
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Offline = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online = Maybe
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type = PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type
    }

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.mandate_data.anyOf.properties.customer_acceptance.properties.online@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' = PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
  { -- | ip_address
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress :: Data.Text.Internal.Text,
    -- | user_agent
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent :: Data.Text.Internal.Text
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
    -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"ip_address" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"user_agent" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"ip_address" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"user_agent" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
-> Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'" (\Object
obj -> ((Text
 -> Text
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser
     (Text
      -> Text
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Text
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' Parser
  (Text
   -> Text
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser Text
-> Parser
     (Text
      -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
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
"ip_address")) Parser
  (Text
   -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser Text
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
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
"user_agent"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' ::
  -- | 'postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress'
  Data.Text.Internal.Text ->
  -- | 'postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent'
  Data.Text.Internal.Text ->
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' :: Text
-> Text
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
mkPostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent =
  PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online' :: Text
-> Text
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'
    { postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress :: Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress = Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'IpAddress,
      postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent :: Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent = Text
postSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Online'UserAgent
    }

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.mandate_data.anyOf.properties.customer_acceptance.properties.type@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'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.
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"offline"@
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOffline
  | -- | Represents the JSON value @"online"@
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOnline
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
 -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
    -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOffline) = Value
"offline"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOnline) = Value
"online"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
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
"offline" -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOffline
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"online" -> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'EnumOnline
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'
PostSetupIntentsIntentConfirmRequestBodyMandateData'CustomerAcceptance'Type'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options@ in the specification.
--
-- Payment-method-specific configuration for this SetupIntent.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
  { -- | acss_debit
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'),
    -- | card
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'),
    -- | sepa_debit
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit')
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
    -> Bool)
-> Eq PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"acss_debit" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sepa_debit" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"acss_debit" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"sepa_debit" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'" (\Object
obj -> (((Maybe
   PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"acss_debit")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit')
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sepa_debit"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' =
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions' :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'
    { postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
  { -- | currency
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'),
    -- | mandate_options
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'),
    -- | verification_method
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod')
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"currency" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"mandate_options" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"verification_method" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"currency" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"mandate_options" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"verification_method" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
obj)))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'" (\Object
obj -> (((Maybe
   PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"currency")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"mandate_options")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod')
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"verification_method"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' =
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit' :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'
    { postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.currency@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'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.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"cad"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumCad
  | -- | Represents the JSON value @"usd"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumUsd
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumCad) = Value
"cad"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumUsd) = Value
"usd"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
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
"cad" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumCad
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"usd" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'EnumUsd
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'Currency'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.mandate_options@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
  { -- | custom_mandate_url
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants),
    -- | interval_description
    --
    -- Constraints:
    --
    -- * Maximum length of 500
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'IntervalDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | payment_schedule
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'),
    -- | transaction_type
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType')
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"custom_mandate_url" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"interval_description" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'IntervalDescription PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_schedule" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transaction_type" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"custom_mandate_url" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"interval_description" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'IntervalDescription PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_schedule" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"transaction_type" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'" (\Object
obj -> ((((Maybe
   PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> Maybe Text
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> Maybe
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
      -> Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Maybe Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
   -> Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants)
-> Parser
     (Maybe Text
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"custom_mandate_url")) Parser
  (Maybe Text
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser (Maybe Text)
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
      -> Maybe
           PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
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
"interval_description")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
   -> Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
      -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_schedule")) Parser
  (Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
   -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions')
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType')
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"transaction_type"))

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' =
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions' :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Maybe Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'
    { postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'IntervalDescription :: Maybe Text
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'IntervalDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.mandate_options.properties.custom_mandate_url.anyOf@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
  = -- | Represents the JSON value @""@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'EmptyString
  | PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Text Data.Text.Internal.Text
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'EmptyString
        | Bool
GHC.Base.otherwise -> case (Text
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Text (Text
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants)
-> Result Text
-> Result
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'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
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Result
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Result
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
a -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.mandate_options.properties.payment_schedule@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'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.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"combined"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumCombined
  | -- | Represents the JSON value @"interval"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumInterval
  | -- | Represents the JSON value @"sporadic"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumSporadic
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumCombined) = Value
"combined"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumInterval) = Value
"interval"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumSporadic) = Value
"sporadic"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
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
"combined" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumCombined
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"interval" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumInterval
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"sporadic" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumSporadic
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'Other Value
val
      )

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.mandate_options.properties.transaction_type@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'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.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"business"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumBusiness
  | -- | Represents the JSON value @"personal"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumPersonal
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumBusiness) = Value
"business"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumPersonal) = Value
"personal"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
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
"business" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumBusiness
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"personal" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumPersonal
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'Other Value
val
      )

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.acss_debit.properties.verification_method@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'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.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"automatic"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumAutomatic
  | -- | Represents the JSON value @"instant"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumInstant
  | -- | Represents the JSON value @"microdeposits"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumMicrodeposits
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumAutomatic) = Value
"automatic"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumInstant) = Value
"instant"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumMicrodeposits) = Value
"microdeposits"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
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
"automatic" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumAutomatic
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"instant" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumInstant
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"microdeposits" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'EnumMicrodeposits
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'AcssDebit'VerificationMethod'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.card@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
  { -- | request_three_d_secure
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure :: (GHC.Maybe.Maybe PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure')
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"request_three_d_secure" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"request_three_d_secure" Text
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
-> Maybe
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
obj)

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

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card' {postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure :: Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure = Maybe
  PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
forall a. Maybe a
GHC.Maybe.Nothing}

-- | Defines the enum schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.card.properties.request_three_d_secure@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'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.
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"any"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAny
  | -- | Represents the JSON value @"automatic"@
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAutomatic
  deriving (Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> String
-> String
GHC.Show.Show, PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Value
toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'Other Value
val) = Value
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAny) = Value
"any"
  toJSON (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAutomatic) = Value
"automatic"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
parseJSON Value
val =
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> Parser
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
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
"any" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAny
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"automatic" -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'EnumAutomatic
            | Bool
GHC.Base.otherwise -> Value
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'Other Value
val
      )

-- | Defines the object schema located at @paths.\/v1\/setup_intents\/{intent}\/confirm.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.payment_method_options.properties.sepa_debit@ in the specification.
data PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
  { -- | mandate_options
    PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object)
  }
  deriving
    ( Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
-> String
[PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit']
-> String -> String
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
(Int
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
 -> String
 -> String)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
    -> String)
-> ([PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit']
    -> String -> String)
-> Show
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit']
-> String -> String
$cshowList :: [PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit']
-> String -> String
show :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
$cshow :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
showsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
-> String
$cshowsPrec :: Int
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> String
-> String
GHC.Show.Show,
      PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Bool
(PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
 -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
 -> Bool)
-> (PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
    -> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
    -> Bool)
-> Eq
     PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Bool
$c/= :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Bool
== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Bool
$c== :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' where
  toJSON :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Value
toJSON PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"mandate_options" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Encoding
toEncoding PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"mandate_options" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
-> Maybe Object
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
obj)

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

-- | Create a new 'PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'' with all required fields.
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' :: PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
mkPostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' = PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' :: Maybe Object
-> PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'
PostSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit' {postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions :: Maybe Object
postSetupIntentsIntentConfirmRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing}

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