{-# 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 CreditPayment
module RecurlyClient.Types.CreditPayment 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
import qualified Data.ByteString as Data.ByteString.Internal
import qualified Data.Foldable
import qualified Data.Functor
import qualified Data.Maybe
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text as 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 RecurlyClient.Common
import RecurlyClient.TypeAlias
import {-# SOURCE #-} RecurlyClient.Types.AccountMini
import {-# SOURCE #-} RecurlyClient.Types.InvoiceMini
import {-# SOURCE #-} RecurlyClient.Types.Transaction
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.CreditPayment@ in the specification.
data CreditPayment = CreditPayment
    { CreditPayment -> Maybe AccountMini
creditPaymentAccount :: (GHC.Maybe.Maybe AccountMini)
    -- ^ account
    , CreditPayment -> Maybe CreditPaymentAction
creditPaymentAction :: (GHC.Maybe.Maybe CreditPaymentAction)
    -- ^ action: The action for which the credit was created.
    , CreditPayment -> Maybe Float
creditPaymentAmount :: (GHC.Maybe.Maybe GHC.Types.Float)
    -- ^ amount: Total credit payment amount applied to the charge invoice.
    , CreditPayment -> Maybe InvoiceMini
creditPaymentApplied_to_invoice :: (GHC.Maybe.Maybe InvoiceMini)
    -- ^ applied_to_invoice
    , CreditPayment -> Maybe JsonDateTime
creditPaymentCreated_at :: (GHC.Maybe.Maybe RecurlyClient.Common.JsonDateTime)
    -- ^ created_at
    , CreditPayment -> Maybe Text
creditPaymentCurrency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ currency: 3-letter ISO 4217 currency code.
    --
    -- Constraints:
    --
    -- * Maximum length of 3
    , CreditPayment -> Maybe Text
creditPaymentId :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ id
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , CreditPayment -> Maybe Text
creditPaymentObject :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ object
    , CreditPayment -> Maybe Text
creditPaymentOriginal_credit_payment_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ original_credit_payment_id: For credit payments with action \`refund\`, this is the credit payment that was refunded.
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , CreditPayment -> Maybe InvoiceMini
creditPaymentOriginal_invoice :: (GHC.Maybe.Maybe InvoiceMini)
    -- ^ original_invoice
    , CreditPayment -> Maybe Transaction
creditPaymentRefund_transaction :: (GHC.Maybe.Maybe Transaction)
    -- ^ refund_transaction
    , CreditPayment -> Maybe JsonDateTime
creditPaymentUpdated_at :: (GHC.Maybe.Maybe RecurlyClient.Common.JsonDateTime)
    -- ^ updated_at
    , CreditPayment -> Maybe Text
creditPaymentUuid :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ uuid: The UUID is useful for matching data with the CSV exports and building URLs into Recurly\'s UI.
    --
    -- Constraints:
    --
    -- * Maximum length of 32
    , CreditPayment -> Maybe JsonDateTime
creditPaymentVoided_at :: (GHC.Maybe.Maybe RecurlyClient.Common.JsonDateTime)
    -- ^ voided_at
    }
    deriving
        ( Int -> CreditPayment -> ShowS
[CreditPayment] -> ShowS
CreditPayment -> String
(Int -> CreditPayment -> ShowS)
-> (CreditPayment -> String)
-> ([CreditPayment] -> ShowS)
-> Show CreditPayment
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CreditPayment -> ShowS
showsPrec :: Int -> CreditPayment -> ShowS
$cshow :: CreditPayment -> String
show :: CreditPayment -> String
$cshowList :: [CreditPayment] -> ShowS
showList :: [CreditPayment] -> ShowS
GHC.Show.Show
        , CreditPayment -> CreditPayment -> Bool
(CreditPayment -> CreditPayment -> Bool)
-> (CreditPayment -> CreditPayment -> Bool) -> Eq CreditPayment
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CreditPayment -> CreditPayment -> Bool
== :: CreditPayment -> CreditPayment -> Bool
$c/= :: CreditPayment -> CreditPayment -> Bool
/= :: CreditPayment -> CreditPayment -> Bool
GHC.Classes.Eq
        )

instance Data.Aeson.Types.ToJSON.ToJSON CreditPayment where
    toJSON :: CreditPayment -> Value
toJSON CreditPayment
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object ([[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Pair] -> (AccountMini -> [Pair]) -> Maybe AccountMini -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (AccountMini -> Pair) -> AccountMini -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"account" Key -> AccountMini -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe AccountMini
creditPaymentAccount CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (CreditPaymentAction -> [Pair])
-> Maybe CreditPaymentAction
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (CreditPaymentAction -> Pair) -> CreditPaymentAction -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"action" Key -> CreditPaymentAction -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe CreditPaymentAction
creditPaymentAction CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Float -> [Pair]) -> Maybe Float -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Float -> Pair) -> Float -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"amount" Key -> Float -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Float
creditPaymentAmount CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (InvoiceMini -> [Pair]) -> Maybe InvoiceMini -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (InvoiceMini -> Pair) -> InvoiceMini -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"applied_to_invoice" Key -> InvoiceMini -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe InvoiceMini
creditPaymentApplied_to_invoice CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (JsonDateTime -> [Pair]) -> Maybe JsonDateTime -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (JsonDateTime -> Pair) -> JsonDateTime -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"created_at" Key -> JsonDateTime -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentCreated_at CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"currency" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentCurrency CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentId CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"object" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentObject CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"original_credit_payment_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentOriginal_credit_payment_id CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (InvoiceMini -> [Pair]) -> Maybe InvoiceMini -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (InvoiceMini -> Pair) -> InvoiceMini -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"original_invoice" Key -> InvoiceMini -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe InvoiceMini
creditPaymentOriginal_invoice CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Transaction -> [Pair]) -> Maybe Transaction -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Transaction -> Pair) -> Transaction -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"refund_transaction" Key -> Transaction -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Transaction
creditPaymentRefund_transaction CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (JsonDateTime -> [Pair]) -> Maybe JsonDateTime -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (JsonDateTime -> Pair) -> JsonDateTime -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"updated_at" Key -> JsonDateTime -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentUpdated_at CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"uuid" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentUuid CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (JsonDateTime -> [Pair]) -> Maybe JsonDateTime -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (JsonDateTime -> Pair) -> JsonDateTime -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"voided_at" Key -> JsonDateTime -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentVoided_at CreditPayment
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [[Pair]]
forall a. Monoid a => a
GHC.Base.mempty))
    toEncoding :: CreditPayment -> Encoding
toEncoding CreditPayment
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ([Series] -> Series
forall a. Monoid a => [a] -> a
GHC.Base.mconcat ([[Series]] -> [Series]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Series]
-> (AccountMini -> [Series]) -> Maybe AccountMini -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AccountMini -> Series) -> AccountMini -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"account" Key -> AccountMini -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe AccountMini
creditPaymentAccount CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (CreditPaymentAction -> [Series])
-> Maybe CreditPaymentAction
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (CreditPaymentAction -> Series)
-> CreditPaymentAction
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"action" Key -> CreditPaymentAction -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe CreditPaymentAction
creditPaymentAction CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Float -> [Series]) -> Maybe Float -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Float -> Series) -> Float -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"amount" Key -> Float -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Float
creditPaymentAmount CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (InvoiceMini -> [Series]) -> Maybe InvoiceMini -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (InvoiceMini -> Series) -> InvoiceMini -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"applied_to_invoice" Key -> InvoiceMini -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe InvoiceMini
creditPaymentApplied_to_invoice CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (JsonDateTime -> [Series]) -> Maybe JsonDateTime -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (JsonDateTime -> Series) -> JsonDateTime -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"created_at" Key -> JsonDateTime -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentCreated_at CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"currency" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentCurrency CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentId CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"object" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentObject CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"original_credit_payment_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentOriginal_credit_payment_id CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (InvoiceMini -> [Series]) -> Maybe InvoiceMini -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (InvoiceMini -> Series) -> InvoiceMini -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"original_invoice" Key -> InvoiceMini -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe InvoiceMini
creditPaymentOriginal_invoice CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (Transaction -> [Series]) -> Maybe Transaction -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (Transaction -> Series) -> Transaction -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"refund_transaction" Key -> Transaction -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Transaction
creditPaymentRefund_transaction CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (JsonDateTime -> [Series]) -> Maybe JsonDateTime -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (JsonDateTime -> Series) -> JsonDateTime -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"updated_at" Key -> JsonDateTime -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentUpdated_at CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"uuid" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe Text
creditPaymentUuid CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (JsonDateTime -> [Series]) -> Maybe JsonDateTime -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (JsonDateTime -> Series) -> JsonDateTime -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"voided_at" Key -> JsonDateTime -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (CreditPayment -> Maybe JsonDateTime
creditPaymentVoided_at CreditPayment
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [[Series]]
forall a. Monoid a => a
GHC.Base.mempty)))
instance Data.Aeson.Types.FromJSON.FromJSON CreditPayment where
    parseJSON :: Value -> Parser CreditPayment
parseJSON = String
-> (Object -> Parser CreditPayment)
-> Value
-> Parser CreditPayment
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"CreditPayment" (\Object
obj -> ((((((((((((((Maybe AccountMini
 -> Maybe CreditPaymentAction
 -> Maybe Float
 -> Maybe InvoiceMini
 -> Maybe JsonDateTime
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe InvoiceMini
 -> Maybe Transaction
 -> Maybe JsonDateTime
 -> Maybe Text
 -> Maybe JsonDateTime
 -> CreditPayment)
-> Parser
     (Maybe AccountMini
      -> Maybe CreditPaymentAction
      -> Maybe Float
      -> Maybe InvoiceMini
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe AccountMini
-> Maybe CreditPaymentAction
-> Maybe Float
-> Maybe InvoiceMini
-> Maybe JsonDateTime
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe InvoiceMini
-> Maybe Transaction
-> Maybe JsonDateTime
-> Maybe Text
-> Maybe JsonDateTime
-> CreditPayment
CreditPayment Parser
  (Maybe AccountMini
   -> Maybe CreditPaymentAction
   -> Maybe Float
   -> Maybe InvoiceMini
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe AccountMini)
-> Parser
     (Maybe CreditPaymentAction
      -> Maybe Float
      -> Maybe InvoiceMini
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AccountMini)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"account")) Parser
  (Maybe CreditPaymentAction
   -> Maybe Float
   -> Maybe InvoiceMini
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe CreditPaymentAction)
-> Parser
     (Maybe Float
      -> Maybe InvoiceMini
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe CreditPaymentAction)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"action")) Parser
  (Maybe Float
   -> Maybe InvoiceMini
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Float)
-> Parser
     (Maybe InvoiceMini
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Float)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"amount")) Parser
  (Maybe InvoiceMini
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe InvoiceMini)
-> Parser
     (Maybe JsonDateTime
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe InvoiceMini)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"applied_to_invoice")) Parser
  (Maybe JsonDateTime
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe JsonDateTime)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe JsonDateTime)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"created_at")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"currency")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"object")) Parser
  (Maybe Text
   -> Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Text)
-> Parser
     (Maybe InvoiceMini
      -> Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"original_credit_payment_id")) Parser
  (Maybe InvoiceMini
   -> Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe InvoiceMini)
-> Parser
     (Maybe Transaction
      -> Maybe JsonDateTime
      -> Maybe Text
      -> Maybe JsonDateTime
      -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe InvoiceMini)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"original_invoice")) Parser
  (Maybe Transaction
   -> Maybe JsonDateTime
   -> Maybe Text
   -> Maybe JsonDateTime
   -> CreditPayment)
-> Parser (Maybe Transaction)
-> Parser
     (Maybe JsonDateTime
      -> Maybe Text -> Maybe JsonDateTime -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Transaction)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"refund_transaction")) Parser
  (Maybe JsonDateTime
   -> Maybe Text -> Maybe JsonDateTime -> CreditPayment)
-> Parser (Maybe JsonDateTime)
-> Parser (Maybe Text -> Maybe JsonDateTime -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe JsonDateTime)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"updated_at")) Parser (Maybe Text -> Maybe JsonDateTime -> CreditPayment)
-> Parser (Maybe Text)
-> Parser (Maybe JsonDateTime -> CreditPayment)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"uuid")) Parser (Maybe JsonDateTime -> CreditPayment)
-> Parser (Maybe JsonDateTime) -> Parser CreditPayment
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe JsonDateTime)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"voided_at"))

-- | Create a new 'CreditPayment' with all required fields.
mkCreditPayment :: CreditPayment
mkCreditPayment :: CreditPayment
mkCreditPayment =
    CreditPayment
        { creditPaymentAccount :: Maybe AccountMini
creditPaymentAccount = Maybe AccountMini
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentAction :: Maybe CreditPaymentAction
creditPaymentAction = Maybe CreditPaymentAction
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentAmount :: Maybe Float
creditPaymentAmount = Maybe Float
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentApplied_to_invoice :: Maybe InvoiceMini
creditPaymentApplied_to_invoice = Maybe InvoiceMini
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentCreated_at :: Maybe JsonDateTime
creditPaymentCreated_at = Maybe JsonDateTime
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentCurrency :: Maybe Text
creditPaymentCurrency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentId :: Maybe Text
creditPaymentId = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentObject :: Maybe Text
creditPaymentObject = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentOriginal_credit_payment_id :: Maybe Text
creditPaymentOriginal_credit_payment_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentOriginal_invoice :: Maybe InvoiceMini
creditPaymentOriginal_invoice = Maybe InvoiceMini
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentRefund_transaction :: Maybe Transaction
creditPaymentRefund_transaction = Maybe Transaction
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentUpdated_at :: Maybe JsonDateTime
creditPaymentUpdated_at = Maybe JsonDateTime
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentUuid :: Maybe Text
creditPaymentUuid = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , creditPaymentVoided_at :: Maybe JsonDateTime
creditPaymentVoided_at = Maybe JsonDateTime
forall a. Maybe a
GHC.Maybe.Nothing
        }

{- | Defines the enum schema located at @components.schemas.CreditPayment.properties.action@ in the specification.

The action for which the credit was created.
-}
data CreditPaymentAction
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      CreditPaymentActionOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      CreditPaymentActionTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"payment"@
      CreditPaymentActionEnumPayment
    | -- | Represents the JSON value @"reduction"@
      CreditPaymentActionEnumReduction
    | -- | Represents the JSON value @"refund"@
      CreditPaymentActionEnumRefund
    | -- | Represents the JSON value @"write_off"@
      CreditPaymentActionEnumWrite_off
    deriving (Int -> CreditPaymentAction -> ShowS
[CreditPaymentAction] -> ShowS
CreditPaymentAction -> String
(Int -> CreditPaymentAction -> ShowS)
-> (CreditPaymentAction -> String)
-> ([CreditPaymentAction] -> ShowS)
-> Show CreditPaymentAction
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CreditPaymentAction -> ShowS
showsPrec :: Int -> CreditPaymentAction -> ShowS
$cshow :: CreditPaymentAction -> String
show :: CreditPaymentAction -> String
$cshowList :: [CreditPaymentAction] -> ShowS
showList :: [CreditPaymentAction] -> ShowS
GHC.Show.Show, CreditPaymentAction -> CreditPaymentAction -> Bool
(CreditPaymentAction -> CreditPaymentAction -> Bool)
-> (CreditPaymentAction -> CreditPaymentAction -> Bool)
-> Eq CreditPaymentAction
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CreditPaymentAction -> CreditPaymentAction -> Bool
== :: CreditPaymentAction -> CreditPaymentAction -> Bool
$c/= :: CreditPaymentAction -> CreditPaymentAction -> Bool
/= :: CreditPaymentAction -> CreditPaymentAction -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON CreditPaymentAction where
    toJSON :: CreditPaymentAction -> Value
toJSON (CreditPaymentActionOther Value
val) = Value
val
    toJSON (CreditPaymentActionTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (CreditPaymentAction
CreditPaymentActionEnumPayment) = Value
"payment"
    toJSON (CreditPaymentAction
CreditPaymentActionEnumReduction) = Value
"reduction"
    toJSON (CreditPaymentAction
CreditPaymentActionEnumRefund) = Value
"refund"
    toJSON (CreditPaymentAction
CreditPaymentActionEnumWrite_off) = Value
"write_off"
instance Data.Aeson.Types.FromJSON.FromJSON CreditPaymentAction where
    parseJSON :: Value -> Parser CreditPaymentAction
parseJSON Value
val =
        CreditPaymentAction -> Parser CreditPaymentAction
forall a. a -> Parser a
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
"payment" -> CreditPaymentAction
CreditPaymentActionEnumPayment
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"reduction" -> CreditPaymentAction
CreditPaymentActionEnumReduction
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"refund" -> CreditPaymentAction
CreditPaymentActionEnumRefund
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"write_off" -> CreditPaymentAction
CreditPaymentActionEnumWrite_off
                | Bool
GHC.Base.otherwise -> Value -> CreditPaymentAction
CreditPaymentActionOther Value
val
            )