{-# 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 IssuingCardShipping
module StripeAPI.Types.IssuingCardShipping 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.Address
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing_card_shipping@ in the specification.
data IssuingCardShipping = IssuingCardShipping
  { -- | address:
    IssuingCardShipping -> Address
issuingCardShippingAddress :: Address,
    -- | carrier: The delivery company that shipped a card.
    IssuingCardShipping -> Maybe IssuingCardShippingCarrier'
issuingCardShippingCarrier :: (GHC.Maybe.Maybe IssuingCardShippingCarrier'),
    -- | eta: A unix timestamp representing a best estimate of when the card will be delivered.
    IssuingCardShipping -> Maybe Int
issuingCardShippingEta :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | name: Recipient name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingCardShipping -> Text
issuingCardShippingName :: Data.Text.Internal.Text,
    -- | service: Shipment service, such as \`standard\` or \`express\`.
    IssuingCardShipping -> IssuingCardShippingService'
issuingCardShippingService :: IssuingCardShippingService',
    -- | status: The delivery status of the card.
    IssuingCardShipping -> Maybe IssuingCardShippingStatus'
issuingCardShippingStatus :: (GHC.Maybe.Maybe IssuingCardShippingStatus'),
    -- | tracking_number: A tracking number for a card shipment.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | tracking_url: A link to the shipping carrier\'s site where you can view detailed information about a card shipment.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | type: Packaging options.
    IssuingCardShipping -> IssuingCardShippingType'
issuingCardShippingType :: IssuingCardShippingType'
  }
  deriving
    ( Int -> IssuingCardShipping -> ShowS
[IssuingCardShipping] -> ShowS
IssuingCardShipping -> String
(Int -> IssuingCardShipping -> ShowS)
-> (IssuingCardShipping -> String)
-> ([IssuingCardShipping] -> ShowS)
-> Show IssuingCardShipping
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingCardShipping] -> ShowS
$cshowList :: [IssuingCardShipping] -> ShowS
show :: IssuingCardShipping -> String
$cshow :: IssuingCardShipping -> String
showsPrec :: Int -> IssuingCardShipping -> ShowS
$cshowsPrec :: Int -> IssuingCardShipping -> ShowS
GHC.Show.Show,
      IssuingCardShipping -> IssuingCardShipping -> Bool
(IssuingCardShipping -> IssuingCardShipping -> Bool)
-> (IssuingCardShipping -> IssuingCardShipping -> Bool)
-> Eq IssuingCardShipping
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingCardShipping -> IssuingCardShipping -> Bool
$c/= :: IssuingCardShipping -> IssuingCardShipping -> Bool
== :: IssuingCardShipping -> IssuingCardShipping -> Bool
$c== :: IssuingCardShipping -> IssuingCardShipping -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingCardShipping where
  toJSON :: IssuingCardShipping -> Value
toJSON IssuingCardShipping
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"address" Text -> Address -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Address
issuingCardShippingAddress IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"carrier" Text -> Maybe IssuingCardShippingCarrier' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe IssuingCardShippingCarrier'
issuingCardShippingCarrier IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"eta" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Int
issuingCardShippingEta IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"name" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Text
issuingCardShippingName IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"service" Text -> IssuingCardShippingService' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> IssuingCardShippingService'
issuingCardShippingService IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Maybe IssuingCardShippingStatus' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe IssuingCardShippingStatus'
issuingCardShippingStatus IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tracking_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingNumber IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tracking_url" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingUrl IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"type" Text -> IssuingCardShippingType' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> IssuingCardShippingType'
issuingCardShippingType IssuingCardShipping
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingCardShipping -> Encoding
toEncoding IssuingCardShipping
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"address" Text -> Address -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Address
issuingCardShippingAddress IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"carrier" Text -> Maybe IssuingCardShippingCarrier' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe IssuingCardShippingCarrier'
issuingCardShippingCarrier IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"eta" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Int
issuingCardShippingEta IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"name" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Text
issuingCardShippingName IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"service" Text -> IssuingCardShippingService' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> IssuingCardShippingService'
issuingCardShippingService IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Maybe IssuingCardShippingStatus' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe IssuingCardShippingStatus'
issuingCardShippingStatus IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tracking_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingNumber IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tracking_url" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> Maybe Text
issuingCardShippingTrackingUrl IssuingCardShipping
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"type" Text -> IssuingCardShippingType' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingCardShipping -> IssuingCardShippingType'
issuingCardShippingType IssuingCardShipping
obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardShipping where
  parseJSON :: Value -> Parser IssuingCardShipping
parseJSON = String
-> (Object -> Parser IssuingCardShipping)
-> Value
-> Parser IssuingCardShipping
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingCardShipping" (\Object
obj -> (((((((((Address
 -> Maybe IssuingCardShippingCarrier'
 -> Maybe Int
 -> Text
 -> IssuingCardShippingService'
 -> Maybe IssuingCardShippingStatus'
 -> Maybe Text
 -> Maybe Text
 -> IssuingCardShippingType'
 -> IssuingCardShipping)
-> Parser
     (Address
      -> Maybe IssuingCardShippingCarrier'
      -> Maybe Int
      -> Text
      -> IssuingCardShippingService'
      -> Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Address
-> Maybe IssuingCardShippingCarrier'
-> Maybe Int
-> Text
-> IssuingCardShippingService'
-> Maybe IssuingCardShippingStatus'
-> Maybe Text
-> Maybe Text
-> IssuingCardShippingType'
-> IssuingCardShipping
IssuingCardShipping Parser
  (Address
   -> Maybe IssuingCardShippingCarrier'
   -> Maybe Int
   -> Text
   -> IssuingCardShippingService'
   -> Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser Address
-> Parser
     (Maybe IssuingCardShippingCarrier'
      -> Maybe Int
      -> Text
      -> IssuingCardShippingService'
      -> Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Address
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"address")) Parser
  (Maybe IssuingCardShippingCarrier'
   -> Maybe Int
   -> Text
   -> IssuingCardShippingService'
   -> Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser (Maybe IssuingCardShippingCarrier')
-> Parser
     (Maybe Int
      -> Text
      -> IssuingCardShippingService'
      -> Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingCardShippingCarrier')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"carrier")) Parser
  (Maybe Int
   -> Text
   -> IssuingCardShippingService'
   -> Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser (Maybe Int)
-> Parser
     (Text
      -> IssuingCardShippingService'
      -> Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"eta")) Parser
  (Text
   -> IssuingCardShippingService'
   -> Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser Text
-> Parser
     (IssuingCardShippingService'
      -> Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
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
"name")) Parser
  (IssuingCardShippingService'
   -> Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser IssuingCardShippingService'
-> Parser
     (Maybe IssuingCardShippingStatus'
      -> Maybe Text
      -> Maybe Text
      -> IssuingCardShippingType'
      -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingCardShippingService'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"service")) Parser
  (Maybe IssuingCardShippingStatus'
   -> Maybe Text
   -> Maybe Text
   -> IssuingCardShippingType'
   -> IssuingCardShipping)
-> Parser (Maybe IssuingCardShippingStatus')
-> Parser
     (Maybe Text
      -> Maybe Text -> IssuingCardShippingType' -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe IssuingCardShippingStatus')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"status")) Parser
  (Maybe Text
   -> Maybe Text -> IssuingCardShippingType' -> IssuingCardShipping)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> IssuingCardShippingType' -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tracking_number")) Parser
  (Maybe Text -> IssuingCardShippingType' -> IssuingCardShipping)
-> Parser (Maybe Text)
-> Parser (IssuingCardShippingType' -> IssuingCardShipping)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tracking_url")) Parser (IssuingCardShippingType' -> IssuingCardShipping)
-> Parser IssuingCardShippingType' -> Parser IssuingCardShipping
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser IssuingCardShippingType'
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"type"))

-- | Create a new 'IssuingCardShipping' with all required fields.
mkIssuingCardShipping ::
  -- | 'issuingCardShippingAddress'
  Address ->
  -- | 'issuingCardShippingName'
  Data.Text.Internal.Text ->
  -- | 'issuingCardShippingService'
  IssuingCardShippingService' ->
  -- | 'issuingCardShippingType'
  IssuingCardShippingType' ->
  IssuingCardShipping
mkIssuingCardShipping :: Address
-> Text
-> IssuingCardShippingService'
-> IssuingCardShippingType'
-> IssuingCardShipping
mkIssuingCardShipping Address
issuingCardShippingAddress Text
issuingCardShippingName IssuingCardShippingService'
issuingCardShippingService IssuingCardShippingType'
issuingCardShippingType =
  IssuingCardShipping :: Address
-> Maybe IssuingCardShippingCarrier'
-> Maybe Int
-> Text
-> IssuingCardShippingService'
-> Maybe IssuingCardShippingStatus'
-> Maybe Text
-> Maybe Text
-> IssuingCardShippingType'
-> IssuingCardShipping
IssuingCardShipping
    { issuingCardShippingAddress :: Address
issuingCardShippingAddress = Address
issuingCardShippingAddress,
      issuingCardShippingCarrier :: Maybe IssuingCardShippingCarrier'
issuingCardShippingCarrier = Maybe IssuingCardShippingCarrier'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingCardShippingEta :: Maybe Int
issuingCardShippingEta = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingCardShippingName :: Text
issuingCardShippingName = Text
issuingCardShippingName,
      issuingCardShippingService :: IssuingCardShippingService'
issuingCardShippingService = IssuingCardShippingService'
issuingCardShippingService,
      issuingCardShippingStatus :: Maybe IssuingCardShippingStatus'
issuingCardShippingStatus = Maybe IssuingCardShippingStatus'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingCardShippingTrackingNumber :: Maybe Text
issuingCardShippingTrackingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingCardShippingTrackingUrl :: Maybe Text
issuingCardShippingTrackingUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingCardShippingType :: IssuingCardShippingType'
issuingCardShippingType = IssuingCardShippingType'
issuingCardShippingType
    }

-- | Defines the enum schema located at @components.schemas.issuing_card_shipping.properties.carrier@ in the specification.
--
-- The delivery company that shipped a card.
data IssuingCardShippingCarrier'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    IssuingCardShippingCarrier'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.
    IssuingCardShippingCarrier'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"dhl"@
    IssuingCardShippingCarrier'EnumDhl
  | -- | Represents the JSON value @"fedex"@
    IssuingCardShippingCarrier'EnumFedex
  | -- | Represents the JSON value @"royal_mail"@
    IssuingCardShippingCarrier'EnumRoyalMail
  | -- | Represents the JSON value @"usps"@
    IssuingCardShippingCarrier'EnumUsps
  deriving (Int -> IssuingCardShippingCarrier' -> ShowS
[IssuingCardShippingCarrier'] -> ShowS
IssuingCardShippingCarrier' -> String
(Int -> IssuingCardShippingCarrier' -> ShowS)
-> (IssuingCardShippingCarrier' -> String)
-> ([IssuingCardShippingCarrier'] -> ShowS)
-> Show IssuingCardShippingCarrier'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingCardShippingCarrier'] -> ShowS
$cshowList :: [IssuingCardShippingCarrier'] -> ShowS
show :: IssuingCardShippingCarrier' -> String
$cshow :: IssuingCardShippingCarrier' -> String
showsPrec :: Int -> IssuingCardShippingCarrier' -> ShowS
$cshowsPrec :: Int -> IssuingCardShippingCarrier' -> ShowS
GHC.Show.Show, IssuingCardShippingCarrier' -> IssuingCardShippingCarrier' -> Bool
(IssuingCardShippingCarrier'
 -> IssuingCardShippingCarrier' -> Bool)
-> (IssuingCardShippingCarrier'
    -> IssuingCardShippingCarrier' -> Bool)
-> Eq IssuingCardShippingCarrier'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingCardShippingCarrier' -> IssuingCardShippingCarrier' -> Bool
$c/= :: IssuingCardShippingCarrier' -> IssuingCardShippingCarrier' -> Bool
== :: IssuingCardShippingCarrier' -> IssuingCardShippingCarrier' -> Bool
$c== :: IssuingCardShippingCarrier' -> IssuingCardShippingCarrier' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON IssuingCardShippingCarrier' where
  toJSON :: IssuingCardShippingCarrier' -> Value
toJSON (IssuingCardShippingCarrier'Other Value
val) = Value
val
  toJSON (IssuingCardShippingCarrier'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumDhl) = Value
"dhl"
  toJSON (IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumFedex) = Value
"fedex"
  toJSON (IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumRoyalMail) = Value
"royal_mail"
  toJSON (IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumUsps) = Value
"usps"

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardShippingCarrier' where
  parseJSON :: Value -> Parser IssuingCardShippingCarrier'
parseJSON Value
val =
    IssuingCardShippingCarrier' -> Parser IssuingCardShippingCarrier'
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
"dhl" -> IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumDhl
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"fedex" -> IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumFedex
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"royal_mail" -> IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumRoyalMail
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"usps" -> IssuingCardShippingCarrier'
IssuingCardShippingCarrier'EnumUsps
            | Bool
GHC.Base.otherwise -> Value -> IssuingCardShippingCarrier'
IssuingCardShippingCarrier'Other Value
val
      )

-- | Defines the enum schema located at @components.schemas.issuing_card_shipping.properties.service@ in the specification.
--
-- Shipment service, such as \`standard\` or \`express\`.
data IssuingCardShippingService'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    IssuingCardShippingService'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.
    IssuingCardShippingService'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"express"@
    IssuingCardShippingService'EnumExpress
  | -- | Represents the JSON value @"priority"@
    IssuingCardShippingService'EnumPriority
  | -- | Represents the JSON value @"standard"@
    IssuingCardShippingService'EnumStandard
  deriving (Int -> IssuingCardShippingService' -> ShowS
[IssuingCardShippingService'] -> ShowS
IssuingCardShippingService' -> String
(Int -> IssuingCardShippingService' -> ShowS)
-> (IssuingCardShippingService' -> String)
-> ([IssuingCardShippingService'] -> ShowS)
-> Show IssuingCardShippingService'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingCardShippingService'] -> ShowS
$cshowList :: [IssuingCardShippingService'] -> ShowS
show :: IssuingCardShippingService' -> String
$cshow :: IssuingCardShippingService' -> String
showsPrec :: Int -> IssuingCardShippingService' -> ShowS
$cshowsPrec :: Int -> IssuingCardShippingService' -> ShowS
GHC.Show.Show, IssuingCardShippingService' -> IssuingCardShippingService' -> Bool
(IssuingCardShippingService'
 -> IssuingCardShippingService' -> Bool)
-> (IssuingCardShippingService'
    -> IssuingCardShippingService' -> Bool)
-> Eq IssuingCardShippingService'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingCardShippingService' -> IssuingCardShippingService' -> Bool
$c/= :: IssuingCardShippingService' -> IssuingCardShippingService' -> Bool
== :: IssuingCardShippingService' -> IssuingCardShippingService' -> Bool
$c== :: IssuingCardShippingService' -> IssuingCardShippingService' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON IssuingCardShippingService' where
  toJSON :: IssuingCardShippingService' -> Value
toJSON (IssuingCardShippingService'Other Value
val) = Value
val
  toJSON (IssuingCardShippingService'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (IssuingCardShippingService'
IssuingCardShippingService'EnumExpress) = Value
"express"
  toJSON (IssuingCardShippingService'
IssuingCardShippingService'EnumPriority) = Value
"priority"
  toJSON (IssuingCardShippingService'
IssuingCardShippingService'EnumStandard) = Value
"standard"

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardShippingService' where
  parseJSON :: Value -> Parser IssuingCardShippingService'
parseJSON Value
val =
    IssuingCardShippingService' -> Parser IssuingCardShippingService'
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
"express" -> IssuingCardShippingService'
IssuingCardShippingService'EnumExpress
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"priority" -> IssuingCardShippingService'
IssuingCardShippingService'EnumPriority
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"standard" -> IssuingCardShippingService'
IssuingCardShippingService'EnumStandard
            | Bool
GHC.Base.otherwise -> Value -> IssuingCardShippingService'
IssuingCardShippingService'Other Value
val
      )

-- | Defines the enum schema located at @components.schemas.issuing_card_shipping.properties.status@ in the specification.
--
-- The delivery status of the card.
data IssuingCardShippingStatus'
  = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
    IssuingCardShippingStatus'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.
    IssuingCardShippingStatus'Typed Data.Text.Internal.Text
  | -- | Represents the JSON value @"canceled"@
    IssuingCardShippingStatus'EnumCanceled
  | -- | Represents the JSON value @"delivered"@
    IssuingCardShippingStatus'EnumDelivered
  | -- | Represents the JSON value @"failure"@
    IssuingCardShippingStatus'EnumFailure
  | -- | Represents the JSON value @"pending"@
    IssuingCardShippingStatus'EnumPending
  | -- | Represents the JSON value @"returned"@
    IssuingCardShippingStatus'EnumReturned
  | -- | Represents the JSON value @"shipped"@
    IssuingCardShippingStatus'EnumShipped
  deriving (Int -> IssuingCardShippingStatus' -> ShowS
[IssuingCardShippingStatus'] -> ShowS
IssuingCardShippingStatus' -> String
(Int -> IssuingCardShippingStatus' -> ShowS)
-> (IssuingCardShippingStatus' -> String)
-> ([IssuingCardShippingStatus'] -> ShowS)
-> Show IssuingCardShippingStatus'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingCardShippingStatus'] -> ShowS
$cshowList :: [IssuingCardShippingStatus'] -> ShowS
show :: IssuingCardShippingStatus' -> String
$cshow :: IssuingCardShippingStatus' -> String
showsPrec :: Int -> IssuingCardShippingStatus' -> ShowS
$cshowsPrec :: Int -> IssuingCardShippingStatus' -> ShowS
GHC.Show.Show, IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool
(IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool)
-> (IssuingCardShippingStatus'
    -> IssuingCardShippingStatus' -> Bool)
-> Eq IssuingCardShippingStatus'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool
$c/= :: IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool
== :: IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool
$c== :: IssuingCardShippingStatus' -> IssuingCardShippingStatus' -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON IssuingCardShippingStatus' where
  toJSON :: IssuingCardShippingStatus' -> Value
toJSON (IssuingCardShippingStatus'Other Value
val) = Value
val
  toJSON (IssuingCardShippingStatus'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumCanceled) = Value
"canceled"
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumDelivered) = Value
"delivered"
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumFailure) = Value
"failure"
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumPending) = Value
"pending"
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumReturned) = Value
"returned"
  toJSON (IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumShipped) = Value
"shipped"

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardShippingStatus' where
  parseJSON :: Value -> Parser IssuingCardShippingStatus'
parseJSON Value
val =
    IssuingCardShippingStatus' -> Parser IssuingCardShippingStatus'
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" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumCanceled
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"delivered" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumDelivered
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"failure" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumFailure
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"pending" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumPending
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"returned" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumReturned
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"shipped" -> IssuingCardShippingStatus'
IssuingCardShippingStatus'EnumShipped
            | Bool
GHC.Base.otherwise -> Value -> IssuingCardShippingStatus'
IssuingCardShippingStatus'Other Value
val
      )

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

instance Data.Aeson.Types.ToJSON.ToJSON IssuingCardShippingType' where
  toJSON :: IssuingCardShippingType' -> Value
toJSON (IssuingCardShippingType'Other Value
val) = Value
val
  toJSON (IssuingCardShippingType'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (IssuingCardShippingType'
IssuingCardShippingType'EnumBulk) = Value
"bulk"
  toJSON (IssuingCardShippingType'
IssuingCardShippingType'EnumIndividual) = Value
"individual"

instance Data.Aeson.Types.FromJSON.FromJSON IssuingCardShippingType' where
  parseJSON :: Value -> Parser IssuingCardShippingType'
parseJSON Value
val =
    IssuingCardShippingType' -> Parser IssuingCardShippingType'
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
"bulk" -> IssuingCardShippingType'
IssuingCardShippingType'EnumBulk
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"individual" -> IssuingCardShippingType'
IssuingCardShippingType'EnumIndividual
            | Bool
GHC.Base.otherwise -> Value -> IssuingCardShippingType'
IssuingCardShippingType'Other Value
val
      )