{-# 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 IssuingDisputeEvidence
module StripeAPI.Types.IssuingDisputeEvidence 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.IssuingDisputeCanceledEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeDuplicateEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeFraudulentEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeMerchandiseNotAsDescribedEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeNotReceivedEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeOtherEvidence
import {-# SOURCE #-} StripeAPI.Types.IssuingDisputeServiceNotAsDescribedEvidence
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing_dispute_evidence@ in the specification.
data IssuingDisputeEvidence = IssuingDisputeEvidence
  { -- | canceled:
    IssuingDisputeEvidence -> Maybe IssuingDisputeCanceledEvidence
issuingDisputeEvidenceCanceled :: (GHC.Maybe.Maybe IssuingDisputeCanceledEvidence),
    -- | duplicate:
    IssuingDisputeEvidence -> Maybe IssuingDisputeDuplicateEvidence
issuingDisputeEvidenceDuplicate :: (GHC.Maybe.Maybe IssuingDisputeDuplicateEvidence),
    -- | fraudulent:
    IssuingDisputeEvidence -> Maybe IssuingDisputeFraudulentEvidence
issuingDisputeEvidenceFraudulent :: (GHC.Maybe.Maybe IssuingDisputeFraudulentEvidence),
    -- | merchandise_not_as_described:
    IssuingDisputeEvidence
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
issuingDisputeEvidenceMerchandiseNotAsDescribed :: (GHC.Maybe.Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence),
    -- | not_received:
    IssuingDisputeEvidence -> Maybe IssuingDisputeNotReceivedEvidence
issuingDisputeEvidenceNotReceived :: (GHC.Maybe.Maybe IssuingDisputeNotReceivedEvidence),
    -- | other:
    IssuingDisputeEvidence -> Maybe IssuingDisputeOtherEvidence
issuingDisputeEvidenceOther :: (GHC.Maybe.Maybe IssuingDisputeOtherEvidence),
    -- | reason: The reason for filing the dispute. Its value will match the field containing the evidence.
    IssuingDisputeEvidence -> IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason :: IssuingDisputeEvidenceReason',
    -- | service_not_as_described:
    IssuingDisputeEvidence
-> Maybe IssuingDisputeServiceNotAsDescribedEvidence
issuingDisputeEvidenceServiceNotAsDescribed :: (GHC.Maybe.Maybe IssuingDisputeServiceNotAsDescribedEvidence)
  }
  deriving
    ( Int -> IssuingDisputeEvidence -> ShowS
[IssuingDisputeEvidence] -> ShowS
IssuingDisputeEvidence -> String
(Int -> IssuingDisputeEvidence -> ShowS)
-> (IssuingDisputeEvidence -> String)
-> ([IssuingDisputeEvidence] -> ShowS)
-> Show IssuingDisputeEvidence
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingDisputeEvidence] -> ShowS
$cshowList :: [IssuingDisputeEvidence] -> ShowS
show :: IssuingDisputeEvidence -> String
$cshow :: IssuingDisputeEvidence -> String
showsPrec :: Int -> IssuingDisputeEvidence -> ShowS
$cshowsPrec :: Int -> IssuingDisputeEvidence -> ShowS
GHC.Show.Show,
      IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool
(IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool)
-> (IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool)
-> Eq IssuingDisputeEvidence
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool
$c/= :: IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool
== :: IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool
$c== :: IssuingDisputeEvidence -> IssuingDisputeEvidence -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingDisputeEvidence where
  toJSON :: IssuingDisputeEvidence -> Value
toJSON IssuingDisputeEvidence
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"canceled" Text -> Maybe IssuingDisputeCanceledEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeCanceledEvidence
issuingDisputeEvidenceCanceled IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"duplicate" Text -> Maybe IssuingDisputeDuplicateEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeDuplicateEvidence
issuingDisputeEvidenceDuplicate IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fraudulent" Text -> Maybe IssuingDisputeFraudulentEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeFraudulentEvidence
issuingDisputeEvidenceFraudulent IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"merchandise_not_as_described" Text
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
issuingDisputeEvidenceMerchandiseNotAsDescribed IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"not_received" Text -> Maybe IssuingDisputeNotReceivedEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeNotReceivedEvidence
issuingDisputeEvidenceNotReceived IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"other" Text -> Maybe IssuingDisputeOtherEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeOtherEvidence
issuingDisputeEvidenceOther IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reason" Text -> IssuingDisputeEvidenceReason' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"service_not_as_described" Text -> Maybe IssuingDisputeServiceNotAsDescribedEvidence -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence
-> Maybe IssuingDisputeServiceNotAsDescribedEvidence
issuingDisputeEvidenceServiceNotAsDescribed IssuingDisputeEvidence
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingDisputeEvidence -> Encoding
toEncoding IssuingDisputeEvidence
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"canceled" Text -> Maybe IssuingDisputeCanceledEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeCanceledEvidence
issuingDisputeEvidenceCanceled IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"duplicate" Text -> Maybe IssuingDisputeDuplicateEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeDuplicateEvidence
issuingDisputeEvidenceDuplicate IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fraudulent" Text -> Maybe IssuingDisputeFraudulentEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeFraudulentEvidence
issuingDisputeEvidenceFraudulent IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"merchandise_not_as_described" Text
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
issuingDisputeEvidenceMerchandiseNotAsDescribed IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"not_received" Text -> Maybe IssuingDisputeNotReceivedEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeNotReceivedEvidence
issuingDisputeEvidenceNotReceived IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"other" Text -> Maybe IssuingDisputeOtherEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> Maybe IssuingDisputeOtherEvidence
issuingDisputeEvidenceOther IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"reason" Text -> IssuingDisputeEvidenceReason' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence -> IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason IssuingDisputeEvidence
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"service_not_as_described" Text -> Maybe IssuingDisputeServiceNotAsDescribedEvidence -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingDisputeEvidence
-> Maybe IssuingDisputeServiceNotAsDescribedEvidence
issuingDisputeEvidenceServiceNotAsDescribed IssuingDisputeEvidence
obj))))))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidence where
  parseJSON :: Value -> Parser IssuingDisputeEvidence
parseJSON = String
-> (Object -> Parser IssuingDisputeEvidence)
-> Value
-> Parser IssuingDisputeEvidence
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingDisputeEvidence" (\Object
obj -> ((((((((Maybe IssuingDisputeCanceledEvidence
 -> Maybe IssuingDisputeDuplicateEvidence
 -> Maybe IssuingDisputeFraudulentEvidence
 -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
 -> Maybe IssuingDisputeNotReceivedEvidence
 -> Maybe IssuingDisputeOtherEvidence
 -> IssuingDisputeEvidenceReason'
 -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
 -> IssuingDisputeEvidence)
-> Parser
     (Maybe IssuingDisputeCanceledEvidence
      -> Maybe IssuingDisputeDuplicateEvidence
      -> Maybe IssuingDisputeFraudulentEvidence
      -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
      -> Maybe IssuingDisputeNotReceivedEvidence
      -> Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe IssuingDisputeCanceledEvidence
-> Maybe IssuingDisputeDuplicateEvidence
-> Maybe IssuingDisputeFraudulentEvidence
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
-> Maybe IssuingDisputeNotReceivedEvidence
-> Maybe IssuingDisputeOtherEvidence
-> IssuingDisputeEvidenceReason'
-> Maybe IssuingDisputeServiceNotAsDescribedEvidence
-> IssuingDisputeEvidence
IssuingDisputeEvidence Parser
  (Maybe IssuingDisputeCanceledEvidence
   -> Maybe IssuingDisputeDuplicateEvidence
   -> Maybe IssuingDisputeFraudulentEvidence
   -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
   -> Maybe IssuingDisputeNotReceivedEvidence
   -> Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeCanceledEvidence)
-> Parser
     (Maybe IssuingDisputeDuplicateEvidence
      -> Maybe IssuingDisputeFraudulentEvidence
      -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
      -> Maybe IssuingDisputeNotReceivedEvidence
      -> Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingDisputeCanceledEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"canceled")) Parser
  (Maybe IssuingDisputeDuplicateEvidence
   -> Maybe IssuingDisputeFraudulentEvidence
   -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
   -> Maybe IssuingDisputeNotReceivedEvidence
   -> Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeDuplicateEvidence)
-> Parser
     (Maybe IssuingDisputeFraudulentEvidence
      -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
      -> Maybe IssuingDisputeNotReceivedEvidence
      -> Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingDisputeDuplicateEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"duplicate")) Parser
  (Maybe IssuingDisputeFraudulentEvidence
   -> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
   -> Maybe IssuingDisputeNotReceivedEvidence
   -> Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeFraudulentEvidence)
-> Parser
     (Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
      -> Maybe IssuingDisputeNotReceivedEvidence
      -> Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingDisputeFraudulentEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fraudulent")) Parser
  (Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
   -> Maybe IssuingDisputeNotReceivedEvidence
   -> Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence)
-> Parser
     (Maybe IssuingDisputeNotReceivedEvidence
      -> Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"merchandise_not_as_described")) Parser
  (Maybe IssuingDisputeNotReceivedEvidence
   -> Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeNotReceivedEvidence)
-> Parser
     (Maybe IssuingDisputeOtherEvidence
      -> IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingDisputeNotReceivedEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"not_received")) Parser
  (Maybe IssuingDisputeOtherEvidence
   -> IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeOtherEvidence)
-> Parser
     (IssuingDisputeEvidenceReason'
      -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingDisputeOtherEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"other")) Parser
  (IssuingDisputeEvidenceReason'
   -> Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser IssuingDisputeEvidenceReason'
-> Parser
     (Maybe IssuingDisputeServiceNotAsDescribedEvidence
      -> IssuingDisputeEvidence)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingDisputeEvidenceReason'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"reason")) Parser
  (Maybe IssuingDisputeServiceNotAsDescribedEvidence
   -> IssuingDisputeEvidence)
-> Parser (Maybe IssuingDisputeServiceNotAsDescribedEvidence)
-> Parser IssuingDisputeEvidence
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe IssuingDisputeServiceNotAsDescribedEvidence)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"service_not_as_described"))

-- | Create a new 'IssuingDisputeEvidence' with all required fields.
mkIssuingDisputeEvidence ::
  -- | 'issuingDisputeEvidenceReason'
  IssuingDisputeEvidenceReason' ->
  IssuingDisputeEvidence
mkIssuingDisputeEvidence :: IssuingDisputeEvidenceReason' -> IssuingDisputeEvidence
mkIssuingDisputeEvidence IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason =
  IssuingDisputeEvidence :: Maybe IssuingDisputeCanceledEvidence
-> Maybe IssuingDisputeDuplicateEvidence
-> Maybe IssuingDisputeFraudulentEvidence
-> Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
-> Maybe IssuingDisputeNotReceivedEvidence
-> Maybe IssuingDisputeOtherEvidence
-> IssuingDisputeEvidenceReason'
-> Maybe IssuingDisputeServiceNotAsDescribedEvidence
-> IssuingDisputeEvidence
IssuingDisputeEvidence
    { issuingDisputeEvidenceCanceled :: Maybe IssuingDisputeCanceledEvidence
issuingDisputeEvidenceCanceled = Maybe IssuingDisputeCanceledEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceDuplicate :: Maybe IssuingDisputeDuplicateEvidence
issuingDisputeEvidenceDuplicate = Maybe IssuingDisputeDuplicateEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceFraudulent :: Maybe IssuingDisputeFraudulentEvidence
issuingDisputeEvidenceFraudulent = Maybe IssuingDisputeFraudulentEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceMerchandiseNotAsDescribed :: Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
issuingDisputeEvidenceMerchandiseNotAsDescribed = Maybe IssuingDisputeMerchandiseNotAsDescribedEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceNotReceived :: Maybe IssuingDisputeNotReceivedEvidence
issuingDisputeEvidenceNotReceived = Maybe IssuingDisputeNotReceivedEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceOther :: Maybe IssuingDisputeOtherEvidence
issuingDisputeEvidenceOther = Maybe IssuingDisputeOtherEvidence
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingDisputeEvidenceReason :: IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason = IssuingDisputeEvidenceReason'
issuingDisputeEvidenceReason,
      issuingDisputeEvidenceServiceNotAsDescribed :: Maybe IssuingDisputeServiceNotAsDescribedEvidence
issuingDisputeEvidenceServiceNotAsDescribed = Maybe IssuingDisputeServiceNotAsDescribedEvidence
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the enum schema located at @components.schemas.issuing_dispute_evidence.properties.reason@ in the specification.
--
-- The reason for filing the dispute. Its value will match the field containing the evidence.
data IssuingDisputeEvidenceReason'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    IssuingDisputeEvidenceReason'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.
    IssuingDisputeEvidenceReason'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"canceled"@
    IssuingDisputeEvidenceReason'EnumCanceled
  | -- | Represents the JSON value @"duplicate"@
    IssuingDisputeEvidenceReason'EnumDuplicate
  | -- | Represents the JSON value @"fraudulent"@
    IssuingDisputeEvidenceReason'EnumFraudulent
  | -- | Represents the JSON value @"merchandise_not_as_described"@
    IssuingDisputeEvidenceReason'EnumMerchandiseNotAsDescribed
  | -- | Represents the JSON value @"not_received"@
    IssuingDisputeEvidenceReason'EnumNotReceived
  | -- | Represents the JSON value @"other"@
    IssuingDisputeEvidenceReason'EnumOther
  | -- | Represents the JSON value @"service_not_as_described"@
    IssuingDisputeEvidenceReason'EnumServiceNotAsDescribed
  deriving (Int -> IssuingDisputeEvidenceReason' -> ShowS
[IssuingDisputeEvidenceReason'] -> ShowS
IssuingDisputeEvidenceReason' -> String
(Int -> IssuingDisputeEvidenceReason' -> ShowS)
-> (IssuingDisputeEvidenceReason' -> String)
-> ([IssuingDisputeEvidenceReason'] -> ShowS)
-> Show IssuingDisputeEvidenceReason'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingDisputeEvidenceReason'] -> ShowS
$cshowList :: [IssuingDisputeEvidenceReason'] -> ShowS
show :: IssuingDisputeEvidenceReason' -> String
$cshow :: IssuingDisputeEvidenceReason' -> String
showsPrec :: Int -> IssuingDisputeEvidenceReason' -> ShowS
$cshowsPrec :: Int -> IssuingDisputeEvidenceReason' -> ShowS
GHC.Show.Show, IssuingDisputeEvidenceReason'
-> IssuingDisputeEvidenceReason' -> Bool
(IssuingDisputeEvidenceReason'
 -> IssuingDisputeEvidenceReason' -> Bool)
-> (IssuingDisputeEvidenceReason'
    -> IssuingDisputeEvidenceReason' -> Bool)
-> Eq IssuingDisputeEvidenceReason'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingDisputeEvidenceReason'
-> IssuingDisputeEvidenceReason' -> Bool
$c/= :: IssuingDisputeEvidenceReason'
-> IssuingDisputeEvidenceReason' -> Bool
== :: IssuingDisputeEvidenceReason'
-> IssuingDisputeEvidenceReason' -> Bool
$c== :: IssuingDisputeEvidenceReason'
-> IssuingDisputeEvidenceReason' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON IssuingDisputeEvidenceReason' where
  toJSON :: IssuingDisputeEvidenceReason' -> Value
toJSON (IssuingDisputeEvidenceReason'Other Value
val) = Value
val
  toJSON (IssuingDisputeEvidenceReason'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumCanceled) = Value
"canceled"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumDuplicate) = Value
"duplicate"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumFraudulent) = Value
"fraudulent"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumMerchandiseNotAsDescribed) = Value
"merchandise_not_as_described"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumNotReceived) = Value
"not_received"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumOther) = Value
"other"
  toJSON (IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumServiceNotAsDescribed) = Value
"service_not_as_described"

instance Data.Aeson.Types.FromJSON.FromJSON IssuingDisputeEvidenceReason' where
  parseJSON :: Value -> Parser IssuingDisputeEvidenceReason'
parseJSON Value
val =
    IssuingDisputeEvidenceReason'
-> Parser IssuingDisputeEvidenceReason'
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
"canceled" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumCanceled
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"duplicate" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumDuplicate
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"fraudulent" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumFraudulent
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"merchandise_not_as_described" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumMerchandiseNotAsDescribed
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"not_received" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumNotReceived
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"other" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumOther
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"service_not_as_described" -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'EnumServiceNotAsDescribed
            | Bool
GHC.Base.otherwise -> Value -> IssuingDisputeEvidenceReason'
IssuingDisputeEvidenceReason'Other Value
val
      )