{-# 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_Dispute
module StripeAPI.Types.Issuing_Dispute 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.IssuingDisputeEvidence
import {-# SOURCE #-} StripeAPI.Types.Issuing_Transaction
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing.dispute@ in the specification.
--
-- As a [card issuer](https:\/\/stripe.com\/docs\/issuing), you can dispute transactions that the cardholder does not recognize, suspects to be fraudulent, or has other issues with.
--
-- Related guide: [Disputing Transactions](https:\/\/stripe.com\/docs\/issuing\/purchases\/disputes)
data Issuing'dispute = Issuing'dispute
  { -- | amount: Disputed amount. Usually the amount of the \`transaction\`, but can differ (usually because of currency fluctuation).
    Issuing'dispute -> Int
issuing'disputeAmount :: GHC.Types.Int,
    -- | balance_transactions: List of balance transactions associated with the dispute.
    Issuing'dispute -> Maybe [BalanceTransaction]
issuing'disputeBalanceTransactions :: (GHC.Maybe.Maybe ([BalanceTransaction])),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Issuing'dispute -> Int
issuing'disputeCreated :: GHC.Types.Int,
    -- | currency: The currency the \`transaction\` was made in.
    Issuing'dispute -> Text
issuing'disputeCurrency :: Data.Text.Internal.Text,
    -- | evidence:
    Issuing'dispute -> IssuingDisputeEvidence
issuing'disputeEvidence :: IssuingDisputeEvidence,
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Issuing'dispute -> Text
issuing'disputeId :: 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'dispute -> Bool
issuing'disputeLivemode :: 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.
    Issuing'dispute -> Object
issuing'disputeMetadata :: Data.Aeson.Types.Internal.Object,
    -- | status: Current status of the dispute.
    Issuing'dispute -> Issuing'disputeStatus'
issuing'disputeStatus :: Issuing'disputeStatus',
    -- | transaction: The transaction being disputed.
    Issuing'dispute -> Issuing'disputeTransaction'Variants
issuing'disputeTransaction :: Issuing'disputeTransaction'Variants
  }
  deriving
    ( Int -> Issuing'dispute -> ShowS
[Issuing'dispute] -> ShowS
Issuing'dispute -> String
(Int -> Issuing'dispute -> ShowS)
-> (Issuing'dispute -> String)
-> ([Issuing'dispute] -> ShowS)
-> Show Issuing'dispute
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'dispute] -> ShowS
$cshowList :: [Issuing'dispute] -> ShowS
show :: Issuing'dispute -> String
$cshow :: Issuing'dispute -> String
showsPrec :: Int -> Issuing'dispute -> ShowS
$cshowsPrec :: Int -> Issuing'dispute -> ShowS
GHC.Show.Show,
      Issuing'dispute -> Issuing'dispute -> Bool
(Issuing'dispute -> Issuing'dispute -> Bool)
-> (Issuing'dispute -> Issuing'dispute -> Bool)
-> Eq Issuing'dispute
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'dispute -> Issuing'dispute -> Bool
$c/= :: Issuing'dispute -> Issuing'dispute -> Bool
== :: Issuing'dispute -> Issuing'dispute -> Bool
$c== :: Issuing'dispute -> Issuing'dispute -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'dispute where
  toJSON :: Issuing'dispute -> Value
toJSON Issuing'dispute
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'dispute -> Int
issuing'disputeAmount Issuing'dispute
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"balance_transactions" Text -> Maybe [BalanceTransaction] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Maybe [BalanceTransaction]
issuing'disputeBalanceTransactions Issuing'dispute
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'dispute -> Int
issuing'disputeCreated Issuing'dispute
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'dispute -> Text
issuing'disputeCurrency Issuing'dispute
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"evidence" Text -> IssuingDisputeEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> IssuingDisputeEvidence
issuing'disputeEvidence Issuing'dispute
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'dispute -> Text
issuing'disputeId Issuing'dispute
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'dispute -> Bool
issuing'disputeLivemode Issuing'dispute
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'dispute -> Object
issuing'disputeMetadata Issuing'dispute
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Issuing'disputeStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Issuing'disputeStatus'
issuing'disputeStatus Issuing'dispute
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"transaction" Text -> Issuing'disputeTransaction'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Issuing'disputeTransaction'Variants
issuing'disputeTransaction Issuing'dispute
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.dispute" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Issuing'dispute -> Encoding
toEncoding Issuing'dispute
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'dispute -> Int
issuing'disputeAmount Issuing'dispute
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"balance_transactions" Text -> Maybe [BalanceTransaction] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Maybe [BalanceTransaction]
issuing'disputeBalanceTransactions Issuing'dispute
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'dispute -> Int
issuing'disputeCreated Issuing'dispute
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'dispute -> Text
issuing'disputeCurrency Issuing'dispute
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"evidence" Text -> IssuingDisputeEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> IssuingDisputeEvidence
issuing'disputeEvidence Issuing'dispute
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'dispute -> Text
issuing'disputeId Issuing'dispute
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'dispute -> Bool
issuing'disputeLivemode Issuing'dispute
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'dispute -> Object
issuing'disputeMetadata Issuing'dispute
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Issuing'disputeStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Issuing'disputeStatus'
issuing'disputeStatus Issuing'dispute
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"transaction" Text -> Issuing'disputeTransaction'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Issuing'dispute -> Issuing'disputeTransaction'Variants
issuing'disputeTransaction Issuing'dispute
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.dispute")))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'dispute where
  parseJSON :: Value -> Parser Issuing'dispute
parseJSON = String
-> (Object -> Parser Issuing'dispute)
-> Value
-> Parser Issuing'dispute
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Issuing'dispute" (\Object
obj -> ((((((((((Int
 -> Maybe [BalanceTransaction]
 -> Int
 -> Text
 -> IssuingDisputeEvidence
 -> Text
 -> Bool
 -> Object
 -> Issuing'disputeStatus'
 -> Issuing'disputeTransaction'Variants
 -> Issuing'dispute)
-> Parser
     (Int
      -> Maybe [BalanceTransaction]
      -> Int
      -> Text
      -> IssuingDisputeEvidence
      -> Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int
-> Maybe [BalanceTransaction]
-> Int
-> Text
-> IssuingDisputeEvidence
-> Text
-> Bool
-> Object
-> Issuing'disputeStatus'
-> Issuing'disputeTransaction'Variants
-> Issuing'dispute
Issuing'dispute Parser
  (Int
   -> Maybe [BalanceTransaction]
   -> Int
   -> Text
   -> IssuingDisputeEvidence
   -> Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Int
-> Parser
     (Maybe [BalanceTransaction]
      -> Int
      -> Text
      -> IssuingDisputeEvidence
      -> Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
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 [BalanceTransaction]
   -> Int
   -> Text
   -> IssuingDisputeEvidence
   -> Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser (Maybe [BalanceTransaction])
-> Parser
     (Int
      -> Text
      -> IssuingDisputeEvidence
      -> Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [BalanceTransaction])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"balance_transactions")) Parser
  (Int
   -> Text
   -> IssuingDisputeEvidence
   -> Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Int
-> Parser
     (Text
      -> IssuingDisputeEvidence
      -> Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
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
   -> IssuingDisputeEvidence
   -> Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Text
-> Parser
     (IssuingDisputeEvidence
      -> Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
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
  (IssuingDisputeEvidence
   -> Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser IssuingDisputeEvidence
-> Parser
     (Text
      -> Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingDisputeEvidence
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"evidence")) Parser
  (Text
   -> Bool
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Text
-> Parser
     (Bool
      -> Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
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
   -> Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Bool
-> Parser
     (Object
      -> Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants
      -> Issuing'dispute)
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
  (Object
   -> Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants
   -> Issuing'dispute)
-> Parser Object
-> Parser
     (Issuing'disputeStatus'
      -> Issuing'disputeTransaction'Variants -> Issuing'dispute)
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
  (Issuing'disputeStatus'
   -> Issuing'disputeTransaction'Variants -> Issuing'dispute)
-> Parser Issuing'disputeStatus'
-> Parser (Issuing'disputeTransaction'Variants -> Issuing'dispute)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'disputeStatus'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"status")) Parser (Issuing'disputeTransaction'Variants -> Issuing'dispute)
-> Parser Issuing'disputeTransaction'Variants
-> Parser Issuing'dispute
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Issuing'disputeTransaction'Variants
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"transaction"))

-- | Create a new 'Issuing'dispute' with all required fields.
mkIssuing'dispute ::
  -- | 'issuing'disputeAmount'
  GHC.Types.Int ->
  -- | 'issuing'disputeCreated'
  GHC.Types.Int ->
  -- | 'issuing'disputeCurrency'
  Data.Text.Internal.Text ->
  -- | 'issuing'disputeEvidence'
  IssuingDisputeEvidence ->
  -- | 'issuing'disputeId'
  Data.Text.Internal.Text ->
  -- | 'issuing'disputeLivemode'
  GHC.Types.Bool ->
  -- | 'issuing'disputeMetadata'
  Data.Aeson.Types.Internal.Object ->
  -- | 'issuing'disputeStatus'
  Issuing'disputeStatus' ->
  -- | 'issuing'disputeTransaction'
  Issuing'disputeTransaction'Variants ->
  Issuing'dispute
mkIssuing'dispute :: Int
-> Int
-> Text
-> IssuingDisputeEvidence
-> Text
-> Bool
-> Object
-> Issuing'disputeStatus'
-> Issuing'disputeTransaction'Variants
-> Issuing'dispute
mkIssuing'dispute Int
issuing'disputeAmount Int
issuing'disputeCreated Text
issuing'disputeCurrency IssuingDisputeEvidence
issuing'disputeEvidence Text
issuing'disputeId Bool
issuing'disputeLivemode Object
issuing'disputeMetadata Issuing'disputeStatus'
issuing'disputeStatus Issuing'disputeTransaction'Variants
issuing'disputeTransaction =
  Issuing'dispute :: Int
-> Maybe [BalanceTransaction]
-> Int
-> Text
-> IssuingDisputeEvidence
-> Text
-> Bool
-> Object
-> Issuing'disputeStatus'
-> Issuing'disputeTransaction'Variants
-> Issuing'dispute
Issuing'dispute
    { issuing'disputeAmount :: Int
issuing'disputeAmount = Int
issuing'disputeAmount,
      issuing'disputeBalanceTransactions :: Maybe [BalanceTransaction]
issuing'disputeBalanceTransactions = Maybe [BalanceTransaction]
forall a. Maybe a
GHC.Maybe.Nothing,
      issuing'disputeCreated :: Int
issuing'disputeCreated = Int
issuing'disputeCreated,
      issuing'disputeCurrency :: Text
issuing'disputeCurrency = Text
issuing'disputeCurrency,
      issuing'disputeEvidence :: IssuingDisputeEvidence
issuing'disputeEvidence = IssuingDisputeEvidence
issuing'disputeEvidence,
      issuing'disputeId :: Text
issuing'disputeId = Text
issuing'disputeId,
      issuing'disputeLivemode :: Bool
issuing'disputeLivemode = Bool
issuing'disputeLivemode,
      issuing'disputeMetadata :: Object
issuing'disputeMetadata = Object
issuing'disputeMetadata,
      issuing'disputeStatus :: Issuing'disputeStatus'
issuing'disputeStatus = Issuing'disputeStatus'
issuing'disputeStatus,
      issuing'disputeTransaction :: Issuing'disputeTransaction'Variants
issuing'disputeTransaction = Issuing'disputeTransaction'Variants
issuing'disputeTransaction
    }

-- | Defines the enum schema located at @components.schemas.issuing.dispute.properties.status@ in the specification.
--
-- Current status of the dispute.
data Issuing'disputeStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    Issuing'disputeStatus'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'disputeStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"expired"@
    Issuing'disputeStatus'EnumExpired
  | -- | Represents the JSON value @"lost"@
    Issuing'disputeStatus'EnumLost
  | -- | Represents the JSON value @"submitted"@
    Issuing'disputeStatus'EnumSubmitted
  | -- | Represents the JSON value @"unsubmitted"@
    Issuing'disputeStatus'EnumUnsubmitted
  | -- | Represents the JSON value @"won"@
    Issuing'disputeStatus'EnumWon
  deriving (Int -> Issuing'disputeStatus' -> ShowS
[Issuing'disputeStatus'] -> ShowS
Issuing'disputeStatus' -> String
(Int -> Issuing'disputeStatus' -> ShowS)
-> (Issuing'disputeStatus' -> String)
-> ([Issuing'disputeStatus'] -> ShowS)
-> Show Issuing'disputeStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Issuing'disputeStatus'] -> ShowS
$cshowList :: [Issuing'disputeStatus'] -> ShowS
show :: Issuing'disputeStatus' -> String
$cshow :: Issuing'disputeStatus' -> String
showsPrec :: Int -> Issuing'disputeStatus' -> ShowS
$cshowsPrec :: Int -> Issuing'disputeStatus' -> ShowS
GHC.Show.Show, Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool
(Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool)
-> (Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool)
-> Eq Issuing'disputeStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool
$c/= :: Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool
== :: Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool
$c== :: Issuing'disputeStatus' -> Issuing'disputeStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON Issuing'disputeStatus' where
  toJSON :: Issuing'disputeStatus' -> Value
toJSON (Issuing'disputeStatus'Other Value
val) = Value
val
  toJSON (Issuing'disputeStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (Issuing'disputeStatus'
Issuing'disputeStatus'EnumExpired) = Value
"expired"
  toJSON (Issuing'disputeStatus'
Issuing'disputeStatus'EnumLost) = Value
"lost"
  toJSON (Issuing'disputeStatus'
Issuing'disputeStatus'EnumSubmitted) = Value
"submitted"
  toJSON (Issuing'disputeStatus'
Issuing'disputeStatus'EnumUnsubmitted) = Value
"unsubmitted"
  toJSON (Issuing'disputeStatus'
Issuing'disputeStatus'EnumWon) = Value
"won"

instance Data.Aeson.Types.FromJSON.FromJSON Issuing'disputeStatus' where
  parseJSON :: Value -> Parser Issuing'disputeStatus'
parseJSON Value
val =
    Issuing'disputeStatus' -> Parser Issuing'disputeStatus'
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
"expired" -> Issuing'disputeStatus'
Issuing'disputeStatus'EnumExpired
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"lost" -> Issuing'disputeStatus'
Issuing'disputeStatus'EnumLost
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"submitted" -> Issuing'disputeStatus'
Issuing'disputeStatus'EnumSubmitted
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unsubmitted" -> Issuing'disputeStatus'
Issuing'disputeStatus'EnumUnsubmitted
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"won" -> Issuing'disputeStatus'
Issuing'disputeStatus'EnumWon
            | Bool
GHC.Base.otherwise -> Value -> Issuing'disputeStatus'
Issuing'disputeStatus'Other Value
val
      )

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

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

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