{-# 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'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'authorizationAmountDetails :: (GHC.Maybe.Maybe Issuing'authorizationAmountDetails'), -- | approved: Whether the authorization has been approved. issuing'authorizationApproved :: GHC.Types.Bool, -- | authorization_method: How the card details were provided. issuing'authorizationAuthorizationMethod :: Issuing'authorizationAuthorizationMethod', -- | balance_transactions: List of balance transactions associated with this authorization. issuing'authorizationBalanceTransactions :: ([BalanceTransaction]), -- | card: You can [create physical or virtual cards](https:\/\/stripe.com\/docs\/issuing\/cards) that are issued to cardholders. issuing'authorizationCard :: Issuing'card, -- | cardholder: The cardholder to whom this authorization belongs. issuing'authorizationCardholder :: (GHC.Maybe.Maybe Issuing'authorizationCardholder'Variants), -- | created: Time at which the object was created. Measured in seconds since the Unix epoch. 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'authorizationCurrency :: Data.Text.Internal.Text, -- | id: Unique identifier for the object. -- -- Constraints: -- -- * Maximum length of 5000 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'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'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'authorizationMerchantCurrency :: Data.Text.Internal.Text, -- | merchant_data: 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'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'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'authorizationRequestHistory :: ([IssuingAuthorizationRequest]), -- | status: The current status of the authorization in its lifecycle. issuing'authorizationStatus :: Issuing'authorizationStatus', -- | transactions: List of [transactions](https:\/\/stripe.com\/docs\/api\/issuing\/transactions) associated with this authorization. issuing'authorizationTransactions :: ([Issuing'transaction]), -- | verification_data: 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'authorizationWallet :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorization where toJSON obj = Data.Aeson.Types.Internal.object ("amount" Data.Aeson.Types.ToJSON..= issuing'authorizationAmount obj : "amount_details" Data.Aeson.Types.ToJSON..= issuing'authorizationAmountDetails obj : "approved" Data.Aeson.Types.ToJSON..= issuing'authorizationApproved obj : "authorization_method" Data.Aeson.Types.ToJSON..= issuing'authorizationAuthorizationMethod obj : "balance_transactions" Data.Aeson.Types.ToJSON..= issuing'authorizationBalanceTransactions obj : "card" Data.Aeson.Types.ToJSON..= issuing'authorizationCard obj : "cardholder" Data.Aeson.Types.ToJSON..= issuing'authorizationCardholder obj : "created" Data.Aeson.Types.ToJSON..= issuing'authorizationCreated obj : "currency" Data.Aeson.Types.ToJSON..= issuing'authorizationCurrency obj : "id" Data.Aeson.Types.ToJSON..= issuing'authorizationId obj : "livemode" Data.Aeson.Types.ToJSON..= issuing'authorizationLivemode obj : "merchant_amount" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantAmount obj : "merchant_currency" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantCurrency obj : "merchant_data" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantData obj : "metadata" Data.Aeson.Types.ToJSON..= issuing'authorizationMetadata obj : "pending_request" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest obj : "request_history" Data.Aeson.Types.ToJSON..= issuing'authorizationRequestHistory obj : "status" Data.Aeson.Types.ToJSON..= issuing'authorizationStatus obj : "transactions" Data.Aeson.Types.ToJSON..= issuing'authorizationTransactions obj : "verification_data" Data.Aeson.Types.ToJSON..= issuing'authorizationVerificationData obj : "wallet" Data.Aeson.Types.ToJSON..= issuing'authorizationWallet obj : "object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "issuing.authorization" : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("amount" Data.Aeson.Types.ToJSON..= issuing'authorizationAmount obj) GHC.Base.<> (("amount_details" Data.Aeson.Types.ToJSON..= issuing'authorizationAmountDetails obj) GHC.Base.<> (("approved" Data.Aeson.Types.ToJSON..= issuing'authorizationApproved obj) GHC.Base.<> (("authorization_method" Data.Aeson.Types.ToJSON..= issuing'authorizationAuthorizationMethod obj) GHC.Base.<> (("balance_transactions" Data.Aeson.Types.ToJSON..= issuing'authorizationBalanceTransactions obj) GHC.Base.<> (("card" Data.Aeson.Types.ToJSON..= issuing'authorizationCard obj) GHC.Base.<> (("cardholder" Data.Aeson.Types.ToJSON..= issuing'authorizationCardholder obj) GHC.Base.<> (("created" Data.Aeson.Types.ToJSON..= issuing'authorizationCreated obj) GHC.Base.<> (("currency" Data.Aeson.Types.ToJSON..= issuing'authorizationCurrency obj) GHC.Base.<> (("id" Data.Aeson.Types.ToJSON..= issuing'authorizationId obj) GHC.Base.<> (("livemode" Data.Aeson.Types.ToJSON..= issuing'authorizationLivemode obj) GHC.Base.<> (("merchant_amount" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantAmount obj) GHC.Base.<> (("merchant_currency" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantCurrency obj) GHC.Base.<> (("merchant_data" Data.Aeson.Types.ToJSON..= issuing'authorizationMerchantData obj) GHC.Base.<> (("metadata" Data.Aeson.Types.ToJSON..= issuing'authorizationMetadata obj) GHC.Base.<> (("pending_request" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest obj) GHC.Base.<> (("request_history" Data.Aeson.Types.ToJSON..= issuing'authorizationRequestHistory obj) GHC.Base.<> (("status" Data.Aeson.Types.ToJSON..= issuing'authorizationStatus obj) GHC.Base.<> (("transactions" Data.Aeson.Types.ToJSON..= issuing'authorizationTransactions obj) GHC.Base.<> (("verification_data" Data.Aeson.Types.ToJSON..= issuing'authorizationVerificationData obj) GHC.Base.<> (("wallet" Data.Aeson.Types.ToJSON..= issuing'authorizationWallet obj) GHC.Base.<> ("object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "issuing.authorization")))))))))))))))))))))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorization where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorization" (\obj -> ((((((((((((((((((((GHC.Base.pure Issuing'authorization GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "approved")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "authorization_method")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "balance_transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "card")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "cardholder")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "merchant_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "pending_request")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "request_history")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "status")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "transactions")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "verification_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "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 issuing'authorizationAmount issuing'authorizationApproved issuing'authorizationAuthorizationMethod issuing'authorizationBalanceTransactions issuing'authorizationCard issuing'authorizationCreated issuing'authorizationCurrency issuing'authorizationId issuing'authorizationLivemode issuing'authorizationMerchantAmount issuing'authorizationMerchantCurrency issuing'authorizationMerchantData issuing'authorizationMetadata issuing'authorizationRequestHistory issuing'authorizationStatus issuing'authorizationTransactions issuing'authorizationVerificationData = Issuing'authorization { issuing'authorizationAmount = issuing'authorizationAmount, issuing'authorizationAmountDetails = GHC.Maybe.Nothing, issuing'authorizationApproved = issuing'authorizationApproved, issuing'authorizationAuthorizationMethod = issuing'authorizationAuthorizationMethod, issuing'authorizationBalanceTransactions = issuing'authorizationBalanceTransactions, issuing'authorizationCard = issuing'authorizationCard, issuing'authorizationCardholder = GHC.Maybe.Nothing, issuing'authorizationCreated = issuing'authorizationCreated, issuing'authorizationCurrency = issuing'authorizationCurrency, issuing'authorizationId = issuing'authorizationId, issuing'authorizationLivemode = issuing'authorizationLivemode, issuing'authorizationMerchantAmount = issuing'authorizationMerchantAmount, issuing'authorizationMerchantCurrency = issuing'authorizationMerchantCurrency, issuing'authorizationMerchantData = issuing'authorizationMerchantData, issuing'authorizationMetadata = issuing'authorizationMetadata, issuing'authorizationPendingRequest = GHC.Maybe.Nothing, issuing'authorizationRequestHistory = issuing'authorizationRequestHistory, issuing'authorizationStatus = issuing'authorizationStatus, issuing'authorizationTransactions = issuing'authorizationTransactions, issuing'authorizationVerificationData = issuing'authorizationVerificationData, issuing'authorizationWallet = 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'AtmFee :: (GHC.Maybe.Maybe GHC.Types.Int) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationAmountDetails' where toJSON obj = Data.Aeson.Types.Internal.object ("atm_fee" Data.Aeson.Types.ToJSON..= issuing'authorizationAmountDetails'AtmFee obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs ("atm_fee" Data.Aeson.Types.ToJSON..= issuing'authorizationAmountDetails'AtmFee obj) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationAmountDetails' where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationAmountDetails'" (\obj -> GHC.Base.pure Issuing'authorizationAmountDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "atm_fee")) -- | Create a new 'Issuing'authorizationAmountDetails'' with all required fields. mkIssuing'authorizationAmountDetails' :: Issuing'authorizationAmountDetails' mkIssuing'authorizationAmountDetails' = Issuing'authorizationAmountDetails' {issuing'authorizationAmountDetails'AtmFee = 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 (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationAuthorizationMethod' where toJSON (Issuing'authorizationAuthorizationMethod'Other val) = val toJSON (Issuing'authorizationAuthorizationMethod'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (Issuing'authorizationAuthorizationMethod'EnumChip) = "chip" toJSON (Issuing'authorizationAuthorizationMethod'EnumContactless) = "contactless" toJSON (Issuing'authorizationAuthorizationMethod'EnumKeyedIn) = "keyed_in" toJSON (Issuing'authorizationAuthorizationMethod'EnumOnline) = "online" toJSON (Issuing'authorizationAuthorizationMethod'EnumSwipe) = "swipe" instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationAuthorizationMethod' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "chip" -> Issuing'authorizationAuthorizationMethod'EnumChip | val GHC.Classes.== "contactless" -> Issuing'authorizationAuthorizationMethod'EnumContactless | val GHC.Classes.== "keyed_in" -> Issuing'authorizationAuthorizationMethod'EnumKeyedIn | val GHC.Classes.== "online" -> Issuing'authorizationAuthorizationMethod'EnumOnline | val GHC.Classes.== "swipe" -> Issuing'authorizationAuthorizationMethod'EnumSwipe | GHC.Base.otherwise -> Issuing'authorizationAuthorizationMethod'Other 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 (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationCardholder'Variants where toJSON (Issuing'authorizationCardholder'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (Issuing'authorizationCardholder'Issuing'cardholder a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationCardholder'Variants where parseJSON val = case (Issuing'authorizationCardholder'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((Issuing'authorizationCardholder'Issuing'cardholder Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail 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'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'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'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'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'MerchantAmount :: (GHC.Maybe.Maybe GHC.Types.Int), -- | merchant_currency: The local currency the merchant is requesting to authorize. issuing'authorizationPendingRequest'MerchantCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest' where toJSON obj = Data.Aeson.Types.Internal.object ("amount" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'Amount obj : "amount_details" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'AmountDetails obj : "currency" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'Currency obj : "is_amount_controllable" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'IsAmountControllable obj : "merchant_amount" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'MerchantAmount obj : "merchant_currency" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'MerchantCurrency obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("amount" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'Amount obj) GHC.Base.<> (("amount_details" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'AmountDetails obj) GHC.Base.<> (("currency" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'Currency obj) GHC.Base.<> (("is_amount_controllable" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'IsAmountControllable obj) GHC.Base.<> (("merchant_amount" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'MerchantAmount obj) GHC.Base.<> ("merchant_currency" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'MerchantCurrency obj)))))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest' where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationPendingRequest'" (\obj -> (((((GHC.Base.pure Issuing'authorizationPendingRequest' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount_details")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "is_amount_controllable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "merchant_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "merchant_currency")) -- | Create a new 'Issuing'authorizationPendingRequest'' with all required fields. mkIssuing'authorizationPendingRequest' :: Issuing'authorizationPendingRequest' mkIssuing'authorizationPendingRequest' = Issuing'authorizationPendingRequest' { issuing'authorizationPendingRequest'Amount = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'AmountDetails = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'Currency = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'IsAmountControllable = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'MerchantAmount = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'MerchantCurrency = 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'AtmFee :: (GHC.Maybe.Maybe GHC.Types.Int) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest'AmountDetails' where toJSON obj = Data.Aeson.Types.Internal.object ("atm_fee" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'AmountDetails'AtmFee obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs ("atm_fee" Data.Aeson.Types.ToJSON..= issuing'authorizationPendingRequest'AmountDetails'AtmFee obj) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest'AmountDetails' where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationPendingRequest'AmountDetails'" (\obj -> GHC.Base.pure Issuing'authorizationPendingRequest'AmountDetails' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "atm_fee")) -- | Create a new 'Issuing'authorizationPendingRequest'AmountDetails'' with all required fields. mkIssuing'authorizationPendingRequest'AmountDetails' :: Issuing'authorizationPendingRequest'AmountDetails' mkIssuing'authorizationPendingRequest'AmountDetails' = Issuing'authorizationPendingRequest'AmountDetails' {issuing'authorizationPendingRequest'AmountDetails'AtmFee = 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 (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationStatus' where toJSON (Issuing'authorizationStatus'Other val) = val toJSON (Issuing'authorizationStatus'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (Issuing'authorizationStatus'EnumClosed) = "closed" toJSON (Issuing'authorizationStatus'EnumPending) = "pending" toJSON (Issuing'authorizationStatus'EnumReversed) = "reversed" instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationStatus' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "closed" -> Issuing'authorizationStatus'EnumClosed | val GHC.Classes.== "pending" -> Issuing'authorizationStatus'EnumPending | val GHC.Classes.== "reversed" -> Issuing'authorizationStatus'EnumReversed | GHC.Base.otherwise -> Issuing'authorizationStatus'Other val )