{-# 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 Issuing_Authorization
module StripeAPI.Types.Issuing_Authorization 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.BalanceTransaction
import {-# SOURCE #-} StripeAPI.Types.IssuingAuthorizationAmountDetails
import {-# SOURCE #-} StripeAPI.Types.IssuingAuthorizationMerchantData
import {-# SOURCE #-} StripeAPI.Types.IssuingAuthorizationPendingRequest
import {-# SOURCE #-} StripeAPI.Types.IssuingAuthorizationRequest
import {-# SOURCE #-} StripeAPI.Types.IssuingAuthorizationVerificationData
import {-# SOURCE #-} StripeAPI.Types.Issuing_Card
import {-# SOURCE #-} StripeAPI.Types.Issuing_Cardholder
import {-# SOURCE #-} StripeAPI.Types.Issuing_Transaction
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing.authorization@ in the specification.
--
-- When an [issued card](https:\/\/stripe.com\/docs\/issuing) is used to make a purchase, an Issuing \`Authorization\`
-- object is created. [Authorizations](https:\/\/stripe.com\/docs\/issuing\/purchases\/authorizations) must be approved for the
-- purchase to be completed successfully.
--
-- Related guide: [Issued Card Authorizations](https:\/\/stripe.com\/docs\/issuing\/purchases\/authorizations).
data Issuing'authorization = Issuing'authorization
  { -- | amount: The total amount that was authorized or rejected. This amount is in the card\'s currency and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorization -> Int
issuing'authorizationAmount :: GHC.Types.Int,
    -- | amount_details: Detailed breakdown of amount components. These amounts are denominated in \`currency\` and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorization -> Maybe Issuing'authorizationAmountDetails'
issuing'authorizationAmountDetails :: (GHC.Maybe.Maybe Issuing'authorizationAmountDetails'),
    -- | approved: Whether the authorization has been approved.
    Issuing'authorization -> Bool
issuing'authorizationApproved :: GHC.Types.Bool,
    -- | authorization_method: How the card details were provided.
    Issuing'authorization -> Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod :: Issuing'authorizationAuthorizationMethod',
    -- | balance_transactions: List of balance transactions associated with this authorization.
    Issuing'authorization -> [BalanceTransaction]
issuing'authorizationBalanceTransactions :: ([BalanceTransaction]),
    -- | card: You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders.
    Issuing'authorization -> Issuing'card
issuing'authorizationCard :: Issuing'card,
    -- | cardholder: The cardholder to whom this authorization belongs.
    Issuing'authorization
-> Maybe Issuing'authorizationCardholder'Variants
issuing'authorizationCardholder :: (GHC.Maybe.Maybe Issuing'authorizationCardholder'Variants),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Issuing'authorization -> Int
issuing'authorizationCreated :: GHC.Types.Int,
    -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
    Issuing'authorization -> Text
issuing'authorizationCurrency :: Data.Text.Internal.Text,
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'authorization -> Text
issuing'authorizationId :: Data.Text.Internal.Text,
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    Issuing'authorization -> Bool
issuing'authorizationLivemode :: GHC.Types.Bool,
    -- | merchant_amount: The total amount that was authorized or rejected. This amount is in the \`merchant_currency\` and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorization -> Int
issuing'authorizationMerchantAmount :: GHC.Types.Int,
    -- | merchant_currency: The currency that was presented to the cardholder for the authorization. Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
    Issuing'authorization -> Text
issuing'authorizationMerchantCurrency :: Data.Text.Internal.Text,
    -- | merchant_data:
    Issuing'authorization -> IssuingAuthorizationMerchantData
issuing'authorizationMerchantData :: IssuingAuthorizationMerchantData,
    -- | 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.
    Issuing'authorization -> Object
issuing'authorizationMetadata :: Data.Aeson.Types.Internal.Object,
    -- | pending_request: The pending authorization request. This field will only be non-null during an \`issuing_authorization.request\` webhook.
    Issuing'authorization -> Maybe Issuing'authorizationPendingRequest'
issuing'authorizationPendingRequest :: (GHC.Maybe.Maybe Issuing'authorizationPendingRequest'),
    -- | request_history: History of every time \`pending_request\` was approved\/denied, either by you directly or by Stripe (e.g. based on your \`spending_controls\`). If the merchant changes the authorization by performing an [incremental authorization](https:\/\/stripe.com\/docs\/issuing\/purchases\/authorizations), you can look at this field to see the previous requests for the authorization.
    Issuing'authorization -> [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory :: ([IssuingAuthorizationRequest]),
    -- | status: The current status of the authorization in its lifecycle.
    Issuing'authorization -> Issuing'authorizationStatus'
issuing'authorizationStatus :: Issuing'authorizationStatus',
    -- | transactions: List of [transactions](https:\/\/stripe.com\/docs\/api\/issuing\/transactions) associated with this authorization.
    Issuing'authorization -> [Issuing'transaction]
issuing'authorizationTransactions :: ([Issuing'transaction]),
    -- | verification_data:
    Issuing'authorization -> IssuingAuthorizationVerificationData
issuing'authorizationVerificationData :: IssuingAuthorizationVerificationData,
    -- | wallet: What, if any, digital wallet was used for this authorization. One of \`apple_pay\`, \`google_pay\`, or \`samsung_pay\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'authorization -> Maybe Text
issuing'authorizationWallet :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Issuing'authorization -> ShowS
[Issuing'authorization] -> ShowS
Issuing'authorization -> String
(Int -> Issuing'authorization -> ShowS)
-> (Issuing'authorization -> String)
-> ([Issuing'authorization] -> ShowS)
-> Show Issuing'authorization
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorization] -> ShowS
$cshowList :: [Issuing'authorization] -> ShowS
show :: Issuing'authorization -> String
$cshow :: Issuing'authorization -> String
showsPrec :: Int -> Issuing'authorization -> ShowS
$cshowsPrec :: Int -> Issuing'authorization -> ShowS
GHC.Show.Show,
      Issuing'authorization -> Issuing'authorization -> Bool
(Issuing'authorization -> Issuing'authorization -> Bool)
-> (Issuing'authorization -> Issuing'authorization -> Bool)
-> Eq Issuing'authorization
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorization -> Issuing'authorization -> Bool
$c/= :: Issuing'authorization -> Issuing'authorization -> Bool
== :: Issuing'authorization -> Issuing'authorization -> Bool
$c== :: Issuing'authorization -> Issuing'authorization -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorization where
  toJSON :: Issuing'authorization -> Value
toJSON Issuing'authorization
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationAmount Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_details" Text -> Maybe Issuing'authorizationAmountDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Issuing'authorizationAmountDetails'
issuing'authorizationAmountDetails Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"approved" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Bool
issuing'authorizationApproved Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"authorization_method" Text -> Issuing'authorizationAuthorizationMethod' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"balance_transactions" Text -> [BalanceTransaction] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [BalanceTransaction]
issuing'authorizationBalanceTransactions Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text -> Issuing'card -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'card
issuing'authorizationCard Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cardholder" Text -> Maybe Issuing'authorizationCardholder'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization
-> Maybe Issuing'authorizationCardholder'Variants
issuing'authorizationCardholder Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationCreated Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Text
issuing'authorizationCurrency Issuing'authorization
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..= Issuing'authorization -> Text
issuing'authorizationId Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Bool
issuing'authorizationLivemode Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchant_amount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationMerchantAmount Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchant_currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Text
issuing'authorizationMerchantCurrency Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchant_data" Text -> IssuingAuthorizationMerchantData -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> IssuingAuthorizationMerchantData
issuing'authorizationMerchantData Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Object
issuing'authorizationMetadata Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"pending_request" Text -> Maybe Issuing'authorizationPendingRequest' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Issuing'authorizationPendingRequest'
issuing'authorizationPendingRequest Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"request_history" Text -> [IssuingAuthorizationRequest] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Issuing'authorizationStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'authorizationStatus'
issuing'authorizationStatus Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transactions" Text -> [Issuing'transaction] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [Issuing'transaction]
issuing'authorizationTransactions Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"verification_data" Text -> IssuingAuthorizationVerificationData -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> IssuingAuthorizationVerificationData
issuing'authorizationVerificationData Issuing'authorization
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"wallet" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Text
issuing'authorizationWallet Issuing'authorization
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
"issuing.authorization" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'authorization -> Encoding
toEncoding Issuing'authorization
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationAmount Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_details" Text -> Maybe Issuing'authorizationAmountDetails' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Issuing'authorizationAmountDetails'
issuing'authorizationAmountDetails Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"approved" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Bool
issuing'authorizationApproved Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"authorization_method" Text -> Issuing'authorizationAuthorizationMethod' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"balance_transactions" Text -> [BalanceTransaction] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [BalanceTransaction]
issuing'authorizationBalanceTransactions Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text -> Issuing'card -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'card
issuing'authorizationCard Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cardholder" Text -> Maybe Issuing'authorizationCardholder'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization
-> Maybe Issuing'authorizationCardholder'Variants
issuing'authorizationCardholder Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationCreated Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Text
issuing'authorizationCurrency Issuing'authorization
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..= Issuing'authorization -> Text
issuing'authorizationId Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Bool
issuing'authorizationLivemode Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"merchant_amount" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Int
issuing'authorizationMerchantAmount Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"merchant_currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Text
issuing'authorizationMerchantCurrency Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"merchant_data" Text -> IssuingAuthorizationMerchantData -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> IssuingAuthorizationMerchantData
issuing'authorizationMerchantData Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Object
issuing'authorizationMetadata Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"pending_request" Text -> Maybe Issuing'authorizationPendingRequest' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Issuing'authorizationPendingRequest'
issuing'authorizationPendingRequest Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"request_history" Text -> [IssuingAuthorizationRequest] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Issuing'authorizationStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Issuing'authorizationStatus'
issuing'authorizationStatus Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transactions" Text -> [Issuing'transaction] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> [Issuing'transaction]
issuing'authorizationTransactions Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"verification_data" Text -> IssuingAuthorizationVerificationData -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> IssuingAuthorizationVerificationData
issuing'authorizationVerificationData Issuing'authorization
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"wallet" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorization -> Maybe Text
issuing'authorizationWallet Issuing'authorization
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
"issuing.authorization"))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorization where
  parseJSON :: Value -> Parser Issuing'authorization
parseJSON = String
-> (Object -> Parser Issuing'authorization)
-> Value
-> Parser Issuing'authorization
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'authorization" (\Object
obj -> (((((((((((((((((((((Int
 -> Maybe Issuing'authorizationAmountDetails'
 -> Bool
 -> Issuing'authorizationAuthorizationMethod'
 -> [BalanceTransaction]
 -> Issuing'card
 -> Maybe Issuing'authorizationCardholder'Variants
 -> Int
 -> Text
 -> Text
 -> Bool
 -> Int
 -> Text
 -> IssuingAuthorizationMerchantData
 -> Object
 -> Maybe Issuing'authorizationPendingRequest'
 -> [IssuingAuthorizationRequest]
 -> Issuing'authorizationStatus'
 -> [Issuing'transaction]
 -> IssuingAuthorizationVerificationData
 -> Maybe Text
 -> Issuing'authorization)
-> Parser
     (Int
      -> Maybe Issuing'authorizationAmountDetails'
      -> Bool
      -> Issuing'authorizationAuthorizationMethod'
      -> [BalanceTransaction]
      -> Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int
-> Maybe Issuing'authorizationAmountDetails'
-> Bool
-> Issuing'authorizationAuthorizationMethod'
-> [BalanceTransaction]
-> Issuing'card
-> Maybe Issuing'authorizationCardholder'Variants
-> Int
-> Text
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> Maybe Issuing'authorizationPendingRequest'
-> [IssuingAuthorizationRequest]
-> Issuing'authorizationStatus'
-> [Issuing'transaction]
-> IssuingAuthorizationVerificationData
-> Maybe Text
-> Issuing'authorization
Issuing'authorization Parser
  (Int
   -> Maybe Issuing'authorizationAmountDetails'
   -> Bool
   -> Issuing'authorizationAuthorizationMethod'
   -> [BalanceTransaction]
   -> Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Int
-> Parser
     (Maybe Issuing'authorizationAmountDetails'
      -> Bool
      -> Issuing'authorizationAuthorizationMethod'
      -> [BalanceTransaction]
      -> Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"amount")) Parser
  (Maybe Issuing'authorizationAmountDetails'
   -> Bool
   -> Issuing'authorizationAuthorizationMethod'
   -> [BalanceTransaction]
   -> Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser (Maybe Issuing'authorizationAmountDetails')
-> Parser
     (Bool
      -> Issuing'authorizationAuthorizationMethod'
      -> [BalanceTransaction]
      -> Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'authorizationAmountDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount_details")) Parser
  (Bool
   -> Issuing'authorizationAuthorizationMethod'
   -> [BalanceTransaction]
   -> Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Bool
-> Parser
     (Issuing'authorizationAuthorizationMethod'
      -> [BalanceTransaction]
      -> Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
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
"approved")) Parser
  (Issuing'authorizationAuthorizationMethod'
   -> [BalanceTransaction]
   -> Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Issuing'authorizationAuthorizationMethod'
-> Parser
     ([BalanceTransaction]
      -> Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'authorizationAuthorizationMethod'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"authorization_method")) Parser
  ([BalanceTransaction]
   -> Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser [BalanceTransaction]
-> Parser
     (Issuing'card
      -> Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [BalanceTransaction]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"balance_transactions")) Parser
  (Issuing'card
   -> Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Issuing'card
-> Parser
     (Maybe Issuing'authorizationCardholder'Variants
      -> Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'card
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"card")) Parser
  (Maybe Issuing'authorizationCardholder'Variants
   -> Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser (Maybe Issuing'authorizationCardholder'Variants)
-> Parser
     (Int
      -> Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'authorizationCardholder'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"cardholder")) Parser
  (Int
   -> Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Int
-> Parser
     (Text
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"created")) Parser
  (Text
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Text
-> Parser
     (Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"currency")) Parser
  (Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Text
-> Parser
     (Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
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
  (Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Bool
-> Parser
     (Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
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
"livemode")) Parser
  (Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Int
-> Parser
     (Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"merchant_amount")) Parser
  (Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Text
-> Parser
     (IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
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
"merchant_currency")) Parser
  (IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser IssuingAuthorizationMerchantData
-> Parser
     (Object
      -> Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingAuthorizationMerchantData
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"merchant_data")) Parser
  (Object
   -> Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Object
-> Parser
     (Maybe Issuing'authorizationPendingRequest'
      -> [IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Object
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"metadata")) Parser
  (Maybe Issuing'authorizationPendingRequest'
   -> [IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser (Maybe Issuing'authorizationPendingRequest')
-> Parser
     ([IssuingAuthorizationRequest]
      -> Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'authorizationPendingRequest')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"pending_request")) Parser
  ([IssuingAuthorizationRequest]
   -> Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser [IssuingAuthorizationRequest]
-> Parser
     (Issuing'authorizationStatus'
      -> [Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [IssuingAuthorizationRequest]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"request_history")) Parser
  (Issuing'authorizationStatus'
   -> [Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser Issuing'authorizationStatus'
-> Parser
     ([Issuing'transaction]
      -> IssuingAuthorizationVerificationData
      -> Maybe Text
      -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'authorizationStatus'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status")) Parser
  ([Issuing'transaction]
   -> IssuingAuthorizationVerificationData
   -> Maybe Text
   -> Issuing'authorization)
-> Parser [Issuing'transaction]
-> Parser
     (IssuingAuthorizationVerificationData
      -> Maybe Text -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [Issuing'transaction]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"transactions")) Parser
  (IssuingAuthorizationVerificationData
   -> Maybe Text -> Issuing'authorization)
-> Parser IssuingAuthorizationVerificationData
-> Parser (Maybe Text -> Issuing'authorization)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingAuthorizationVerificationData
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"verification_data")) Parser (Maybe Text -> Issuing'authorization)
-> Parser (Maybe Text) -> Parser Issuing'authorization
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
"wallet"))

-- | Create a new 'Issuing'authorization' with all required fields.
mkIssuing'authorization ::
  -- | 'issuing'authorizationAmount'
  GHC.Types.Int ->
  -- | 'issuing'authorizationApproved'
  GHC.Types.Bool ->
  -- | 'issuing'authorizationAuthorizationMethod'
  Issuing'authorizationAuthorizationMethod' ->
  -- | 'issuing'authorizationBalanceTransactions'
  [BalanceTransaction] ->
  -- | 'issuing'authorizationCard'
  Issuing'card ->
  -- | 'issuing'authorizationCreated'
  GHC.Types.Int ->
  -- | 'issuing'authorizationCurrency'
  Data.Text.Internal.Text ->
  -- | 'issuing'authorizationId'
  Data.Text.Internal.Text ->
  -- | 'issuing'authorizationLivemode'
  GHC.Types.Bool ->
  -- | 'issuing'authorizationMerchantAmount'
  GHC.Types.Int ->
  -- | 'issuing'authorizationMerchantCurrency'
  Data.Text.Internal.Text ->
  -- | 'issuing'authorizationMerchantData'
  IssuingAuthorizationMerchantData ->
  -- | 'issuing'authorizationMetadata'
  Data.Aeson.Types.Internal.Object ->
  -- | 'issuing'authorizationRequestHistory'
  [IssuingAuthorizationRequest] ->
  -- | 'issuing'authorizationStatus'
  Issuing'authorizationStatus' ->
  -- | 'issuing'authorizationTransactions'
  [Issuing'transaction] ->
  -- | 'issuing'authorizationVerificationData'
  IssuingAuthorizationVerificationData ->
  Issuing'authorization
mkIssuing'authorization :: Int
-> Bool
-> Issuing'authorizationAuthorizationMethod'
-> [BalanceTransaction]
-> Issuing'card
-> Int
-> Text
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> [IssuingAuthorizationRequest]
-> Issuing'authorizationStatus'
-> [Issuing'transaction]
-> IssuingAuthorizationVerificationData
-> Issuing'authorization
mkIssuing'authorization Int
issuing'authorizationAmount Bool
issuing'authorizationApproved Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod [BalanceTransaction]
issuing'authorizationBalanceTransactions Issuing'card
issuing'authorizationCard Int
issuing'authorizationCreated Text
issuing'authorizationCurrency Text
issuing'authorizationId Bool
issuing'authorizationLivemode Int
issuing'authorizationMerchantAmount Text
issuing'authorizationMerchantCurrency IssuingAuthorizationMerchantData
issuing'authorizationMerchantData Object
issuing'authorizationMetadata [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory Issuing'authorizationStatus'
issuing'authorizationStatus [Issuing'transaction]
issuing'authorizationTransactions IssuingAuthorizationVerificationData
issuing'authorizationVerificationData =
  Issuing'authorization :: Int
-> Maybe Issuing'authorizationAmountDetails'
-> Bool
-> Issuing'authorizationAuthorizationMethod'
-> [BalanceTransaction]
-> Issuing'card
-> Maybe Issuing'authorizationCardholder'Variants
-> Int
-> Text
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> Maybe Issuing'authorizationPendingRequest'
-> [IssuingAuthorizationRequest]
-> Issuing'authorizationStatus'
-> [Issuing'transaction]
-> IssuingAuthorizationVerificationData
-> Maybe Text
-> Issuing'authorization
Issuing'authorization
    { issuing'authorizationAmount :: Int
issuing'authorizationAmount = Int
issuing'authorizationAmount,
      issuing'authorizationAmountDetails :: Maybe Issuing'authorizationAmountDetails'
issuing'authorizationAmountDetails = Maybe Issuing'authorizationAmountDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationApproved :: Bool
issuing'authorizationApproved = Bool
issuing'authorizationApproved,
      issuing'authorizationAuthorizationMethod :: Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod = Issuing'authorizationAuthorizationMethod'
issuing'authorizationAuthorizationMethod,
      issuing'authorizationBalanceTransactions :: [BalanceTransaction]
issuing'authorizationBalanceTransactions = [BalanceTransaction]
issuing'authorizationBalanceTransactions,
      issuing'authorizationCard :: Issuing'card
issuing'authorizationCard = Issuing'card
issuing'authorizationCard,
      issuing'authorizationCardholder :: Maybe Issuing'authorizationCardholder'Variants
issuing'authorizationCardholder = Maybe Issuing'authorizationCardholder'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationCreated :: Int
issuing'authorizationCreated = Int
issuing'authorizationCreated,
      issuing'authorizationCurrency :: Text
issuing'authorizationCurrency = Text
issuing'authorizationCurrency,
      issuing'authorizationId :: Text
issuing'authorizationId = Text
issuing'authorizationId,
      issuing'authorizationLivemode :: Bool
issuing'authorizationLivemode = Bool
issuing'authorizationLivemode,
      issuing'authorizationMerchantAmount :: Int
issuing'authorizationMerchantAmount = Int
issuing'authorizationMerchantAmount,
      issuing'authorizationMerchantCurrency :: Text
issuing'authorizationMerchantCurrency = Text
issuing'authorizationMerchantCurrency,
      issuing'authorizationMerchantData :: IssuingAuthorizationMerchantData
issuing'authorizationMerchantData = IssuingAuthorizationMerchantData
issuing'authorizationMerchantData,
      issuing'authorizationMetadata :: Object
issuing'authorizationMetadata = Object
issuing'authorizationMetadata,
      issuing'authorizationPendingRequest :: Maybe Issuing'authorizationPendingRequest'
issuing'authorizationPendingRequest = Maybe Issuing'authorizationPendingRequest'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationRequestHistory :: [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory = [IssuingAuthorizationRequest]
issuing'authorizationRequestHistory,
      issuing'authorizationStatus :: Issuing'authorizationStatus'
issuing'authorizationStatus = Issuing'authorizationStatus'
issuing'authorizationStatus,
      issuing'authorizationTransactions :: [Issuing'transaction]
issuing'authorizationTransactions = [Issuing'transaction]
issuing'authorizationTransactions,
      issuing'authorizationVerificationData :: IssuingAuthorizationVerificationData
issuing'authorizationVerificationData = IssuingAuthorizationVerificationData
issuing'authorizationVerificationData,
      issuing'authorizationWallet :: Maybe Text
issuing'authorizationWallet = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing.authorization.properties.amount_details.anyOf@ in the specification.
--
-- Detailed breakdown of amount components. These amounts are denominated in \\\`currency\\\` and in the [smallest currency unit](https:\\\/\\\/stripe.com\\\/docs\\\/currencies\\\#zero-decimal).
data Issuing'authorizationAmountDetails' = Issuing'authorizationAmountDetails'
  { -- | atm_fee: The fee charged by the ATM for the cash withdrawal.
    Issuing'authorizationAmountDetails' -> Maybe Int
issuing'authorizationAmountDetails'AtmFee :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> Issuing'authorizationAmountDetails' -> ShowS
[Issuing'authorizationAmountDetails'] -> ShowS
Issuing'authorizationAmountDetails' -> String
(Int -> Issuing'authorizationAmountDetails' -> ShowS)
-> (Issuing'authorizationAmountDetails' -> String)
-> ([Issuing'authorizationAmountDetails'] -> ShowS)
-> Show Issuing'authorizationAmountDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationAmountDetails'] -> ShowS
$cshowList :: [Issuing'authorizationAmountDetails'] -> ShowS
show :: Issuing'authorizationAmountDetails' -> String
$cshow :: Issuing'authorizationAmountDetails' -> String
showsPrec :: Int -> Issuing'authorizationAmountDetails' -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationAmountDetails' -> ShowS
GHC.Show.Show,
      Issuing'authorizationAmountDetails'
-> Issuing'authorizationAmountDetails' -> Bool
(Issuing'authorizationAmountDetails'
 -> Issuing'authorizationAmountDetails' -> Bool)
-> (Issuing'authorizationAmountDetails'
    -> Issuing'authorizationAmountDetails' -> Bool)
-> Eq Issuing'authorizationAmountDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationAmountDetails'
-> Issuing'authorizationAmountDetails' -> Bool
$c/= :: Issuing'authorizationAmountDetails'
-> Issuing'authorizationAmountDetails' -> Bool
== :: Issuing'authorizationAmountDetails'
-> Issuing'authorizationAmountDetails' -> Bool
$c== :: Issuing'authorizationAmountDetails'
-> Issuing'authorizationAmountDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationAmountDetails' where
  toJSON :: Issuing'authorizationAmountDetails' -> Value
toJSON Issuing'authorizationAmountDetails'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"atm_fee" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationAmountDetails' -> Maybe Int
issuing'authorizationAmountDetails'AtmFee Issuing'authorizationAmountDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'authorizationAmountDetails' -> Encoding
toEncoding Issuing'authorizationAmountDetails'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"atm_fee" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationAmountDetails' -> Maybe Int
issuing'authorizationAmountDetails'AtmFee Issuing'authorizationAmountDetails'
obj)

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationAmountDetails' where
  parseJSON :: Value -> Parser Issuing'authorizationAmountDetails'
parseJSON = String
-> (Object -> Parser Issuing'authorizationAmountDetails')
-> Value
-> Parser Issuing'authorizationAmountDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'authorizationAmountDetails'" (\Object
obj -> (Maybe Int -> Issuing'authorizationAmountDetails')
-> Parser (Maybe Int -> Issuing'authorizationAmountDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Issuing'authorizationAmountDetails'
Issuing'authorizationAmountDetails' Parser (Maybe Int -> Issuing'authorizationAmountDetails')
-> Parser (Maybe Int) -> Parser Issuing'authorizationAmountDetails'
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
"atm_fee"))

-- | Create a new 'Issuing'authorizationAmountDetails'' with all required fields.
mkIssuing'authorizationAmountDetails' :: Issuing'authorizationAmountDetails'
mkIssuing'authorizationAmountDetails' :: Issuing'authorizationAmountDetails'
mkIssuing'authorizationAmountDetails' = Issuing'authorizationAmountDetails' :: Maybe Int -> Issuing'authorizationAmountDetails'
Issuing'authorizationAmountDetails' {issuing'authorizationAmountDetails'AtmFee :: Maybe Int
issuing'authorizationAmountDetails'AtmFee = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing}

-- | Defines the enum schema located at @components.schemas.issuing.authorization.properties.authorization_method@ in the specification.
--
-- How the card details were provided.
data Issuing'authorizationAuthorizationMethod'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    Issuing'authorizationAuthorizationMethod'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.
    Issuing'authorizationAuthorizationMethod'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"chip"@
    Issuing'authorizationAuthorizationMethod'EnumChip
  | -- | Represents the JSON value @"contactless"@
    Issuing'authorizationAuthorizationMethod'EnumContactless
  | -- | Represents the JSON value @"keyed_in"@
    Issuing'authorizationAuthorizationMethod'EnumKeyedIn
  | -- | Represents the JSON value @"online"@
    Issuing'authorizationAuthorizationMethod'EnumOnline
  | -- | Represents the JSON value @"swipe"@
    Issuing'authorizationAuthorizationMethod'EnumSwipe
  deriving (Int -> Issuing'authorizationAuthorizationMethod' -> ShowS
[Issuing'authorizationAuthorizationMethod'] -> ShowS
Issuing'authorizationAuthorizationMethod' -> String
(Int -> Issuing'authorizationAuthorizationMethod' -> ShowS)
-> (Issuing'authorizationAuthorizationMethod' -> String)
-> ([Issuing'authorizationAuthorizationMethod'] -> ShowS)
-> Show Issuing'authorizationAuthorizationMethod'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationAuthorizationMethod'] -> ShowS
$cshowList :: [Issuing'authorizationAuthorizationMethod'] -> ShowS
show :: Issuing'authorizationAuthorizationMethod' -> String
$cshow :: Issuing'authorizationAuthorizationMethod' -> String
showsPrec :: Int -> Issuing'authorizationAuthorizationMethod' -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationAuthorizationMethod' -> ShowS
GHC.Show.Show, Issuing'authorizationAuthorizationMethod'
-> Issuing'authorizationAuthorizationMethod' -> Bool
(Issuing'authorizationAuthorizationMethod'
 -> Issuing'authorizationAuthorizationMethod' -> Bool)
-> (Issuing'authorizationAuthorizationMethod'
    -> Issuing'authorizationAuthorizationMethod' -> Bool)
-> Eq Issuing'authorizationAuthorizationMethod'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationAuthorizationMethod'
-> Issuing'authorizationAuthorizationMethod' -> Bool
$c/= :: Issuing'authorizationAuthorizationMethod'
-> Issuing'authorizationAuthorizationMethod' -> Bool
== :: Issuing'authorizationAuthorizationMethod'
-> Issuing'authorizationAuthorizationMethod' -> Bool
$c== :: Issuing'authorizationAuthorizationMethod'
-> Issuing'authorizationAuthorizationMethod' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationAuthorizationMethod' where
  toJSON :: Issuing'authorizationAuthorizationMethod' -> Value
toJSON (Issuing'authorizationAuthorizationMethod'Other Value
val) = Value
val
  toJSON (Issuing'authorizationAuthorizationMethod'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumChip) = Value
"chip"
  toJSON (Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumContactless) = Value
"contactless"
  toJSON (Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumKeyedIn) = Value
"keyed_in"
  toJSON (Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumOnline) = Value
"online"
  toJSON (Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumSwipe) = Value
"swipe"

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationAuthorizationMethod' where
  parseJSON :: Value -> Parser Issuing'authorizationAuthorizationMethod'
parseJSON Value
val =
    Issuing'authorizationAuthorizationMethod'
-> Parser Issuing'authorizationAuthorizationMethod'
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
"chip" -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumChip
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"contactless" -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumContactless
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"keyed_in" -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumKeyedIn
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"online" -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumOnline
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"swipe" -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'EnumSwipe
            | Bool
GHC.Base.otherwise -> Value -> Issuing'authorizationAuthorizationMethod'
Issuing'authorizationAuthorizationMethod'Other Value
val
      )

-- | Defines the oneOf schema located at @components.schemas.issuing.authorization.properties.cardholder.anyOf@ in the specification.
--
-- The cardholder to whom this authorization belongs.
data Issuing'authorizationCardholder'Variants
  = Issuing'authorizationCardholder'Text Data.Text.Internal.Text
  | Issuing'authorizationCardholder'Issuing'cardholder Issuing'cardholder
  deriving (Int -> Issuing'authorizationCardholder'Variants -> ShowS
[Issuing'authorizationCardholder'Variants] -> ShowS
Issuing'authorizationCardholder'Variants -> String
(Int -> Issuing'authorizationCardholder'Variants -> ShowS)
-> (Issuing'authorizationCardholder'Variants -> String)
-> ([Issuing'authorizationCardholder'Variants] -> ShowS)
-> Show Issuing'authorizationCardholder'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationCardholder'Variants] -> ShowS
$cshowList :: [Issuing'authorizationCardholder'Variants] -> ShowS
show :: Issuing'authorizationCardholder'Variants -> String
$cshow :: Issuing'authorizationCardholder'Variants -> String
showsPrec :: Int -> Issuing'authorizationCardholder'Variants -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationCardholder'Variants -> ShowS
GHC.Show.Show, Issuing'authorizationCardholder'Variants
-> Issuing'authorizationCardholder'Variants -> Bool
(Issuing'authorizationCardholder'Variants
 -> Issuing'authorizationCardholder'Variants -> Bool)
-> (Issuing'authorizationCardholder'Variants
    -> Issuing'authorizationCardholder'Variants -> Bool)
-> Eq Issuing'authorizationCardholder'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationCardholder'Variants
-> Issuing'authorizationCardholder'Variants -> Bool
$c/= :: Issuing'authorizationCardholder'Variants
-> Issuing'authorizationCardholder'Variants -> Bool
== :: Issuing'authorizationCardholder'Variants
-> Issuing'authorizationCardholder'Variants -> Bool
$c== :: Issuing'authorizationCardholder'Variants
-> Issuing'authorizationCardholder'Variants -> Bool
GHC.Classes.Eq)

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

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

-- | Defines the object schema located at @components.schemas.issuing.authorization.properties.pending_request.anyOf@ in the specification.
--
-- The pending authorization request. This field will only be non-null during an \\\`issuing_authorization.request\\\` webhook.
data Issuing'authorizationPendingRequest' = Issuing'authorizationPendingRequest'
  { -- | amount: The additional amount Stripe will hold if the authorization is approved, in the card\'s [currency](https:\/\/stripe.com\/docs\/api\#issuing_authorization_object-pending-request-currency) and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'Amount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | amount_details: Detailed breakdown of amount components. These amounts are denominated in \`currency\` and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorizationPendingRequest'
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
issuing'authorizationPendingRequest'AmountDetails :: (GHC.Maybe.Maybe Issuing'authorizationPendingRequest'AmountDetails'),
    -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
    Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'Currency :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | is_amount_controllable: If set \`true\`, you may provide [amount](https:\/\/stripe.com\/docs\/api\/issuing\/authorizations\/approve\#approve_issuing_authorization-amount) to control how much to hold for the authorization.
    Issuing'authorizationPendingRequest' -> Maybe Bool
issuing'authorizationPendingRequest'IsAmountControllable :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | merchant_amount: The amount the merchant is requesting to be authorized in the \`merchant_currency\`. The amount is in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'MerchantAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | merchant_currency: The local currency the merchant is requesting to authorize.
    Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'MerchantCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Issuing'authorizationPendingRequest' -> ShowS
[Issuing'authorizationPendingRequest'] -> ShowS
Issuing'authorizationPendingRequest' -> String
(Int -> Issuing'authorizationPendingRequest' -> ShowS)
-> (Issuing'authorizationPendingRequest' -> String)
-> ([Issuing'authorizationPendingRequest'] -> ShowS)
-> Show Issuing'authorizationPendingRequest'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationPendingRequest'] -> ShowS
$cshowList :: [Issuing'authorizationPendingRequest'] -> ShowS
show :: Issuing'authorizationPendingRequest' -> String
$cshow :: Issuing'authorizationPendingRequest' -> String
showsPrec :: Int -> Issuing'authorizationPendingRequest' -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationPendingRequest' -> ShowS
GHC.Show.Show,
      Issuing'authorizationPendingRequest'
-> Issuing'authorizationPendingRequest' -> Bool
(Issuing'authorizationPendingRequest'
 -> Issuing'authorizationPendingRequest' -> Bool)
-> (Issuing'authorizationPendingRequest'
    -> Issuing'authorizationPendingRequest' -> Bool)
-> Eq Issuing'authorizationPendingRequest'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationPendingRequest'
-> Issuing'authorizationPendingRequest' -> Bool
$c/= :: Issuing'authorizationPendingRequest'
-> Issuing'authorizationPendingRequest' -> Bool
== :: Issuing'authorizationPendingRequest'
-> Issuing'authorizationPendingRequest' -> Bool
$c== :: Issuing'authorizationPendingRequest'
-> Issuing'authorizationPendingRequest' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest' where
  toJSON :: Issuing'authorizationPendingRequest' -> Value
toJSON Issuing'authorizationPendingRequest'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'Amount Issuing'authorizationPendingRequest'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_details" Text
-> Maybe Issuing'authorizationPendingRequest'AmountDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest'
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
issuing'authorizationPendingRequest'AmountDetails Issuing'authorizationPendingRequest'
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..= Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'Currency Issuing'authorizationPendingRequest'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"is_amount_controllable" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Bool
issuing'authorizationPendingRequest'IsAmountControllable Issuing'authorizationPendingRequest'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchant_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'MerchantAmount Issuing'authorizationPendingRequest'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchant_currency" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'MerchantCurrency Issuing'authorizationPendingRequest'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'authorizationPendingRequest' -> Encoding
toEncoding Issuing'authorizationPendingRequest'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'Amount Issuing'authorizationPendingRequest'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_details" Text
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest'
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
issuing'authorizationPendingRequest'AmountDetails Issuing'authorizationPendingRequest'
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..= Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'Currency Issuing'authorizationPendingRequest'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"is_amount_controllable" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Bool
issuing'authorizationPendingRequest'IsAmountControllable Issuing'authorizationPendingRequest'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"merchant_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Int
issuing'authorizationPendingRequest'MerchantAmount Issuing'authorizationPendingRequest'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"merchant_currency" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest' -> Maybe Text
issuing'authorizationPendingRequest'MerchantCurrency Issuing'authorizationPendingRequest'
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest' where
  parseJSON :: Value -> Parser Issuing'authorizationPendingRequest'
parseJSON = String
-> (Object -> Parser Issuing'authorizationPendingRequest')
-> Value
-> Parser Issuing'authorizationPendingRequest'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'authorizationPendingRequest'" (\Object
obj -> ((((((Maybe Int
 -> Maybe Issuing'authorizationPendingRequest'AmountDetails'
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Int
 -> Maybe Text
 -> Issuing'authorizationPendingRequest')
-> Parser
     (Maybe Int
      -> Maybe Issuing'authorizationPendingRequest'AmountDetails'
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Text
      -> Issuing'authorizationPendingRequest')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
-> Maybe Text
-> Maybe Bool
-> Maybe Int
-> Maybe Text
-> Issuing'authorizationPendingRequest'
Issuing'authorizationPendingRequest' Parser
  (Maybe Int
   -> Maybe Issuing'authorizationPendingRequest'AmountDetails'
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Text
   -> Issuing'authorizationPendingRequest')
-> Parser (Maybe Int)
-> Parser
     (Maybe Issuing'authorizationPendingRequest'AmountDetails'
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Text
      -> Issuing'authorizationPendingRequest')
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
"amount")) Parser
  (Maybe Issuing'authorizationPendingRequest'AmountDetails'
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Text
   -> Issuing'authorizationPendingRequest')
-> Parser
     (Maybe Issuing'authorizationPendingRequest'AmountDetails')
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Text
      -> Issuing'authorizationPendingRequest')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe Issuing'authorizationPendingRequest'AmountDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount_details")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Text
   -> Issuing'authorizationPendingRequest')
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Int -> Maybe Text -> Issuing'authorizationPendingRequest')
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 Bool
   -> Maybe Int -> Maybe Text -> Issuing'authorizationPendingRequest')
-> Parser (Maybe Bool)
-> Parser
     (Maybe Int -> Maybe Text -> Issuing'authorizationPendingRequest')
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
"is_amount_controllable")) Parser
  (Maybe Int -> Maybe Text -> Issuing'authorizationPendingRequest')
-> Parser (Maybe Int)
-> Parser (Maybe Text -> Issuing'authorizationPendingRequest')
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
"merchant_amount")) Parser (Maybe Text -> Issuing'authorizationPendingRequest')
-> Parser (Maybe Text)
-> Parser Issuing'authorizationPendingRequest'
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
"merchant_currency"))

-- | Create a new 'Issuing'authorizationPendingRequest'' with all required fields.
mkIssuing'authorizationPendingRequest' :: Issuing'authorizationPendingRequest'
mkIssuing'authorizationPendingRequest' :: Issuing'authorizationPendingRequest'
mkIssuing'authorizationPendingRequest' =
  Issuing'authorizationPendingRequest' :: Maybe Int
-> Maybe Issuing'authorizationPendingRequest'AmountDetails'
-> Maybe Text
-> Maybe Bool
-> Maybe Int
-> Maybe Text
-> Issuing'authorizationPendingRequest'
Issuing'authorizationPendingRequest'
    { issuing'authorizationPendingRequest'Amount :: Maybe Int
issuing'authorizationPendingRequest'Amount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationPendingRequest'AmountDetails :: Maybe Issuing'authorizationPendingRequest'AmountDetails'
issuing'authorizationPendingRequest'AmountDetails = Maybe Issuing'authorizationPendingRequest'AmountDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationPendingRequest'Currency :: Maybe Text
issuing'authorizationPendingRequest'Currency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationPendingRequest'IsAmountControllable :: Maybe Bool
issuing'authorizationPendingRequest'IsAmountControllable = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationPendingRequest'MerchantAmount :: Maybe Int
issuing'authorizationPendingRequest'MerchantAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'authorizationPendingRequest'MerchantCurrency :: Maybe Text
issuing'authorizationPendingRequest'MerchantCurrency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing.authorization.properties.pending_request.anyOf.properties.amount_details.anyOf@ in the specification.
--
-- Detailed breakdown of amount components. These amounts are denominated in \\\`currency\\\` and in the [smallest currency unit](https:\\\/\\\/stripe.com\\\/docs\\\/currencies\\\#zero-decimal).
data Issuing'authorizationPendingRequest'AmountDetails' = Issuing'authorizationPendingRequest'AmountDetails'
  { -- | atm_fee: The fee charged by the ATM for the cash withdrawal.
    Issuing'authorizationPendingRequest'AmountDetails' -> Maybe Int
issuing'authorizationPendingRequest'AmountDetails'AtmFee :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> Issuing'authorizationPendingRequest'AmountDetails' -> ShowS
[Issuing'authorizationPendingRequest'AmountDetails'] -> ShowS
Issuing'authorizationPendingRequest'AmountDetails' -> String
(Int
 -> Issuing'authorizationPendingRequest'AmountDetails' -> ShowS)
-> (Issuing'authorizationPendingRequest'AmountDetails' -> String)
-> ([Issuing'authorizationPendingRequest'AmountDetails'] -> ShowS)
-> Show Issuing'authorizationPendingRequest'AmountDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationPendingRequest'AmountDetails'] -> ShowS
$cshowList :: [Issuing'authorizationPendingRequest'AmountDetails'] -> ShowS
show :: Issuing'authorizationPendingRequest'AmountDetails' -> String
$cshow :: Issuing'authorizationPendingRequest'AmountDetails' -> String
showsPrec :: Int -> Issuing'authorizationPendingRequest'AmountDetails' -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationPendingRequest'AmountDetails' -> ShowS
GHC.Show.Show,
      Issuing'authorizationPendingRequest'AmountDetails'
-> Issuing'authorizationPendingRequest'AmountDetails' -> Bool
(Issuing'authorizationPendingRequest'AmountDetails'
 -> Issuing'authorizationPendingRequest'AmountDetails' -> Bool)
-> (Issuing'authorizationPendingRequest'AmountDetails'
    -> Issuing'authorizationPendingRequest'AmountDetails' -> Bool)
-> Eq Issuing'authorizationPendingRequest'AmountDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationPendingRequest'AmountDetails'
-> Issuing'authorizationPendingRequest'AmountDetails' -> Bool
$c/= :: Issuing'authorizationPendingRequest'AmountDetails'
-> Issuing'authorizationPendingRequest'AmountDetails' -> Bool
== :: Issuing'authorizationPendingRequest'AmountDetails'
-> Issuing'authorizationPendingRequest'AmountDetails' -> Bool
$c== :: Issuing'authorizationPendingRequest'AmountDetails'
-> Issuing'authorizationPendingRequest'AmountDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest'AmountDetails' where
  toJSON :: Issuing'authorizationPendingRequest'AmountDetails' -> Value
toJSON Issuing'authorizationPendingRequest'AmountDetails'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"atm_fee" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest'AmountDetails' -> Maybe Int
issuing'authorizationPendingRequest'AmountDetails'AtmFee Issuing'authorizationPendingRequest'AmountDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'authorizationPendingRequest'AmountDetails' -> Encoding
toEncoding Issuing'authorizationPendingRequest'AmountDetails'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs (Text
"atm_fee" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'authorizationPendingRequest'AmountDetails' -> Maybe Int
issuing'authorizationPendingRequest'AmountDetails'AtmFee Issuing'authorizationPendingRequest'AmountDetails'
obj)

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest'AmountDetails' where
  parseJSON :: Value -> Parser Issuing'authorizationPendingRequest'AmountDetails'
parseJSON = String
-> (Object
    -> Parser Issuing'authorizationPendingRequest'AmountDetails')
-> Value
-> Parser Issuing'authorizationPendingRequest'AmountDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'authorizationPendingRequest'AmountDetails'" (\Object
obj -> (Maybe Int -> Issuing'authorizationPendingRequest'AmountDetails')
-> Parser
     (Maybe Int -> Issuing'authorizationPendingRequest'AmountDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Issuing'authorizationPendingRequest'AmountDetails'
Issuing'authorizationPendingRequest'AmountDetails' Parser
  (Maybe Int -> Issuing'authorizationPendingRequest'AmountDetails')
-> Parser (Maybe Int)
-> Parser Issuing'authorizationPendingRequest'AmountDetails'
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
"atm_fee"))

-- | Create a new 'Issuing'authorizationPendingRequest'AmountDetails'' with all required fields.
mkIssuing'authorizationPendingRequest'AmountDetails' :: Issuing'authorizationPendingRequest'AmountDetails'
mkIssuing'authorizationPendingRequest'AmountDetails' :: Issuing'authorizationPendingRequest'AmountDetails'
mkIssuing'authorizationPendingRequest'AmountDetails' = Issuing'authorizationPendingRequest'AmountDetails' :: Maybe Int -> Issuing'authorizationPendingRequest'AmountDetails'
Issuing'authorizationPendingRequest'AmountDetails' {issuing'authorizationPendingRequest'AmountDetails'AtmFee :: Maybe Int
issuing'authorizationPendingRequest'AmountDetails'AtmFee = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing}

-- | Defines the enum schema located at @components.schemas.issuing.authorization.properties.status@ in the specification.
--
-- The current status of the authorization in its lifecycle.
data Issuing'authorizationStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    Issuing'authorizationStatus'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.
    Issuing'authorizationStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"closed"@
    Issuing'authorizationStatus'EnumClosed
  | -- | Represents the JSON value @"pending"@
    Issuing'authorizationStatus'EnumPending
  | -- | Represents the JSON value @"reversed"@
    Issuing'authorizationStatus'EnumReversed
  deriving (Int -> Issuing'authorizationStatus' -> ShowS
[Issuing'authorizationStatus'] -> ShowS
Issuing'authorizationStatus' -> String
(Int -> Issuing'authorizationStatus' -> ShowS)
-> (Issuing'authorizationStatus' -> String)
-> ([Issuing'authorizationStatus'] -> ShowS)
-> Show Issuing'authorizationStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'authorizationStatus'] -> ShowS
$cshowList :: [Issuing'authorizationStatus'] -> ShowS
show :: Issuing'authorizationStatus' -> String
$cshow :: Issuing'authorizationStatus' -> String
showsPrec :: Int -> Issuing'authorizationStatus' -> ShowS
$cshowsPrec :: Int -> Issuing'authorizationStatus' -> ShowS
GHC.Show.Show, Issuing'authorizationStatus'
-> Issuing'authorizationStatus' -> Bool
(Issuing'authorizationStatus'
 -> Issuing'authorizationStatus' -> Bool)
-> (Issuing'authorizationStatus'
    -> Issuing'authorizationStatus' -> Bool)
-> Eq Issuing'authorizationStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'authorizationStatus'
-> Issuing'authorizationStatus' -> Bool
$c/= :: Issuing'authorizationStatus'
-> Issuing'authorizationStatus' -> Bool
== :: Issuing'authorizationStatus'
-> Issuing'authorizationStatus' -> Bool
$c== :: Issuing'authorizationStatus'
-> Issuing'authorizationStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationStatus' where
  toJSON :: Issuing'authorizationStatus' -> Value
toJSON (Issuing'authorizationStatus'Other Value
val) = Value
val
  toJSON (Issuing'authorizationStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumClosed) = Value
"closed"
  toJSON (Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumPending) = Value
"pending"
  toJSON (Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumReversed) = Value
"reversed"

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationStatus' where
  parseJSON :: Value -> Parser Issuing'authorizationStatus'
parseJSON Value
val =
    Issuing'authorizationStatus' -> Parser Issuing'authorizationStatus'
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
"closed" -> Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumClosed
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"pending" -> Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumPending
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"reversed" -> Issuing'authorizationStatus'
Issuing'authorizationStatus'EnumReversed
            | Bool
GHC.Base.otherwise -> Value -> Issuing'authorizationStatus'
Issuing'authorizationStatus'Other Value
val
      )