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

-- | Contains the types generated from the schema Account
module StripeAPI.Types.Account where

import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.AccountBacsDebitPaymentsSettings
import {-# SOURCE #-} StripeAPI.Types.AccountBrandingSettings
import {-# SOURCE #-} StripeAPI.Types.AccountBusinessProfile
import {-# SOURCE #-} StripeAPI.Types.AccountCapabilities
import {-# SOURCE #-} StripeAPI.Types.AccountCardIssuingSettings
import {-# SOURCE #-} StripeAPI.Types.AccountCardPaymentsSettings
import {-# SOURCE #-} StripeAPI.Types.AccountController
import {-# SOURCE #-} StripeAPI.Types.AccountDashboardSettings
import {-# SOURCE #-} StripeAPI.Types.AccountPaymentsSettings
import {-# SOURCE #-} StripeAPI.Types.AccountPayoutSettings
import {-# SOURCE #-} StripeAPI.Types.AccountRequirements
import {-# SOURCE #-} StripeAPI.Types.AccountSepaDebitPaymentsSettings
import {-# SOURCE #-} StripeAPI.Types.AccountSettings
import {-# SOURCE #-} StripeAPI.Types.AccountTosAcceptance
import {-# SOURCE #-} StripeAPI.Types.Address
import {-# SOURCE #-} StripeAPI.Types.BankAccount
import {-# SOURCE #-} StripeAPI.Types.Card
import {-# SOURCE #-} StripeAPI.Types.Customer
import {-# SOURCE #-} StripeAPI.Types.DeletedCustomer
import {-# SOURCE #-} StripeAPI.Types.LegalEntityCompany
import {-# SOURCE #-} StripeAPI.Types.Person
import {-# SOURCE #-} StripeAPI.Types.Recipient
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.account@ in the specification.
--
-- This is an object representing a Stripe account. You can retrieve it to see
-- properties on the account like its current e-mail address or if the account is
-- enabled yet to make live charges.
--
-- Some properties, marked below, are available only to platforms that want to
-- [create and manage Express or Custom accounts](https:\/\/stripe.com\/docs\/connect\/accounts).
data Account = Account
  { -- | business_profile: Business information about the account.
    Account -> Maybe AccountBusinessProfile'
accountBusinessProfile :: (GHC.Maybe.Maybe AccountBusinessProfile'),
    -- | business_type: The business type.
    Account -> Maybe AccountBusinessType'
accountBusinessType :: (GHC.Maybe.Maybe AccountBusinessType'),
    -- | capabilities:
    Account -> Maybe AccountCapabilities
accountCapabilities :: (GHC.Maybe.Maybe AccountCapabilities),
    -- | charges_enabled: Whether the account can create live charges.
    Account -> Maybe Bool
accountChargesEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | company:
    Account -> Maybe LegalEntityCompany
accountCompany :: (GHC.Maybe.Maybe LegalEntityCompany),
    -- | controller:
    Account -> Maybe AccountController
accountController :: (GHC.Maybe.Maybe AccountController),
    -- | country: The account\'s country.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Account -> Maybe Text
accountCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Account -> Maybe Int
accountCreated :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | default_currency: Three-letter ISO currency code representing the default currency for the account. This must be a currency that [Stripe supports in the account\'s country](https:\/\/stripe.com\/docs\/payouts).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Account -> Maybe Text
accountDefaultCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | details_submitted: Whether account details have been submitted. Standard accounts cannot receive payouts before this is true.
    Account -> Maybe Bool
accountDetailsSubmitted :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | email: An email address associated with the account. You can treat this as metadata: it is not used for authentication or messaging account holders.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Account -> Maybe Text
accountEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | external_accounts: External accounts (bank accounts and debit cards) currently attached to this account
    Account -> Maybe AccountExternalAccounts'
accountExternalAccounts :: (GHC.Maybe.Maybe AccountExternalAccounts'),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Account -> Text
accountId :: Data.Text.Internal.Text,
    -- | individual: This is an object representing a person associated with a Stripe account.
    --
    -- A platform cannot access a Standard or Express account\'s persons after the account starts onboarding, such as after generating an account link for the account.
    -- See the [Standard onboarding](https:\/\/stripe.com\/docs\/connect\/standard-accounts) or [Express onboarding documentation](https:\/\/stripe.com\/docs\/connect\/express-accounts) for information about platform pre-filling and account onboarding steps.
    --
    -- Related guide: [Handling Identity Verification with the API](https:\/\/stripe.com\/docs\/connect\/identity-verification-api\#person-information).
    Account -> Maybe Person
accountIndividual :: (GHC.Maybe.Maybe Person),
    -- | 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.
    Account -> Maybe Object
accountMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | payouts_enabled: Whether Stripe can send payouts to this account.
    Account -> Maybe Bool
accountPayoutsEnabled :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | requirements:
    Account -> Maybe AccountRequirements
accountRequirements :: (GHC.Maybe.Maybe AccountRequirements),
    -- | settings: Options for customizing how the account functions within Stripe.
    Account -> Maybe AccountSettings'
accountSettings :: (GHC.Maybe.Maybe AccountSettings'),
    -- | tos_acceptance:
    Account -> Maybe AccountTosAcceptance
accountTosAcceptance :: (GHC.Maybe.Maybe AccountTosAcceptance),
    -- | type: The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
    Account -> Maybe AccountType'
accountType :: (GHC.Maybe.Maybe AccountType')
  }
  deriving
    ( Int -> Account -> ShowS
[Account] -> ShowS
Account -> String
(Int -> Account -> ShowS)
-> (Account -> String) -> ([Account] -> ShowS) -> Show Account
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Account] -> ShowS
$cshowList :: [Account] -> ShowS
show :: Account -> String
$cshow :: Account -> String
showsPrec :: Int -> Account -> ShowS
$cshowsPrec :: Int -> Account -> ShowS
GHC.Show.Show,
      Account -> Account -> Bool
(Account -> Account -> Bool)
-> (Account -> Account -> Bool) -> Eq Account
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Account -> Account -> Bool
$c/= :: Account -> Account -> Bool
== :: Account -> Account -> Bool
$c== :: Account -> Account -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Account where
  toJSON :: Account -> Value
toJSON Account
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"business_profile" Text -> Maybe AccountBusinessProfile' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountBusinessProfile'
accountBusinessProfile Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"business_type" Text -> Maybe AccountBusinessType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountBusinessType'
accountBusinessType Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"capabilities" Text -> Maybe AccountCapabilities -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountCapabilities
accountCapabilities Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"charges_enabled" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountChargesEnabled Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"company" Text -> Maybe LegalEntityCompany -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe LegalEntityCompany
accountCompany Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"controller" Text -> Maybe AccountController -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountController
accountController Account
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..= Account -> Maybe Text
accountCountry Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Int
accountCreated Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"default_currency" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Text
accountDefaultCurrency Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"details_submitted" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountDetailsSubmitted Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"email" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Text
accountEmail Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"external_accounts" Text -> Maybe AccountExternalAccounts' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountExternalAccounts'
accountExternalAccounts Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Text
accountId Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"individual" Text -> Maybe Person -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Person
accountIndividual Account
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..= Account -> Maybe Object
accountMetadata Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payouts_enabled" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountPayoutsEnabled Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"requirements" Text -> Maybe AccountRequirements -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountRequirements
accountRequirements Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"settings" Text -> Maybe AccountSettings' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountSettings'
accountSettings Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tos_acceptance" Text -> Maybe AccountTosAcceptance -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountTosAcceptance
accountTosAcceptance Account
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> Maybe AccountType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountType'
accountType Account
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
"account" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Account -> Encoding
toEncoding Account
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"business_profile" Text -> Maybe AccountBusinessProfile' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountBusinessProfile'
accountBusinessProfile Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"business_type" Text -> Maybe AccountBusinessType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountBusinessType'
accountBusinessType Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"capabilities" Text -> Maybe AccountCapabilities -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountCapabilities
accountCapabilities Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"charges_enabled" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountChargesEnabled Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"company" Text -> Maybe LegalEntityCompany -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe LegalEntityCompany
accountCompany Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"controller" Text -> Maybe AccountController -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountController
accountController Account
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..= Account -> Maybe Text
accountCountry Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Int
accountCreated Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"default_currency" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Text
accountDefaultCurrency Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"details_submitted" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountDetailsSubmitted Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"email" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Text
accountEmail Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"external_accounts" Text -> Maybe AccountExternalAccounts' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountExternalAccounts'
accountExternalAccounts Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Text
accountId Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"individual" Text -> Maybe Person -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Person
accountIndividual Account
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..= Account -> Maybe Object
accountMetadata Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payouts_enabled" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe Bool
accountPayoutsEnabled Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"requirements" Text -> Maybe AccountRequirements -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountRequirements
accountRequirements Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"settings" Text -> Maybe AccountSettings' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountSettings'
accountSettings Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tos_acceptance" Text -> Maybe AccountTosAcceptance -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountTosAcceptance
accountTosAcceptance Account
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"type" Text -> Maybe AccountType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Account -> Maybe AccountType'
accountType Account
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
"account")))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Account where
  parseJSON :: Value -> Parser Account
parseJSON = String -> (Object -> Parser Account) -> Value -> Parser Account
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Account" (\Object
obj -> ((((((((((((((((((((Maybe AccountBusinessProfile'
 -> Maybe AccountBusinessType'
 -> Maybe AccountCapabilities
 -> Maybe Bool
 -> Maybe LegalEntityCompany
 -> Maybe AccountController
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe AccountExternalAccounts'
 -> Text
 -> Maybe Person
 -> Maybe Object
 -> Maybe Bool
 -> Maybe AccountRequirements
 -> Maybe AccountSettings'
 -> Maybe AccountTosAcceptance
 -> Maybe AccountType'
 -> Account)
-> Parser
     (Maybe AccountBusinessProfile'
      -> Maybe AccountBusinessType'
      -> Maybe AccountCapabilities
      -> Maybe Bool
      -> Maybe LegalEntityCompany
      -> Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe AccountBusinessProfile'
-> Maybe AccountBusinessType'
-> Maybe AccountCapabilities
-> Maybe Bool
-> Maybe LegalEntityCompany
-> Maybe AccountController
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe AccountExternalAccounts'
-> Text
-> Maybe Person
-> Maybe Object
-> Maybe Bool
-> Maybe AccountRequirements
-> Maybe AccountSettings'
-> Maybe AccountTosAcceptance
-> Maybe AccountType'
-> Account
Account Parser
  (Maybe AccountBusinessProfile'
   -> Maybe AccountBusinessType'
   -> Maybe AccountCapabilities
   -> Maybe Bool
   -> Maybe LegalEntityCompany
   -> Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountBusinessProfile')
-> Parser
     (Maybe AccountBusinessType'
      -> Maybe AccountCapabilities
      -> Maybe Bool
      -> Maybe LegalEntityCompany
      -> Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountBusinessProfile')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"business_profile")) Parser
  (Maybe AccountBusinessType'
   -> Maybe AccountCapabilities
   -> Maybe Bool
   -> Maybe LegalEntityCompany
   -> Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountBusinessType')
-> Parser
     (Maybe AccountCapabilities
      -> Maybe Bool
      -> Maybe LegalEntityCompany
      -> Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountBusinessType')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"business_type")) Parser
  (Maybe AccountCapabilities
   -> Maybe Bool
   -> Maybe LegalEntityCompany
   -> Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountCapabilities)
-> Parser
     (Maybe Bool
      -> Maybe LegalEntityCompany
      -> Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountCapabilities)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"capabilities")) Parser
  (Maybe Bool
   -> Maybe LegalEntityCompany
   -> Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Bool)
-> Parser
     (Maybe LegalEntityCompany
      -> Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"charges_enabled")) Parser
  (Maybe LegalEntityCompany
   -> Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe LegalEntityCompany)
-> Parser
     (Maybe AccountController
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe LegalEntityCompany)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"company")) Parser
  (Maybe AccountController
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountController)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountController)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"controller")) Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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 Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"created")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"default_currency")) Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"details_submitted")) Parser
  (Maybe Text
   -> Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Text)
-> Parser
     (Maybe AccountExternalAccounts'
      -> Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"email")) Parser
  (Maybe AccountExternalAccounts'
   -> Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountExternalAccounts')
-> Parser
     (Text
      -> Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountExternalAccounts')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"external_accounts")) Parser
  (Text
   -> Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser Text
-> Parser
     (Maybe Person
      -> Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"id")) Parser
  (Maybe Person
   -> Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Person)
-> Parser
     (Maybe Object
      -> Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Person)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"individual")) Parser
  (Maybe Object
   -> Maybe Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Object)
-> Parser
     (Maybe Bool
      -> Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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 Bool
   -> Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe Bool)
-> Parser
     (Maybe AccountRequirements
      -> Maybe AccountSettings'
      -> Maybe AccountTosAcceptance
      -> Maybe AccountType'
      -> Account)
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
"payouts_enabled")) Parser
  (Maybe AccountRequirements
   -> Maybe AccountSettings'
   -> Maybe AccountTosAcceptance
   -> Maybe AccountType'
   -> Account)
-> Parser (Maybe AccountRequirements)
-> Parser
     (Maybe AccountSettings'
      -> Maybe AccountTosAcceptance -> Maybe AccountType' -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountRequirements)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"requirements")) Parser
  (Maybe AccountSettings'
   -> Maybe AccountTosAcceptance -> Maybe AccountType' -> Account)
-> Parser (Maybe AccountSettings')
-> Parser
     (Maybe AccountTosAcceptance -> Maybe AccountType' -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountSettings')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"settings")) Parser
  (Maybe AccountTosAcceptance -> Maybe AccountType' -> Account)
-> Parser (Maybe AccountTosAcceptance)
-> Parser (Maybe AccountType' -> Account)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountTosAcceptance)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tos_acceptance")) Parser (Maybe AccountType' -> Account)
-> Parser (Maybe AccountType') -> Parser Account
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountType')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"type"))

-- | Create a new 'Account' with all required fields.
mkAccount ::
  -- | 'accountId'
  Data.Text.Internal.Text ->
  Account
mkAccount :: Text -> Account
mkAccount Text
accountId =
  Account :: Maybe AccountBusinessProfile'
-> Maybe AccountBusinessType'
-> Maybe AccountCapabilities
-> Maybe Bool
-> Maybe LegalEntityCompany
-> Maybe AccountController
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe AccountExternalAccounts'
-> Text
-> Maybe Person
-> Maybe Object
-> Maybe Bool
-> Maybe AccountRequirements
-> Maybe AccountSettings'
-> Maybe AccountTosAcceptance
-> Maybe AccountType'
-> Account
Account
    { accountBusinessProfile :: Maybe AccountBusinessProfile'
accountBusinessProfile = Maybe AccountBusinessProfile'
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessType :: Maybe AccountBusinessType'
accountBusinessType = Maybe AccountBusinessType'
forall a. Maybe a
GHC.Maybe.Nothing,
      accountCapabilities :: Maybe AccountCapabilities
accountCapabilities = Maybe AccountCapabilities
forall a. Maybe a
GHC.Maybe.Nothing,
      accountChargesEnabled :: Maybe Bool
accountChargesEnabled = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      accountCompany :: Maybe LegalEntityCompany
accountCompany = Maybe LegalEntityCompany
forall a. Maybe a
GHC.Maybe.Nothing,
      accountController :: Maybe AccountController
accountController = Maybe AccountController
forall a. Maybe a
GHC.Maybe.Nothing,
      accountCountry :: Maybe Text
accountCountry = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountCreated :: Maybe Int
accountCreated = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      accountDefaultCurrency :: Maybe Text
accountDefaultCurrency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountDetailsSubmitted :: Maybe Bool
accountDetailsSubmitted = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      accountEmail :: Maybe Text
accountEmail = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts :: Maybe AccountExternalAccounts'
accountExternalAccounts = Maybe AccountExternalAccounts'
forall a. Maybe a
GHC.Maybe.Nothing,
      accountId :: Text
accountId = Text
accountId,
      accountIndividual :: Maybe Person
accountIndividual = Maybe Person
forall a. Maybe a
GHC.Maybe.Nothing,
      accountMetadata :: Maybe Object
accountMetadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      accountPayoutsEnabled :: Maybe Bool
accountPayoutsEnabled = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      accountRequirements :: Maybe AccountRequirements
accountRequirements = Maybe AccountRequirements
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings :: Maybe AccountSettings'
accountSettings = Maybe AccountSettings'
forall a. Maybe a
GHC.Maybe.Nothing,
      accountTosAcceptance :: Maybe AccountTosAcceptance
accountTosAcceptance = Maybe AccountTosAcceptance
forall a. Maybe a
GHC.Maybe.Nothing,
      accountType :: Maybe AccountType'
accountType = Maybe AccountType'
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.account.properties.business_profile.anyOf@ in the specification.
--
-- Business information about the account.
data AccountBusinessProfile' = AccountBusinessProfile'
  { -- | mcc: [The merchant category code for the account](https:\/\/stripe.com\/docs\/connect\/setting-mcc). MCCs are used to classify businesses based on the goods or services they provide.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Mcc :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | name: The customer-facing business name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | product_description: Internal-only description of the product sold or service provided by the business. It\'s used by Stripe for risk and underwriting purposes.
    --
    -- Constraints:
    --
    -- * Maximum length of 40000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'ProductDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | support_address: A publicly available mailing address for sending support issues to.
    AccountBusinessProfile'
-> Maybe AccountBusinessProfile'SupportAddress'
accountBusinessProfile'SupportAddress :: (GHC.Maybe.Maybe AccountBusinessProfile'SupportAddress'),
    -- | support_email: A publicly available email address for sending support issues to.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | support_phone: A publicly available phone number to call with support issues.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportPhone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | support_url: A publicly available website for handling support issues.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | url: The business\'s publicly available website.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Url :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> AccountBusinessProfile' -> ShowS
[AccountBusinessProfile'] -> ShowS
AccountBusinessProfile' -> String
(Int -> AccountBusinessProfile' -> ShowS)
-> (AccountBusinessProfile' -> String)
-> ([AccountBusinessProfile'] -> ShowS)
-> Show AccountBusinessProfile'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountBusinessProfile'] -> ShowS
$cshowList :: [AccountBusinessProfile'] -> ShowS
show :: AccountBusinessProfile' -> String
$cshow :: AccountBusinessProfile' -> String
showsPrec :: Int -> AccountBusinessProfile' -> ShowS
$cshowsPrec :: Int -> AccountBusinessProfile' -> ShowS
GHC.Show.Show,
      AccountBusinessProfile' -> AccountBusinessProfile' -> Bool
(AccountBusinessProfile' -> AccountBusinessProfile' -> Bool)
-> (AccountBusinessProfile' -> AccountBusinessProfile' -> Bool)
-> Eq AccountBusinessProfile'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountBusinessProfile' -> AccountBusinessProfile' -> Bool
$c/= :: AccountBusinessProfile' -> AccountBusinessProfile' -> Bool
== :: AccountBusinessProfile' -> AccountBusinessProfile' -> Bool
$c== :: AccountBusinessProfile' -> AccountBusinessProfile' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON AccountBusinessProfile' where
  toJSON :: AccountBusinessProfile' -> Value
toJSON AccountBusinessProfile'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"mcc" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Mcc AccountBusinessProfile'
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..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Name AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"product_description" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'ProductDescription AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"support_address" Text -> Maybe AccountBusinessProfile'SupportAddress' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'
-> Maybe AccountBusinessProfile'SupportAddress'
accountBusinessProfile'SupportAddress AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"support_email" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportEmail AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"support_phone" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportPhone AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"support_url" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportUrl AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"url" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Url AccountBusinessProfile'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: AccountBusinessProfile' -> Encoding
toEncoding AccountBusinessProfile'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"mcc" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Mcc AccountBusinessProfile'
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..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Name AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"product_description" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'ProductDescription AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"support_address" Text -> Maybe AccountBusinessProfile'SupportAddress' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'
-> Maybe AccountBusinessProfile'SupportAddress'
accountBusinessProfile'SupportAddress AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"support_email" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportEmail AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"support_phone" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportPhone AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"support_url" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'SupportUrl AccountBusinessProfile'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"url" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile' -> Maybe Text
accountBusinessProfile'Url AccountBusinessProfile'
obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfile' where
  parseJSON :: Value -> Parser AccountBusinessProfile'
parseJSON = String
-> (Object -> Parser AccountBusinessProfile')
-> Value
-> Parser AccountBusinessProfile'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AccountBusinessProfile'" (\Object
obj -> ((((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe AccountBusinessProfile'SupportAddress'
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> AccountBusinessProfile')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountBusinessProfile'SupportAddress'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AccountBusinessProfile'SupportAddress'
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountBusinessProfile'
AccountBusinessProfile' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountBusinessProfile'SupportAddress'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AccountBusinessProfile'SupportAddress'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile')
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
"mcc")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe AccountBusinessProfile'SupportAddress'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AccountBusinessProfile'SupportAddress'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile')
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 Text
   -> Maybe AccountBusinessProfile'SupportAddress'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser
     (Maybe AccountBusinessProfile'SupportAddress'
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile')
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
"product_description")) Parser
  (Maybe AccountBusinessProfile'SupportAddress'
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile')
-> Parser (Maybe AccountBusinessProfile'SupportAddress')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe AccountBusinessProfile'SupportAddress')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"support_address")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Text -> Maybe Text -> AccountBusinessProfile')
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
"support_email")) Parser
  (Maybe Text -> Maybe Text -> Maybe Text -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe Text -> AccountBusinessProfile')
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
"support_phone")) Parser (Maybe Text -> Maybe Text -> AccountBusinessProfile')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> AccountBusinessProfile')
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
"support_url")) Parser (Maybe Text -> AccountBusinessProfile')
-> Parser (Maybe Text) -> Parser AccountBusinessProfile'
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
"url"))

-- | Create a new 'AccountBusinessProfile'' with all required fields.
mkAccountBusinessProfile' :: AccountBusinessProfile'
mkAccountBusinessProfile' :: AccountBusinessProfile'
mkAccountBusinessProfile' =
  AccountBusinessProfile' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AccountBusinessProfile'SupportAddress'
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountBusinessProfile'
AccountBusinessProfile'
    { accountBusinessProfile'Mcc :: Maybe Text
accountBusinessProfile'Mcc = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'Name :: Maybe Text
accountBusinessProfile'Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'ProductDescription :: Maybe Text
accountBusinessProfile'ProductDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress :: Maybe AccountBusinessProfile'SupportAddress'
accountBusinessProfile'SupportAddress = Maybe AccountBusinessProfile'SupportAddress'
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportEmail :: Maybe Text
accountBusinessProfile'SupportEmail = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportPhone :: Maybe Text
accountBusinessProfile'SupportPhone = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportUrl :: Maybe Text
accountBusinessProfile'SupportUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'Url :: Maybe Text
accountBusinessProfile'Url = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.account.properties.business_profile.anyOf.properties.support_address.anyOf@ in the specification.
--
-- A publicly available mailing address for sending support issues to.
data AccountBusinessProfile'SupportAddress' = AccountBusinessProfile'SupportAddress'
  { -- | city: City, district, suburb, town, or village.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'City :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | country: Two-letter country code ([ISO 3166-1 alpha-2](https:\/\/en.wikipedia.org\/wiki\/ISO_3166-1_alpha-2)).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Country :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line1: Address line 1 (e.g., street, PO Box, or company name).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line1 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | line2: Address line 2 (e.g., apartment, suite, unit, or building).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | postal_code: ZIP or postal code.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'PostalCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | state: State, county, province, or region.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'State :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> AccountBusinessProfile'SupportAddress' -> ShowS
[AccountBusinessProfile'SupportAddress'] -> ShowS
AccountBusinessProfile'SupportAddress' -> String
(Int -> AccountBusinessProfile'SupportAddress' -> ShowS)
-> (AccountBusinessProfile'SupportAddress' -> String)
-> ([AccountBusinessProfile'SupportAddress'] -> ShowS)
-> Show AccountBusinessProfile'SupportAddress'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountBusinessProfile'SupportAddress'] -> ShowS
$cshowList :: [AccountBusinessProfile'SupportAddress'] -> ShowS
show :: AccountBusinessProfile'SupportAddress' -> String
$cshow :: AccountBusinessProfile'SupportAddress' -> String
showsPrec :: Int -> AccountBusinessProfile'SupportAddress' -> ShowS
$cshowsPrec :: Int -> AccountBusinessProfile'SupportAddress' -> ShowS
GHC.Show.Show,
      AccountBusinessProfile'SupportAddress'
-> AccountBusinessProfile'SupportAddress' -> Bool
(AccountBusinessProfile'SupportAddress'
 -> AccountBusinessProfile'SupportAddress' -> Bool)
-> (AccountBusinessProfile'SupportAddress'
    -> AccountBusinessProfile'SupportAddress' -> Bool)
-> Eq AccountBusinessProfile'SupportAddress'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountBusinessProfile'SupportAddress'
-> AccountBusinessProfile'SupportAddress' -> Bool
$c/= :: AccountBusinessProfile'SupportAddress'
-> AccountBusinessProfile'SupportAddress' -> Bool
== :: AccountBusinessProfile'SupportAddress'
-> AccountBusinessProfile'SupportAddress' -> Bool
$c== :: AccountBusinessProfile'SupportAddress'
-> AccountBusinessProfile'SupportAddress' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON AccountBusinessProfile'SupportAddress' where
  toJSON :: AccountBusinessProfile'SupportAddress' -> Value
toJSON AccountBusinessProfile'SupportAddress'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"city" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'City AccountBusinessProfile'SupportAddress'
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..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Country AccountBusinessProfile'SupportAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line1" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line1 AccountBusinessProfile'SupportAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"line2" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line2 AccountBusinessProfile'SupportAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"postal_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'PostalCode AccountBusinessProfile'SupportAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"state" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'State AccountBusinessProfile'SupportAddress'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: AccountBusinessProfile'SupportAddress' -> Encoding
toEncoding AccountBusinessProfile'SupportAddress'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"city" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'City AccountBusinessProfile'SupportAddress'
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..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Country AccountBusinessProfile'SupportAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line1" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line1 AccountBusinessProfile'SupportAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"line2" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'Line2 AccountBusinessProfile'SupportAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"postal_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'PostalCode AccountBusinessProfile'SupportAddress'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"state" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountBusinessProfile'SupportAddress' -> Maybe Text
accountBusinessProfile'SupportAddress'State AccountBusinessProfile'SupportAddress'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessProfile'SupportAddress' where
  parseJSON :: Value -> Parser AccountBusinessProfile'SupportAddress'
parseJSON = String
-> (Object -> Parser AccountBusinessProfile'SupportAddress')
-> Value
-> Parser AccountBusinessProfile'SupportAddress'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AccountBusinessProfile'SupportAddress'" (\Object
obj -> ((((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> AccountBusinessProfile'SupportAddress')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile'SupportAddress')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountBusinessProfile'SupportAddress'
AccountBusinessProfile'SupportAddress' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile'SupportAddress')
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
"city")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile'SupportAddress')
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 Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountBusinessProfile'SupportAddress')
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
"line1")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text -> AccountBusinessProfile'SupportAddress')
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
"line2")) Parser
  (Maybe Text
   -> Maybe Text -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> AccountBusinessProfile'SupportAddress')
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
"postal_code")) Parser (Maybe Text -> AccountBusinessProfile'SupportAddress')
-> Parser (Maybe Text)
-> Parser AccountBusinessProfile'SupportAddress'
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
"state"))

-- | Create a new 'AccountBusinessProfile'SupportAddress'' with all required fields.
mkAccountBusinessProfile'SupportAddress' :: AccountBusinessProfile'SupportAddress'
mkAccountBusinessProfile'SupportAddress' :: AccountBusinessProfile'SupportAddress'
mkAccountBusinessProfile'SupportAddress' =
  AccountBusinessProfile'SupportAddress' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountBusinessProfile'SupportAddress'
AccountBusinessProfile'SupportAddress'
    { accountBusinessProfile'SupportAddress'City :: Maybe Text
accountBusinessProfile'SupportAddress'City = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress'Country :: Maybe Text
accountBusinessProfile'SupportAddress'Country = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress'Line1 :: Maybe Text
accountBusinessProfile'SupportAddress'Line1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress'Line2 :: Maybe Text
accountBusinessProfile'SupportAddress'Line2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress'PostalCode :: Maybe Text
accountBusinessProfile'SupportAddress'PostalCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountBusinessProfile'SupportAddress'State :: Maybe Text
accountBusinessProfile'SupportAddress'State = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.account.properties.business_type@ in the specification.
--
-- The business type.
data AccountBusinessType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    AccountBusinessType'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.
    AccountBusinessType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"company"@
    AccountBusinessType'EnumCompany
  | -- | Represents the JSON value @"government_entity"@
    AccountBusinessType'EnumGovernmentEntity
  | -- | Represents the JSON value @"individual"@
    AccountBusinessType'EnumIndividual
  | -- | Represents the JSON value @"non_profit"@
    AccountBusinessType'EnumNonProfit
  deriving (Int -> AccountBusinessType' -> ShowS
[AccountBusinessType'] -> ShowS
AccountBusinessType' -> String
(Int -> AccountBusinessType' -> ShowS)
-> (AccountBusinessType' -> String)
-> ([AccountBusinessType'] -> ShowS)
-> Show AccountBusinessType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountBusinessType'] -> ShowS
$cshowList :: [AccountBusinessType'] -> ShowS
show :: AccountBusinessType' -> String
$cshow :: AccountBusinessType' -> String
showsPrec :: Int -> AccountBusinessType' -> ShowS
$cshowsPrec :: Int -> AccountBusinessType' -> ShowS
GHC.Show.Show, AccountBusinessType' -> AccountBusinessType' -> Bool
(AccountBusinessType' -> AccountBusinessType' -> Bool)
-> (AccountBusinessType' -> AccountBusinessType' -> Bool)
-> Eq AccountBusinessType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountBusinessType' -> AccountBusinessType' -> Bool
$c/= :: AccountBusinessType' -> AccountBusinessType' -> Bool
== :: AccountBusinessType' -> AccountBusinessType' -> Bool
$c== :: AccountBusinessType' -> AccountBusinessType' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AccountBusinessType' where
  toJSON :: AccountBusinessType' -> Value
toJSON (AccountBusinessType'Other Value
val) = Value
val
  toJSON (AccountBusinessType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (AccountBusinessType'
AccountBusinessType'EnumCompany) = Value
"company"
  toJSON (AccountBusinessType'
AccountBusinessType'EnumGovernmentEntity) = Value
"government_entity"
  toJSON (AccountBusinessType'
AccountBusinessType'EnumIndividual) = Value
"individual"
  toJSON (AccountBusinessType'
AccountBusinessType'EnumNonProfit) = Value
"non_profit"

instance Data.Aeson.Types.FromJSON.FromJSON AccountBusinessType' where
  parseJSON :: Value -> Parser AccountBusinessType'
parseJSON Value
val =
    AccountBusinessType' -> Parser AccountBusinessType'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"company" -> AccountBusinessType'
AccountBusinessType'EnumCompany
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"government_entity" -> AccountBusinessType'
AccountBusinessType'EnumGovernmentEntity
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"individual" -> AccountBusinessType'
AccountBusinessType'EnumIndividual
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"non_profit" -> AccountBusinessType'
AccountBusinessType'EnumNonProfit
            | Bool
GHC.Base.otherwise -> Value -> AccountBusinessType'
AccountBusinessType'Other Value
val
      )

-- | Defines the object schema located at @components.schemas.account.properties.external_accounts@ in the specification.
--
-- External accounts (bank accounts and debit cards) currently attached to this account
data AccountExternalAccounts' = AccountExternalAccounts'
  { -- | data: The list contains all external accounts that have been attached to the Stripe account. These may be bank accounts or cards.
    AccountExternalAccounts' -> [AccountExternalAccounts'Data']
accountExternalAccounts'Data :: ([AccountExternalAccounts'Data']),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    AccountExternalAccounts' -> Bool
accountExternalAccounts'HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts' -> Text
accountExternalAccounts'Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> AccountExternalAccounts' -> ShowS
[AccountExternalAccounts'] -> ShowS
AccountExternalAccounts' -> String
(Int -> AccountExternalAccounts' -> ShowS)
-> (AccountExternalAccounts' -> String)
-> ([AccountExternalAccounts'] -> ShowS)
-> Show AccountExternalAccounts'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountExternalAccounts'] -> ShowS
$cshowList :: [AccountExternalAccounts'] -> ShowS
show :: AccountExternalAccounts' -> String
$cshow :: AccountExternalAccounts' -> String
showsPrec :: Int -> AccountExternalAccounts' -> ShowS
$cshowsPrec :: Int -> AccountExternalAccounts' -> ShowS
GHC.Show.Show,
      AccountExternalAccounts' -> AccountExternalAccounts' -> Bool
(AccountExternalAccounts' -> AccountExternalAccounts' -> Bool)
-> (AccountExternalAccounts' -> AccountExternalAccounts' -> Bool)
-> Eq AccountExternalAccounts'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountExternalAccounts' -> AccountExternalAccounts' -> Bool
$c/= :: AccountExternalAccounts' -> AccountExternalAccounts' -> Bool
== :: AccountExternalAccounts' -> AccountExternalAccounts' -> Bool
$c== :: AccountExternalAccounts' -> AccountExternalAccounts' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON AccountExternalAccounts' where
  toJSON :: AccountExternalAccounts' -> Value
toJSON AccountExternalAccounts'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text -> [AccountExternalAccounts'Data'] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts' -> [AccountExternalAccounts'Data']
accountExternalAccounts'Data AccountExternalAccounts'
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..= AccountExternalAccounts' -> Bool
accountExternalAccounts'HasMore AccountExternalAccounts'
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..= AccountExternalAccounts' -> Text
accountExternalAccounts'Url AccountExternalAccounts'
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 :: AccountExternalAccounts' -> Encoding
toEncoding AccountExternalAccounts'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text -> [AccountExternalAccounts'Data'] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts' -> [AccountExternalAccounts'Data']
accountExternalAccounts'Data AccountExternalAccounts'
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..= AccountExternalAccounts' -> Bool
accountExternalAccounts'HasMore AccountExternalAccounts'
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..= AccountExternalAccounts' -> Text
accountExternalAccounts'Url AccountExternalAccounts'
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 AccountExternalAccounts' where
  parseJSON :: Value -> Parser AccountExternalAccounts'
parseJSON = String
-> (Object -> Parser AccountExternalAccounts')
-> Value
-> Parser AccountExternalAccounts'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AccountExternalAccounts'" (\Object
obj -> ((([AccountExternalAccounts'Data']
 -> Bool -> Text -> AccountExternalAccounts')
-> Parser
     ([AccountExternalAccounts'Data']
      -> Bool -> Text -> AccountExternalAccounts')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [AccountExternalAccounts'Data']
-> Bool -> Text -> AccountExternalAccounts'
AccountExternalAccounts' Parser
  ([AccountExternalAccounts'Data']
   -> Bool -> Text -> AccountExternalAccounts')
-> Parser [AccountExternalAccounts'Data']
-> Parser (Bool -> Text -> AccountExternalAccounts')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [AccountExternalAccounts'Data']
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser (Bool -> Text -> AccountExternalAccounts')
-> Parser Bool -> Parser (Text -> AccountExternalAccounts')
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 -> AccountExternalAccounts')
-> Parser Text -> Parser AccountExternalAccounts'
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 'AccountExternalAccounts'' with all required fields.
mkAccountExternalAccounts' ::
  -- | 'accountExternalAccounts'Data'
  [AccountExternalAccounts'Data'] ->
  -- | 'accountExternalAccounts'HasMore'
  GHC.Types.Bool ->
  -- | 'accountExternalAccounts'Url'
  Data.Text.Internal.Text ->
  AccountExternalAccounts'
mkAccountExternalAccounts' :: [AccountExternalAccounts'Data']
-> Bool -> Text -> AccountExternalAccounts'
mkAccountExternalAccounts' [AccountExternalAccounts'Data']
accountExternalAccounts'Data Bool
accountExternalAccounts'HasMore Text
accountExternalAccounts'Url =
  AccountExternalAccounts' :: [AccountExternalAccounts'Data']
-> Bool -> Text -> AccountExternalAccounts'
AccountExternalAccounts'
    { accountExternalAccounts'Data :: [AccountExternalAccounts'Data']
accountExternalAccounts'Data = [AccountExternalAccounts'Data']
accountExternalAccounts'Data,
      accountExternalAccounts'HasMore :: Bool
accountExternalAccounts'HasMore = Bool
accountExternalAccounts'HasMore,
      accountExternalAccounts'Url :: Text
accountExternalAccounts'Url = Text
accountExternalAccounts'Url
    }

-- | Defines the object schema located at @components.schemas.account.properties.external_accounts.properties.data.items.anyOf@ in the specification.
data AccountExternalAccounts'Data' = AccountExternalAccounts'Data'
  { -- | account: The ID of the account that the bank account is associated with.
    AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Account'Variants
accountExternalAccounts'Data'Account :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Account'Variants),
    -- | account_holder_name: The name of the person or business that owns the bank account.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AccountHolderType :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_city: City\/District\/Suburb\/Town\/Village.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCity :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_country: Billing address country, if provided when creating card.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCountry :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line1: Address line 1 (Street address\/PO Box\/Company name).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine1Check :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_line2: Address line 2 (Apartment\/Suite\/Unit\/Building).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine2 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_state: State\/County\/Province\/Region.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressState :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | address_zip: ZIP or postal code.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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.
    AccountExternalAccounts'Data'
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
accountExternalAccounts'Data'AvailablePayoutMethods :: (GHC.Maybe.Maybe ([AccountExternalAccounts'Data'AvailablePayoutMethods'])),
    -- | bank_name: Name of the bank associated with the routing number (e.g., \`WELLS FARGO\`).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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.
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | customer: The ID of the customer that the bank account is associated with.
    AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Customer'Variants
accountExternalAccounts'Data'Customer :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'CvcCheck :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | default_for_currency: Whether this bank account is the default external account for its currency.
    AccountExternalAccounts'Data' -> Maybe Bool
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'DynamicLast4 :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | exp_month: Two-digit number representing the card\'s expiration month.
    AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'ExpMonth :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | exp_year: Four-digit number representing the card\'s expiration year.
    AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Fingerprint :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | funding: Card funding type. Can be \`credit\`, \`debit\`, \`prepaid\`, or \`unknown\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Funding :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Id :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | last4: The last four digits of the bank account number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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.
    AccountExternalAccounts'Data' -> Maybe Object
accountExternalAccounts'Data'Metadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | name: Cardholder name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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.
    AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Recipient'Variants
accountExternalAccounts'Data'Recipient :: (GHC.Maybe.Maybe AccountExternalAccounts'Data'Recipient'Variants),
    -- | routing_number: The routing transit number for the bank account.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'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
    AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'TokenizationMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> AccountExternalAccounts'Data' -> ShowS
[AccountExternalAccounts'Data'] -> ShowS
AccountExternalAccounts'Data' -> String
(Int -> AccountExternalAccounts'Data' -> ShowS)
-> (AccountExternalAccounts'Data' -> String)
-> ([AccountExternalAccounts'Data'] -> ShowS)
-> Show AccountExternalAccounts'Data'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountExternalAccounts'Data'] -> ShowS
$cshowList :: [AccountExternalAccounts'Data'] -> ShowS
show :: AccountExternalAccounts'Data' -> String
$cshow :: AccountExternalAccounts'Data' -> String
showsPrec :: Int -> AccountExternalAccounts'Data' -> ShowS
$cshowsPrec :: Int -> AccountExternalAccounts'Data' -> ShowS
GHC.Show.Show,
      AccountExternalAccounts'Data'
-> AccountExternalAccounts'Data' -> Bool
(AccountExternalAccounts'Data'
 -> AccountExternalAccounts'Data' -> Bool)
-> (AccountExternalAccounts'Data'
    -> AccountExternalAccounts'Data' -> Bool)
-> Eq AccountExternalAccounts'Data'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountExternalAccounts'Data'
-> AccountExternalAccounts'Data' -> Bool
$c/= :: AccountExternalAccounts'Data'
-> AccountExternalAccounts'Data' -> Bool
== :: AccountExternalAccounts'Data'
-> AccountExternalAccounts'Data' -> Bool
$c== :: AccountExternalAccounts'Data'
-> AccountExternalAccounts'Data' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON AccountExternalAccounts'Data' where
  toJSON :: AccountExternalAccounts'Data' -> Value
toJSON AccountExternalAccounts'Data'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"account" Text -> Maybe AccountExternalAccounts'Data'Account'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Account'Variants
accountExternalAccounts'Data'Account AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AccountHolderName AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AccountHolderType AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCity AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCountry AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine1 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine1Check AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine2 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressState AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressZip AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressZipCheck AccountExternalAccounts'Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"available_payout_methods" Text
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
accountExternalAccounts'Data'AvailablePayoutMethods AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'BankName AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Brand AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Country AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Currency AccountExternalAccounts'Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text
-> Maybe AccountExternalAccounts'Data'Customer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Customer'Variants
accountExternalAccounts'Data'Customer AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'CvcCheck AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Bool
accountExternalAccounts'Data'DefaultForCurrency AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'DynamicLast4 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'ExpMonth AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'ExpYear AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Fingerprint AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Funding AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Id AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Last4 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Object
accountExternalAccounts'Data'Metadata AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Name AccountExternalAccounts'Data'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"recipient" Text
-> Maybe AccountExternalAccounts'Data'Recipient'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Recipient'Variants
accountExternalAccounts'Data'Recipient AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'RoutingNumber AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Status AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'TokenizationMethod AccountExternalAccounts'Data'
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 :: AccountExternalAccounts'Data' -> Encoding
toEncoding AccountExternalAccounts'Data'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"account" Text
-> Maybe AccountExternalAccounts'Data'Account'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Account'Variants
accountExternalAccounts'Data'Account AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AccountHolderName AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AccountHolderType AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCity AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressCountry AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine1 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine1Check AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressLine2 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressState AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressZip AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'AddressZipCheck AccountExternalAccounts'Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"available_payout_methods" Text
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
accountExternalAccounts'Data'AvailablePayoutMethods AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'BankName AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Brand AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Country AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Currency AccountExternalAccounts'Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text
-> Maybe AccountExternalAccounts'Data'Customer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Customer'Variants
accountExternalAccounts'Data'Customer AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'CvcCheck AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Bool
accountExternalAccounts'Data'DefaultForCurrency AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'DynamicLast4 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'ExpMonth AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Int
accountExternalAccounts'Data'ExpYear AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Fingerprint AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Funding AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Id AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Last4 AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Object
accountExternalAccounts'Data'Metadata AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Name AccountExternalAccounts'Data'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"recipient" Text
-> Maybe AccountExternalAccounts'Data'Recipient'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountExternalAccounts'Data'
-> Maybe AccountExternalAccounts'Data'Recipient'Variants
accountExternalAccounts'Data'Recipient AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'RoutingNumber AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'Status AccountExternalAccounts'Data'
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..= AccountExternalAccounts'Data' -> Maybe Text
accountExternalAccounts'Data'TokenizationMethod AccountExternalAccounts'Data'
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 AccountExternalAccounts'Data' where
  parseJSON :: Value -> Parser AccountExternalAccounts'Data'
parseJSON = String
-> (Object -> Parser AccountExternalAccounts'Data')
-> Value
-> Parser AccountExternalAccounts'Data'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AccountExternalAccounts'Data'" (\Object
obj -> ((((((((((((((((((((((((((((((((Maybe AccountExternalAccounts'Data'Account'Variants
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> AccountExternalAccounts'Data')
-> Parser
     (Maybe AccountExternalAccounts'Data'Account'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe AccountExternalAccounts'Data'Account'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountExternalAccounts'Data'
AccountExternalAccounts'Data' Parser
  (Maybe AccountExternalAccounts'Data'Account'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe AccountExternalAccounts'Data'Account'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe AccountExternalAccounts'Data'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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 [AccountExternalAccounts'Data'AvailablePayoutMethods']
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser
     (Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods'])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe [AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> 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 AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Object
      -> Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Object)
-> Parser
     (Maybe Text
      -> Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe AccountExternalAccounts'Data'Recipient'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> AccountExternalAccounts'Data')
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 AccountExternalAccounts'Data'Recipient'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> AccountExternalAccounts'Data')
-> Parser (Maybe AccountExternalAccounts'Data'Recipient'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Text -> AccountExternalAccounts'Data')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe AccountExternalAccounts'Data'Recipient'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"recipient")) Parser
  (Maybe Text
   -> Maybe Text -> Maybe Text -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Text -> AccountExternalAccounts'Data')
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 -> AccountExternalAccounts'Data')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> AccountExternalAccounts'Data')
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 -> AccountExternalAccounts'Data')
-> Parser (Maybe Text) -> Parser AccountExternalAccounts'Data'
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 'AccountExternalAccounts'Data'' with all required fields.
mkAccountExternalAccounts'Data' :: AccountExternalAccounts'Data'
mkAccountExternalAccounts'Data' :: AccountExternalAccounts'Data'
mkAccountExternalAccounts'Data' =
  AccountExternalAccounts'Data' :: Maybe AccountExternalAccounts'Data'Account'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AccountExternalAccounts'Data'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 AccountExternalAccounts'Data'Recipient'Variants
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> AccountExternalAccounts'Data'
AccountExternalAccounts'Data'
    { accountExternalAccounts'Data'Account :: Maybe AccountExternalAccounts'Data'Account'Variants
accountExternalAccounts'Data'Account = Maybe AccountExternalAccounts'Data'Account'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AccountHolderName :: Maybe Text
accountExternalAccounts'Data'AccountHolderName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AccountHolderType :: Maybe Text
accountExternalAccounts'Data'AccountHolderType = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressCity :: Maybe Text
accountExternalAccounts'Data'AddressCity = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressCountry :: Maybe Text
accountExternalAccounts'Data'AddressCountry = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressLine1 :: Maybe Text
accountExternalAccounts'Data'AddressLine1 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressLine1Check :: Maybe Text
accountExternalAccounts'Data'AddressLine1Check = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressLine2 :: Maybe Text
accountExternalAccounts'Data'AddressLine2 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressState :: Maybe Text
accountExternalAccounts'Data'AddressState = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressZip :: Maybe Text
accountExternalAccounts'Data'AddressZip = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AddressZipCheck :: Maybe Text
accountExternalAccounts'Data'AddressZipCheck = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'AvailablePayoutMethods :: Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
accountExternalAccounts'Data'AvailablePayoutMethods = Maybe [AccountExternalAccounts'Data'AvailablePayoutMethods']
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'BankName :: Maybe Text
accountExternalAccounts'Data'BankName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Brand :: Maybe Text
accountExternalAccounts'Data'Brand = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Country :: Maybe Text
accountExternalAccounts'Data'Country = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Currency :: Maybe Text
accountExternalAccounts'Data'Currency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Customer :: Maybe AccountExternalAccounts'Data'Customer'Variants
accountExternalAccounts'Data'Customer = Maybe AccountExternalAccounts'Data'Customer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'CvcCheck :: Maybe Text
accountExternalAccounts'Data'CvcCheck = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'DefaultForCurrency :: Maybe Bool
accountExternalAccounts'Data'DefaultForCurrency = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'DynamicLast4 :: Maybe Text
accountExternalAccounts'Data'DynamicLast4 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'ExpMonth :: Maybe Int
accountExternalAccounts'Data'ExpMonth = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'ExpYear :: Maybe Int
accountExternalAccounts'Data'ExpYear = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Fingerprint :: Maybe Text
accountExternalAccounts'Data'Fingerprint = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Funding :: Maybe Text
accountExternalAccounts'Data'Funding = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Id :: Maybe Text
accountExternalAccounts'Data'Id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Last4 :: Maybe Text
accountExternalAccounts'Data'Last4 = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Metadata :: Maybe Object
accountExternalAccounts'Data'Metadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Name :: Maybe Text
accountExternalAccounts'Data'Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Recipient :: Maybe AccountExternalAccounts'Data'Recipient'Variants
accountExternalAccounts'Data'Recipient = Maybe AccountExternalAccounts'Data'Recipient'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'RoutingNumber :: Maybe Text
accountExternalAccounts'Data'RoutingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'Status :: Maybe Text
accountExternalAccounts'Data'Status = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      accountExternalAccounts'Data'TokenizationMethod :: Maybe Text
accountExternalAccounts'Data'TokenizationMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.account.properties.external_accounts.properties.data.items.anyOf.properties.account.anyOf@ in the specification.
--
-- The ID of the account that the bank account is associated with.
data AccountExternalAccounts'Data'Account'Variants
  = AccountExternalAccounts'Data'Account'Text Data.Text.Internal.Text
  | AccountExternalAccounts'Data'Account'Account Account
  deriving (Int -> AccountExternalAccounts'Data'Account'Variants -> ShowS
[AccountExternalAccounts'Data'Account'Variants] -> ShowS
AccountExternalAccounts'Data'Account'Variants -> String
(Int -> AccountExternalAccounts'Data'Account'Variants -> ShowS)
-> (AccountExternalAccounts'Data'Account'Variants -> String)
-> ([AccountExternalAccounts'Data'Account'Variants] -> ShowS)
-> Show AccountExternalAccounts'Data'Account'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountExternalAccounts'Data'Account'Variants] -> ShowS
$cshowList :: [AccountExternalAccounts'Data'Account'Variants] -> ShowS
show :: AccountExternalAccounts'Data'Account'Variants -> String
$cshow :: AccountExternalAccounts'Data'Account'Variants -> String
showsPrec :: Int -> AccountExternalAccounts'Data'Account'Variants -> ShowS
$cshowsPrec :: Int -> AccountExternalAccounts'Data'Account'Variants -> ShowS
GHC.Show.Show, AccountExternalAccounts'Data'Account'Variants
-> AccountExternalAccounts'Data'Account'Variants -> Bool
(AccountExternalAccounts'Data'Account'Variants
 -> AccountExternalAccounts'Data'Account'Variants -> Bool)
-> (AccountExternalAccounts'Data'Account'Variants
    -> AccountExternalAccounts'Data'Account'Variants -> Bool)
-> Eq AccountExternalAccounts'Data'Account'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountExternalAccounts'Data'Account'Variants
-> AccountExternalAccounts'Data'Account'Variants -> Bool
$c/= :: AccountExternalAccounts'Data'Account'Variants
-> AccountExternalAccounts'Data'Account'Variants -> Bool
== :: AccountExternalAccounts'Data'Account'Variants
-> AccountExternalAccounts'Data'Account'Variants -> Bool
$c== :: AccountExternalAccounts'Data'Account'Variants
-> AccountExternalAccounts'Data'Account'Variants -> Bool
GHC.Classes.Eq)

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

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

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

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

-- | Defines the oneOf schema located at @components.schemas.account.properties.external_accounts.properties.data.items.anyOf.properties.customer.anyOf@ in the specification.
--
-- The ID of the customer that the bank account is associated with.
data AccountExternalAccounts'Data'Customer'Variants
  = AccountExternalAccounts'Data'Customer'Text Data.Text.Internal.Text
  | AccountExternalAccounts'Data'Customer'Customer Customer
  | AccountExternalAccounts'Data'Customer'DeletedCustomer DeletedCustomer
  deriving (Int -> AccountExternalAccounts'Data'Customer'Variants -> ShowS
[AccountExternalAccounts'Data'Customer'Variants] -> ShowS
AccountExternalAccounts'Data'Customer'Variants -> String
(Int -> AccountExternalAccounts'Data'Customer'Variants -> ShowS)
-> (AccountExternalAccounts'Data'Customer'Variants -> String)
-> ([AccountExternalAccounts'Data'Customer'Variants] -> ShowS)
-> Show AccountExternalAccounts'Data'Customer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountExternalAccounts'Data'Customer'Variants] -> ShowS
$cshowList :: [AccountExternalAccounts'Data'Customer'Variants] -> ShowS
show :: AccountExternalAccounts'Data'Customer'Variants -> String
$cshow :: AccountExternalAccounts'Data'Customer'Variants -> String
showsPrec :: Int -> AccountExternalAccounts'Data'Customer'Variants -> ShowS
$cshowsPrec :: Int -> AccountExternalAccounts'Data'Customer'Variants -> ShowS
GHC.Show.Show, AccountExternalAccounts'Data'Customer'Variants
-> AccountExternalAccounts'Data'Customer'Variants -> Bool
(AccountExternalAccounts'Data'Customer'Variants
 -> AccountExternalAccounts'Data'Customer'Variants -> Bool)
-> (AccountExternalAccounts'Data'Customer'Variants
    -> AccountExternalAccounts'Data'Customer'Variants -> Bool)
-> Eq AccountExternalAccounts'Data'Customer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountExternalAccounts'Data'Customer'Variants
-> AccountExternalAccounts'Data'Customer'Variants -> Bool
$c/= :: AccountExternalAccounts'Data'Customer'Variants
-> AccountExternalAccounts'Data'Customer'Variants -> Bool
== :: AccountExternalAccounts'Data'Customer'Variants
-> AccountExternalAccounts'Data'Customer'Variants -> Bool
$c== :: AccountExternalAccounts'Data'Customer'Variants
-> AccountExternalAccounts'Data'Customer'Variants -> Bool
GHC.Classes.Eq)

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

-- | Defines the oneOf schema located at @components.schemas.account.properties.external_accounts.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 AccountExternalAccounts'Data'Recipient'Variants
  = AccountExternalAccounts'Data'Recipient'Text Data.Text.Internal.Text
  | AccountExternalAccounts'Data'Recipient'Recipient Recipient
  deriving (Int -> AccountExternalAccounts'Data'Recipient'Variants -> ShowS
[AccountExternalAccounts'Data'Recipient'Variants] -> ShowS
AccountExternalAccounts'Data'Recipient'Variants -> String
(Int -> AccountExternalAccounts'Data'Recipient'Variants -> ShowS)
-> (AccountExternalAccounts'Data'Recipient'Variants -> String)
-> ([AccountExternalAccounts'Data'Recipient'Variants] -> ShowS)
-> Show AccountExternalAccounts'Data'Recipient'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountExternalAccounts'Data'Recipient'Variants] -> ShowS
$cshowList :: [AccountExternalAccounts'Data'Recipient'Variants] -> ShowS
show :: AccountExternalAccounts'Data'Recipient'Variants -> String
$cshow :: AccountExternalAccounts'Data'Recipient'Variants -> String
showsPrec :: Int -> AccountExternalAccounts'Data'Recipient'Variants -> ShowS
$cshowsPrec :: Int -> AccountExternalAccounts'Data'Recipient'Variants -> ShowS
GHC.Show.Show, AccountExternalAccounts'Data'Recipient'Variants
-> AccountExternalAccounts'Data'Recipient'Variants -> Bool
(AccountExternalAccounts'Data'Recipient'Variants
 -> AccountExternalAccounts'Data'Recipient'Variants -> Bool)
-> (AccountExternalAccounts'Data'Recipient'Variants
    -> AccountExternalAccounts'Data'Recipient'Variants -> Bool)
-> Eq AccountExternalAccounts'Data'Recipient'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountExternalAccounts'Data'Recipient'Variants
-> AccountExternalAccounts'Data'Recipient'Variants -> Bool
$c/= :: AccountExternalAccounts'Data'Recipient'Variants
-> AccountExternalAccounts'Data'Recipient'Variants -> Bool
== :: AccountExternalAccounts'Data'Recipient'Variants
-> AccountExternalAccounts'Data'Recipient'Variants -> Bool
$c== :: AccountExternalAccounts'Data'Recipient'Variants
-> AccountExternalAccounts'Data'Recipient'Variants -> Bool
GHC.Classes.Eq)

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

-- | Defines the object schema located at @components.schemas.account.properties.settings.anyOf@ in the specification.
--
-- Options for customizing how the account functions within Stripe.
data AccountSettings' = AccountSettings'
  { -- | bacs_debit_payments:
    AccountSettings' -> Maybe AccountBacsDebitPaymentsSettings
accountSettings'BacsDebitPayments :: (GHC.Maybe.Maybe AccountBacsDebitPaymentsSettings),
    -- | branding:
    AccountSettings' -> Maybe AccountBrandingSettings
accountSettings'Branding :: (GHC.Maybe.Maybe AccountBrandingSettings),
    -- | card_issuing:
    AccountSettings' -> Maybe AccountCardIssuingSettings
accountSettings'CardIssuing :: (GHC.Maybe.Maybe AccountCardIssuingSettings),
    -- | card_payments:
    AccountSettings' -> Maybe AccountCardPaymentsSettings
accountSettings'CardPayments :: (GHC.Maybe.Maybe AccountCardPaymentsSettings),
    -- | dashboard:
    AccountSettings' -> Maybe AccountDashboardSettings
accountSettings'Dashboard :: (GHC.Maybe.Maybe AccountDashboardSettings),
    -- | payments:
    AccountSettings' -> Maybe AccountPaymentsSettings
accountSettings'Payments :: (GHC.Maybe.Maybe AccountPaymentsSettings),
    -- | payouts:
    AccountSettings' -> Maybe AccountPayoutSettings
accountSettings'Payouts :: (GHC.Maybe.Maybe AccountPayoutSettings),
    -- | sepa_debit_payments:
    AccountSettings' -> Maybe AccountSepaDebitPaymentsSettings
accountSettings'SepaDebitPayments :: (GHC.Maybe.Maybe AccountSepaDebitPaymentsSettings)
  }
  deriving
    ( Int -> AccountSettings' -> ShowS
[AccountSettings'] -> ShowS
AccountSettings' -> String
(Int -> AccountSettings' -> ShowS)
-> (AccountSettings' -> String)
-> ([AccountSettings'] -> ShowS)
-> Show AccountSettings'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountSettings'] -> ShowS
$cshowList :: [AccountSettings'] -> ShowS
show :: AccountSettings' -> String
$cshow :: AccountSettings' -> String
showsPrec :: Int -> AccountSettings' -> ShowS
$cshowsPrec :: Int -> AccountSettings' -> ShowS
GHC.Show.Show,
      AccountSettings' -> AccountSettings' -> Bool
(AccountSettings' -> AccountSettings' -> Bool)
-> (AccountSettings' -> AccountSettings' -> Bool)
-> Eq AccountSettings'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountSettings' -> AccountSettings' -> Bool
$c/= :: AccountSettings' -> AccountSettings' -> Bool
== :: AccountSettings' -> AccountSettings' -> Bool
$c== :: AccountSettings' -> AccountSettings' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON AccountSettings' where
  toJSON :: AccountSettings' -> Value
toJSON AccountSettings'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"bacs_debit_payments" Text -> Maybe AccountBacsDebitPaymentsSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountBacsDebitPaymentsSettings
accountSettings'BacsDebitPayments AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"branding" Text -> Maybe AccountBrandingSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountBrandingSettings
accountSettings'Branding AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card_issuing" Text -> Maybe AccountCardIssuingSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountCardIssuingSettings
accountSettings'CardIssuing AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card_payments" Text -> Maybe AccountCardPaymentsSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountCardPaymentsSettings
accountSettings'CardPayments AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"dashboard" Text -> Maybe AccountDashboardSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountDashboardSettings
accountSettings'Dashboard AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payments" Text -> Maybe AccountPaymentsSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountPaymentsSettings
accountSettings'Payments AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"payouts" Text -> Maybe AccountPayoutSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountPayoutSettings
accountSettings'Payouts AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"sepa_debit_payments" Text -> Maybe AccountSepaDebitPaymentsSettings -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountSepaDebitPaymentsSettings
accountSettings'SepaDebitPayments AccountSettings'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: AccountSettings' -> Encoding
toEncoding AccountSettings'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"bacs_debit_payments" Text -> Maybe AccountBacsDebitPaymentsSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountBacsDebitPaymentsSettings
accountSettings'BacsDebitPayments AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"branding" Text -> Maybe AccountBrandingSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountBrandingSettings
accountSettings'Branding AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card_issuing" Text -> Maybe AccountCardIssuingSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountCardIssuingSettings
accountSettings'CardIssuing AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card_payments" Text -> Maybe AccountCardPaymentsSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountCardPaymentsSettings
accountSettings'CardPayments AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"dashboard" Text -> Maybe AccountDashboardSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountDashboardSettings
accountSettings'Dashboard AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payments" Text -> Maybe AccountPaymentsSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountPaymentsSettings
accountSettings'Payments AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"payouts" Text -> Maybe AccountPayoutSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountPayoutSettings
accountSettings'Payouts AccountSettings'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"sepa_debit_payments" Text -> Maybe AccountSepaDebitPaymentsSettings -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= AccountSettings' -> Maybe AccountSepaDebitPaymentsSettings
accountSettings'SepaDebitPayments AccountSettings'
obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON AccountSettings' where
  parseJSON :: Value -> Parser AccountSettings'
parseJSON = String
-> (Object -> Parser AccountSettings')
-> Value
-> Parser AccountSettings'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AccountSettings'" (\Object
obj -> ((((((((Maybe AccountBacsDebitPaymentsSettings
 -> Maybe AccountBrandingSettings
 -> Maybe AccountCardIssuingSettings
 -> Maybe AccountCardPaymentsSettings
 -> Maybe AccountDashboardSettings
 -> Maybe AccountPaymentsSettings
 -> Maybe AccountPayoutSettings
 -> Maybe AccountSepaDebitPaymentsSettings
 -> AccountSettings')
-> Parser
     (Maybe AccountBacsDebitPaymentsSettings
      -> Maybe AccountBrandingSettings
      -> Maybe AccountCardIssuingSettings
      -> Maybe AccountCardPaymentsSettings
      -> Maybe AccountDashboardSettings
      -> Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe AccountBacsDebitPaymentsSettings
-> Maybe AccountBrandingSettings
-> Maybe AccountCardIssuingSettings
-> Maybe AccountCardPaymentsSettings
-> Maybe AccountDashboardSettings
-> Maybe AccountPaymentsSettings
-> Maybe AccountPayoutSettings
-> Maybe AccountSepaDebitPaymentsSettings
-> AccountSettings'
AccountSettings' Parser
  (Maybe AccountBacsDebitPaymentsSettings
   -> Maybe AccountBrandingSettings
   -> Maybe AccountCardIssuingSettings
   -> Maybe AccountCardPaymentsSettings
   -> Maybe AccountDashboardSettings
   -> Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountBacsDebitPaymentsSettings)
-> Parser
     (Maybe AccountBrandingSettings
      -> Maybe AccountCardIssuingSettings
      -> Maybe AccountCardPaymentsSettings
      -> Maybe AccountDashboardSettings
      -> Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountBacsDebitPaymentsSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"bacs_debit_payments")) Parser
  (Maybe AccountBrandingSettings
   -> Maybe AccountCardIssuingSettings
   -> Maybe AccountCardPaymentsSettings
   -> Maybe AccountDashboardSettings
   -> Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountBrandingSettings)
-> Parser
     (Maybe AccountCardIssuingSettings
      -> Maybe AccountCardPaymentsSettings
      -> Maybe AccountDashboardSettings
      -> Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountBrandingSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"branding")) Parser
  (Maybe AccountCardIssuingSettings
   -> Maybe AccountCardPaymentsSettings
   -> Maybe AccountDashboardSettings
   -> Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountCardIssuingSettings)
-> Parser
     (Maybe AccountCardPaymentsSettings
      -> Maybe AccountDashboardSettings
      -> Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountCardIssuingSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card_issuing")) Parser
  (Maybe AccountCardPaymentsSettings
   -> Maybe AccountDashboardSettings
   -> Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountCardPaymentsSettings)
-> Parser
     (Maybe AccountDashboardSettings
      -> Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountCardPaymentsSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"card_payments")) Parser
  (Maybe AccountDashboardSettings
   -> Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountDashboardSettings)
-> Parser
     (Maybe AccountPaymentsSettings
      -> Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings
      -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountDashboardSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"dashboard")) Parser
  (Maybe AccountPaymentsSettings
   -> Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings
   -> AccountSettings')
-> Parser (Maybe AccountPaymentsSettings)
-> Parser
     (Maybe AccountPayoutSettings
      -> Maybe AccountSepaDebitPaymentsSettings -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountPaymentsSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payments")) Parser
  (Maybe AccountPayoutSettings
   -> Maybe AccountSepaDebitPaymentsSettings -> AccountSettings')
-> Parser (Maybe AccountPayoutSettings)
-> Parser
     (Maybe AccountSepaDebitPaymentsSettings -> AccountSettings')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountPayoutSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"payouts")) Parser (Maybe AccountSepaDebitPaymentsSettings -> AccountSettings')
-> Parser (Maybe AccountSepaDebitPaymentsSettings)
-> Parser AccountSettings'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe AccountSepaDebitPaymentsSettings)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"sepa_debit_payments"))

-- | Create a new 'AccountSettings'' with all required fields.
mkAccountSettings' :: AccountSettings'
mkAccountSettings' :: AccountSettings'
mkAccountSettings' =
  AccountSettings' :: Maybe AccountBacsDebitPaymentsSettings
-> Maybe AccountBrandingSettings
-> Maybe AccountCardIssuingSettings
-> Maybe AccountCardPaymentsSettings
-> Maybe AccountDashboardSettings
-> Maybe AccountPaymentsSettings
-> Maybe AccountPayoutSettings
-> Maybe AccountSepaDebitPaymentsSettings
-> AccountSettings'
AccountSettings'
    { accountSettings'BacsDebitPayments :: Maybe AccountBacsDebitPaymentsSettings
accountSettings'BacsDebitPayments = Maybe AccountBacsDebitPaymentsSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'Branding :: Maybe AccountBrandingSettings
accountSettings'Branding = Maybe AccountBrandingSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'CardIssuing :: Maybe AccountCardIssuingSettings
accountSettings'CardIssuing = Maybe AccountCardIssuingSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'CardPayments :: Maybe AccountCardPaymentsSettings
accountSettings'CardPayments = Maybe AccountCardPaymentsSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'Dashboard :: Maybe AccountDashboardSettings
accountSettings'Dashboard = Maybe AccountDashboardSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'Payments :: Maybe AccountPaymentsSettings
accountSettings'Payments = Maybe AccountPaymentsSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'Payouts :: Maybe AccountPayoutSettings
accountSettings'Payouts = Maybe AccountPayoutSettings
forall a. Maybe a
GHC.Maybe.Nothing,
      accountSettings'SepaDebitPayments :: Maybe AccountSepaDebitPaymentsSettings
accountSettings'SepaDebitPayments = Maybe AccountSepaDebitPaymentsSettings
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.account.properties.type@ in the specification.
--
-- The Stripe account type. Can be \`standard\`, \`express\`, or \`custom\`.
data AccountType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    AccountType'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.
    AccountType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"custom"@
    AccountType'EnumCustom
  | -- | Represents the JSON value @"express"@
    AccountType'EnumExpress
  | -- | Represents the JSON value @"standard"@
    AccountType'EnumStandard
  deriving (Int -> AccountType' -> ShowS
[AccountType'] -> ShowS
AccountType' -> String
(Int -> AccountType' -> ShowS)
-> (AccountType' -> String)
-> ([AccountType'] -> ShowS)
-> Show AccountType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AccountType'] -> ShowS
$cshowList :: [AccountType'] -> ShowS
show :: AccountType' -> String
$cshow :: AccountType' -> String
showsPrec :: Int -> AccountType' -> ShowS
$cshowsPrec :: Int -> AccountType' -> ShowS
GHC.Show.Show, AccountType' -> AccountType' -> Bool
(AccountType' -> AccountType' -> Bool)
-> (AccountType' -> AccountType' -> Bool) -> Eq AccountType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AccountType' -> AccountType' -> Bool
$c/= :: AccountType' -> AccountType' -> Bool
== :: AccountType' -> AccountType' -> Bool
$c== :: AccountType' -> AccountType' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AccountType' where
  toJSON :: AccountType' -> Value
toJSON (AccountType'Other Value
val) = Value
val
  toJSON (AccountType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (AccountType'
AccountType'EnumCustom) = Value
"custom"
  toJSON (AccountType'
AccountType'EnumExpress) = Value
"express"
  toJSON (AccountType'
AccountType'EnumStandard) = Value
"standard"

instance Data.Aeson.Types.FromJSON.FromJSON AccountType' where
  parseJSON :: Value -> Parser AccountType'
parseJSON Value
val =
    AccountType' -> Parser AccountType'
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
"custom" -> AccountType'
AccountType'EnumCustom
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"express" -> AccountType'
AccountType'EnumExpress
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"standard" -> AccountType'
AccountType'EnumStandard
            | Bool
GHC.Base.otherwise -> Value -> AccountType'
AccountType'Other Value
val
      )