{-# 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 postSetupIntents
module StripeAPI.Operations.PostSetupIntents 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
--
-- \<p>Creates a SetupIntent object.\<\/p>
--
-- \<p>After the SetupIntent is created, attach a payment method and \<a href=\"\/docs\/api\/setup_intents\/confirm\">confirm\<\/a>
-- to collect any required permissions to charge the payment method later.\<\/p>
postSetupIntents ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | The request body to send
  GHC.Maybe.Maybe PostSetupIntentsRequestBody ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.ClientT m (Network.HTTP.Client.Types.Response PostSetupIntentsResponse)
postSetupIntents :: Maybe PostSetupIntentsRequestBody
-> ClientT m (Response PostSetupIntentsResponse)
postSetupIntents Maybe PostSetupIntentsRequestBody
body =
  (Response ByteString -> Response PostSetupIntentsResponse)
-> ClientT m (Response ByteString)
-> ClientT m (Response PostSetupIntentsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
    ( \Response ByteString
response_0 ->
        (ByteString -> PostSetupIntentsResponse)
-> Response ByteString -> Response PostSetupIntentsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
          ( (String -> PostSetupIntentsResponse)
-> (PostSetupIntentsResponse -> PostSetupIntentsResponse)
-> Either String PostSetupIntentsResponse
-> PostSetupIntentsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> PostSetupIntentsResponse
PostSetupIntentsResponseError PostSetupIntentsResponse -> PostSetupIntentsResponse
forall a. a -> a
GHC.Base.id
              (Either String PostSetupIntentsResponse
 -> PostSetupIntentsResponse)
-> (ByteString -> Either String PostSetupIntentsResponse)
-> ByteString
-> PostSetupIntentsResponse
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 -> PostSetupIntentsResponse
PostSetupIntentsResponse200
                                     (SetupIntent -> PostSetupIntentsResponse)
-> Either String SetupIntent
-> Either String PostSetupIntentsResponse
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 -> PostSetupIntentsResponse
PostSetupIntentsResponseDefault
                                     (Error -> PostSetupIntentsResponse)
-> Either String Error -> Either String PostSetupIntentsResponse
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 PostSetupIntentsResponse
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 PostSetupIntentsRequestBody
-> 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") [QueryParameter]
forall a. Monoid a => a
GHC.Base.mempty Maybe PostSetupIntentsRequestBody
body RequestBodyEncoding
StripeAPI.Common.RequestBodyEncodingFormData)

-- | Defines the object schema located at @paths.\/v1\/setup_intents.POST.requestBody.content.application\/x-www-form-urlencoded.schema@ in the specification.
data PostSetupIntentsRequestBody = PostSetupIntentsRequestBody
  { -- | confirm: Set to \`true\` to attempt to confirm this SetupIntent immediately. This parameter defaults to \`false\`. If the payment method attached is a card, a return_url may be provided in case additional authentication is required.
    PostSetupIntentsRequestBody -> Maybe Bool
postSetupIntentsRequestBodyConfirm :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | customer: ID of the Customer this SetupIntent belongs to, if one exists.
    --
    -- If present, the SetupIntent\'s payment method will be attached to the Customer on successful setup. Payment methods attached to other Customers cannot be used with this SetupIntent.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyCustomer :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | description: An arbitrary string attached to the object. Often useful for displaying to users.
    --
    -- Constraints:
    --
    -- * Maximum length of 1000
    PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | expand: Specifies which fields in the response should be expanded.
    PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | mandate_data: This hash contains details about the Mandate to create. This parameter can only be used with [\`confirm=true\`](https:\/\/stripe.com\/docs\/api\/setup_intents\/create\#create_setup_intent-confirm).
    PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyMandateData'
postSetupIntentsRequestBodyMandateData :: (GHC.Maybe.Maybe PostSetupIntentsRequestBodyMandateData'),
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to \`metadata\`.
    PostSetupIntentsRequestBody -> Maybe Object
postSetupIntentsRequestBodyMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | on_behalf_of: The Stripe account ID for which this SetupIntent is created.
    PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyOnBehalfOf :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | payment_method: ID of the payment method (a PaymentMethod, Card, or saved Source object) to attach to this SetupIntent.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyPaymentMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | payment_method_options: Payment-method-specific configuration for this SetupIntent.
    PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
postSetupIntentsRequestBodyPaymentMethodOptions :: (GHC.Maybe.Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'),
    -- | payment_method_types: The list of payment method types (e.g. card) that this SetupIntent is allowed to use. If this is not provided, defaults to [\"card\"].
    PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyPaymentMethodTypes :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | return_url: The URL to redirect your customer back to after they authenticate or cancel their payment 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 can only be used with [\`confirm=true\`](https:\/\/stripe.com\/docs\/api\/setup_intents\/create\#create_setup_intent-confirm).
    PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyReturnUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | single_use: If this hash is populated, this SetupIntent will generate a single_use Mandate on success.
    PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodySingleUse'
postSetupIntentsRequestBodySingleUse :: (GHC.Maybe.Maybe PostSetupIntentsRequestBodySingleUse'),
    -- | usage: Indicates how the payment method is intended to be used in the future. If not provided, this value defaults to \`off_session\`.
    PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyUsage'
postSetupIntentsRequestBodyUsage :: (GHC.Maybe.Maybe PostSetupIntentsRequestBodyUsage')
  }
  deriving
    ( Int -> PostSetupIntentsRequestBody -> ShowS
[PostSetupIntentsRequestBody] -> ShowS
PostSetupIntentsRequestBody -> String
(Int -> PostSetupIntentsRequestBody -> ShowS)
-> (PostSetupIntentsRequestBody -> String)
-> ([PostSetupIntentsRequestBody] -> ShowS)
-> Show PostSetupIntentsRequestBody
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBody] -> ShowS
$cshowList :: [PostSetupIntentsRequestBody] -> ShowS
show :: PostSetupIntentsRequestBody -> String
$cshow :: PostSetupIntentsRequestBody -> String
showsPrec :: Int -> PostSetupIntentsRequestBody -> ShowS
$cshowsPrec :: Int -> PostSetupIntentsRequestBody -> ShowS
GHC.Show.Show,
      PostSetupIntentsRequestBody -> PostSetupIntentsRequestBody -> Bool
(PostSetupIntentsRequestBody
 -> PostSetupIntentsRequestBody -> Bool)
-> (PostSetupIntentsRequestBody
    -> PostSetupIntentsRequestBody -> Bool)
-> Eq PostSetupIntentsRequestBody
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBody -> PostSetupIntentsRequestBody -> Bool
$c/= :: PostSetupIntentsRequestBody -> PostSetupIntentsRequestBody -> Bool
== :: PostSetupIntentsRequestBody -> PostSetupIntentsRequestBody -> Bool
$c== :: PostSetupIntentsRequestBody -> PostSetupIntentsRequestBody -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBody where
  toJSON :: PostSetupIntentsRequestBody -> Value
toJSON PostSetupIntentsRequestBody
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"confirm" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Bool
postSetupIntentsRequestBodyConfirm PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyCustomer PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"description" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyDescription PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyExpand PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"mandate_data" Text -> Maybe PostSetupIntentsRequestBodyMandateData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyMandateData'
postSetupIntentsRequestBodyMandateData PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Object
postSetupIntentsRequestBodyMetadata PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"on_behalf_of" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyOnBehalfOf PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyPaymentMethod PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method_options" Text
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
postSetupIntentsRequestBodyPaymentMethodOptions PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payment_method_types" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyPaymentMethodTypes PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyReturnUrl PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"single_use" Text -> Maybe PostSetupIntentsRequestBodySingleUse' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodySingleUse'
postSetupIntentsRequestBodySingleUse PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"usage" Text -> Maybe PostSetupIntentsRequestBodyUsage' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyUsage'
postSetupIntentsRequestBodyUsage PostSetupIntentsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsRequestBody -> Encoding
toEncoding PostSetupIntentsRequestBody
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"confirm" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Bool
postSetupIntentsRequestBodyConfirm PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyCustomer PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"description" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyDescription PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyExpand PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"mandate_data" Text -> Maybe PostSetupIntentsRequestBodyMandateData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyMandateData'
postSetupIntentsRequestBodyMandateData PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Object
postSetupIntentsRequestBodyMetadata PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"on_behalf_of" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyOnBehalfOf PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyPaymentMethod PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method_options" Text
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
postSetupIntentsRequestBodyPaymentMethodOptions PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payment_method_types" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody -> Maybe [Text]
postSetupIntentsRequestBodyPaymentMethodTypes PostSetupIntentsRequestBody
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..= PostSetupIntentsRequestBody -> Maybe Text
postSetupIntentsRequestBodyReturnUrl PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"single_use" Text -> Maybe PostSetupIntentsRequestBodySingleUse' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodySingleUse'
postSetupIntentsRequestBodySingleUse PostSetupIntentsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"usage" Text -> Maybe PostSetupIntentsRequestBodyUsage' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBody
-> Maybe PostSetupIntentsRequestBodyUsage'
postSetupIntentsRequestBodyUsage PostSetupIntentsRequestBody
obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsRequestBody where
  parseJSON :: Value -> Parser PostSetupIntentsRequestBody
parseJSON = String
-> (Object -> Parser PostSetupIntentsRequestBody)
-> Value
-> Parser PostSetupIntentsRequestBody
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsRequestBody" (\Object
obj -> (((((((((((((Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe PostSetupIntentsRequestBodyMandateData'
 -> Maybe Object
 -> Maybe Text
 -> Maybe Text
 -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe PostSetupIntentsRequestBodySingleUse'
 -> Maybe PostSetupIntentsRequestBodyUsage'
 -> PostSetupIntentsRequestBody)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe PostSetupIntentsRequestBodyMandateData'
      -> Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe PostSetupIntentsRequestBodyMandateData'
-> Maybe Object
-> Maybe Text
-> Maybe Text
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
-> Maybe [Text]
-> Maybe Text
-> Maybe PostSetupIntentsRequestBodySingleUse'
-> Maybe PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBody
PostSetupIntentsRequestBody Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe PostSetupIntentsRequestBodyMandateData'
   -> Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe PostSetupIntentsRequestBodyMandateData'
      -> Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"confirm")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe PostSetupIntentsRequestBodyMandateData'
   -> Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe PostSetupIntentsRequestBodyMandateData'
      -> Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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
"customer")) Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe PostSetupIntentsRequestBodyMandateData'
   -> Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe PostSetupIntentsRequestBodyMandateData'
      -> Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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
"description")) Parser
  (Maybe [Text]
   -> Maybe PostSetupIntentsRequestBodyMandateData'
   -> Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe PostSetupIntentsRequestBodyMandateData'
      -> Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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 PostSetupIntentsRequestBodyMandateData'
   -> Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe PostSetupIntentsRequestBodyMandateData')
-> Parser
     (Maybe Object
      -> Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PostSetupIntentsRequestBodyMandateData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"mandate_data")) Parser
  (Maybe Object
   -> Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Object)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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
"on_behalf_of")) Parser
  (Maybe Text
   -> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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 PostSetupIntentsRequestBodyPaymentMethodOptions'
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe PostSetupIntentsRequestBodyPaymentMethodOptions')
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostSetupIntentsRequestBodyPaymentMethodOptions')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payment_method_options")) Parser
  (Maybe [Text]
   -> Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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_types")) Parser
  (Maybe Text
   -> Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostSetupIntentsRequestBodySingleUse'
      -> Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
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")) Parser
  (Maybe PostSetupIntentsRequestBodySingleUse'
   -> Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe PostSetupIntentsRequestBodySingleUse')
-> Parser
     (Maybe PostSetupIntentsRequestBodyUsage'
      -> PostSetupIntentsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe PostSetupIntentsRequestBodySingleUse')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"single_use")) Parser
  (Maybe PostSetupIntentsRequestBodyUsage'
   -> PostSetupIntentsRequestBody)
-> Parser (Maybe PostSetupIntentsRequestBodyUsage')
-> Parser PostSetupIntentsRequestBody
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe PostSetupIntentsRequestBodyUsage')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"usage"))

-- | Create a new 'PostSetupIntentsRequestBody' with all required fields.
mkPostSetupIntentsRequestBody :: PostSetupIntentsRequestBody
mkPostSetupIntentsRequestBody :: PostSetupIntentsRequestBody
mkPostSetupIntentsRequestBody =
  PostSetupIntentsRequestBody :: Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe PostSetupIntentsRequestBodyMandateData'
-> Maybe Object
-> Maybe Text
-> Maybe Text
-> Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
-> Maybe [Text]
-> Maybe Text
-> Maybe PostSetupIntentsRequestBodySingleUse'
-> Maybe PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBody
PostSetupIntentsRequestBody
    { postSetupIntentsRequestBodyConfirm :: Maybe Bool
postSetupIntentsRequestBodyConfirm = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyCustomer :: Maybe Text
postSetupIntentsRequestBodyCustomer = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyDescription :: Maybe Text
postSetupIntentsRequestBodyDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyExpand :: Maybe [Text]
postSetupIntentsRequestBodyExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyMandateData :: Maybe PostSetupIntentsRequestBodyMandateData'
postSetupIntentsRequestBodyMandateData = Maybe PostSetupIntentsRequestBodyMandateData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyMetadata :: Maybe Object
postSetupIntentsRequestBodyMetadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyOnBehalfOf :: Maybe Text
postSetupIntentsRequestBodyOnBehalfOf = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyPaymentMethod :: Maybe Text
postSetupIntentsRequestBodyPaymentMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyPaymentMethodOptions :: Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
postSetupIntentsRequestBodyPaymentMethodOptions = Maybe PostSetupIntentsRequestBodyPaymentMethodOptions'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyPaymentMethodTypes :: Maybe [Text]
postSetupIntentsRequestBodyPaymentMethodTypes = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyReturnUrl :: Maybe Text
postSetupIntentsRequestBodyReturnUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodySingleUse :: Maybe PostSetupIntentsRequestBodySingleUse'
postSetupIntentsRequestBodySingleUse = Maybe PostSetupIntentsRequestBodySingleUse'
forall a. Maybe a
GHC.Maybe.Nothing,
      postSetupIntentsRequestBodyUsage :: Maybe PostSetupIntentsRequestBodyUsage'
postSetupIntentsRequestBodyUsage = Maybe PostSetupIntentsRequestBodyUsage'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/setup_intents.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.mandate_data@ in the specification.
--
-- This hash contains details about the Mandate to create. This parameter can only be used with [\`confirm=true\`](https:\/\/stripe.com\/docs\/api\/setup_intents\/create\#create_setup_intent-confirm).
data PostSetupIntentsRequestBodyMandateData' = PostSetupIntentsRequestBodyMandateData'
  { -- | customer_acceptance
    PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
  }
  deriving
    ( Int -> PostSetupIntentsRequestBodyMandateData' -> ShowS
[PostSetupIntentsRequestBodyMandateData'] -> ShowS
PostSetupIntentsRequestBodyMandateData' -> String
(Int -> PostSetupIntentsRequestBodyMandateData' -> ShowS)
-> (PostSetupIntentsRequestBodyMandateData' -> String)
-> ([PostSetupIntentsRequestBodyMandateData'] -> ShowS)
-> Show PostSetupIntentsRequestBodyMandateData'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodyMandateData'] -> ShowS
$cshowList :: [PostSetupIntentsRequestBodyMandateData'] -> ShowS
show :: PostSetupIntentsRequestBodyMandateData' -> String
$cshow :: PostSetupIntentsRequestBodyMandateData' -> String
showsPrec :: Int -> PostSetupIntentsRequestBodyMandateData' -> ShowS
$cshowsPrec :: Int -> PostSetupIntentsRequestBodyMandateData' -> ShowS
GHC.Show.Show,
      PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData' -> Bool
(PostSetupIntentsRequestBodyMandateData'
 -> PostSetupIntentsRequestBodyMandateData' -> Bool)
-> (PostSetupIntentsRequestBodyMandateData'
    -> PostSetupIntentsRequestBodyMandateData' -> Bool)
-> Eq PostSetupIntentsRequestBodyMandateData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData' -> Bool
$c/= :: PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData' -> Bool
== :: PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData' -> Bool
$c== :: PostSetupIntentsRequestBodyMandateData'
-> PostSetupIntentsRequestBodyMandateData' -> Bool
GHC.Classes.Eq
    )

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

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

-- | Create a new 'PostSetupIntentsRequestBodyMandateData'' with all required fields.
mkPostSetupIntentsRequestBodyMandateData' ::
  -- | 'postSetupIntentsRequestBodyMandateData'CustomerAcceptance'
  PostSetupIntentsRequestBodyMandateData'CustomerAcceptance' ->
  PostSetupIntentsRequestBodyMandateData'
mkPostSetupIntentsRequestBodyMandateData' :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsRequestBodyMandateData'
mkPostSetupIntentsRequestBodyMandateData' PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance = PostSetupIntentsRequestBodyMandateData' :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsRequestBodyMandateData'
PostSetupIntentsRequestBodyMandateData' {postSetupIntentsRequestBodyMandateData'CustomerAcceptance :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance = PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance}

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

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBodyMandateData'CustomerAcceptance' where
  toJSON :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance' -> Value
toJSON PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe Int
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'AcceptedAt PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe Object
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Offline PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"online" Text
-> Maybe
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Encoding
toEncoding PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe Int
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'AcceptedAt PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe Object
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Offline PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"online" Text
-> Maybe
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> Maybe
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"type" Text
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type'
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Type PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'
obj))))

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

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

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

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' where
  toJSON :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Value
toJSON PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Encoding
toEncoding PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress PostSetupIntentsRequestBodyMandateData'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..= PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
-> Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online')
-> Value
-> Parser
     PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'" (\Object
obj -> ((Text
 -> Text
 -> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser
     (Text
      -> Text
      -> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Text
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' Parser
  (Text
   -> Text
   -> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser Text
-> Parser
     (Text
      -> PostSetupIntentsRequestBodyMandateData'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
   -> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online')
-> Parser Text
-> Parser
     PostSetupIntentsRequestBodyMandateData'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 'PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'' with all required fields.
mkPostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' ::
  -- | 'postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress'
  Data.Text.Internal.Text ->
  -- | 'postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent'
  Data.Text.Internal.Text ->
  PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
mkPostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' :: Text
-> Text
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
mkPostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent =
  PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online' :: Text
-> Text
-> PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
PostSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'
    { postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress :: Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress = Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'IpAddress,
      postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent :: Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent = Text
postSetupIntentsRequestBodyMandateData'CustomerAcceptance'Online'UserAgent
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

-- | Defines the oneOf schema located at @paths.\/v1\/setup_intents.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 PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
  = -- | Represents the JSON value @""@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'EmptyString
  | PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Text Data.Text.Internal.Text
  deriving (Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> ShowS
[PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> ShowS
PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
(Int
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> ShowS)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> String)
-> ([PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
    -> ShowS)
-> Show
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> ShowS
$cshowList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants]
-> ShowS
show :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
$cshow :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> String
showsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> ShowS
$cshowsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> ShowS
GHC.Show.Show, PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
(PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
 -> Bool)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
    -> Bool)
-> Eq
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
$c/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
$c== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Bool
GHC.Classes.Eq)

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

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants where
  parseJSON :: Value
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'EmptyString
        | Bool
GHC.Base.otherwise -> case (Text
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Text (Text
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants)
-> Result Text
-> Result
     PostSetupIntentsRequestBodyPaymentMethodOptions'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
  PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Result
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Result
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
a -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'CustomMandateUrl'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'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.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 PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsRequestBodyPaymentMethodOptions'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.
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"combined"@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumCombined
  | -- | Represents the JSON value @"interval"@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumInterval
  | -- | Represents the JSON value @"sporadic"@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'EnumSporadic
  deriving (Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> ShowS
[PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> ShowS
PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
(Int
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> ShowS)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> String)
-> ([PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
    -> ShowS)
-> Show
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> ShowS
$cshowList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule']
-> ShowS
show :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
$cshow :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> String
showsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> ShowS
$cshowsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> ShowS
GHC.Show.Show, PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
(PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
 -> Bool)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
    -> Bool)
-> Eq
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
$c/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
$c== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'PaymentSchedule'
-> Bool
GHC.Classes.Eq)

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

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

-- | Defines the enum schema located at @paths.\/v1\/setup_intents.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 PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsRequestBodyPaymentMethodOptions'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.
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"business"@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumBusiness
  | -- | Represents the JSON value @"personal"@
    PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'EnumPersonal
  deriving (Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> ShowS
[PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> ShowS
PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
(Int
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> ShowS)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> String)
-> ([PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
    -> ShowS)
-> Show
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> ShowS
$cshowList :: [PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType']
-> ShowS
show :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
$cshow :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> String
showsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> ShowS
$cshowsPrec :: Int
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> ShowS
GHC.Show.Show, PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
(PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
 -> Bool)
-> (PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
    -> Bool)
-> Eq
     PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
$c/= :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
$c== :: PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'AcssDebit'MandateOptions'TransactionType'
-> Bool
GHC.Classes.Eq)

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

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

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

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

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

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

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

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

-- | Create a new 'PostSetupIntentsRequestBodyPaymentMethodOptions'Card'' with all required fields.
mkPostSetupIntentsRequestBodyPaymentMethodOptions'Card' :: PostSetupIntentsRequestBodyPaymentMethodOptions'Card'
mkPostSetupIntentsRequestBodyPaymentMethodOptions'Card' :: PostSetupIntentsRequestBodyPaymentMethodOptions'Card'
mkPostSetupIntentsRequestBodyPaymentMethodOptions'Card' = PostSetupIntentsRequestBodyPaymentMethodOptions'Card' :: Maybe
  PostSetupIntentsRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
-> PostSetupIntentsRequestBodyPaymentMethodOptions'Card'
PostSetupIntentsRequestBodyPaymentMethodOptions'Card' {postSetupIntentsRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure :: Maybe
  PostSetupIntentsRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
postSetupIntentsRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure = Maybe
  PostSetupIntentsRequestBodyPaymentMethodOptions'Card'RequestThreeDSecure'
forall a. Maybe a
GHC.Maybe.Nothing}

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

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

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

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

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' where
  toJSON :: PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' -> Value
toJSON PostSetupIntentsRequestBodyPaymentMethodOptions'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..= PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
-> Maybe Object
postSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
-> Encoding
toEncoding PostSetupIntentsRequestBodyPaymentMethodOptions'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..= PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
-> Maybe Object
postSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
obj)

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' where
  parseJSON :: Value
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
parseJSON = String
-> (Object
    -> Parser
         PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit')
-> Value
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'" (\Object
obj -> (Maybe Object
 -> PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit')
-> Parser
     (Maybe Object
      -> PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Object
-> PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' Parser
  (Maybe Object
   -> PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit')
-> Parser (Maybe Object)
-> Parser
     PostSetupIntentsRequestBodyPaymentMethodOptions'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 'PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'' with all required fields.
mkPostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' :: PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
mkPostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' :: PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
mkPostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' = PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' :: Maybe Object
-> PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'
PostSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit' {postSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions :: Maybe Object
postSetupIntentsRequestBodyPaymentMethodOptions'SepaDebit'MandateOptions = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing}

-- | Defines the object schema located at @paths.\/v1\/setup_intents.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.single_use@ in the specification.
--
-- If this hash is populated, this SetupIntent will generate a single_use Mandate on success.
data PostSetupIntentsRequestBodySingleUse' = PostSetupIntentsRequestBodySingleUse'
  { -- | amount
    PostSetupIntentsRequestBodySingleUse' -> Int
postSetupIntentsRequestBodySingleUse'Amount :: GHC.Types.Int,
    -- | currency
    PostSetupIntentsRequestBodySingleUse' -> Text
postSetupIntentsRequestBodySingleUse'Currency :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> PostSetupIntentsRequestBodySingleUse' -> ShowS
[PostSetupIntentsRequestBodySingleUse'] -> ShowS
PostSetupIntentsRequestBodySingleUse' -> String
(Int -> PostSetupIntentsRequestBodySingleUse' -> ShowS)
-> (PostSetupIntentsRequestBodySingleUse' -> String)
-> ([PostSetupIntentsRequestBodySingleUse'] -> ShowS)
-> Show PostSetupIntentsRequestBodySingleUse'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodySingleUse'] -> ShowS
$cshowList :: [PostSetupIntentsRequestBodySingleUse'] -> ShowS
show :: PostSetupIntentsRequestBodySingleUse' -> String
$cshow :: PostSetupIntentsRequestBodySingleUse' -> String
showsPrec :: Int -> PostSetupIntentsRequestBodySingleUse' -> ShowS
$cshowsPrec :: Int -> PostSetupIntentsRequestBodySingleUse' -> ShowS
GHC.Show.Show,
      PostSetupIntentsRequestBodySingleUse'
-> PostSetupIntentsRequestBodySingleUse' -> Bool
(PostSetupIntentsRequestBodySingleUse'
 -> PostSetupIntentsRequestBodySingleUse' -> Bool)
-> (PostSetupIntentsRequestBodySingleUse'
    -> PostSetupIntentsRequestBodySingleUse' -> Bool)
-> Eq PostSetupIntentsRequestBodySingleUse'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodySingleUse'
-> PostSetupIntentsRequestBodySingleUse' -> Bool
$c/= :: PostSetupIntentsRequestBodySingleUse'
-> PostSetupIntentsRequestBodySingleUse' -> Bool
== :: PostSetupIntentsRequestBodySingleUse'
-> PostSetupIntentsRequestBodySingleUse' -> Bool
$c== :: PostSetupIntentsRequestBodySingleUse'
-> PostSetupIntentsRequestBodySingleUse' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBodySingleUse' where
  toJSON :: PostSetupIntentsRequestBodySingleUse' -> Value
toJSON PostSetupIntentsRequestBodySingleUse'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodySingleUse' -> Int
postSetupIntentsRequestBodySingleUse'Amount PostSetupIntentsRequestBodySingleUse'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodySingleUse' -> Text
postSetupIntentsRequestBodySingleUse'Currency PostSetupIntentsRequestBodySingleUse'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostSetupIntentsRequestBodySingleUse' -> Encoding
toEncoding PostSetupIntentsRequestBodySingleUse'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodySingleUse' -> Int
postSetupIntentsRequestBodySingleUse'Amount PostSetupIntentsRequestBodySingleUse'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostSetupIntentsRequestBodySingleUse' -> Text
postSetupIntentsRequestBodySingleUse'Currency PostSetupIntentsRequestBodySingleUse'
obj))

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

-- | Create a new 'PostSetupIntentsRequestBodySingleUse'' with all required fields.
mkPostSetupIntentsRequestBodySingleUse' ::
  -- | 'postSetupIntentsRequestBodySingleUse'Amount'
  GHC.Types.Int ->
  -- | 'postSetupIntentsRequestBodySingleUse'Currency'
  Data.Text.Internal.Text ->
  PostSetupIntentsRequestBodySingleUse'
mkPostSetupIntentsRequestBodySingleUse' :: Int -> Text -> PostSetupIntentsRequestBodySingleUse'
mkPostSetupIntentsRequestBodySingleUse' Int
postSetupIntentsRequestBodySingleUse'Amount Text
postSetupIntentsRequestBodySingleUse'Currency =
  PostSetupIntentsRequestBodySingleUse' :: Int -> Text -> PostSetupIntentsRequestBodySingleUse'
PostSetupIntentsRequestBodySingleUse'
    { postSetupIntentsRequestBodySingleUse'Amount :: Int
postSetupIntentsRequestBodySingleUse'Amount = Int
postSetupIntentsRequestBodySingleUse'Amount,
      postSetupIntentsRequestBodySingleUse'Currency :: Text
postSetupIntentsRequestBodySingleUse'Currency = Text
postSetupIntentsRequestBodySingleUse'Currency
    }

-- | Defines the enum schema located at @paths.\/v1\/setup_intents.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.usage@ in the specification.
--
-- Indicates how the payment method is intended to be used in the future. If not provided, this value defaults to \`off_session\`.
data PostSetupIntentsRequestBodyUsage'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostSetupIntentsRequestBodyUsage'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.
    PostSetupIntentsRequestBodyUsage'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"off_session"@
    PostSetupIntentsRequestBodyUsage'EnumOffSession
  | -- | Represents the JSON value @"on_session"@
    PostSetupIntentsRequestBodyUsage'EnumOnSession
  deriving (Int -> PostSetupIntentsRequestBodyUsage' -> ShowS
[PostSetupIntentsRequestBodyUsage'] -> ShowS
PostSetupIntentsRequestBodyUsage' -> String
(Int -> PostSetupIntentsRequestBodyUsage' -> ShowS)
-> (PostSetupIntentsRequestBodyUsage' -> String)
-> ([PostSetupIntentsRequestBodyUsage'] -> ShowS)
-> Show PostSetupIntentsRequestBodyUsage'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsRequestBodyUsage'] -> ShowS
$cshowList :: [PostSetupIntentsRequestBodyUsage'] -> ShowS
show :: PostSetupIntentsRequestBodyUsage' -> String
$cshow :: PostSetupIntentsRequestBodyUsage' -> String
showsPrec :: Int -> PostSetupIntentsRequestBodyUsage' -> ShowS
$cshowsPrec :: Int -> PostSetupIntentsRequestBodyUsage' -> ShowS
GHC.Show.Show, PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBodyUsage' -> Bool
(PostSetupIntentsRequestBodyUsage'
 -> PostSetupIntentsRequestBodyUsage' -> Bool)
-> (PostSetupIntentsRequestBodyUsage'
    -> PostSetupIntentsRequestBodyUsage' -> Bool)
-> Eq PostSetupIntentsRequestBodyUsage'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBodyUsage' -> Bool
$c/= :: PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBodyUsage' -> Bool
== :: PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBodyUsage' -> Bool
$c== :: PostSetupIntentsRequestBodyUsage'
-> PostSetupIntentsRequestBodyUsage' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostSetupIntentsRequestBodyUsage' where
  toJSON :: PostSetupIntentsRequestBodyUsage' -> Value
toJSON (PostSetupIntentsRequestBodyUsage'Other Value
val) = Value
val
  toJSON (PostSetupIntentsRequestBodyUsage'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostSetupIntentsRequestBodyUsage'
PostSetupIntentsRequestBodyUsage'EnumOffSession) = Value
"off_session"
  toJSON (PostSetupIntentsRequestBodyUsage'
PostSetupIntentsRequestBodyUsage'EnumOnSession) = Value
"on_session"

instance Data.Aeson.Types.FromJSON.FromJSON PostSetupIntentsRequestBodyUsage' where
  parseJSON :: Value -> Parser PostSetupIntentsRequestBodyUsage'
parseJSON Value
val =
    PostSetupIntentsRequestBodyUsage'
-> Parser PostSetupIntentsRequestBodyUsage'
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
"off_session" -> PostSetupIntentsRequestBodyUsage'
PostSetupIntentsRequestBodyUsage'EnumOffSession
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"on_session" -> PostSetupIntentsRequestBodyUsage'
PostSetupIntentsRequestBodyUsage'EnumOnSession
            | Bool
GHC.Base.otherwise -> Value -> PostSetupIntentsRequestBodyUsage'
PostSetupIntentsRequestBodyUsage'Other Value
val
      )

-- | Represents a response of the operation 'postSetupIntents'.
--
-- 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), 'PostSetupIntentsResponseError' is used.
data PostSetupIntentsResponse
  = -- | Means either no matching case available or a parse error
    PostSetupIntentsResponseError GHC.Base.String
  | -- | Successful response.
    PostSetupIntentsResponse200 SetupIntent
  | -- | Error response.
    PostSetupIntentsResponseDefault Error
  deriving (Int -> PostSetupIntentsResponse -> ShowS
[PostSetupIntentsResponse] -> ShowS
PostSetupIntentsResponse -> String
(Int -> PostSetupIntentsResponse -> ShowS)
-> (PostSetupIntentsResponse -> String)
-> ([PostSetupIntentsResponse] -> ShowS)
-> Show PostSetupIntentsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [PostSetupIntentsResponse] -> ShowS
$cshowList :: [PostSetupIntentsResponse] -> ShowS
show :: PostSetupIntentsResponse -> String
$cshow :: PostSetupIntentsResponse -> String
showsPrec :: Int -> PostSetupIntentsResponse -> ShowS
$cshowsPrec :: Int -> PostSetupIntentsResponse -> ShowS
GHC.Show.Show, PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool
(PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool)
-> (PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool)
-> Eq PostSetupIntentsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool
$c/= :: PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool
== :: PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool
$c== :: PostSetupIntentsResponse -> PostSetupIntentsResponse -> Bool
GHC.Classes.Eq)