{-# 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.Foldable import qualified Data.Functor import qualified Data.Maybe 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.IssuingAuthorizationTreasury 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 (StripeAPI.Common.Nullable Issuing'authorizationAmountDetails'NonNullable)), -- | 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 (StripeAPI.Common.Nullable Issuing'authorizationCardholder'NonNullableVariants)), -- | 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 (StripeAPI.Common.Nullable Issuing'authorizationPendingRequest'NonNullable)), -- | 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]), -- | treasury: [Treasury](https:\/\/stripe.com\/docs\/api\/treasury) details related to this authorization if it was created on a [FinancialAccount](https:\/\/stripe.com\/docs\/api\/treasury\/financial_accounts). issuing'authorizationTreasury :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable Issuing'authorizationTreasury'NonNullable)), -- | verification_data: issuing'authorizationVerificationData :: IssuingAuthorizationVerificationData, -- | wallet: The digital wallet used for this authorization. One of \`apple_pay\`, \`google_pay\`, or \`samsung_pay\`. -- -- Constraints: -- -- * Maximum length of 5000 issuing'authorizationWallet :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable 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 (Data.Foldable.concat (["amount" Data.Aeson.Types.ToJSON..= issuing'authorizationAmount obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("treasury" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury obj) : ["verification_data" Data.Aeson.Types.ToJSON..= issuing'authorizationVerificationData obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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 (GHC.Base.mconcat (Data.Foldable.concat (["amount" Data.Aeson.Types.ToJSON..= issuing'authorizationAmount obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("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] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("treasury" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury obj) : ["verification_data" Data.Aeson.Types.ToJSON..= issuing'authorizationVerificationData obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("wallet" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationWallet obj) : ["object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "issuing.authorization"] : GHC.Base.mempty))) 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..:! "treasury")) 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'authorizationTreasury = GHC.Maybe.Nothing, 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'NonNullable = Issuing'authorizationAmountDetails'NonNullable { -- | atm_fee: The fee charged by the ATM for the cash withdrawal. issuing'authorizationAmountDetails'NonNullableAtmFee :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable GHC.Types.Int)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationAmountDetails'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("atm_fee" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationAmountDetails'NonNullableAtmFee obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("atm_fee" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationAmountDetails'NonNullableAtmFee obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationAmountDetails'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationAmountDetails'NonNullable" (\obj -> GHC.Base.pure Issuing'authorizationAmountDetails'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "atm_fee")) -- | Create a new 'Issuing'authorizationAmountDetails'NonNullable' with all required fields. mkIssuing'authorizationAmountDetails'NonNullable :: Issuing'authorizationAmountDetails'NonNullable mkIssuing'authorizationAmountDetails'NonNullable = Issuing'authorizationAmountDetails'NonNullable {issuing'authorizationAmountDetails'NonNullableAtmFee = 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'NonNullableVariants = Issuing'authorizationCardholder'NonNullableText Data.Text.Internal.Text | Issuing'authorizationCardholder'NonNullableIssuing'cardholder Issuing'cardholder deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationCardholder'NonNullableVariants where toJSON (Issuing'authorizationCardholder'NonNullableText a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (Issuing'authorizationCardholder'NonNullableIssuing'cardholder a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationCardholder'NonNullableVariants where parseJSON val = case (Issuing'authorizationCardholder'NonNullableText Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((Issuing'authorizationCardholder'NonNullableIssuing'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'NonNullable = Issuing'authorizationPendingRequest'NonNullable { -- | 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'NonNullableAmount :: (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'NonNullableAmountDetails :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable)), -- | 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'NonNullableCurrency :: (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'NonNullableIsAmountControllable :: (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'NonNullableMerchantAmount :: (GHC.Maybe.Maybe GHC.Types.Int), -- | merchant_currency: The local currency the merchant is requesting to authorize. issuing'authorizationPendingRequest'NonNullableMerchantCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("amount" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmount obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("amount_details" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmountDetails obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("currency" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableCurrency obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("is_amount_controllable" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableIsAmountControllable obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("merchant_amount" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableMerchantAmount obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("merchant_currency" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableMerchantCurrency obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("amount" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmount obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("amount_details" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmountDetails obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("currency" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableCurrency obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("is_amount_controllable" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableIsAmountControllable obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("merchant_amount" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableMerchantAmount obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("merchant_currency" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableMerchantCurrency obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationPendingRequest'NonNullable" (\obj -> (((((GHC.Base.pure Issuing'authorizationPendingRequest'NonNullable 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'NonNullable' with all required fields. mkIssuing'authorizationPendingRequest'NonNullable :: Issuing'authorizationPendingRequest'NonNullable mkIssuing'authorizationPendingRequest'NonNullable = Issuing'authorizationPendingRequest'NonNullable { issuing'authorizationPendingRequest'NonNullableAmount = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'NonNullableAmountDetails = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'NonNullableCurrency = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'NonNullableIsAmountControllable = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'NonNullableMerchantAmount = GHC.Maybe.Nothing, issuing'authorizationPendingRequest'NonNullableMerchantCurrency = 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'NonNullableAmountDetails'NonNullable = Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable { -- | atm_fee: The fee charged by the ATM for the cash withdrawal. issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullableAtmFee :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable GHC.Types.Int)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("atm_fee" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullableAtmFee obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("atm_fee" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullableAtmFee obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable" (\obj -> GHC.Base.pure Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "atm_fee")) -- | Create a new 'Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable' with all required fields. mkIssuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable :: Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable mkIssuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable = Issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullable {issuing'authorizationPendingRequest'NonNullableAmountDetails'NonNullableAtmFee = 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 ) -- | Defines the object schema located at @components.schemas.issuing.authorization.properties.treasury.anyOf@ in the specification. -- -- [Treasury](https:\\\/\\\/stripe.com\\\/docs\\\/api\\\/treasury) details related to this authorization if it was created on a [FinancialAccount](https:\\\/\\\/stripe.com\\\/docs\\\/api\\\/treasury\\\/financial_accounts). data Issuing'authorizationTreasury'NonNullable = Issuing'authorizationTreasury'NonNullable { -- | received_credits: The array of [ReceivedCredits](https:\/\/stripe.com\/docs\/api\/treasury\/received_credits) associated with this authorization issuing'authorizationTreasury'NonNullableReceivedCredits :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])), -- | received_debits: The array of [ReceivedDebits](https:\/\/stripe.com\/docs\/api\/treasury\/received_debits) associated with this authorization issuing'authorizationTreasury'NonNullableReceivedDebits :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])), -- | transaction: The Treasury [Transaction](https:\/\/stripe.com\/docs\/api\/treasury\/transactions) associated with this authorization -- -- Constraints: -- -- * Maximum length of 5000 issuing'authorizationTreasury'NonNullableTransaction :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable Data.Text.Internal.Text)) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Issuing'authorizationTreasury'NonNullable where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("received_credits" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableReceivedCredits obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("received_debits" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableReceivedDebits obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("transaction" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableTransaction obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("received_credits" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableReceivedCredits obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("received_debits" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableReceivedDebits obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("transaction" Data.Aeson.Types.ToJSON..=)) (issuing'authorizationTreasury'NonNullableTransaction obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON Issuing'authorizationTreasury'NonNullable where parseJSON = Data.Aeson.Types.FromJSON.withObject "Issuing'authorizationTreasury'NonNullable" (\obj -> ((GHC.Base.pure Issuing'authorizationTreasury'NonNullable GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "received_credits")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "received_debits")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "transaction")) -- | Create a new 'Issuing'authorizationTreasury'NonNullable' with all required fields. mkIssuing'authorizationTreasury'NonNullable :: Issuing'authorizationTreasury'NonNullable mkIssuing'authorizationTreasury'NonNullable = Issuing'authorizationTreasury'NonNullable { issuing'authorizationTreasury'NonNullableReceivedCredits = GHC.Maybe.Nothing, issuing'authorizationTreasury'NonNullableReceivedDebits = GHC.Maybe.Nothing, issuing'authorizationTreasury'NonNullableTransaction = GHC.Maybe.Nothing }