{-# 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 Transfer module StripeAPI.Types.Transfer 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.Account import {-# SOURCE #-} StripeAPI.Types.BalanceTransaction import {-# SOURCE #-} StripeAPI.Types.Charge import {-# SOURCE #-} StripeAPI.Types.TransferReversal import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | Defines the object schema located at @components.schemas.transfer@ in the specification. -- -- A \`Transfer\` object is created when you move funds between Stripe accounts as -- part of Connect. -- -- Before April 6, 2017, transfers also represented movement of funds from a -- Stripe account to a card or bank account. This behavior has since been split -- out into a [Payout](https:\/\/stripe.com\/docs\/api\#payout_object) object, with corresponding payout endpoints. For more -- information, read about the -- [transfer\/payout split](https:\/\/stripe.com\/docs\/transfer-payout-split). -- -- Related guide: [Creating Separate Charges and Transfers](https:\/\/stripe.com\/docs\/connect\/charges-transfers). data Transfer = Transfer { -- | amount: Amount in %s to be transferred. transferAmount :: GHC.Types.Int, -- | amount_reversed: Amount in %s reversed (can be less than the amount attribute on the transfer if a partial reversal was issued). transferAmountReversed :: GHC.Types.Int, -- | balance_transaction: Balance transaction that describes the impact of this transfer on your account balance. transferBalanceTransaction :: (GHC.Maybe.Maybe TransferBalanceTransaction'Variants), -- | created: Time that this record of the transfer was first created. transferCreated :: 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). transferCurrency :: Data.Text.Internal.Text, -- | description: An arbitrary string attached to the object. Often useful for displaying to users. -- -- Constraints: -- -- * Maximum length of 5000 transferDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | destination: ID of the Stripe account the transfer was sent to. transferDestination :: (GHC.Maybe.Maybe TransferDestination'Variants), -- | destination_payment: If the destination is a Stripe account, this will be the ID of the payment that the destination account received for the transfer. transferDestinationPayment :: (GHC.Maybe.Maybe TransferDestinationPayment'Variants), -- | id: Unique identifier for the object. -- -- Constraints: -- -- * Maximum length of 5000 transferId :: 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. transferLivemode :: GHC.Types.Bool, -- | 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. transferMetadata :: Data.Aeson.Types.Internal.Object, -- | reversals: A list of reversals that have been applied to the transfer. transferReversals :: TransferReversals', -- | reversed: Whether the transfer has been fully reversed. If the transfer is only partially reversed, this attribute will still be false. transferReversed :: GHC.Types.Bool, -- | source_transaction: ID of the charge or payment that was used to fund the transfer. If null, the transfer was funded from the available balance. transferSourceTransaction :: (GHC.Maybe.Maybe TransferSourceTransaction'Variants), -- | source_type: The source balance this transfer came from. One of \`card\`, \`fpx\`, or \`bank_account\`. -- -- Constraints: -- -- * Maximum length of 5000 transferSourceType :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | transfer_group: A string that identifies this transaction as part of a group. See the [Connect documentation](https:\/\/stripe.com\/docs\/connect\/charges-transfers\#transfer-options) for details. -- -- Constraints: -- -- * Maximum length of 5000 transferTransferGroup :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON Transfer where toJSON obj = Data.Aeson.Types.Internal.object ("amount" Data.Aeson.Types.ToJSON..= transferAmount obj : "amount_reversed" Data.Aeson.Types.ToJSON..= transferAmountReversed obj : "balance_transaction" Data.Aeson.Types.ToJSON..= transferBalanceTransaction obj : "created" Data.Aeson.Types.ToJSON..= transferCreated obj : "currency" Data.Aeson.Types.ToJSON..= transferCurrency obj : "description" Data.Aeson.Types.ToJSON..= transferDescription obj : "destination" Data.Aeson.Types.ToJSON..= transferDestination obj : "destination_payment" Data.Aeson.Types.ToJSON..= transferDestinationPayment obj : "id" Data.Aeson.Types.ToJSON..= transferId obj : "livemode" Data.Aeson.Types.ToJSON..= transferLivemode obj : "metadata" Data.Aeson.Types.ToJSON..= transferMetadata obj : "reversals" Data.Aeson.Types.ToJSON..= transferReversals obj : "reversed" Data.Aeson.Types.ToJSON..= transferReversed obj : "source_transaction" Data.Aeson.Types.ToJSON..= transferSourceTransaction obj : "source_type" Data.Aeson.Types.ToJSON..= transferSourceType obj : "transfer_group" Data.Aeson.Types.ToJSON..= transferTransferGroup obj : "object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "transfer" : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("amount" Data.Aeson.Types.ToJSON..= transferAmount obj) GHC.Base.<> (("amount_reversed" Data.Aeson.Types.ToJSON..= transferAmountReversed obj) GHC.Base.<> (("balance_transaction" Data.Aeson.Types.ToJSON..= transferBalanceTransaction obj) GHC.Base.<> (("created" Data.Aeson.Types.ToJSON..= transferCreated obj) GHC.Base.<> (("currency" Data.Aeson.Types.ToJSON..= transferCurrency obj) GHC.Base.<> (("description" Data.Aeson.Types.ToJSON..= transferDescription obj) GHC.Base.<> (("destination" Data.Aeson.Types.ToJSON..= transferDestination obj) GHC.Base.<> (("destination_payment" Data.Aeson.Types.ToJSON..= transferDestinationPayment obj) GHC.Base.<> (("id" Data.Aeson.Types.ToJSON..= transferId obj) GHC.Base.<> (("livemode" Data.Aeson.Types.ToJSON..= transferLivemode obj) GHC.Base.<> (("metadata" Data.Aeson.Types.ToJSON..= transferMetadata obj) GHC.Base.<> (("reversals" Data.Aeson.Types.ToJSON..= transferReversals obj) GHC.Base.<> (("reversed" Data.Aeson.Types.ToJSON..= transferReversed obj) GHC.Base.<> (("source_transaction" Data.Aeson.Types.ToJSON..= transferSourceTransaction obj) GHC.Base.<> (("source_type" Data.Aeson.Types.ToJSON..= transferSourceType obj) GHC.Base.<> (("transfer_group" Data.Aeson.Types.ToJSON..= transferTransferGroup obj) GHC.Base.<> ("object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "transfer"))))))))))))))))) instance Data.Aeson.Types.FromJSON.FromJSON Transfer where parseJSON = Data.Aeson.Types.FromJSON.withObject "Transfer" (\obj -> (((((((((((((((GHC.Base.pure Transfer GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "amount_reversed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "balance_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "destination_payment")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "livemode")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reversals")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "reversed")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_transaction")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "source_type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "transfer_group")) -- | Create a new 'Transfer' with all required fields. mkTransfer :: -- | 'transferAmount' GHC.Types.Int -> -- | 'transferAmountReversed' GHC.Types.Int -> -- | 'transferCreated' GHC.Types.Int -> -- | 'transferCurrency' Data.Text.Internal.Text -> -- | 'transferId' Data.Text.Internal.Text -> -- | 'transferLivemode' GHC.Types.Bool -> -- | 'transferMetadata' Data.Aeson.Types.Internal.Object -> -- | 'transferReversals' TransferReversals' -> -- | 'transferReversed' GHC.Types.Bool -> Transfer mkTransfer transferAmount transferAmountReversed transferCreated transferCurrency transferId transferLivemode transferMetadata transferReversals transferReversed = Transfer { transferAmount = transferAmount, transferAmountReversed = transferAmountReversed, transferBalanceTransaction = GHC.Maybe.Nothing, transferCreated = transferCreated, transferCurrency = transferCurrency, transferDescription = GHC.Maybe.Nothing, transferDestination = GHC.Maybe.Nothing, transferDestinationPayment = GHC.Maybe.Nothing, transferId = transferId, transferLivemode = transferLivemode, transferMetadata = transferMetadata, transferReversals = transferReversals, transferReversed = transferReversed, transferSourceTransaction = GHC.Maybe.Nothing, transferSourceType = GHC.Maybe.Nothing, transferTransferGroup = GHC.Maybe.Nothing } -- | Defines the oneOf schema located at @components.schemas.transfer.properties.balance_transaction.anyOf@ in the specification. -- -- Balance transaction that describes the impact of this transfer on your account balance. data TransferBalanceTransaction'Variants = TransferBalanceTransaction'Text Data.Text.Internal.Text | TransferBalanceTransaction'BalanceTransaction BalanceTransaction deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON TransferBalanceTransaction'Variants where toJSON (TransferBalanceTransaction'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (TransferBalanceTransaction'BalanceTransaction a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON TransferBalanceTransaction'Variants where parseJSON val = case (TransferBalanceTransaction'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((TransferBalanceTransaction'BalanceTransaction Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a -- | Defines the oneOf schema located at @components.schemas.transfer.properties.destination.anyOf@ in the specification. -- -- ID of the Stripe account the transfer was sent to. data TransferDestination'Variants = TransferDestination'Text Data.Text.Internal.Text | TransferDestination'Account Account deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON TransferDestination'Variants where toJSON (TransferDestination'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (TransferDestination'Account a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON TransferDestination'Variants where parseJSON val = case (TransferDestination'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((TransferDestination'Account Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a -- | Defines the oneOf schema located at @components.schemas.transfer.properties.destination_payment.anyOf@ in the specification. -- -- If the destination is a Stripe account, this will be the ID of the payment that the destination account received for the transfer. data TransferDestinationPayment'Variants = TransferDestinationPayment'Text Data.Text.Internal.Text | TransferDestinationPayment'Charge Charge deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON TransferDestinationPayment'Variants where toJSON (TransferDestinationPayment'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (TransferDestinationPayment'Charge a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON TransferDestinationPayment'Variants where parseJSON val = case (TransferDestinationPayment'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((TransferDestinationPayment'Charge Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a -- | Defines the object schema located at @components.schemas.transfer.properties.reversals@ in the specification. -- -- A list of reversals that have been applied to the transfer. data TransferReversals' = TransferReversals' { -- | data: Details about each object. transferReversals'Data :: ([TransferReversal]), -- | has_more: True if this list has another page of items after this one that can be fetched. transferReversals'HasMore :: GHC.Types.Bool, -- | url: The URL where this list can be accessed. -- -- Constraints: -- -- * Maximum length of 5000 transferReversals'Url :: Data.Text.Internal.Text } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON TransferReversals' where toJSON obj = Data.Aeson.Types.Internal.object ("data" Data.Aeson.Types.ToJSON..= transferReversals'Data obj : "has_more" Data.Aeson.Types.ToJSON..= transferReversals'HasMore obj : "url" Data.Aeson.Types.ToJSON..= transferReversals'Url obj : "object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "list" : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("data" Data.Aeson.Types.ToJSON..= transferReversals'Data obj) GHC.Base.<> (("has_more" Data.Aeson.Types.ToJSON..= transferReversals'HasMore obj) GHC.Base.<> (("url" Data.Aeson.Types.ToJSON..= transferReversals'Url obj) GHC.Base.<> ("object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "list")))) instance Data.Aeson.Types.FromJSON.FromJSON TransferReversals' where parseJSON = Data.Aeson.Types.FromJSON.withObject "TransferReversals'" (\obj -> ((GHC.Base.pure TransferReversals' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "has_more")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "url")) -- | Create a new 'TransferReversals'' with all required fields. mkTransferReversals' :: -- | 'transferReversals'Data' [TransferReversal] -> -- | 'transferReversals'HasMore' GHC.Types.Bool -> -- | 'transferReversals'Url' Data.Text.Internal.Text -> TransferReversals' mkTransferReversals' transferReversals'Data transferReversals'HasMore transferReversals'Url = TransferReversals' { transferReversals'Data = transferReversals'Data, transferReversals'HasMore = transferReversals'HasMore, transferReversals'Url = transferReversals'Url } -- | Defines the oneOf schema located at @components.schemas.transfer.properties.source_transaction.anyOf@ in the specification. -- -- ID of the charge or payment that was used to fund the transfer. If null, the transfer was funded from the available balance. data TransferSourceTransaction'Variants = TransferSourceTransaction'Text Data.Text.Internal.Text | TransferSourceTransaction'Charge Charge deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON TransferSourceTransaction'Variants where toJSON (TransferSourceTransaction'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (TransferSourceTransaction'Charge a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON TransferSourceTransaction'Variants where parseJSON val = case (TransferSourceTransaction'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((TransferSourceTransaction'Charge Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched") of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a