{-# 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_Transaction
module StripeAPI.Types.Issuing_Transaction 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.IssuingAuthorizationMerchantData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionAmountDetails
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionFlightData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionFlightDataLeg
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionFuelData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionLodgingData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionPurchaseDetails
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionReceiptData
import {-# SOURCE #-} StripeAPI.Types.Issuing_Authorization
import {-# SOURCE #-} StripeAPI.Types.Issuing_Card
import {-# SOURCE #-} StripeAPI.Types.Issuing_Cardholder
import {-# SOURCE #-} StripeAPI.Types.Issuing_Dispute
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing.transaction@ in the specification.
--
-- Any use of an [issued card](https:\/\/stripe.com\/docs\/issuing) that results in funds entering or leaving
-- your Stripe account, such as a completed purchase or refund, is represented by an Issuing
-- \`Transaction\` object.
--
-- Related guide: [Issued Card Transactions](https:\/\/stripe.com\/docs\/issuing\/purchases\/transactions).
data Issuing'transaction = Issuing'transaction
  { -- | amount: The transaction amount, which will be reflected in your balance. This amount is in your currency and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal).
    Issuing'transaction -> Int
issuing'transactionAmount :: 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'transaction -> Maybe Issuing'transactionAmountDetails'
issuing'transactionAmountDetails :: (GHC.Maybe.Maybe Issuing'transactionAmountDetails'),
    -- | authorization: The \`Authorization\` object that led to this transaction.
    Issuing'transaction
-> Maybe Issuing'transactionAuthorization'Variants
issuing'transactionAuthorization :: (GHC.Maybe.Maybe Issuing'transactionAuthorization'Variants),
    -- | balance_transaction: ID of the [balance transaction](https:\/\/stripe.com\/docs\/api\/balance_transactions) associated with this transaction.
    Issuing'transaction
-> Maybe Issuing'transactionBalanceTransaction'Variants
issuing'transactionBalanceTransaction :: (GHC.Maybe.Maybe Issuing'transactionBalanceTransaction'Variants),
    -- | card: The card used to make this transaction.
    Issuing'transaction -> Issuing'transactionCard'Variants
issuing'transactionCard :: Issuing'transactionCard'Variants,
    -- | cardholder: The cardholder to whom this transaction belongs.
    Issuing'transaction -> Maybe Issuing'transactionCardholder'Variants
issuing'transactionCardholder :: (GHC.Maybe.Maybe Issuing'transactionCardholder'Variants),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Issuing'transaction -> Int
issuing'transactionCreated :: 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'transaction -> Text
issuing'transactionCurrency :: Data.Text.Internal.Text,
    -- | dispute: If you\'ve disputed the transaction, the ID of the dispute.
    Issuing'transaction -> Maybe Issuing'transactionDispute'Variants
issuing'transactionDispute :: (GHC.Maybe.Maybe Issuing'transactionDispute'Variants),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transaction -> Text
issuing'transactionId :: 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'transaction -> Bool
issuing'transactionLivemode :: GHC.Types.Bool,
    -- | merchant_amount: The amount that the merchant will receive, denominated in \`merchant_currency\` and in the [smallest currency unit](https:\/\/stripe.com\/docs\/currencies\#zero-decimal). It will be different from \`amount\` if the merchant is taking payment in a different currency.
    Issuing'transaction -> Int
issuing'transactionMerchantAmount :: GHC.Types.Int,
    -- | merchant_currency: The currency with which the merchant is taking payment.
    Issuing'transaction -> Text
issuing'transactionMerchantCurrency :: Data.Text.Internal.Text,
    -- | merchant_data:
    Issuing'transaction -> IssuingAuthorizationMerchantData
issuing'transactionMerchantData :: 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'transaction -> Object
issuing'transactionMetadata :: Data.Aeson.Types.Internal.Object,
    -- | purchase_details: Additional purchase information that is optionally provided by the merchant.
    Issuing'transaction -> Maybe Issuing'transactionPurchaseDetails'
issuing'transactionPurchaseDetails :: (GHC.Maybe.Maybe Issuing'transactionPurchaseDetails'),
    -- | type: The nature of the transaction.
    Issuing'transaction -> Issuing'transactionType'
issuing'transactionType :: Issuing'transactionType'
  }
  deriving
    ( Int -> Issuing'transaction -> ShowS
[Issuing'transaction] -> ShowS
Issuing'transaction -> String
(Int -> Issuing'transaction -> ShowS)
-> (Issuing'transaction -> String)
-> ([Issuing'transaction] -> ShowS)
-> Show Issuing'transaction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transaction] -> ShowS
$cshowList :: [Issuing'transaction] -> ShowS
show :: Issuing'transaction -> String
$cshow :: Issuing'transaction -> String
showsPrec :: Int -> Issuing'transaction -> ShowS
$cshowsPrec :: Int -> Issuing'transaction -> ShowS
GHC.Show.Show,
      Issuing'transaction -> Issuing'transaction -> Bool
(Issuing'transaction -> Issuing'transaction -> Bool)
-> (Issuing'transaction -> Issuing'transaction -> Bool)
-> Eq Issuing'transaction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transaction -> Issuing'transaction -> Bool
$c/= :: Issuing'transaction -> Issuing'transaction -> Bool
== :: Issuing'transaction -> Issuing'transaction -> Bool
$c== :: Issuing'transaction -> Issuing'transaction -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transaction where
  toJSON :: Issuing'transaction -> Value
toJSON Issuing'transaction
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'transaction -> Int
issuing'transactionAmount Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_details" Text -> Maybe Issuing'transactionAmountDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionAmountDetails'
issuing'transactionAmountDetails Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"authorization" Text -> Maybe Issuing'transactionAuthorization'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction
-> Maybe Issuing'transactionAuthorization'Variants
issuing'transactionAuthorization Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"balance_transaction" Text
-> Maybe Issuing'transactionBalanceTransaction'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction
-> Maybe Issuing'transactionBalanceTransaction'Variants
issuing'transactionBalanceTransaction Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"card" Text -> Issuing'transactionCard'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Issuing'transactionCard'Variants
issuing'transactionCard Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"cardholder" Text -> Maybe Issuing'transactionCardholder'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionCardholder'Variants
issuing'transactionCardholder Issuing'transaction
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'transaction -> Int
issuing'transactionCreated Issuing'transaction
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'transaction -> Text
issuing'transactionCurrency Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"dispute" Text -> Maybe Issuing'transactionDispute'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionDispute'Variants
issuing'transactionDispute Issuing'transaction
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'transaction -> Text
issuing'transactionId Issuing'transaction
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'transaction -> Bool
issuing'transactionLivemode Issuing'transaction
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'transaction -> Int
issuing'transactionMerchantAmount Issuing'transaction
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'transaction -> Text
issuing'transactionMerchantCurrency Issuing'transaction
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'transaction -> IssuingAuthorizationMerchantData
issuing'transactionMerchantData Issuing'transaction
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'transaction -> Object
issuing'transactionMetadata Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"purchase_details" Text -> Maybe Issuing'transactionPurchaseDetails' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionPurchaseDetails'
issuing'transactionPurchaseDetails Issuing'transaction
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> Issuing'transactionType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Issuing'transactionType'
issuing'transactionType Issuing'transaction
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.transaction" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transaction -> Encoding
toEncoding Issuing'transaction
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'transaction -> Int
issuing'transactionAmount Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_details" Text -> Maybe Issuing'transactionAmountDetails' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionAmountDetails'
issuing'transactionAmountDetails Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"authorization" Text -> Maybe Issuing'transactionAuthorization'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction
-> Maybe Issuing'transactionAuthorization'Variants
issuing'transactionAuthorization Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"balance_transaction" Text
-> Maybe Issuing'transactionBalanceTransaction'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction
-> Maybe Issuing'transactionBalanceTransaction'Variants
issuing'transactionBalanceTransaction Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"card" Text -> Issuing'transactionCard'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Issuing'transactionCard'Variants
issuing'transactionCard Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"cardholder" Text -> Maybe Issuing'transactionCardholder'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionCardholder'Variants
issuing'transactionCardholder Issuing'transaction
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'transaction -> Int
issuing'transactionCreated Issuing'transaction
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'transaction -> Text
issuing'transactionCurrency Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"dispute" Text -> Maybe Issuing'transactionDispute'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionDispute'Variants
issuing'transactionDispute Issuing'transaction
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'transaction -> Text
issuing'transactionId Issuing'transaction
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'transaction -> Bool
issuing'transactionLivemode Issuing'transaction
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'transaction -> Int
issuing'transactionMerchantAmount Issuing'transaction
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'transaction -> Text
issuing'transactionMerchantCurrency Issuing'transaction
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'transaction -> IssuingAuthorizationMerchantData
issuing'transactionMerchantData Issuing'transaction
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'transaction -> Object
issuing'transactionMetadata Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"purchase_details" Text -> Maybe Issuing'transactionPurchaseDetails' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Maybe Issuing'transactionPurchaseDetails'
issuing'transactionPurchaseDetails Issuing'transaction
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"type" Text -> Issuing'transactionType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transaction -> Issuing'transactionType'
issuing'transactionType Issuing'transaction
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.transaction"))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transaction where
  parseJSON :: Value -> Parser Issuing'transaction
parseJSON = String
-> (Object -> Parser Issuing'transaction)
-> Value
-> Parser Issuing'transaction
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'transaction" (\Object
obj -> (((((((((((((((((Int
 -> Maybe Issuing'transactionAmountDetails'
 -> Maybe Issuing'transactionAuthorization'Variants
 -> Maybe Issuing'transactionBalanceTransaction'Variants
 -> Issuing'transactionCard'Variants
 -> Maybe Issuing'transactionCardholder'Variants
 -> Int
 -> Text
 -> Maybe Issuing'transactionDispute'Variants
 -> Text
 -> Bool
 -> Int
 -> Text
 -> IssuingAuthorizationMerchantData
 -> Object
 -> Maybe Issuing'transactionPurchaseDetails'
 -> Issuing'transactionType'
 -> Issuing'transaction)
-> Parser
     (Int
      -> Maybe Issuing'transactionAmountDetails'
      -> Maybe Issuing'transactionAuthorization'Variants
      -> Maybe Issuing'transactionBalanceTransaction'Variants
      -> Issuing'transactionCard'Variants
      -> Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int
-> Maybe Issuing'transactionAmountDetails'
-> Maybe Issuing'transactionAuthorization'Variants
-> Maybe Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionCard'Variants
-> Maybe Issuing'transactionCardholder'Variants
-> Int
-> Text
-> Maybe Issuing'transactionDispute'Variants
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> Maybe Issuing'transactionPurchaseDetails'
-> Issuing'transactionType'
-> Issuing'transaction
Issuing'transaction Parser
  (Int
   -> Maybe Issuing'transactionAmountDetails'
   -> Maybe Issuing'transactionAuthorization'Variants
   -> Maybe Issuing'transactionBalanceTransaction'Variants
   -> Issuing'transactionCard'Variants
   -> Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Int
-> Parser
     (Maybe Issuing'transactionAmountDetails'
      -> Maybe Issuing'transactionAuthorization'Variants
      -> Maybe Issuing'transactionBalanceTransaction'Variants
      -> Issuing'transactionCard'Variants
      -> Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionAmountDetails'
   -> Maybe Issuing'transactionAuthorization'Variants
   -> Maybe Issuing'transactionBalanceTransaction'Variants
   -> Issuing'transactionCard'Variants
   -> Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionAmountDetails')
-> Parser
     (Maybe Issuing'transactionAuthorization'Variants
      -> Maybe Issuing'transactionBalanceTransaction'Variants
      -> Issuing'transactionCard'Variants
      -> Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Issuing'transactionAmountDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"amount_details")) Parser
  (Maybe Issuing'transactionAuthorization'Variants
   -> Maybe Issuing'transactionBalanceTransaction'Variants
   -> Issuing'transactionCard'Variants
   -> Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionAuthorization'Variants)
-> Parser
     (Maybe Issuing'transactionBalanceTransaction'Variants
      -> Issuing'transactionCard'Variants
      -> Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'transactionAuthorization'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"authorization")) Parser
  (Maybe Issuing'transactionBalanceTransaction'Variants
   -> Issuing'transactionCard'Variants
   -> Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionBalanceTransaction'Variants)
-> Parser
     (Issuing'transactionCard'Variants
      -> Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe Issuing'transactionBalanceTransaction'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"balance_transaction")) Parser
  (Issuing'transactionCard'Variants
   -> Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Issuing'transactionCard'Variants
-> Parser
     (Maybe Issuing'transactionCardholder'Variants
      -> Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'transactionCard'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"card")) Parser
  (Maybe Issuing'transactionCardholder'Variants
   -> Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionCardholder'Variants)
-> Parser
     (Int
      -> Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'transactionCardholder'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"cardholder")) Parser
  (Int
   -> Text
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Int
-> Parser
     (Text
      -> Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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
   -> Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Text
-> Parser
     (Maybe Issuing'transactionDispute'Variants
      -> Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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
  (Maybe Issuing'transactionDispute'Variants
   -> Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionDispute'Variants)
-> Parser
     (Text
      -> Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'transactionDispute'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"dispute")) Parser
  (Text
   -> Bool
   -> Int
   -> Text
   -> IssuingAuthorizationMerchantData
   -> Object
   -> Maybe Issuing'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Text
-> Parser
     (Bool
      -> Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Bool
-> Parser
     (Int
      -> Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Int
-> Parser
     (Text
      -> IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Text
-> Parser
     (IssuingAuthorizationMerchantData
      -> Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser IssuingAuthorizationMerchantData
-> Parser
     (Object
      -> Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType'
      -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType'
   -> Issuing'transaction)
-> Parser Object
-> Parser
     (Maybe Issuing'transactionPurchaseDetails'
      -> Issuing'transactionType' -> Issuing'transaction)
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'transactionPurchaseDetails'
   -> Issuing'transactionType' -> Issuing'transaction)
-> Parser (Maybe Issuing'transactionPurchaseDetails')
-> Parser (Issuing'transactionType' -> Issuing'transaction)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'transactionPurchaseDetails')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"purchase_details")) Parser (Issuing'transactionType' -> Issuing'transaction)
-> Parser Issuing'transactionType' -> Parser Issuing'transaction
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'transactionType'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"type"))

-- | Create a new 'Issuing'transaction' with all required fields.
mkIssuing'transaction ::
  -- | 'issuing'transactionAmount'
  GHC.Types.Int ->
  -- | 'issuing'transactionCard'
  Issuing'transactionCard'Variants ->
  -- | 'issuing'transactionCreated'
  GHC.Types.Int ->
  -- | 'issuing'transactionCurrency'
  Data.Text.Internal.Text ->
  -- | 'issuing'transactionId'
  Data.Text.Internal.Text ->
  -- | 'issuing'transactionLivemode'
  GHC.Types.Bool ->
  -- | 'issuing'transactionMerchantAmount'
  GHC.Types.Int ->
  -- | 'issuing'transactionMerchantCurrency'
  Data.Text.Internal.Text ->
  -- | 'issuing'transactionMerchantData'
  IssuingAuthorizationMerchantData ->
  -- | 'issuing'transactionMetadata'
  Data.Aeson.Types.Internal.Object ->
  -- | 'issuing'transactionType'
  Issuing'transactionType' ->
  Issuing'transaction
mkIssuing'transaction :: Int
-> Issuing'transactionCard'Variants
-> Int
-> Text
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> Issuing'transactionType'
-> Issuing'transaction
mkIssuing'transaction Int
issuing'transactionAmount Issuing'transactionCard'Variants
issuing'transactionCard Int
issuing'transactionCreated Text
issuing'transactionCurrency Text
issuing'transactionId Bool
issuing'transactionLivemode Int
issuing'transactionMerchantAmount Text
issuing'transactionMerchantCurrency IssuingAuthorizationMerchantData
issuing'transactionMerchantData Object
issuing'transactionMetadata Issuing'transactionType'
issuing'transactionType =
  Issuing'transaction :: Int
-> Maybe Issuing'transactionAmountDetails'
-> Maybe Issuing'transactionAuthorization'Variants
-> Maybe Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionCard'Variants
-> Maybe Issuing'transactionCardholder'Variants
-> Int
-> Text
-> Maybe Issuing'transactionDispute'Variants
-> Text
-> Bool
-> Int
-> Text
-> IssuingAuthorizationMerchantData
-> Object
-> Maybe Issuing'transactionPurchaseDetails'
-> Issuing'transactionType'
-> Issuing'transaction
Issuing'transaction
    { issuing'transactionAmount :: Int
issuing'transactionAmount = Int
issuing'transactionAmount,
      issuing'transactionAmountDetails :: Maybe Issuing'transactionAmountDetails'
issuing'transactionAmountDetails = Maybe Issuing'transactionAmountDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionAuthorization :: Maybe Issuing'transactionAuthorization'Variants
issuing'transactionAuthorization = Maybe Issuing'transactionAuthorization'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionBalanceTransaction :: Maybe Issuing'transactionBalanceTransaction'Variants
issuing'transactionBalanceTransaction = Maybe Issuing'transactionBalanceTransaction'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionCard :: Issuing'transactionCard'Variants
issuing'transactionCard = Issuing'transactionCard'Variants
issuing'transactionCard,
      issuing'transactionCardholder :: Maybe Issuing'transactionCardholder'Variants
issuing'transactionCardholder = Maybe Issuing'transactionCardholder'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionCreated :: Int
issuing'transactionCreated = Int
issuing'transactionCreated,
      issuing'transactionCurrency :: Text
issuing'transactionCurrency = Text
issuing'transactionCurrency,
      issuing'transactionDispute :: Maybe Issuing'transactionDispute'Variants
issuing'transactionDispute = Maybe Issuing'transactionDispute'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionId :: Text
issuing'transactionId = Text
issuing'transactionId,
      issuing'transactionLivemode :: Bool
issuing'transactionLivemode = Bool
issuing'transactionLivemode,
      issuing'transactionMerchantAmount :: Int
issuing'transactionMerchantAmount = Int
issuing'transactionMerchantAmount,
      issuing'transactionMerchantCurrency :: Text
issuing'transactionMerchantCurrency = Text
issuing'transactionMerchantCurrency,
      issuing'transactionMerchantData :: IssuingAuthorizationMerchantData
issuing'transactionMerchantData = IssuingAuthorizationMerchantData
issuing'transactionMerchantData,
      issuing'transactionMetadata :: Object
issuing'transactionMetadata = Object
issuing'transactionMetadata,
      issuing'transactionPurchaseDetails :: Maybe Issuing'transactionPurchaseDetails'
issuing'transactionPurchaseDetails = Maybe Issuing'transactionPurchaseDetails'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionType :: Issuing'transactionType'
issuing'transactionType = Issuing'transactionType'
issuing'transactionType
    }

-- | Defines the object schema located at @components.schemas.issuing.transaction.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'transactionAmountDetails' = Issuing'transactionAmountDetails'
  { -- | atm_fee: The fee charged by the ATM for the cash withdrawal.
    Issuing'transactionAmountDetails' -> Maybe Int
issuing'transactionAmountDetails'AtmFee :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> Issuing'transactionAmountDetails' -> ShowS
[Issuing'transactionAmountDetails'] -> ShowS
Issuing'transactionAmountDetails' -> String
(Int -> Issuing'transactionAmountDetails' -> ShowS)
-> (Issuing'transactionAmountDetails' -> String)
-> ([Issuing'transactionAmountDetails'] -> ShowS)
-> Show Issuing'transactionAmountDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionAmountDetails'] -> ShowS
$cshowList :: [Issuing'transactionAmountDetails'] -> ShowS
show :: Issuing'transactionAmountDetails' -> String
$cshow :: Issuing'transactionAmountDetails' -> String
showsPrec :: Int -> Issuing'transactionAmountDetails' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionAmountDetails' -> ShowS
GHC.Show.Show,
      Issuing'transactionAmountDetails'
-> Issuing'transactionAmountDetails' -> Bool
(Issuing'transactionAmountDetails'
 -> Issuing'transactionAmountDetails' -> Bool)
-> (Issuing'transactionAmountDetails'
    -> Issuing'transactionAmountDetails' -> Bool)
-> Eq Issuing'transactionAmountDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionAmountDetails'
-> Issuing'transactionAmountDetails' -> Bool
$c/= :: Issuing'transactionAmountDetails'
-> Issuing'transactionAmountDetails' -> Bool
== :: Issuing'transactionAmountDetails'
-> Issuing'transactionAmountDetails' -> Bool
$c== :: Issuing'transactionAmountDetails'
-> Issuing'transactionAmountDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionAmountDetails' where
  toJSON :: Issuing'transactionAmountDetails' -> Value
toJSON Issuing'transactionAmountDetails'
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'transactionAmountDetails' -> Maybe Int
issuing'transactionAmountDetails'AtmFee Issuing'transactionAmountDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transactionAmountDetails' -> Encoding
toEncoding Issuing'transactionAmountDetails'
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'transactionAmountDetails' -> Maybe Int
issuing'transactionAmountDetails'AtmFee Issuing'transactionAmountDetails'
obj)

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionAmountDetails' where
  parseJSON :: Value -> Parser Issuing'transactionAmountDetails'
parseJSON = String
-> (Object -> Parser Issuing'transactionAmountDetails')
-> Value
-> Parser Issuing'transactionAmountDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'transactionAmountDetails'" (\Object
obj -> (Maybe Int -> Issuing'transactionAmountDetails')
-> Parser (Maybe Int -> Issuing'transactionAmountDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Issuing'transactionAmountDetails'
Issuing'transactionAmountDetails' Parser (Maybe Int -> Issuing'transactionAmountDetails')
-> Parser (Maybe Int) -> Parser Issuing'transactionAmountDetails'
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'transactionAmountDetails'' with all required fields.
mkIssuing'transactionAmountDetails' :: Issuing'transactionAmountDetails'
mkIssuing'transactionAmountDetails' :: Issuing'transactionAmountDetails'
mkIssuing'transactionAmountDetails' = Issuing'transactionAmountDetails' :: Maybe Int -> Issuing'transactionAmountDetails'
Issuing'transactionAmountDetails' {issuing'transactionAmountDetails'AtmFee :: Maybe Int
issuing'transactionAmountDetails'AtmFee = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing}

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

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

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

-- | Defines the oneOf schema located at @components.schemas.issuing.transaction.properties.balance_transaction.anyOf@ in the specification.
--
-- ID of the [balance transaction](https:\/\/stripe.com\/docs\/api\/balance_transactions) associated with this transaction.
data Issuing'transactionBalanceTransaction'Variants
  = Issuing'transactionBalanceTransaction'Text Data.Text.Internal.Text
  | Issuing'transactionBalanceTransaction'BalanceTransaction BalanceTransaction
  deriving (Int -> Issuing'transactionBalanceTransaction'Variants -> ShowS
[Issuing'transactionBalanceTransaction'Variants] -> ShowS
Issuing'transactionBalanceTransaction'Variants -> String
(Int -> Issuing'transactionBalanceTransaction'Variants -> ShowS)
-> (Issuing'transactionBalanceTransaction'Variants -> String)
-> ([Issuing'transactionBalanceTransaction'Variants] -> ShowS)
-> Show Issuing'transactionBalanceTransaction'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionBalanceTransaction'Variants] -> ShowS
$cshowList :: [Issuing'transactionBalanceTransaction'Variants] -> ShowS
show :: Issuing'transactionBalanceTransaction'Variants -> String
$cshow :: Issuing'transactionBalanceTransaction'Variants -> String
showsPrec :: Int -> Issuing'transactionBalanceTransaction'Variants -> ShowS
$cshowsPrec :: Int -> Issuing'transactionBalanceTransaction'Variants -> ShowS
GHC.Show.Show, Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionBalanceTransaction'Variants -> Bool
(Issuing'transactionBalanceTransaction'Variants
 -> Issuing'transactionBalanceTransaction'Variants -> Bool)
-> (Issuing'transactionBalanceTransaction'Variants
    -> Issuing'transactionBalanceTransaction'Variants -> Bool)
-> Eq Issuing'transactionBalanceTransaction'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionBalanceTransaction'Variants -> Bool
$c/= :: Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionBalanceTransaction'Variants -> Bool
== :: Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionBalanceTransaction'Variants -> Bool
$c== :: Issuing'transactionBalanceTransaction'Variants
-> Issuing'transactionBalanceTransaction'Variants -> Bool
GHC.Classes.Eq)

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

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

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

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

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

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

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

-- | Defines the oneOf schema located at @components.schemas.issuing.transaction.properties.dispute.anyOf@ in the specification.
--
-- If you\'ve disputed the transaction, the ID of the dispute.
data Issuing'transactionDispute'Variants
  = Issuing'transactionDispute'Text Data.Text.Internal.Text
  | Issuing'transactionDispute'Issuing'dispute Issuing'dispute
  deriving (Int -> Issuing'transactionDispute'Variants -> ShowS
[Issuing'transactionDispute'Variants] -> ShowS
Issuing'transactionDispute'Variants -> String
(Int -> Issuing'transactionDispute'Variants -> ShowS)
-> (Issuing'transactionDispute'Variants -> String)
-> ([Issuing'transactionDispute'Variants] -> ShowS)
-> Show Issuing'transactionDispute'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionDispute'Variants] -> ShowS
$cshowList :: [Issuing'transactionDispute'Variants] -> ShowS
show :: Issuing'transactionDispute'Variants -> String
$cshow :: Issuing'transactionDispute'Variants -> String
showsPrec :: Int -> Issuing'transactionDispute'Variants -> ShowS
$cshowsPrec :: Int -> Issuing'transactionDispute'Variants -> ShowS
GHC.Show.Show, Issuing'transactionDispute'Variants
-> Issuing'transactionDispute'Variants -> Bool
(Issuing'transactionDispute'Variants
 -> Issuing'transactionDispute'Variants -> Bool)
-> (Issuing'transactionDispute'Variants
    -> Issuing'transactionDispute'Variants -> Bool)
-> Eq Issuing'transactionDispute'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionDispute'Variants
-> Issuing'transactionDispute'Variants -> Bool
$c/= :: Issuing'transactionDispute'Variants
-> Issuing'transactionDispute'Variants -> Bool
== :: Issuing'transactionDispute'Variants
-> Issuing'transactionDispute'Variants -> Bool
$c== :: Issuing'transactionDispute'Variants
-> Issuing'transactionDispute'Variants -> Bool
GHC.Classes.Eq)

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

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

-- | Defines the object schema located at @components.schemas.issuing.transaction.properties.purchase_details.anyOf@ in the specification.
--
-- Additional purchase information that is optionally provided by the merchant.
data Issuing'transactionPurchaseDetails' = Issuing'transactionPurchaseDetails'
  { -- | flight: Information about the flight that was purchased with this transaction.
    Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Flight'
issuing'transactionPurchaseDetails'Flight :: (GHC.Maybe.Maybe Issuing'transactionPurchaseDetails'Flight'),
    -- | fuel: Information about fuel that was purchased with this transaction.
    Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Fuel'
issuing'transactionPurchaseDetails'Fuel :: (GHC.Maybe.Maybe Issuing'transactionPurchaseDetails'Fuel'),
    -- | lodging: Information about lodging that was purchased with this transaction.
    Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Lodging'
issuing'transactionPurchaseDetails'Lodging :: (GHC.Maybe.Maybe Issuing'transactionPurchaseDetails'Lodging'),
    -- | receipt: The line items in the purchase.
    Issuing'transactionPurchaseDetails'
-> Maybe [IssuingTransactionReceiptData]
issuing'transactionPurchaseDetails'Receipt :: (GHC.Maybe.Maybe ([IssuingTransactionReceiptData])),
    -- | reference: A merchant-specific order number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transactionPurchaseDetails' -> Maybe Text
issuing'transactionPurchaseDetails'Reference :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Issuing'transactionPurchaseDetails' -> ShowS
[Issuing'transactionPurchaseDetails'] -> ShowS
Issuing'transactionPurchaseDetails' -> String
(Int -> Issuing'transactionPurchaseDetails' -> ShowS)
-> (Issuing'transactionPurchaseDetails' -> String)
-> ([Issuing'transactionPurchaseDetails'] -> ShowS)
-> Show Issuing'transactionPurchaseDetails'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionPurchaseDetails'] -> ShowS
$cshowList :: [Issuing'transactionPurchaseDetails'] -> ShowS
show :: Issuing'transactionPurchaseDetails' -> String
$cshow :: Issuing'transactionPurchaseDetails' -> String
showsPrec :: Int -> Issuing'transactionPurchaseDetails' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionPurchaseDetails' -> ShowS
GHC.Show.Show,
      Issuing'transactionPurchaseDetails'
-> Issuing'transactionPurchaseDetails' -> Bool
(Issuing'transactionPurchaseDetails'
 -> Issuing'transactionPurchaseDetails' -> Bool)
-> (Issuing'transactionPurchaseDetails'
    -> Issuing'transactionPurchaseDetails' -> Bool)
-> Eq Issuing'transactionPurchaseDetails'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionPurchaseDetails'
-> Issuing'transactionPurchaseDetails' -> Bool
$c/= :: Issuing'transactionPurchaseDetails'
-> Issuing'transactionPurchaseDetails' -> Bool
== :: Issuing'transactionPurchaseDetails'
-> Issuing'transactionPurchaseDetails' -> Bool
$c== :: Issuing'transactionPurchaseDetails'
-> Issuing'transactionPurchaseDetails' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionPurchaseDetails' where
  toJSON :: Issuing'transactionPurchaseDetails' -> Value
toJSON Issuing'transactionPurchaseDetails'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"flight" Text -> Maybe Issuing'transactionPurchaseDetails'Flight' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Flight'
issuing'transactionPurchaseDetails'Flight Issuing'transactionPurchaseDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fuel" Text -> Maybe Issuing'transactionPurchaseDetails'Fuel' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Fuel'
issuing'transactionPurchaseDetails'Fuel Issuing'transactionPurchaseDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"lodging" Text -> Maybe Issuing'transactionPurchaseDetails'Lodging' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Lodging'
issuing'transactionPurchaseDetails'Lodging Issuing'transactionPurchaseDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"receipt" Text -> Maybe [IssuingTransactionReceiptData] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe [IssuingTransactionReceiptData]
issuing'transactionPurchaseDetails'Receipt Issuing'transactionPurchaseDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reference" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails' -> Maybe Text
issuing'transactionPurchaseDetails'Reference Issuing'transactionPurchaseDetails'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transactionPurchaseDetails' -> Encoding
toEncoding Issuing'transactionPurchaseDetails'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"flight" Text -> Maybe Issuing'transactionPurchaseDetails'Flight' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Flight'
issuing'transactionPurchaseDetails'Flight Issuing'transactionPurchaseDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fuel" Text -> Maybe Issuing'transactionPurchaseDetails'Fuel' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Fuel'
issuing'transactionPurchaseDetails'Fuel Issuing'transactionPurchaseDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"lodging" Text -> Maybe Issuing'transactionPurchaseDetails'Lodging' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe Issuing'transactionPurchaseDetails'Lodging'
issuing'transactionPurchaseDetails'Lodging Issuing'transactionPurchaseDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"receipt" Text -> Maybe [IssuingTransactionReceiptData] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'
-> Maybe [IssuingTransactionReceiptData]
issuing'transactionPurchaseDetails'Receipt Issuing'transactionPurchaseDetails'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"reference" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails' -> Maybe Text
issuing'transactionPurchaseDetails'Reference Issuing'transactionPurchaseDetails'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionPurchaseDetails' where
  parseJSON :: Value -> Parser Issuing'transactionPurchaseDetails'
parseJSON = String
-> (Object -> Parser Issuing'transactionPurchaseDetails')
-> Value
-> Parser Issuing'transactionPurchaseDetails'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'transactionPurchaseDetails'" (\Object
obj -> (((((Maybe Issuing'transactionPurchaseDetails'Flight'
 -> Maybe Issuing'transactionPurchaseDetails'Fuel'
 -> Maybe Issuing'transactionPurchaseDetails'Lodging'
 -> Maybe [IssuingTransactionReceiptData]
 -> Maybe Text
 -> Issuing'transactionPurchaseDetails')
-> Parser
     (Maybe Issuing'transactionPurchaseDetails'Flight'
      -> Maybe Issuing'transactionPurchaseDetails'Fuel'
      -> Maybe Issuing'transactionPurchaseDetails'Lodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Issuing'transactionPurchaseDetails'Flight'
-> Maybe Issuing'transactionPurchaseDetails'Fuel'
-> Maybe Issuing'transactionPurchaseDetails'Lodging'
-> Maybe [IssuingTransactionReceiptData]
-> Maybe Text
-> Issuing'transactionPurchaseDetails'
Issuing'transactionPurchaseDetails' Parser
  (Maybe Issuing'transactionPurchaseDetails'Flight'
   -> Maybe Issuing'transactionPurchaseDetails'Fuel'
   -> Maybe Issuing'transactionPurchaseDetails'Lodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails')
-> Parser (Maybe Issuing'transactionPurchaseDetails'Flight')
-> Parser
     (Maybe Issuing'transactionPurchaseDetails'Fuel'
      -> Maybe Issuing'transactionPurchaseDetails'Lodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe Issuing'transactionPurchaseDetails'Flight')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"flight")) Parser
  (Maybe Issuing'transactionPurchaseDetails'Fuel'
   -> Maybe Issuing'transactionPurchaseDetails'Lodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails')
-> Parser (Maybe Issuing'transactionPurchaseDetails'Fuel')
-> Parser
     (Maybe Issuing'transactionPurchaseDetails'Lodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe Issuing'transactionPurchaseDetails'Fuel')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fuel")) Parser
  (Maybe Issuing'transactionPurchaseDetails'Lodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails')
-> Parser (Maybe Issuing'transactionPurchaseDetails'Lodging')
-> Parser
     (Maybe [IssuingTransactionReceiptData]
      -> Maybe Text -> Issuing'transactionPurchaseDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe Issuing'transactionPurchaseDetails'Lodging')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"lodging")) Parser
  (Maybe [IssuingTransactionReceiptData]
   -> Maybe Text -> Issuing'transactionPurchaseDetails')
-> Parser (Maybe [IssuingTransactionReceiptData])
-> Parser (Maybe Text -> Issuing'transactionPurchaseDetails')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [IssuingTransactionReceiptData])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"receipt")) Parser (Maybe Text -> Issuing'transactionPurchaseDetails')
-> Parser (Maybe Text)
-> Parser Issuing'transactionPurchaseDetails'
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
"reference"))

-- | Create a new 'Issuing'transactionPurchaseDetails'' with all required fields.
mkIssuing'transactionPurchaseDetails' :: Issuing'transactionPurchaseDetails'
mkIssuing'transactionPurchaseDetails' :: Issuing'transactionPurchaseDetails'
mkIssuing'transactionPurchaseDetails' =
  Issuing'transactionPurchaseDetails' :: Maybe Issuing'transactionPurchaseDetails'Flight'
-> Maybe Issuing'transactionPurchaseDetails'Fuel'
-> Maybe Issuing'transactionPurchaseDetails'Lodging'
-> Maybe [IssuingTransactionReceiptData]
-> Maybe Text
-> Issuing'transactionPurchaseDetails'
Issuing'transactionPurchaseDetails'
    { issuing'transactionPurchaseDetails'Flight :: Maybe Issuing'transactionPurchaseDetails'Flight'
issuing'transactionPurchaseDetails'Flight = Maybe Issuing'transactionPurchaseDetails'Flight'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Fuel :: Maybe Issuing'transactionPurchaseDetails'Fuel'
issuing'transactionPurchaseDetails'Fuel = Maybe Issuing'transactionPurchaseDetails'Fuel'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Lodging :: Maybe Issuing'transactionPurchaseDetails'Lodging'
issuing'transactionPurchaseDetails'Lodging = Maybe Issuing'transactionPurchaseDetails'Lodging'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Receipt :: Maybe [IssuingTransactionReceiptData]
issuing'transactionPurchaseDetails'Receipt = Maybe [IssuingTransactionReceiptData]
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Reference :: Maybe Text
issuing'transactionPurchaseDetails'Reference = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing.transaction.properties.purchase_details.anyOf.properties.flight.anyOf@ in the specification.
--
-- Information about the flight that was purchased with this transaction.
data Issuing'transactionPurchaseDetails'Flight' = Issuing'transactionPurchaseDetails'Flight'
  { -- | departure_at: The time that the flight departed.
    Issuing'transactionPurchaseDetails'Flight' -> Maybe Int
issuing'transactionPurchaseDetails'Flight'DepartureAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | passenger_name: The name of the passenger.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'PassengerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | refundable: Whether the ticket is refundable.
    Issuing'transactionPurchaseDetails'Flight' -> Maybe Bool
issuing'transactionPurchaseDetails'Flight'Refundable :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | segments: The legs of the trip.
    Issuing'transactionPurchaseDetails'Flight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuing'transactionPurchaseDetails'Flight'Segments :: (GHC.Maybe.Maybe ([IssuingTransactionFlightDataLeg])),
    -- | travel_agency: The travel agency that issued the ticket.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'TravelAgency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Issuing'transactionPurchaseDetails'Flight' -> ShowS
[Issuing'transactionPurchaseDetails'Flight'] -> ShowS
Issuing'transactionPurchaseDetails'Flight' -> String
(Int -> Issuing'transactionPurchaseDetails'Flight' -> ShowS)
-> (Issuing'transactionPurchaseDetails'Flight' -> String)
-> ([Issuing'transactionPurchaseDetails'Flight'] -> ShowS)
-> Show Issuing'transactionPurchaseDetails'Flight'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionPurchaseDetails'Flight'] -> ShowS
$cshowList :: [Issuing'transactionPurchaseDetails'Flight'] -> ShowS
show :: Issuing'transactionPurchaseDetails'Flight' -> String
$cshow :: Issuing'transactionPurchaseDetails'Flight' -> String
showsPrec :: Int -> Issuing'transactionPurchaseDetails'Flight' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionPurchaseDetails'Flight' -> ShowS
GHC.Show.Show,
      Issuing'transactionPurchaseDetails'Flight'
-> Issuing'transactionPurchaseDetails'Flight' -> Bool
(Issuing'transactionPurchaseDetails'Flight'
 -> Issuing'transactionPurchaseDetails'Flight' -> Bool)
-> (Issuing'transactionPurchaseDetails'Flight'
    -> Issuing'transactionPurchaseDetails'Flight' -> Bool)
-> Eq Issuing'transactionPurchaseDetails'Flight'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionPurchaseDetails'Flight'
-> Issuing'transactionPurchaseDetails'Flight' -> Bool
$c/= :: Issuing'transactionPurchaseDetails'Flight'
-> Issuing'transactionPurchaseDetails'Flight' -> Bool
== :: Issuing'transactionPurchaseDetails'Flight'
-> Issuing'transactionPurchaseDetails'Flight' -> Bool
$c== :: Issuing'transactionPurchaseDetails'Flight'
-> Issuing'transactionPurchaseDetails'Flight' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionPurchaseDetails'Flight' where
  toJSON :: Issuing'transactionPurchaseDetails'Flight' -> Value
toJSON Issuing'transactionPurchaseDetails'Flight'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"departure_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Int
issuing'transactionPurchaseDetails'Flight'DepartureAt Issuing'transactionPurchaseDetails'Flight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"passenger_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'PassengerName Issuing'transactionPurchaseDetails'Flight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"refundable" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Bool
issuing'transactionPurchaseDetails'Flight'Refundable Issuing'transactionPurchaseDetails'Flight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"segments" Text -> Maybe [IssuingTransactionFlightDataLeg] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuing'transactionPurchaseDetails'Flight'Segments Issuing'transactionPurchaseDetails'Flight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"travel_agency" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'TravelAgency Issuing'transactionPurchaseDetails'Flight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transactionPurchaseDetails'Flight' -> Encoding
toEncoding Issuing'transactionPurchaseDetails'Flight'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"departure_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Int
issuing'transactionPurchaseDetails'Flight'DepartureAt Issuing'transactionPurchaseDetails'Flight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"passenger_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'PassengerName Issuing'transactionPurchaseDetails'Flight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"refundable" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Bool
issuing'transactionPurchaseDetails'Flight'Refundable Issuing'transactionPurchaseDetails'Flight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"segments" Text -> Maybe [IssuingTransactionFlightDataLeg] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuing'transactionPurchaseDetails'Flight'Segments Issuing'transactionPurchaseDetails'Flight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"travel_agency" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Flight' -> Maybe Text
issuing'transactionPurchaseDetails'Flight'TravelAgency Issuing'transactionPurchaseDetails'Flight'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionPurchaseDetails'Flight' where
  parseJSON :: Value -> Parser Issuing'transactionPurchaseDetails'Flight'
parseJSON = String
-> (Object -> Parser Issuing'transactionPurchaseDetails'Flight')
-> Value
-> Parser Issuing'transactionPurchaseDetails'Flight'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'transactionPurchaseDetails'Flight'" (\Object
obj -> (((((Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe [IssuingTransactionFlightDataLeg]
 -> Maybe Text
 -> Issuing'transactionPurchaseDetails'Flight')
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails'Flight')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe [IssuingTransactionFlightDataLeg]
-> Maybe Text
-> Issuing'transactionPurchaseDetails'Flight'
Issuing'transactionPurchaseDetails'Flight' Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails'Flight')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails'Flight')
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
"departure_at")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails'Flight')
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails'Flight')
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
"passenger_name")) Parser
  (Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails'Flight')
-> Parser (Maybe Bool)
-> Parser
     (Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text -> Issuing'transactionPurchaseDetails'Flight')
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
"refundable")) Parser
  (Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text -> Issuing'transactionPurchaseDetails'Flight')
-> Parser (Maybe [IssuingTransactionFlightDataLeg])
-> Parser
     (Maybe Text -> Issuing'transactionPurchaseDetails'Flight')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [IssuingTransactionFlightDataLeg])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"segments")) Parser (Maybe Text -> Issuing'transactionPurchaseDetails'Flight')
-> Parser (Maybe Text)
-> Parser Issuing'transactionPurchaseDetails'Flight'
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
"travel_agency"))

-- | Create a new 'Issuing'transactionPurchaseDetails'Flight'' with all required fields.
mkIssuing'transactionPurchaseDetails'Flight' :: Issuing'transactionPurchaseDetails'Flight'
mkIssuing'transactionPurchaseDetails'Flight' :: Issuing'transactionPurchaseDetails'Flight'
mkIssuing'transactionPurchaseDetails'Flight' =
  Issuing'transactionPurchaseDetails'Flight' :: Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe [IssuingTransactionFlightDataLeg]
-> Maybe Text
-> Issuing'transactionPurchaseDetails'Flight'
Issuing'transactionPurchaseDetails'Flight'
    { issuing'transactionPurchaseDetails'Flight'DepartureAt :: Maybe Int
issuing'transactionPurchaseDetails'Flight'DepartureAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Flight'PassengerName :: Maybe Text
issuing'transactionPurchaseDetails'Flight'PassengerName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Flight'Refundable :: Maybe Bool
issuing'transactionPurchaseDetails'Flight'Refundable = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Flight'Segments :: Maybe [IssuingTransactionFlightDataLeg]
issuing'transactionPurchaseDetails'Flight'Segments = Maybe [IssuingTransactionFlightDataLeg]
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Flight'TravelAgency :: Maybe Text
issuing'transactionPurchaseDetails'Flight'TravelAgency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing.transaction.properties.purchase_details.anyOf.properties.fuel.anyOf@ in the specification.
--
-- Information about fuel that was purchased with this transaction.
data Issuing'transactionPurchaseDetails'Fuel' = Issuing'transactionPurchaseDetails'Fuel'
  { -- | type: The type of fuel that was purchased. One of \`diesel\`, \`unleaded_plus\`, \`unleaded_regular\`, \`unleaded_super\`, or \`other\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | unit: The units for \`volume_decimal\`. One of \`us_gallon\` or \`liter\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Unit :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | unit_cost_decimal: The cost in cents per each unit of fuel, represented as a decimal string with at most 12 decimal places.
    Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'UnitCostDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | volume_decimal: The volume of the fuel that was pumped, represented as a decimal string with at most 12 decimal places.
    Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'VolumeDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Issuing'transactionPurchaseDetails'Fuel' -> ShowS
[Issuing'transactionPurchaseDetails'Fuel'] -> ShowS
Issuing'transactionPurchaseDetails'Fuel' -> String
(Int -> Issuing'transactionPurchaseDetails'Fuel' -> ShowS)
-> (Issuing'transactionPurchaseDetails'Fuel' -> String)
-> ([Issuing'transactionPurchaseDetails'Fuel'] -> ShowS)
-> Show Issuing'transactionPurchaseDetails'Fuel'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionPurchaseDetails'Fuel'] -> ShowS
$cshowList :: [Issuing'transactionPurchaseDetails'Fuel'] -> ShowS
show :: Issuing'transactionPurchaseDetails'Fuel' -> String
$cshow :: Issuing'transactionPurchaseDetails'Fuel' -> String
showsPrec :: Int -> Issuing'transactionPurchaseDetails'Fuel' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionPurchaseDetails'Fuel' -> ShowS
GHC.Show.Show,
      Issuing'transactionPurchaseDetails'Fuel'
-> Issuing'transactionPurchaseDetails'Fuel' -> Bool
(Issuing'transactionPurchaseDetails'Fuel'
 -> Issuing'transactionPurchaseDetails'Fuel' -> Bool)
-> (Issuing'transactionPurchaseDetails'Fuel'
    -> Issuing'transactionPurchaseDetails'Fuel' -> Bool)
-> Eq Issuing'transactionPurchaseDetails'Fuel'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionPurchaseDetails'Fuel'
-> Issuing'transactionPurchaseDetails'Fuel' -> Bool
$c/= :: Issuing'transactionPurchaseDetails'Fuel'
-> Issuing'transactionPurchaseDetails'Fuel' -> Bool
== :: Issuing'transactionPurchaseDetails'Fuel'
-> Issuing'transactionPurchaseDetails'Fuel' -> Bool
$c== :: Issuing'transactionPurchaseDetails'Fuel'
-> Issuing'transactionPurchaseDetails'Fuel' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionPurchaseDetails'Fuel' where
  toJSON :: Issuing'transactionPurchaseDetails'Fuel' -> Value
toJSON Issuing'transactionPurchaseDetails'Fuel'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"type" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Type Issuing'transactionPurchaseDetails'Fuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Unit Issuing'transactionPurchaseDetails'Fuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_cost_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'UnitCostDecimal Issuing'transactionPurchaseDetails'Fuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"volume_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'VolumeDecimal Issuing'transactionPurchaseDetails'Fuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transactionPurchaseDetails'Fuel' -> Encoding
toEncoding Issuing'transactionPurchaseDetails'Fuel'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"type" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Type Issuing'transactionPurchaseDetails'Fuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'Unit Issuing'transactionPurchaseDetails'Fuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_cost_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'UnitCostDecimal Issuing'transactionPurchaseDetails'Fuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"volume_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Fuel' -> Maybe Text
issuing'transactionPurchaseDetails'Fuel'VolumeDecimal Issuing'transactionPurchaseDetails'Fuel'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionPurchaseDetails'Fuel' where
  parseJSON :: Value -> Parser Issuing'transactionPurchaseDetails'Fuel'
parseJSON = String
-> (Object -> Parser Issuing'transactionPurchaseDetails'Fuel')
-> Value
-> Parser Issuing'transactionPurchaseDetails'Fuel'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'transactionPurchaseDetails'Fuel'" (\Object
obj -> ((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Issuing'transactionPurchaseDetails'Fuel')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails'Fuel')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Issuing'transactionPurchaseDetails'Fuel'
Issuing'transactionPurchaseDetails'Fuel' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails'Fuel')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Issuing'transactionPurchaseDetails'Fuel')
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
"type")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Issuing'transactionPurchaseDetails'Fuel')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text -> Issuing'transactionPurchaseDetails'Fuel')
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
"unit")) Parser
  (Maybe Text
   -> Maybe Text -> Issuing'transactionPurchaseDetails'Fuel')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Issuing'transactionPurchaseDetails'Fuel')
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
"unit_cost_decimal")) Parser (Maybe Text -> Issuing'transactionPurchaseDetails'Fuel')
-> Parser (Maybe Text)
-> Parser Issuing'transactionPurchaseDetails'Fuel'
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
"volume_decimal"))

-- | Create a new 'Issuing'transactionPurchaseDetails'Fuel'' with all required fields.
mkIssuing'transactionPurchaseDetails'Fuel' :: Issuing'transactionPurchaseDetails'Fuel'
mkIssuing'transactionPurchaseDetails'Fuel' :: Issuing'transactionPurchaseDetails'Fuel'
mkIssuing'transactionPurchaseDetails'Fuel' =
  Issuing'transactionPurchaseDetails'Fuel' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Issuing'transactionPurchaseDetails'Fuel'
Issuing'transactionPurchaseDetails'Fuel'
    { issuing'transactionPurchaseDetails'Fuel'Type :: Maybe Text
issuing'transactionPurchaseDetails'Fuel'Type = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Fuel'Unit :: Maybe Text
issuing'transactionPurchaseDetails'Fuel'Unit = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Fuel'UnitCostDecimal :: Maybe Text
issuing'transactionPurchaseDetails'Fuel'UnitCostDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Fuel'VolumeDecimal :: Maybe Text
issuing'transactionPurchaseDetails'Fuel'VolumeDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing.transaction.properties.purchase_details.anyOf.properties.lodging.anyOf@ in the specification.
--
-- Information about lodging that was purchased with this transaction.
data Issuing'transactionPurchaseDetails'Lodging' = Issuing'transactionPurchaseDetails'Lodging'
  { -- | check_in_at: The time of checking into the lodging.
    Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'CheckInAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | nights: The number of nights stayed at the lodging.
    Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'Nights :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> Issuing'transactionPurchaseDetails'Lodging' -> ShowS
[Issuing'transactionPurchaseDetails'Lodging'] -> ShowS
Issuing'transactionPurchaseDetails'Lodging' -> String
(Int -> Issuing'transactionPurchaseDetails'Lodging' -> ShowS)
-> (Issuing'transactionPurchaseDetails'Lodging' -> String)
-> ([Issuing'transactionPurchaseDetails'Lodging'] -> ShowS)
-> Show Issuing'transactionPurchaseDetails'Lodging'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionPurchaseDetails'Lodging'] -> ShowS
$cshowList :: [Issuing'transactionPurchaseDetails'Lodging'] -> ShowS
show :: Issuing'transactionPurchaseDetails'Lodging' -> String
$cshow :: Issuing'transactionPurchaseDetails'Lodging' -> String
showsPrec :: Int -> Issuing'transactionPurchaseDetails'Lodging' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionPurchaseDetails'Lodging' -> ShowS
GHC.Show.Show,
      Issuing'transactionPurchaseDetails'Lodging'
-> Issuing'transactionPurchaseDetails'Lodging' -> Bool
(Issuing'transactionPurchaseDetails'Lodging'
 -> Issuing'transactionPurchaseDetails'Lodging' -> Bool)
-> (Issuing'transactionPurchaseDetails'Lodging'
    -> Issuing'transactionPurchaseDetails'Lodging' -> Bool)
-> Eq Issuing'transactionPurchaseDetails'Lodging'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionPurchaseDetails'Lodging'
-> Issuing'transactionPurchaseDetails'Lodging' -> Bool
$c/= :: Issuing'transactionPurchaseDetails'Lodging'
-> Issuing'transactionPurchaseDetails'Lodging' -> Bool
== :: Issuing'transactionPurchaseDetails'Lodging'
-> Issuing'transactionPurchaseDetails'Lodging' -> Bool
$c== :: Issuing'transactionPurchaseDetails'Lodging'
-> Issuing'transactionPurchaseDetails'Lodging' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionPurchaseDetails'Lodging' where
  toJSON :: Issuing'transactionPurchaseDetails'Lodging' -> Value
toJSON Issuing'transactionPurchaseDetails'Lodging'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"check_in_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'CheckInAt Issuing'transactionPurchaseDetails'Lodging'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"nights" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'Nights Issuing'transactionPurchaseDetails'Lodging'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'transactionPurchaseDetails'Lodging' -> Encoding
toEncoding Issuing'transactionPurchaseDetails'Lodging'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"check_in_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'CheckInAt Issuing'transactionPurchaseDetails'Lodging'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"nights" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'transactionPurchaseDetails'Lodging' -> Maybe Int
issuing'transactionPurchaseDetails'Lodging'Nights Issuing'transactionPurchaseDetails'Lodging'
obj))

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

-- | Create a new 'Issuing'transactionPurchaseDetails'Lodging'' with all required fields.
mkIssuing'transactionPurchaseDetails'Lodging' :: Issuing'transactionPurchaseDetails'Lodging'
mkIssuing'transactionPurchaseDetails'Lodging' :: Issuing'transactionPurchaseDetails'Lodging'
mkIssuing'transactionPurchaseDetails'Lodging' =
  Issuing'transactionPurchaseDetails'Lodging' :: Maybe Int
-> Maybe Int -> Issuing'transactionPurchaseDetails'Lodging'
Issuing'transactionPurchaseDetails'Lodging'
    { issuing'transactionPurchaseDetails'Lodging'CheckInAt :: Maybe Int
issuing'transactionPurchaseDetails'Lodging'CheckInAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'transactionPurchaseDetails'Lodging'Nights :: Maybe Int
issuing'transactionPurchaseDetails'Lodging'Nights = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.issuing.transaction.properties.type@ in the specification.
--
-- The nature of the transaction.
data Issuing'transactionType'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    Issuing'transactionType'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'transactionType'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"capture"@
    Issuing'transactionType'EnumCapture
  | -- | Represents the JSON value @"refund"@
    Issuing'transactionType'EnumRefund
  deriving (Int -> Issuing'transactionType' -> ShowS
[Issuing'transactionType'] -> ShowS
Issuing'transactionType' -> String
(Int -> Issuing'transactionType' -> ShowS)
-> (Issuing'transactionType' -> String)
-> ([Issuing'transactionType'] -> ShowS)
-> Show Issuing'transactionType'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'transactionType'] -> ShowS
$cshowList :: [Issuing'transactionType'] -> ShowS
show :: Issuing'transactionType' -> String
$cshow :: Issuing'transactionType' -> String
showsPrec :: Int -> Issuing'transactionType' -> ShowS
$cshowsPrec :: Int -> Issuing'transactionType' -> ShowS
GHC.Show.Show, Issuing'transactionType' -> Issuing'transactionType' -> Bool
(Issuing'transactionType' -> Issuing'transactionType' -> Bool)
-> (Issuing'transactionType' -> Issuing'transactionType' -> Bool)
-> Eq Issuing'transactionType'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'transactionType' -> Issuing'transactionType' -> Bool
$c/= :: Issuing'transactionType' -> Issuing'transactionType' -> Bool
== :: Issuing'transactionType' -> Issuing'transactionType' -> Bool
$c== :: Issuing'transactionType' -> Issuing'transactionType' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'transactionType' where
  toJSON :: Issuing'transactionType' -> Value
toJSON (Issuing'transactionType'Other Value
val) = Value
val
  toJSON (Issuing'transactionType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (Issuing'transactionType'
Issuing'transactionType'EnumCapture) = Value
"capture"
  toJSON (Issuing'transactionType'
Issuing'transactionType'EnumRefund) = Value
"refund"

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'transactionType' where
  parseJSON :: Value -> Parser Issuing'transactionType'
parseJSON Value
val =
    Issuing'transactionType' -> Parser Issuing'transactionType'
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
"capture" -> Issuing'transactionType'
Issuing'transactionType'EnumCapture
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"refund" -> Issuing'transactionType'
Issuing'transactionType'EnumRefund
            | Bool
GHC.Base.otherwise -> Value -> Issuing'transactionType'
Issuing'transactionType'Other Value
val
      )