{-# 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 postCustomersCustomerCards
module StripeAPI.Operations.PostCustomersCustomerCards 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/customers/{customer}/cards
--
-- \<p>When you create a new credit card, you must specify a customer or recipient on which to create it.\<\/p>
--
-- \<p>If the card’s owner has no default card, then the new card will become the default.
-- However, if the owner already has a default, then it will not change.
-- To change the default, you should \<a href=\"\/docs\/api\#update_customer\">update the customer\<\/a> to have a new \<code>default_source\<\/code>.\<\/p>
postCustomersCustomerCards ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | customer | Constraints: Maximum length of 5000
  Data.Text.Internal.Text ->
  -- | The request body to send
  GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBody ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.ClientT m (Network.HTTP.Client.Types.Response PostCustomersCustomerCardsResponse)
postCustomersCustomerCards :: Text
-> Maybe PostCustomersCustomerCardsRequestBody
-> ClientT m (Response PostCustomersCustomerCardsResponse)
postCustomersCustomerCards
  Text
customer
  Maybe PostCustomersCustomerCardsRequestBody
body =
    (Response ByteString
 -> Response PostCustomersCustomerCardsResponse)
-> ClientT m (Response ByteString)
-> ClientT m (Response PostCustomersCustomerCardsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
      ( \Response ByteString
response_0 ->
          (ByteString -> PostCustomersCustomerCardsResponse)
-> Response ByteString
-> Response PostCustomersCustomerCardsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
            ( (String -> PostCustomersCustomerCardsResponse)
-> (PostCustomersCustomerCardsResponse
    -> PostCustomersCustomerCardsResponse)
-> Either String PostCustomersCustomerCardsResponse
-> PostCustomersCustomerCardsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> PostCustomersCustomerCardsResponse
PostCustomersCustomerCardsResponseError PostCustomersCustomerCardsResponse
-> PostCustomersCustomerCardsResponse
forall a. a -> a
GHC.Base.id
                (Either String PostCustomersCustomerCardsResponse
 -> PostCustomersCustomerCardsResponse)
-> (ByteString -> Either String PostCustomersCustomerCardsResponse)
-> ByteString
-> PostCustomersCustomerCardsResponse
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) ->
                                     PaymentSource -> PostCustomersCustomerCardsResponse
PostCustomersCustomerCardsResponse200
                                       (PaymentSource -> PostCustomersCustomerCardsResponse)
-> Either String PaymentSource
-> Either String PostCustomersCustomerCardsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String PaymentSource
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                            Data.Either.Either
                                                              GHC.Base.String
                                                              PaymentSource
                                                        )
                                   | 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 -> PostCustomersCustomerCardsResponse
PostCustomersCustomerCardsResponseDefault
                                       (Error -> PostCustomersCustomerCardsResponse)
-> Either String Error
-> Either String PostCustomersCustomerCardsResponse
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 PostCustomersCustomerCardsResponse
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 PostCustomersCustomerCardsRequestBody
-> 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/customers/" String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ (ByteString -> String
Data.ByteString.Char8.unpack (Bool -> ByteString -> ByteString
Network.HTTP.Types.URI.urlEncode Bool
GHC.Types.True (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ (String -> ByteString
Data.ByteString.Char8.pack (String -> ByteString) -> String -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ Text -> String
forall a. StringifyModel a => a -> String
StripeAPI.Common.stringifyModel Text
customer)) String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ String
"/cards"))) [QueryParameter]
forall a. Monoid a => a
GHC.Base.mempty Maybe PostCustomersCustomerCardsRequestBody
body RequestBodyEncoding
StripeAPI.Common.RequestBodyEncodingFormData)

-- | Defines the object schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema@ in the specification.
data PostCustomersCustomerCardsRequestBody = PostCustomersCustomerCardsRequestBody
  { -- | alipay_account: A token returned by [Stripe.js](https:\/\/stripe.com\/docs\/stripe.js) representing the user’s Alipay account details.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodyAlipayAccount :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | bank_account: Either a token, like the ones returned by [Stripe.js](https:\/\/stripe.com\/docs\/stripe.js), or a dictionary containing a user\'s bank account details.
    PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
postCustomersCustomerCardsRequestBodyBankAccount :: (GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants),
    -- | card: A token, like the ones returned by [Stripe.js](https:\/\/stripe.com\/docs\/stripe.js).
    PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
postCustomersCustomerCardsRequestBodyCard :: (GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBodyCard'Variants),
    -- | expand: Specifies which fields in the response should be expanded.
    PostCustomersCustomerCardsRequestBody -> Maybe [Text]
postCustomersCustomerCardsRequestBodyExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | 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\`.
    PostCustomersCustomerCardsRequestBody -> Maybe Object
postCustomersCustomerCardsRequestBodyMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | source: Please refer to full [documentation](https:\/\/stripe.com\/docs\/api) instead.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodySource :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PostCustomersCustomerCardsRequestBody -> String -> String
[PostCustomersCustomerCardsRequestBody] -> String -> String
PostCustomersCustomerCardsRequestBody -> String
(Int -> PostCustomersCustomerCardsRequestBody -> String -> String)
-> (PostCustomersCustomerCardsRequestBody -> String)
-> ([PostCustomersCustomerCardsRequestBody] -> String -> String)
-> Show PostCustomersCustomerCardsRequestBody
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBody] -> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBody] -> String -> String
show :: PostCustomersCustomerCardsRequestBody -> String
$cshow :: PostCustomersCustomerCardsRequestBody -> String
showsPrec :: Int -> PostCustomersCustomerCardsRequestBody -> String -> String
$cshowsPrec :: Int -> PostCustomersCustomerCardsRequestBody -> String -> String
GHC.Show.Show,
      PostCustomersCustomerCardsRequestBody
-> PostCustomersCustomerCardsRequestBody -> Bool
(PostCustomersCustomerCardsRequestBody
 -> PostCustomersCustomerCardsRequestBody -> Bool)
-> (PostCustomersCustomerCardsRequestBody
    -> PostCustomersCustomerCardsRequestBody -> Bool)
-> Eq PostCustomersCustomerCardsRequestBody
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBody
-> PostCustomersCustomerCardsRequestBody -> Bool
$c/= :: PostCustomersCustomerCardsRequestBody
-> PostCustomersCustomerCardsRequestBody -> Bool
== :: PostCustomersCustomerCardsRequestBody
-> PostCustomersCustomerCardsRequestBody -> Bool
$c== :: PostCustomersCustomerCardsRequestBody
-> PostCustomersCustomerCardsRequestBody -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBody where
  toJSON :: PostCustomersCustomerCardsRequestBody -> Value
toJSON PostCustomersCustomerCardsRequestBody
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"alipay_account" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodyAlipayAccount PostCustomersCustomerCardsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bank_account" Text
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
postCustomersCustomerCardsRequestBodyBankAccount PostCustomersCustomerCardsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
postCustomersCustomerCardsRequestBodyCard PostCustomersCustomerCardsRequestBody
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..= PostCustomersCustomerCardsRequestBody -> Maybe [Text]
postCustomersCustomerCardsRequestBodyExpand PostCustomersCustomerCardsRequestBody
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..= PostCustomersCustomerCardsRequestBody -> Maybe Object
postCustomersCustomerCardsRequestBodyMetadata PostCustomersCustomerCardsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"source" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodySource PostCustomersCustomerCardsRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostCustomersCustomerCardsRequestBody -> Encoding
toEncoding PostCustomersCustomerCardsRequestBody
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"alipay_account" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodyAlipayAccount PostCustomersCustomerCardsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bank_account" Text
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
postCustomersCustomerCardsRequestBodyBankAccount PostCustomersCustomerCardsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
postCustomersCustomerCardsRequestBodyCard PostCustomersCustomerCardsRequestBody
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..= PostCustomersCustomerCardsRequestBody -> Maybe [Text]
postCustomersCustomerCardsRequestBodyExpand PostCustomersCustomerCardsRequestBody
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..= PostCustomersCustomerCardsRequestBody -> Maybe Object
postCustomersCustomerCardsRequestBodyMetadata PostCustomersCustomerCardsRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"source" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBody -> Maybe Text
postCustomersCustomerCardsRequestBodySource PostCustomersCustomerCardsRequestBody
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBody where
  parseJSON :: Value -> Parser PostCustomersCustomerCardsRequestBody
parseJSON = String
-> (Object -> Parser PostCustomersCustomerCardsRequestBody)
-> Value
-> Parser PostCustomersCustomerCardsRequestBody
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostCustomersCustomerCardsRequestBody" (\Object
obj -> ((((((Maybe Text
 -> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
 -> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
 -> Maybe [Text]
 -> Maybe Object
 -> Maybe Text
 -> PostCustomersCustomerCardsRequestBody)
-> Parser
     (Maybe Text
      -> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
      -> Maybe [Text]
      -> Maybe Object
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBody)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
-> Maybe [Text]
-> Maybe Object
-> Maybe Text
-> PostCustomersCustomerCardsRequestBody
PostCustomersCustomerCardsRequestBody Parser
  (Maybe Text
   -> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
   -> Maybe [Text]
   -> Maybe Object
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
      -> Maybe [Text]
      -> Maybe Object
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBody)
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
"alipay_account")) Parser
  (Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
   -> Maybe [Text]
   -> Maybe Object
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBody)
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants)
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
      -> Maybe [Text]
      -> Maybe Object
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bank_account")) Parser
  (Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
   -> Maybe [Text]
   -> Maybe Object
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBody)
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'Variants)
-> Parser
     (Maybe [Text]
      -> Maybe Object
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card")) Parser
  (Maybe [Text]
   -> Maybe Object
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Object
      -> Maybe Text -> PostCustomersCustomerCardsRequestBody)
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 Object
   -> Maybe Text -> PostCustomersCustomerCardsRequestBody)
-> Parser (Maybe Object)
-> Parser (Maybe Text -> PostCustomersCustomerCardsRequestBody)
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 -> PostCustomersCustomerCardsRequestBody)
-> Parser (Maybe Text)
-> Parser PostCustomersCustomerCardsRequestBody
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
"source"))

-- | Create a new 'PostCustomersCustomerCardsRequestBody' with all required fields.
mkPostCustomersCustomerCardsRequestBody :: PostCustomersCustomerCardsRequestBody
mkPostCustomersCustomerCardsRequestBody :: PostCustomersCustomerCardsRequestBody
mkPostCustomersCustomerCardsRequestBody =
  PostCustomersCustomerCardsRequestBody :: Maybe Text
-> Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
-> Maybe [Text]
-> Maybe Object
-> Maybe Text
-> PostCustomersCustomerCardsRequestBody
PostCustomersCustomerCardsRequestBody
    { postCustomersCustomerCardsRequestBodyAlipayAccount :: Maybe Text
postCustomersCustomerCardsRequestBodyAlipayAccount = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyBankAccount :: Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
postCustomersCustomerCardsRequestBodyBankAccount = Maybe PostCustomersCustomerCardsRequestBodyBankAccount'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard :: Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
postCustomersCustomerCardsRequestBodyCard = Maybe PostCustomersCustomerCardsRequestBodyCard'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyExpand :: Maybe [Text]
postCustomersCustomerCardsRequestBodyExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyMetadata :: Maybe Object
postCustomersCustomerCardsRequestBodyMetadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodySource :: Maybe Text
postCustomersCustomerCardsRequestBodySource = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.bank_account.anyOf@ in the specification.
data PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 = PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
  { -- | account_holder_name
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | account_holder_type
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType :: (GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'),
    -- | account_number
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber :: Data.Text.Internal.Text,
    -- | country
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country :: Data.Text.Internal.Text,
    -- | currency
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | object
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object :: (GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'),
    -- | routing_number
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> String
-> String
[PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1]
-> String -> String
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> String
(Int
 -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
 -> String
 -> String)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
    -> String)
-> ([PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1]
    -> String -> String)
-> Show PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1]
-> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1]
-> String -> String
show :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> String
$cshow :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> String
showsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> String
-> String
$cshowsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> String
-> String
GHC.Show.Show,
      PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool
(PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
 -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
    -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool)
-> Eq PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool
$c/= :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool
== :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool
$c== :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 where
  toJSON :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Value
toJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"account_holder_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderName PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"account_holder_type" Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"account_number" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"country" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"currency" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Currency PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"routing_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1RoutingNumber PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Encoding
toEncoding PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"account_holder_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderName PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"account_holder_type" Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"account_number" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"country" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"currency" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Currency PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"object" Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"routing_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
-> Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1RoutingNumber PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
obj)))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 where
  parseJSON :: Value
-> Parser PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
parseJSON = String
-> (Object
    -> Parser PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Value
-> Parser PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1" (\Object
obj -> (((((((Maybe Text
 -> Maybe
      PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
 -> Text
 -> Text
 -> Maybe Text
 -> Maybe
      PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
 -> Maybe Text
 -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser
     (Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
      -> Text
      -> Text
      -> Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Text
-> Text
-> Maybe Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Maybe Text
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 Parser
  (Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
   -> Text
   -> Text
   -> Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
      -> Text
      -> Text
      -> Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
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
"account_holder_name")) Parser
  (Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
   -> Text
   -> Text
   -> Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType')
-> Parser
     (Text
      -> Text
      -> Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"account_holder_type")) Parser
  (Text
   -> Text
   -> Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser Text
-> Parser
     (Text
      -> Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
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
"account_number")) Parser
  (Text
   -> Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser Text
-> Parser
     (Maybe Text
      -> Maybe
           PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
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
"country")) Parser
  (Maybe Text
   -> Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
      -> Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
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
"currency")) Parser
  (Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
   -> Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object')
-> Parser
     (Maybe Text
      -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"object")) Parser
  (Maybe Text
   -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1)
-> Parser (Maybe Text)
-> Parser PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
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
"routing_number"))

-- | Create a new 'PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1' with all required fields.
mkPostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 ::
  -- | 'postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber'
  Data.Text.Internal.Text ->
  -- | 'postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country'
  Data.Text.Internal.Text ->
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
mkPostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 :: Text
-> Text -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
mkPostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country =
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 :: Maybe Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Text
-> Text
-> Maybe Text
-> Maybe
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Maybe Text
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
    { postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderName :: Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType :: Maybe
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType = Maybe
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber :: Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber = Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountNumber,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country :: Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country = Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Country,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Currency :: Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Currency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object :: Maybe
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object = Maybe
  PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyBankAccount'OneOf1RoutingNumber :: Maybe Text
postCustomersCustomerCardsRequestBodyBankAccount'OneOf1RoutingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.bank_account.anyOf.properties.account_holder_type@ in the specification.
data PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'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.
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"company"@
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumCompany
  | -- | Represents the JSON value @"individual"@
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumIndividual
  deriving (Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
-> String
[PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType']
-> String -> String
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
(Int
 -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
 -> String
 -> String)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
    -> String)
-> ([PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType']
    -> String -> String)
-> Show
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType']
-> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType']
-> String -> String
show :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
$cshow :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
showsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
-> String
$cshowsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> String
-> String
GHC.Show.Show, PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Bool
(PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
 -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
 -> Bool)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
    -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
    -> Bool)
-> Eq
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Bool
$c/= :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Bool
== :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Bool
$c== :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType' where
  toJSON :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Value
toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'Other Value
val) = Value
val
  toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumCompany) = Value
"company"
  toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumIndividual) = Value
"individual"

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType' where
  parseJSON :: Value
-> Parser
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
parseJSON Value
val =
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
-> Parser
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
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
"company" -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumCompany
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"individual" -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'EnumIndividual
            | Bool
GHC.Base.otherwise -> Value
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1AccountHolderType'Other Value
val
      )

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

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object' where
  toJSON :: PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Value
toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'Other Value
val) = Value
val
  toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'EnumBankAccount) = Value
"bank_account"

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object' where
  parseJSON :: Value
-> Parser
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
parseJSON Value
val =
    PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
-> Parser
     PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
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
"bank_account" -> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'EnumBankAccount
            | Bool
GHC.Base.otherwise -> Value
-> PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'
PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1Object'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.bank_account.anyOf@ in the specification.
--
-- Either a token, like the ones returned by [Stripe.js](https:\/\/stripe.com\/docs\/stripe.js), or a dictionary containing a user\'s bank account details.
data PostCustomersCustomerCardsRequestBodyBankAccount'Variants
  = PostCustomersCustomerCardsRequestBodyBankAccount'PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1 PostCustomersCustomerCardsRequestBodyBankAccount'OneOf1
  | PostCustomersCustomerCardsRequestBodyBankAccount'Text Data.Text.Internal.Text
  deriving (Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> String
-> String
[PostCustomersCustomerCardsRequestBodyBankAccount'Variants]
-> String -> String
PostCustomersCustomerCardsRequestBodyBankAccount'Variants -> String
(Int
 -> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
 -> String
 -> String)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'Variants
    -> String)
-> ([PostCustomersCustomerCardsRequestBodyBankAccount'Variants]
    -> String -> String)
-> Show PostCustomersCustomerCardsRequestBodyBankAccount'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBodyBankAccount'Variants]
-> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBodyBankAccount'Variants]
-> String -> String
show :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants -> String
$cshow :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants -> String
showsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> String
-> String
GHC.Show.Show, PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Bool
(PostCustomersCustomerCardsRequestBodyBankAccount'Variants
 -> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
 -> Bool)
-> (PostCustomersCustomerCardsRequestBodyBankAccount'Variants
    -> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
    -> Bool)
-> Eq PostCustomersCustomerCardsRequestBodyBankAccount'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Bool
$c/= :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Bool
== :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Bool
$c== :: PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> PostCustomersCustomerCardsRequestBodyBankAccount'Variants
-> Bool
GHC.Classes.Eq)

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

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

-- | Defines the object schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.card.anyOf@ in the specification.
data PostCustomersCustomerCardsRequestBodyCard'OneOf1 = PostCustomersCustomerCardsRequestBodyCard'OneOf1
  { -- | address_city
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_country
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line1
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line2
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_state
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_zip
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | cvc
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Cvc :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | exp_month
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth :: GHC.Types.Int,
    -- | exp_year
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear :: GHC.Types.Int,
    -- | metadata
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Object
postCustomersCustomerCardsRequestBodyCard'OneOf1Metadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | name
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | number
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number :: Data.Text.Internal.Text,
    -- | object
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
postCustomersCustomerCardsRequestBodyCard'OneOf1Object :: (GHC.Maybe.Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object')
  }
  deriving
    ( Int
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> String
-> String
[PostCustomersCustomerCardsRequestBodyCard'OneOf1]
-> String -> String
PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> String
(Int
 -> PostCustomersCustomerCardsRequestBodyCard'OneOf1
 -> String
 -> String)
-> (PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> String)
-> ([PostCustomersCustomerCardsRequestBodyCard'OneOf1]
    -> String -> String)
-> Show PostCustomersCustomerCardsRequestBodyCard'OneOf1
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBodyCard'OneOf1]
-> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBodyCard'OneOf1]
-> String -> String
show :: PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> String
$cshow :: PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> String
showsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> String
-> String
$cshowsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> String
-> String
GHC.Show.Show,
      PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool
(PostCustomersCustomerCardsRequestBodyCard'OneOf1
 -> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool)
-> (PostCustomersCustomerCardsRequestBodyCard'OneOf1
    -> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool)
-> Eq PostCustomersCustomerCardsRequestBodyCard'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool
$c/= :: PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool
== :: PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool
$c== :: PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBodyCard'OneOf1 where
  toJSON :: PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Value
toJSON PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"address_city" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCity PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_country" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCountry PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_line1" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine1 PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_line2" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine2 PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_state" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressState PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_zip" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressZip PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cvc" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Cvc PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"exp_month" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"exp_year" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear PostCustomersCustomerCardsRequestBodyCard'OneOf1
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..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Object
postCustomersCustomerCardsRequestBodyCard'OneOf1Metadata PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Name PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"number" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
postCustomersCustomerCardsRequestBodyCard'OneOf1Object PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Encoding
toEncoding PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"address_city" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCity PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_country" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCountry PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_line1" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine1 PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_line2" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine2 PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_state" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressState PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_zip" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressZip PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cvc" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Cvc PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"exp_month" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"exp_year" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear PostCustomersCustomerCardsRequestBodyCard'OneOf1
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..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Object
postCustomersCustomerCardsRequestBodyCard'OneOf1Metadata PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Name PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"number" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1 -> Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostCustomersCustomerCardsRequestBodyCard'OneOf1
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
postCustomersCustomerCardsRequestBodyCard'OneOf1Object PostCustomersCustomerCardsRequestBodyCard'OneOf1
obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBodyCard'OneOf1 where
  parseJSON :: Value -> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1
parseJSON = String
-> (Object
    -> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Value
-> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostCustomersCustomerCardsRequestBodyCard'OneOf1" (\Object
obj -> (((((((((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Int
 -> Int
 -> Maybe Object
 -> Maybe Text
 -> Text
 -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
 -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> Int
-> Maybe Object
-> Maybe Text
-> Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1
PostCustomersCustomerCardsRequestBodyCard'OneOf1 Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_city")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_country")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_line1")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_line2")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_state")) Parser
  (Maybe Text
   -> Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"address_zip")) Parser
  (Maybe Text
   -> Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Int
      -> Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"cvc")) Parser
  (Int
   -> Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser Int
-> Parser
     (Int
      -> Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"exp_month")) Parser
  (Int
   -> Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser Int
-> Parser
     (Maybe Object
      -> Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"exp_year")) Parser
  (Maybe Object
   -> Maybe Text
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Object)
-> Parser
     (Maybe Text
      -> Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
   -> Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"name")) Parser
  (Text
   -> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser Text
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
      -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
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
"number")) Parser
  (Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
   -> PostCustomersCustomerCardsRequestBodyCard'OneOf1)
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object')
-> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"object"))

-- | Create a new 'PostCustomersCustomerCardsRequestBodyCard'OneOf1' with all required fields.
mkPostCustomersCustomerCardsRequestBodyCard'OneOf1 ::
  -- | 'postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth'
  GHC.Types.Int ->
  -- | 'postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear'
  GHC.Types.Int ->
  -- | 'postCustomersCustomerCardsRequestBodyCard'OneOf1Number'
  Data.Text.Internal.Text ->
  PostCustomersCustomerCardsRequestBodyCard'OneOf1
mkPostCustomersCustomerCardsRequestBodyCard'OneOf1 :: Int
-> Int -> Text -> PostCustomersCustomerCardsRequestBodyCard'OneOf1
mkPostCustomersCustomerCardsRequestBodyCard'OneOf1 Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number =
  PostCustomersCustomerCardsRequestBodyCard'OneOf1 :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> Int
-> Maybe Object
-> Maybe Text
-> Text
-> Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
-> PostCustomersCustomerCardsRequestBodyCard'OneOf1
PostCustomersCustomerCardsRequestBodyCard'OneOf1
    { postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCity :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCity = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCountry :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressCountry = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine1 :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine2 :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressLine2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1AddressState :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressState = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1AddressZip :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1AddressZip = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1Cvc :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Cvc = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth :: Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth = Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpMonth,
      postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear :: Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear = Int
postCustomersCustomerCardsRequestBodyCard'OneOf1ExpYear,
      postCustomersCustomerCardsRequestBodyCard'OneOf1Metadata :: Maybe Object
postCustomersCustomerCardsRequestBodyCard'OneOf1Metadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1Name :: Maybe Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postCustomersCustomerCardsRequestBodyCard'OneOf1Number :: Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number = Text
postCustomersCustomerCardsRequestBodyCard'OneOf1Number,
      postCustomersCustomerCardsRequestBodyCard'OneOf1Object :: Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
postCustomersCustomerCardsRequestBodyCard'OneOf1Object = Maybe PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
forall a. Maybe a
GHC.Maybe.Nothing
    }

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

instance Data.Aeson.Types.ToJSON.ToJSON PostCustomersCustomerCardsRequestBodyCard'OneOf1Object' where
  toJSON :: PostCustomersCustomerCardsRequestBodyCard'OneOf1Object' -> Value
toJSON (PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'Other Value
val) = Value
val
  toJSON (PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'EnumCard) = Value
"card"

instance Data.Aeson.Types.FromJSON.FromJSON PostCustomersCustomerCardsRequestBodyCard'OneOf1Object' where
  parseJSON :: Value
-> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
parseJSON Value
val =
    PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
-> Parser PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
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
"card" -> PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'EnumCard
            | Bool
GHC.Base.otherwise -> Value -> PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'
PostCustomersCustomerCardsRequestBodyCard'OneOf1Object'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/customers\/{customer}\/cards.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.card.anyOf@ in the specification.
--
-- A token, like the ones returned by [Stripe.js](https:\/\/stripe.com\/docs\/stripe.js).
data PostCustomersCustomerCardsRequestBodyCard'Variants
  = PostCustomersCustomerCardsRequestBodyCard'PostCustomersCustomerCardsRequestBodyCard'OneOf1 PostCustomersCustomerCardsRequestBodyCard'OneOf1
  | PostCustomersCustomerCardsRequestBodyCard'Text Data.Text.Internal.Text
  deriving (Int
-> PostCustomersCustomerCardsRequestBodyCard'Variants
-> String
-> String
[PostCustomersCustomerCardsRequestBodyCard'Variants]
-> String -> String
PostCustomersCustomerCardsRequestBodyCard'Variants -> String
(Int
 -> PostCustomersCustomerCardsRequestBodyCard'Variants
 -> String
 -> String)
-> (PostCustomersCustomerCardsRequestBodyCard'Variants -> String)
-> ([PostCustomersCustomerCardsRequestBodyCard'Variants]
    -> String -> String)
-> Show PostCustomersCustomerCardsRequestBodyCard'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostCustomersCustomerCardsRequestBodyCard'Variants]
-> String -> String
$cshowList :: [PostCustomersCustomerCardsRequestBodyCard'Variants]
-> String -> String
show :: PostCustomersCustomerCardsRequestBodyCard'Variants -> String
$cshow :: PostCustomersCustomerCardsRequestBodyCard'Variants -> String
showsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyCard'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostCustomersCustomerCardsRequestBodyCard'Variants
-> String
-> String
GHC.Show.Show, PostCustomersCustomerCardsRequestBodyCard'Variants
-> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool
(PostCustomersCustomerCardsRequestBodyCard'Variants
 -> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool)
-> (PostCustomersCustomerCardsRequestBodyCard'Variants
    -> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool)
-> Eq PostCustomersCustomerCardsRequestBodyCard'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostCustomersCustomerCardsRequestBodyCard'Variants
-> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool
$c/= :: PostCustomersCustomerCardsRequestBodyCard'Variants
-> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool
== :: PostCustomersCustomerCardsRequestBodyCard'Variants
-> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool
$c== :: PostCustomersCustomerCardsRequestBodyCard'Variants
-> PostCustomersCustomerCardsRequestBodyCard'Variants -> Bool
GHC.Classes.Eq)

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

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

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