{-# 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 getAccountsAccountExternalAccounts
module StripeAPI.Operations.GetAccountsAccountExternalAccounts 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

-- | > GET /v1/accounts/{account}/external_accounts
--
-- \<p>List external accounts for an account.\<\/p>
getAccountsAccountExternalAccounts ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | Contains all available parameters of this operation (query and path parameters)
  GetAccountsAccountExternalAccountsParameters ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.StripeT m (Network.HTTP.Client.Types.Response GetAccountsAccountExternalAccountsResponse)
getAccountsAccountExternalAccounts :: GetAccountsAccountExternalAccountsParameters
-> StripeT m (Response GetAccountsAccountExternalAccountsResponse)
getAccountsAccountExternalAccounts GetAccountsAccountExternalAccountsParameters
parameters =
  (Response ByteString
 -> Response GetAccountsAccountExternalAccountsResponse)
-> StripeT m (Response ByteString)
-> StripeT m (Response GetAccountsAccountExternalAccountsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
    ( \Response ByteString
response_0 ->
        (ByteString -> GetAccountsAccountExternalAccountsResponse)
-> Response ByteString
-> Response GetAccountsAccountExternalAccountsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
          ( (String -> GetAccountsAccountExternalAccountsResponse)
-> (GetAccountsAccountExternalAccountsResponse
    -> GetAccountsAccountExternalAccountsResponse)
-> Either String GetAccountsAccountExternalAccountsResponse
-> GetAccountsAccountExternalAccountsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> GetAccountsAccountExternalAccountsResponse
GetAccountsAccountExternalAccountsResponseError GetAccountsAccountExternalAccountsResponse
-> GetAccountsAccountExternalAccountsResponse
forall a. a -> a
GHC.Base.id
              (Either String GetAccountsAccountExternalAccountsResponse
 -> GetAccountsAccountExternalAccountsResponse)
-> (ByteString
    -> Either String GetAccountsAccountExternalAccountsResponse)
-> ByteString
-> GetAccountsAccountExternalAccountsResponse
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) ->
                                   GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponse
GetAccountsAccountExternalAccountsResponse200
                                     (GetAccountsAccountExternalAccountsResponseBody200
 -> GetAccountsAccountExternalAccountsResponse)
-> Either String GetAccountsAccountExternalAccountsResponseBody200
-> Either String GetAccountsAccountExternalAccountsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString
-> Either String GetAccountsAccountExternalAccountsResponseBody200
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            GetAccountsAccountExternalAccountsResponseBody200
                                                      )
                                 | 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 -> GetAccountsAccountExternalAccountsResponse
GetAccountsAccountExternalAccountsResponseDefault
                                     (Error -> GetAccountsAccountExternalAccountsResponse)
-> Either String Error
-> Either String GetAccountsAccountExternalAccountsResponse
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 GetAccountsAccountExternalAccountsResponse
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] -> StripeT m (Response ByteString)
forall (m :: * -> *).
MonadHTTP m =>
Text -> Text -> [QueryParameter] -> StripeT m (Response ByteString)
StripeAPI.Common.doCallWithConfigurationM
        (Text -> Text
Data.Text.toUpper (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
GHC.Base.$ String -> Text
Data.Text.pack String
"GET")
        (String -> Text
Data.Text.pack (String
"/v1/accounts/" 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 (GetAccountsAccountExternalAccountsParameters -> Text
getAccountsAccountExternalAccountsParametersPathAccount GetAccountsAccountExternalAccountsParameters
parameters))) String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ String
"/external_accounts")))
        [ Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"ending_before") (Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryEndingBefore GetAccountsAccountExternalAccountsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"expand") ([Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON ([Text] -> Value) -> Maybe [Text] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetAccountsAccountExternalAccountsParameters -> Maybe [Text]
getAccountsAccountExternalAccountsParametersQueryExpand GetAccountsAccountExternalAccountsParameters
parameters) (String -> Text
Data.Text.pack String
"deepObject") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"limit") (Int -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Int -> Value) -> Maybe Int -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetAccountsAccountExternalAccountsParameters -> Maybe Int
getAccountsAccountExternalAccountsParametersQueryLimit GetAccountsAccountExternalAccountsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"starting_after") (Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryStartingAfter GetAccountsAccountExternalAccountsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True
        ]
    )

-- | Defines the object schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.parameters@ in the specification.
data GetAccountsAccountExternalAccountsParameters = GetAccountsAccountExternalAccountsParameters
  { -- | pathAccount: Represents the parameter named \'account\'
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsParameters -> Text
getAccountsAccountExternalAccountsParametersPathAccount :: Data.Text.Internal.Text,
    -- | queryEnding_before: Represents the parameter named \'ending_before\'
    --
    -- A cursor for use in pagination. \`ending_before\` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with \`obj_bar\`, your subsequent call can include \`ending_before=obj_bar\` in order to fetch the previous page of the list.
    GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryEndingBefore :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | queryExpand: Represents the parameter named \'expand\'
    --
    -- Specifies which fields in the response should be expanded.
    GetAccountsAccountExternalAccountsParameters -> Maybe [Text]
getAccountsAccountExternalAccountsParametersQueryExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | queryLimit: Represents the parameter named \'limit\'
    --
    -- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
    GetAccountsAccountExternalAccountsParameters -> Maybe Int
getAccountsAccountExternalAccountsParametersQueryLimit :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | queryStarting_after: Represents the parameter named \'starting_after\'
    --
    -- A cursor for use in pagination. \`starting_after\` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with \`obj_foo\`, your subsequent call can include \`starting_after=obj_foo\` in order to fetch the next page of the list.
    GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryStartingAfter :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> GetAccountsAccountExternalAccountsParameters -> String -> String
[GetAccountsAccountExternalAccountsParameters] -> String -> String
GetAccountsAccountExternalAccountsParameters -> String
(Int
 -> GetAccountsAccountExternalAccountsParameters
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsParameters -> String)
-> ([GetAccountsAccountExternalAccountsParameters]
    -> String -> String)
-> Show GetAccountsAccountExternalAccountsParameters
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsParameters] -> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsParameters] -> String -> String
show :: GetAccountsAccountExternalAccountsParameters -> String
$cshow :: GetAccountsAccountExternalAccountsParameters -> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsParameters -> String -> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsParameters -> String -> String
GHC.Show.Show,
      GetAccountsAccountExternalAccountsParameters
-> GetAccountsAccountExternalAccountsParameters -> Bool
(GetAccountsAccountExternalAccountsParameters
 -> GetAccountsAccountExternalAccountsParameters -> Bool)
-> (GetAccountsAccountExternalAccountsParameters
    -> GetAccountsAccountExternalAccountsParameters -> Bool)
-> Eq GetAccountsAccountExternalAccountsParameters
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsParameters
-> GetAccountsAccountExternalAccountsParameters -> Bool
$c/= :: GetAccountsAccountExternalAccountsParameters
-> GetAccountsAccountExternalAccountsParameters -> Bool
== :: GetAccountsAccountExternalAccountsParameters
-> GetAccountsAccountExternalAccountsParameters -> Bool
$c== :: GetAccountsAccountExternalAccountsParameters
-> GetAccountsAccountExternalAccountsParameters -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetAccountsAccountExternalAccountsParameters where
  toJSON :: GetAccountsAccountExternalAccountsParameters -> Value
toJSON GetAccountsAccountExternalAccountsParameters
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"pathAccount" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Text
getAccountsAccountExternalAccountsParametersPathAccount GetAccountsAccountExternalAccountsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryEnding_before" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryEndingBefore GetAccountsAccountExternalAccountsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryExpand" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe [Text]
getAccountsAccountExternalAccountsParametersQueryExpand GetAccountsAccountExternalAccountsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryLimit" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Int
getAccountsAccountExternalAccountsParametersQueryLimit GetAccountsAccountExternalAccountsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryStarting_after" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryStartingAfter GetAccountsAccountExternalAccountsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetAccountsAccountExternalAccountsParameters -> Encoding
toEncoding GetAccountsAccountExternalAccountsParameters
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"pathAccount" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Text
getAccountsAccountExternalAccountsParametersPathAccount GetAccountsAccountExternalAccountsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryEnding_before" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryEndingBefore GetAccountsAccountExternalAccountsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryExpand" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe [Text]
getAccountsAccountExternalAccountsParametersQueryExpand GetAccountsAccountExternalAccountsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryLimit" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Int
getAccountsAccountExternalAccountsParametersQueryLimit GetAccountsAccountExternalAccountsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"queryStarting_after" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsParameters -> Maybe Text
getAccountsAccountExternalAccountsParametersQueryStartingAfter GetAccountsAccountExternalAccountsParameters
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON GetAccountsAccountExternalAccountsParameters where
  parseJSON :: Value -> Parser GetAccountsAccountExternalAccountsParameters
parseJSON = String
-> (Object -> Parser GetAccountsAccountExternalAccountsParameters)
-> Value
-> Parser GetAccountsAccountExternalAccountsParameters
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetAccountsAccountExternalAccountsParameters" (\Object
obj -> (((((Text
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Int
 -> Maybe Text
 -> GetAccountsAccountExternalAccountsParameters)
-> Parser
     (Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsParameters)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe Text
-> GetAccountsAccountExternalAccountsParameters
GetAccountsAccountExternalAccountsParameters Parser
  (Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsParameters)
-> Parser Text
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsParameters)
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
"pathAccount")) Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsParameters)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsParameters)
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
"queryEnding_before")) Parser
  (Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsParameters)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Int
      -> Maybe Text -> GetAccountsAccountExternalAccountsParameters)
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
"queryExpand")) Parser
  (Maybe Int
   -> Maybe Text -> GetAccountsAccountExternalAccountsParameters)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text -> GetAccountsAccountExternalAccountsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryLimit")) Parser (Maybe Text -> GetAccountsAccountExternalAccountsParameters)
-> Parser (Maybe Text)
-> Parser GetAccountsAccountExternalAccountsParameters
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
"queryStarting_after"))

-- | Create a new 'GetAccountsAccountExternalAccountsParameters' with all required fields.
mkGetAccountsAccountExternalAccountsParameters ::
  -- | 'getAccountsAccountExternalAccountsParametersPathAccount'
  Data.Text.Internal.Text ->
  GetAccountsAccountExternalAccountsParameters
mkGetAccountsAccountExternalAccountsParameters :: Text -> GetAccountsAccountExternalAccountsParameters
mkGetAccountsAccountExternalAccountsParameters Text
getAccountsAccountExternalAccountsParametersPathAccount =
  GetAccountsAccountExternalAccountsParameters :: Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe Text
-> GetAccountsAccountExternalAccountsParameters
GetAccountsAccountExternalAccountsParameters
    { getAccountsAccountExternalAccountsParametersPathAccount :: Text
getAccountsAccountExternalAccountsParametersPathAccount = Text
getAccountsAccountExternalAccountsParametersPathAccount,
      getAccountsAccountExternalAccountsParametersQueryEndingBefore :: Maybe Text
getAccountsAccountExternalAccountsParametersQueryEndingBefore = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsParametersQueryExpand :: Maybe [Text]
getAccountsAccountExternalAccountsParametersQueryExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsParametersQueryLimit :: Maybe Int
getAccountsAccountExternalAccountsParametersQueryLimit = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsParametersQueryStartingAfter :: Maybe Text
getAccountsAccountExternalAccountsParametersQueryStartingAfter = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

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

-- | Defines the object schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema@ in the specification.
data GetAccountsAccountExternalAccountsResponseBody200 = GetAccountsAccountExternalAccountsResponseBody200
  { -- | data: The list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards.
    GetAccountsAccountExternalAccountsResponseBody200
-> [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data :: ([GetAccountsAccountExternalAccountsResponseBody200Data']),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    GetAccountsAccountExternalAccountsResponseBody200 -> Bool
getAccountsAccountExternalAccountsResponseBody200HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200 -> Text
getAccountsAccountExternalAccountsResponseBody200Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int
-> GetAccountsAccountExternalAccountsResponseBody200
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200]
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200 -> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200 -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200]
    -> String -> String)
-> Show GetAccountsAccountExternalAccountsResponseBody200
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200]
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200]
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200 -> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200 -> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200
-> String
-> String
GHC.Show.Show,
      GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponseBody200 -> Bool
(GetAccountsAccountExternalAccountsResponseBody200
 -> GetAccountsAccountExternalAccountsResponseBody200 -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200
    -> GetAccountsAccountExternalAccountsResponseBody200 -> Bool)
-> Eq GetAccountsAccountExternalAccountsResponseBody200
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponseBody200 -> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponseBody200 -> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponseBody200 -> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200
-> GetAccountsAccountExternalAccountsResponseBody200 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetAccountsAccountExternalAccountsResponseBody200 where
  toJSON :: GetAccountsAccountExternalAccountsResponseBody200 -> Value
toJSON GetAccountsAccountExternalAccountsResponseBody200
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text
-> [GetAccountsAccountExternalAccountsResponseBody200Data'] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200
-> [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data GetAccountsAccountExternalAccountsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"has_more" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200 -> Bool
getAccountsAccountExternalAccountsResponseBody200HasMore GetAccountsAccountExternalAccountsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"url" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200 -> Text
getAccountsAccountExternalAccountsResponseBody200Url GetAccountsAccountExternalAccountsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetAccountsAccountExternalAccountsResponseBody200 -> Encoding
toEncoding GetAccountsAccountExternalAccountsResponseBody200
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text
-> [GetAccountsAccountExternalAccountsResponseBody200Data']
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200
-> [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data GetAccountsAccountExternalAccountsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"has_more" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200 -> Bool
getAccountsAccountExternalAccountsResponseBody200HasMore GetAccountsAccountExternalAccountsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"url" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200 -> Text
getAccountsAccountExternalAccountsResponseBody200Url GetAccountsAccountExternalAccountsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list"))))

instance Data.Aeson.Types.FromJSON.FromJSON GetAccountsAccountExternalAccountsResponseBody200 where
  parseJSON :: Value -> Parser GetAccountsAccountExternalAccountsResponseBody200
parseJSON = String
-> (Object
    -> Parser GetAccountsAccountExternalAccountsResponseBody200)
-> Value
-> Parser GetAccountsAccountExternalAccountsResponseBody200
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetAccountsAccountExternalAccountsResponseBody200" (\Object
obj -> ((([GetAccountsAccountExternalAccountsResponseBody200Data']
 -> Bool
 -> Text
 -> GetAccountsAccountExternalAccountsResponseBody200)
-> Parser
     ([GetAccountsAccountExternalAccountsResponseBody200Data']
      -> Bool
      -> Text
      -> GetAccountsAccountExternalAccountsResponseBody200)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [GetAccountsAccountExternalAccountsResponseBody200Data']
-> Bool
-> Text
-> GetAccountsAccountExternalAccountsResponseBody200
GetAccountsAccountExternalAccountsResponseBody200 Parser
  ([GetAccountsAccountExternalAccountsResponseBody200Data']
   -> Bool
   -> Text
   -> GetAccountsAccountExternalAccountsResponseBody200)
-> Parser [GetAccountsAccountExternalAccountsResponseBody200Data']
-> Parser
     (Bool -> Text -> GetAccountsAccountExternalAccountsResponseBody200)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser [GetAccountsAccountExternalAccountsResponseBody200Data']
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser
  (Bool -> Text -> GetAccountsAccountExternalAccountsResponseBody200)
-> Parser Bool
-> Parser
     (Text -> GetAccountsAccountExternalAccountsResponseBody200)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"has_more")) Parser (Text -> GetAccountsAccountExternalAccountsResponseBody200)
-> Parser Text
-> Parser GetAccountsAccountExternalAccountsResponseBody200
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
"url"))

-- | Create a new 'GetAccountsAccountExternalAccountsResponseBody200' with all required fields.
mkGetAccountsAccountExternalAccountsResponseBody200 ::
  -- | 'getAccountsAccountExternalAccountsResponseBody200Data'
  [GetAccountsAccountExternalAccountsResponseBody200Data'] ->
  -- | 'getAccountsAccountExternalAccountsResponseBody200HasMore'
  GHC.Types.Bool ->
  -- | 'getAccountsAccountExternalAccountsResponseBody200Url'
  Data.Text.Internal.Text ->
  GetAccountsAccountExternalAccountsResponseBody200
mkGetAccountsAccountExternalAccountsResponseBody200 :: [GetAccountsAccountExternalAccountsResponseBody200Data']
-> Bool
-> Text
-> GetAccountsAccountExternalAccountsResponseBody200
mkGetAccountsAccountExternalAccountsResponseBody200 [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data Bool
getAccountsAccountExternalAccountsResponseBody200HasMore Text
getAccountsAccountExternalAccountsResponseBody200Url =
  GetAccountsAccountExternalAccountsResponseBody200 :: [GetAccountsAccountExternalAccountsResponseBody200Data']
-> Bool
-> Text
-> GetAccountsAccountExternalAccountsResponseBody200
GetAccountsAccountExternalAccountsResponseBody200
    { getAccountsAccountExternalAccountsResponseBody200Data :: [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data = [GetAccountsAccountExternalAccountsResponseBody200Data']
getAccountsAccountExternalAccountsResponseBody200Data,
      getAccountsAccountExternalAccountsResponseBody200HasMore :: Bool
getAccountsAccountExternalAccountsResponseBody200HasMore = Bool
getAccountsAccountExternalAccountsResponseBody200HasMore,
      getAccountsAccountExternalAccountsResponseBody200Url :: Text
getAccountsAccountExternalAccountsResponseBody200Url = Text
getAccountsAccountExternalAccountsResponseBody200Url
    }

-- | Defines the object schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema.properties.data.items.anyOf@ in the specification.
data GetAccountsAccountExternalAccountsResponseBody200Data' = GetAccountsAccountExternalAccountsResponseBody200Data'
  { -- | account: The ID of the account that the bank account is associated with.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Account :: (GHC.Maybe.Maybe GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants),
    -- | account_holder_name: The name of the person or business that owns the bank account.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | account_holder_type: The type of entity that holds the account. This can be either \`individual\` or \`company\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_city: City\/District\/Suburb\/Town\/Village.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_country: Billing address country, if provided when creating card.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line1_check: If \`address_line1\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_state: State\/County\/Province\/Region.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_zip: ZIP or postal code.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZip :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_zip_check: If \`address_zip\` was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZipCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | available_payout_methods: A set of available payout methods for this bank account. Only values from this set should be passed as the \`method\` when creating a payout.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
getAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'])),
    -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'BankName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | brand: Card brand. Can be \`American Express\`, \`Diners Club\`, \`Discover\`, \`JCB\`, \`MasterCard\`, \`UnionPay\`, \`Visa\`, or \`Unknown\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Brand :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | country: Two-letter ISO code representing the country the bank account is located in.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | currency: Three-letter [ISO code for the currency](https:\/\/stripe.com\/docs\/payouts) paid out to the bank account.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | customer: The ID of the customer that the bank account is associated with.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Customer :: (GHC.Maybe.Maybe GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants),
    -- | cvc_check: If a CVC was provided, results of the check: \`pass\`, \`fail\`, \`unavailable\`, or \`unchecked\`. A result of unchecked indicates that CVC was provided but hasn\'t been checked yet. Checks are typically performed when attaching a card to a Customer object, or when creating a charge. For more details, see [Check if a card is valid without a charge](https:\/\/support.stripe.com\/questions\/check-if-a-card-is-valid-without-a-charge).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | default_for_currency: Whether this bank account is the default external account for its currency.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Bool
getAccountsAccountExternalAccountsResponseBody200Data'DefaultForCurrency :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | dynamic_last4: (For tokenized numbers only.) The last four digits of the device account number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | exp_month: Two-digit number representing the card\'s expiration month.
    GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpMonth :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | exp_year: Four-digit number representing the card\'s expiration year.
    GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpYear :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | fingerprint: Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | last4: The last four digits of the bank account number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Last4 :: (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.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Object
getAccountsAccountExternalAccountsResponseBody200Data'Metadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | name: Cardholder name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | recipient: The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Recipient :: (GHC.Maybe.Maybe GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants),
    -- | routing_number: The routing transit number for the bank account.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'RoutingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | status: For bank accounts, possible values are \`new\`, \`validated\`, \`verified\`, \`verification_failed\`, or \`errored\`. A bank account that hasn\'t had any activity or validation performed is \`new\`. If Stripe can determine that the bank account exists, its status will be \`validated\`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be \`verified\`. If the verification failed for any reason, such as microdeposit failure, the status will be \`verification_failed\`. If a transfer sent to this bank account fails, we\'ll set the status to \`errored\` and will not continue to send transfers until the bank details are updated.
    --
    -- For external accounts, possible values are \`new\` and \`errored\`. Validations aren\'t run against external accounts because they\'re only used for payouts. This means the other statuses don\'t apply. If a transfer fails, the status is set to \`errored\` and transfers are stopped until account details are updated.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Status :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | tokenization_method: If the card number is tokenized, this is the method that was used. Can be \`android_pay\` (includes Google Pay), \`apple_pay\`, \`masterpass\`, \`visa_checkout\`, or null.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200Data']
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200Data' -> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200Data'
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'
    -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200Data']
    -> String -> String)
-> Show GetAccountsAccountExternalAccountsResponseBody200Data'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200Data']
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200Data']
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200Data' -> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200Data' -> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'
-> String
-> String
GHC.Show.Show,
      GetAccountsAccountExternalAccountsResponseBody200Data'
-> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool
(GetAccountsAccountExternalAccountsResponseBody200Data'
 -> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'
    -> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool)
-> Eq GetAccountsAccountExternalAccountsResponseBody200Data'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200Data'
-> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200Data'
-> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200Data'
-> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200Data'
-> GetAccountsAccountExternalAccountsResponseBody200Data' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetAccountsAccountExternalAccountsResponseBody200Data' where
  toJSON :: GetAccountsAccountExternalAccountsResponseBody200Data' -> Value
toJSON GetAccountsAccountExternalAccountsResponseBody200Data'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"account" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Account GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"account_holder_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderName GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"account_holder_type" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderType GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_city" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCity GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCountry GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1 GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_line1_check" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1Check GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine2 GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressState GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZip GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"address_zip_check" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZipCheck GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"available_payout_methods" Text
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
getAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"bank_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'BankName GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"brand" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Brand GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"country" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Country GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Currency GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Customer GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cvc_check" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'CvcCheck GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_for_currency" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Bool
getAccountsAccountExternalAccountsResponseBody200Data'DefaultForCurrency GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"dynamic_last4" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'DynamicLast4 GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"exp_month" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpMonth GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"exp_year" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpYear GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fingerprint" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Fingerprint GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"funding" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Funding GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Id GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"last4" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Last4 GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Object
getAccountsAccountExternalAccountsResponseBody200Data'Metadata GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Name GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"recipient" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Recipient GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'RoutingNumber GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Status GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tokenization_method" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'TokenizationMethod GetAccountsAccountExternalAccountsResponseBody200Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"bank_account" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetAccountsAccountExternalAccountsResponseBody200Data' -> Encoding
toEncoding GetAccountsAccountExternalAccountsResponseBody200Data'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"account" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Account GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"account_holder_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderName GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"account_holder_type" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderType GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_city" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCity GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCountry GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1 GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_line1_check" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1Check GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine2 GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressState GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZip GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"address_zip_check" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZipCheck GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"available_payout_methods" Text
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
getAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"bank_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'BankName GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"brand" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Brand GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"country" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Country GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Currency GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Customer GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cvc_check" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'CvcCheck GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_for_currency" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Bool
getAccountsAccountExternalAccountsResponseBody200Data'DefaultForCurrency GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"dynamic_last4" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'DynamicLast4 GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"exp_month" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpMonth GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"exp_year" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data' -> Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpYear GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fingerprint" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Fingerprint GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"funding" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Funding GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Id GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"last4" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Last4 GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Object
getAccountsAccountExternalAccountsResponseBody200Data'Metadata GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Name GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"recipient" Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Recipient GetAccountsAccountExternalAccountsResponseBody200Data'
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..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'RoutingNumber GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Status GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tokenization_method" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetAccountsAccountExternalAccountsResponseBody200Data'
-> Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'TokenizationMethod GetAccountsAccountExternalAccountsResponseBody200Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"bank_account")))))))))))))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON GetAccountsAccountExternalAccountsResponseBody200Data' where
  parseJSON :: Value
-> Parser GetAccountsAccountExternalAccountsResponseBody200Data'
parseJSON = String
-> (Object
    -> Parser GetAccountsAccountExternalAccountsResponseBody200Data')
-> Value
-> Parser GetAccountsAccountExternalAccountsResponseBody200Data'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetAccountsAccountExternalAccountsResponseBody200Data'" (\Object
obj -> ((((((((((((((((((((((((((((((((Maybe
   GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe
      [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe
      GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Object
 -> Maybe Text
 -> Maybe
      GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Object
-> Maybe Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> GetAccountsAccountExternalAccountsResponseBody200Data'
GetAccountsAccountExternalAccountsResponseBody200Data' Parser
  (Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"account")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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 Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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_type")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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_check")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe
           [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
   -> Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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_check")) Parser
  (Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser
     (Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"available_payout_methods")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"bank_name")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"brand")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"country")) Parser
  (Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"customer")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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_check")) Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"default_for_currency")) Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"dynamic_last4")) Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"exp_month")) Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"exp_year")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"fingerprint")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"funding")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"id")) Parser
  (Maybe Text
   -> Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Object
      -> Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"last4")) Parser
  (Maybe Object
   -> Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Object)
-> Parser
     (Maybe Text
      -> Maybe
           GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe Text
   -> Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
  (Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"recipient")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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")) Parser
  (Maybe Text
   -> Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> GetAccountsAccountExternalAccountsResponseBody200Data')
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
"status")) Parser
  (Maybe Text
   -> GetAccountsAccountExternalAccountsResponseBody200Data')
-> Parser (Maybe Text)
-> Parser GetAccountsAccountExternalAccountsResponseBody200Data'
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
"tokenization_method"))

-- | Create a new 'GetAccountsAccountExternalAccountsResponseBody200Data'' with all required fields.
mkGetAccountsAccountExternalAccountsResponseBody200Data' :: GetAccountsAccountExternalAccountsResponseBody200Data'
mkGetAccountsAccountExternalAccountsResponseBody200Data' :: GetAccountsAccountExternalAccountsResponseBody200Data'
mkGetAccountsAccountExternalAccountsResponseBody200Data' =
  GetAccountsAccountExternalAccountsResponseBody200Data' :: Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe
     [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Object
-> Maybe Text
-> Maybe
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> GetAccountsAccountExternalAccountsResponseBody200Data'
GetAccountsAccountExternalAccountsResponseBody200Data'
    { getAccountsAccountExternalAccountsResponseBody200Data'Account :: Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Account = Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderName :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderType :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AccountHolderType = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressCity :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCity = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressCountry :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressCountry = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1 :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1Check :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine1Check = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressLine2 :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressLine2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressState :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressState = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressZip :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZip = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AddressZipCheck :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'AddressZipCheck = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods :: Maybe
  [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
getAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods = Maybe
  [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'BankName :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'BankName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Brand :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Brand = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Country :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Country = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Currency :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Currency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Customer :: Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Customer = Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'CvcCheck :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'CvcCheck = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'DefaultForCurrency :: Maybe Bool
getAccountsAccountExternalAccountsResponseBody200Data'DefaultForCurrency = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'DynamicLast4 :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'DynamicLast4 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'ExpMonth :: Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpMonth = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'ExpYear :: Maybe Int
getAccountsAccountExternalAccountsResponseBody200Data'ExpYear = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Fingerprint :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Fingerprint = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Funding :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Funding = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Id :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Last4 :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Last4 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Metadata :: Maybe Object
getAccountsAccountExternalAccountsResponseBody200Data'Metadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Name :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Recipient :: Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
getAccountsAccountExternalAccountsResponseBody200Data'Recipient = Maybe
  GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'RoutingNumber :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'RoutingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'Status :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'Status = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getAccountsAccountExternalAccountsResponseBody200Data'TokenizationMethod :: Maybe Text
getAccountsAccountExternalAccountsResponseBody200Data'TokenizationMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema.properties.data.items.anyOf.properties.account.anyOf@ in the specification.
--
-- The ID of the account that the bank account is associated with.
data GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
  = GetAccountsAccountExternalAccountsResponseBody200Data'Account'Text Data.Text.Internal.Text
  | GetAccountsAccountExternalAccountsResponseBody200Data'Account'Account Account
  deriving (Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants]
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
    -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants]
    -> String -> String)
-> Show
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants]
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants]
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> String
-> String
GHC.Show.Show, GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Bool
(GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
 -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
    -> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
    -> Bool)
-> Eq
     GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Account'Variants
-> Bool
GHC.Classes.Eq)

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

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

-- | Defines the enum schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema.properties.data.items.anyOf.properties.available_payout_methods.items@ in the specification.
data GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'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.
    GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"instant"@
    GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumInstant
  | -- | Represents the JSON value @"standard"@
    GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumStandard
  deriving (Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
    -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
    -> String -> String)
-> Show
     GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods']
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> String
-> String
GHC.Show.Show, GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Bool
(GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
 -> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
 -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
    -> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
    -> Bool)
-> Eq
     GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods' where
  toJSON :: GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Value
toJSON (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'Other Value
val) = Value
val
  toJSON (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumInstant) = Value
"instant"
  toJSON (GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumStandard) = Value
"standard"

instance Data.Aeson.Types.FromJSON.FromJSON GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods' where
  parseJSON :: Value
-> Parser
     GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
parseJSON Value
val =
    GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
-> Parser
     GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
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
"instant" -> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumInstant
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"standard" -> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'EnumStandard
            | Bool
GHC.Base.otherwise -> Value
-> GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'
GetAccountsAccountExternalAccountsResponseBody200Data'AvailablePayoutMethods'Other Value
val
      )

-- | Defines the oneOf schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema.properties.data.items.anyOf.properties.customer.anyOf@ in the specification.
--
-- The ID of the customer that the bank account is associated with.
data GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
  = GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Text Data.Text.Internal.Text
  | GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Customer Customer
  | GetAccountsAccountExternalAccountsResponseBody200Data'Customer'DeletedCustomer DeletedCustomer
  deriving (Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants]
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
    -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants]
    -> String -> String)
-> Show
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants]
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants]
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> String
-> String
GHC.Show.Show, GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Bool
(GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
 -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
    -> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
    -> Bool)
-> Eq
     GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Customer'Variants
-> Bool
GHC.Classes.Eq)

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

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

-- | Defines the oneOf schema located at @paths.\/v1\/accounts\/{account}\/external_accounts.GET.responses.200.content.application\/json.schema.properties.data.items.anyOf.properties.recipient.anyOf@ in the specification.
--
-- The recipient that this card belongs to. This attribute will not be in the card object if the card belongs to a customer or account instead.
data GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
  = GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Text Data.Text.Internal.Text
  | GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Recipient Recipient
  deriving (Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
-> String
[GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants]
-> String -> String
GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
(Int
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
 -> String
 -> String)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
    -> String)
-> ([GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants]
    -> String -> String)
-> Show
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants]
-> String -> String
$cshowList :: [GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants]
-> String -> String
show :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
$cshow :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
showsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
-> String
$cshowsPrec :: Int
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> String
-> String
GHC.Show.Show, GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Bool
(GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
 -> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
 -> Bool)
-> (GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
    -> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
    -> Bool)
-> Eq
     GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Bool
$c/= :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Bool
== :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Bool
$c== :: GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> GetAccountsAccountExternalAccountsResponseBody200Data'Recipient'Variants
-> Bool
GHC.Classes.Eq)

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

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