{-# 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 IssuingTransactionPurchaseDetails
module StripeAPI.Types.IssuingTransactionPurchaseDetails 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.IssuingTransactionFlightData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionFlightDataLeg
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionFuelData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionLodgingData
import {-# SOURCE #-} StripeAPI.Types.IssuingTransactionReceiptData
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.issuing_transaction_purchase_details@ in the specification.
data IssuingTransactionPurchaseDetails = IssuingTransactionPurchaseDetails
  { -- | flight: Information about the flight that was purchased with this transaction.
    IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFlight'
issuingTransactionPurchaseDetailsFlight :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsFlight'),
    -- | fuel: Information about fuel that was purchased with this transaction.
    IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFuel'
issuingTransactionPurchaseDetailsFuel :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsFuel'),
    -- | lodging: Information about lodging that was purchased with this transaction.
    IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsLodging'
issuingTransactionPurchaseDetailsLodging :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsLodging'),
    -- | receipt: The line items in the purchase.
    IssuingTransactionPurchaseDetails
-> Maybe [IssuingTransactionReceiptData]
issuingTransactionPurchaseDetailsReceipt :: (GHC.Maybe.Maybe ([IssuingTransactionReceiptData])),
    -- | reference: A merchant-specific order number.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingTransactionPurchaseDetails -> Maybe Text
issuingTransactionPurchaseDetailsReference :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> IssuingTransactionPurchaseDetails -> ShowS
[IssuingTransactionPurchaseDetails] -> ShowS
IssuingTransactionPurchaseDetails -> String
(Int -> IssuingTransactionPurchaseDetails -> ShowS)
-> (IssuingTransactionPurchaseDetails -> String)
-> ([IssuingTransactionPurchaseDetails] -> ShowS)
-> Show IssuingTransactionPurchaseDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingTransactionPurchaseDetails] -> ShowS
$cshowList :: [IssuingTransactionPurchaseDetails] -> ShowS
show :: IssuingTransactionPurchaseDetails -> String
$cshow :: IssuingTransactionPurchaseDetails -> String
showsPrec :: Int -> IssuingTransactionPurchaseDetails -> ShowS
$cshowsPrec :: Int -> IssuingTransactionPurchaseDetails -> ShowS
GHC.Show.Show,
      IssuingTransactionPurchaseDetails
-> IssuingTransactionPurchaseDetails -> Bool
(IssuingTransactionPurchaseDetails
 -> IssuingTransactionPurchaseDetails -> Bool)
-> (IssuingTransactionPurchaseDetails
    -> IssuingTransactionPurchaseDetails -> Bool)
-> Eq IssuingTransactionPurchaseDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingTransactionPurchaseDetails
-> IssuingTransactionPurchaseDetails -> Bool
$c/= :: IssuingTransactionPurchaseDetails
-> IssuingTransactionPurchaseDetails -> Bool
== :: IssuingTransactionPurchaseDetails
-> IssuingTransactionPurchaseDetails -> Bool
$c== :: IssuingTransactionPurchaseDetails
-> IssuingTransactionPurchaseDetails -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetails where
  toJSON :: IssuingTransactionPurchaseDetails -> Value
toJSON IssuingTransactionPurchaseDetails
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"flight" Text -> Maybe IssuingTransactionPurchaseDetailsFlight' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFlight'
issuingTransactionPurchaseDetailsFlight IssuingTransactionPurchaseDetails
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fuel" Text -> Maybe IssuingTransactionPurchaseDetailsFuel' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFuel'
issuingTransactionPurchaseDetailsFuel IssuingTransactionPurchaseDetails
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"lodging" Text -> Maybe IssuingTransactionPurchaseDetailsLodging' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsLodging'
issuingTransactionPurchaseDetailsLodging IssuingTransactionPurchaseDetails
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"receipt" Text -> Maybe [IssuingTransactionReceiptData] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe [IssuingTransactionReceiptData]
issuingTransactionPurchaseDetailsReceipt IssuingTransactionPurchaseDetails
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"reference" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails -> Maybe Text
issuingTransactionPurchaseDetailsReference IssuingTransactionPurchaseDetails
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingTransactionPurchaseDetails -> Encoding
toEncoding IssuingTransactionPurchaseDetails
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"flight" Text -> Maybe IssuingTransactionPurchaseDetailsFlight' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFlight'
issuingTransactionPurchaseDetailsFlight IssuingTransactionPurchaseDetails
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fuel" Text -> Maybe IssuingTransactionPurchaseDetailsFuel' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsFuel'
issuingTransactionPurchaseDetailsFuel IssuingTransactionPurchaseDetails
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"lodging" Text -> Maybe IssuingTransactionPurchaseDetailsLodging' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe IssuingTransactionPurchaseDetailsLodging'
issuingTransactionPurchaseDetailsLodging IssuingTransactionPurchaseDetails
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"receipt" Text -> Maybe [IssuingTransactionReceiptData] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails
-> Maybe [IssuingTransactionReceiptData]
issuingTransactionPurchaseDetailsReceipt IssuingTransactionPurchaseDetails
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"reference" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetails -> Maybe Text
issuingTransactionPurchaseDetailsReference IssuingTransactionPurchaseDetails
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetails where
  parseJSON :: Value -> Parser IssuingTransactionPurchaseDetails
parseJSON = String
-> (Object -> Parser IssuingTransactionPurchaseDetails)
-> Value
-> Parser IssuingTransactionPurchaseDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingTransactionPurchaseDetails" (\Object
obj -> (((((Maybe IssuingTransactionPurchaseDetailsFlight'
 -> Maybe IssuingTransactionPurchaseDetailsFuel'
 -> Maybe IssuingTransactionPurchaseDetailsLodging'
 -> Maybe [IssuingTransactionReceiptData]
 -> Maybe Text
 -> IssuingTransactionPurchaseDetails)
-> Parser
     (Maybe IssuingTransactionPurchaseDetailsFlight'
      -> Maybe IssuingTransactionPurchaseDetailsFuel'
      -> Maybe IssuingTransactionPurchaseDetailsLodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetails)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe IssuingTransactionPurchaseDetailsFlight'
-> Maybe IssuingTransactionPurchaseDetailsFuel'
-> Maybe IssuingTransactionPurchaseDetailsLodging'
-> Maybe [IssuingTransactionReceiptData]
-> Maybe Text
-> IssuingTransactionPurchaseDetails
IssuingTransactionPurchaseDetails Parser
  (Maybe IssuingTransactionPurchaseDetailsFlight'
   -> Maybe IssuingTransactionPurchaseDetailsFuel'
   -> Maybe IssuingTransactionPurchaseDetailsLodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetails)
-> Parser (Maybe IssuingTransactionPurchaseDetailsFlight')
-> Parser
     (Maybe IssuingTransactionPurchaseDetailsFuel'
      -> Maybe IssuingTransactionPurchaseDetailsLodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe IssuingTransactionPurchaseDetailsFlight')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"flight")) Parser
  (Maybe IssuingTransactionPurchaseDetailsFuel'
   -> Maybe IssuingTransactionPurchaseDetailsLodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetails)
-> Parser (Maybe IssuingTransactionPurchaseDetailsFuel')
-> Parser
     (Maybe IssuingTransactionPurchaseDetailsLodging'
      -> Maybe [IssuingTransactionReceiptData]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe IssuingTransactionPurchaseDetailsFuel')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"fuel")) Parser
  (Maybe IssuingTransactionPurchaseDetailsLodging'
   -> Maybe [IssuingTransactionReceiptData]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetails)
-> Parser (Maybe IssuingTransactionPurchaseDetailsLodging')
-> Parser
     (Maybe [IssuingTransactionReceiptData]
      -> Maybe Text -> IssuingTransactionPurchaseDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text -> Parser (Maybe IssuingTransactionPurchaseDetailsLodging')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"lodging")) Parser
  (Maybe [IssuingTransactionReceiptData]
   -> Maybe Text -> IssuingTransactionPurchaseDetails)
-> Parser (Maybe [IssuingTransactionReceiptData])
-> Parser (Maybe Text -> IssuingTransactionPurchaseDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [IssuingTransactionReceiptData])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"receipt")) Parser (Maybe Text -> IssuingTransactionPurchaseDetails)
-> Parser (Maybe Text) -> Parser IssuingTransactionPurchaseDetails
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
"reference"))

-- | Create a new 'IssuingTransactionPurchaseDetails' with all required fields.
mkIssuingTransactionPurchaseDetails :: IssuingTransactionPurchaseDetails
mkIssuingTransactionPurchaseDetails :: IssuingTransactionPurchaseDetails
mkIssuingTransactionPurchaseDetails =
  IssuingTransactionPurchaseDetails :: Maybe IssuingTransactionPurchaseDetailsFlight'
-> Maybe IssuingTransactionPurchaseDetailsFuel'
-> Maybe IssuingTransactionPurchaseDetailsLodging'
-> Maybe [IssuingTransactionReceiptData]
-> Maybe Text
-> IssuingTransactionPurchaseDetails
IssuingTransactionPurchaseDetails
    { issuingTransactionPurchaseDetailsFlight :: Maybe IssuingTransactionPurchaseDetailsFlight'
issuingTransactionPurchaseDetailsFlight = Maybe IssuingTransactionPurchaseDetailsFlight'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFuel :: Maybe IssuingTransactionPurchaseDetailsFuel'
issuingTransactionPurchaseDetailsFuel = Maybe IssuingTransactionPurchaseDetailsFuel'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsLodging :: Maybe IssuingTransactionPurchaseDetailsLodging'
issuingTransactionPurchaseDetailsLodging = Maybe IssuingTransactionPurchaseDetailsLodging'
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsReceipt :: Maybe [IssuingTransactionReceiptData]
issuingTransactionPurchaseDetailsReceipt = Maybe [IssuingTransactionReceiptData]
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsReference :: Maybe Text
issuingTransactionPurchaseDetailsReference = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing_transaction_purchase_details.properties.flight.anyOf@ in the specification.
--
-- Information about the flight that was purchased with this transaction.
data IssuingTransactionPurchaseDetailsFlight' = IssuingTransactionPurchaseDetailsFlight'
  { -- | departure_at: The time that the flight departed.
    IssuingTransactionPurchaseDetailsFlight' -> Maybe Int
issuingTransactionPurchaseDetailsFlight'DepartureAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | passenger_name: The name of the passenger.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'PassengerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | refundable: Whether the ticket is refundable.
    IssuingTransactionPurchaseDetailsFlight' -> Maybe Bool
issuingTransactionPurchaseDetailsFlight'Refundable :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | segments: The legs of the trip.
    IssuingTransactionPurchaseDetailsFlight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuingTransactionPurchaseDetailsFlight'Segments :: (GHC.Maybe.Maybe ([IssuingTransactionFlightDataLeg])),
    -- | travel_agency: The travel agency that issued the ticket.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'TravelAgency :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> IssuingTransactionPurchaseDetailsFlight' -> ShowS
[IssuingTransactionPurchaseDetailsFlight'] -> ShowS
IssuingTransactionPurchaseDetailsFlight' -> String
(Int -> IssuingTransactionPurchaseDetailsFlight' -> ShowS)
-> (IssuingTransactionPurchaseDetailsFlight' -> String)
-> ([IssuingTransactionPurchaseDetailsFlight'] -> ShowS)
-> Show IssuingTransactionPurchaseDetailsFlight'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingTransactionPurchaseDetailsFlight'] -> ShowS
$cshowList :: [IssuingTransactionPurchaseDetailsFlight'] -> ShowS
show :: IssuingTransactionPurchaseDetailsFlight' -> String
$cshow :: IssuingTransactionPurchaseDetailsFlight' -> String
showsPrec :: Int -> IssuingTransactionPurchaseDetailsFlight' -> ShowS
$cshowsPrec :: Int -> IssuingTransactionPurchaseDetailsFlight' -> ShowS
GHC.Show.Show,
      IssuingTransactionPurchaseDetailsFlight'
-> IssuingTransactionPurchaseDetailsFlight' -> Bool
(IssuingTransactionPurchaseDetailsFlight'
 -> IssuingTransactionPurchaseDetailsFlight' -> Bool)
-> (IssuingTransactionPurchaseDetailsFlight'
    -> IssuingTransactionPurchaseDetailsFlight' -> Bool)
-> Eq IssuingTransactionPurchaseDetailsFlight'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingTransactionPurchaseDetailsFlight'
-> IssuingTransactionPurchaseDetailsFlight' -> Bool
$c/= :: IssuingTransactionPurchaseDetailsFlight'
-> IssuingTransactionPurchaseDetailsFlight' -> Bool
== :: IssuingTransactionPurchaseDetailsFlight'
-> IssuingTransactionPurchaseDetailsFlight' -> Bool
$c== :: IssuingTransactionPurchaseDetailsFlight'
-> IssuingTransactionPurchaseDetailsFlight' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsFlight' where
  toJSON :: IssuingTransactionPurchaseDetailsFlight' -> Value
toJSON IssuingTransactionPurchaseDetailsFlight'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"departure_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Int
issuingTransactionPurchaseDetailsFlight'DepartureAt IssuingTransactionPurchaseDetailsFlight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"passenger_name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'PassengerName IssuingTransactionPurchaseDetailsFlight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"refundable" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Bool
issuingTransactionPurchaseDetailsFlight'Refundable IssuingTransactionPurchaseDetailsFlight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"segments" Text -> Maybe [IssuingTransactionFlightDataLeg] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuingTransactionPurchaseDetailsFlight'Segments IssuingTransactionPurchaseDetailsFlight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"travel_agency" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'TravelAgency IssuingTransactionPurchaseDetailsFlight'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingTransactionPurchaseDetailsFlight' -> Encoding
toEncoding IssuingTransactionPurchaseDetailsFlight'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"departure_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Int
issuingTransactionPurchaseDetailsFlight'DepartureAt IssuingTransactionPurchaseDetailsFlight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"passenger_name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'PassengerName IssuingTransactionPurchaseDetailsFlight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"refundable" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Bool
issuingTransactionPurchaseDetailsFlight'Refundable IssuingTransactionPurchaseDetailsFlight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"segments" Text -> Maybe [IssuingTransactionFlightDataLeg] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight'
-> Maybe [IssuingTransactionFlightDataLeg]
issuingTransactionPurchaseDetailsFlight'Segments IssuingTransactionPurchaseDetailsFlight'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"travel_agency" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFlight' -> Maybe Text
issuingTransactionPurchaseDetailsFlight'TravelAgency IssuingTransactionPurchaseDetailsFlight'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsFlight' where
  parseJSON :: Value -> Parser IssuingTransactionPurchaseDetailsFlight'
parseJSON = String
-> (Object -> Parser IssuingTransactionPurchaseDetailsFlight')
-> Value
-> Parser IssuingTransactionPurchaseDetailsFlight'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingTransactionPurchaseDetailsFlight'" (\Object
obj -> (((((Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe [IssuingTransactionFlightDataLeg]
 -> Maybe Text
 -> IssuingTransactionPurchaseDetailsFlight')
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetailsFlight')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe [IssuingTransactionFlightDataLeg]
-> Maybe Text
-> IssuingTransactionPurchaseDetailsFlight'
IssuingTransactionPurchaseDetailsFlight' Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetailsFlight')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetailsFlight')
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
"departure_at")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetailsFlight')
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text
      -> IssuingTransactionPurchaseDetailsFlight')
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
"passenger_name")) Parser
  (Maybe Bool
   -> Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text
   -> IssuingTransactionPurchaseDetailsFlight')
-> Parser (Maybe Bool)
-> Parser
     (Maybe [IssuingTransactionFlightDataLeg]
      -> Maybe Text -> IssuingTransactionPurchaseDetailsFlight')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"refundable")) Parser
  (Maybe [IssuingTransactionFlightDataLeg]
   -> Maybe Text -> IssuingTransactionPurchaseDetailsFlight')
-> Parser (Maybe [IssuingTransactionFlightDataLeg])
-> Parser (Maybe Text -> IssuingTransactionPurchaseDetailsFlight')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [IssuingTransactionFlightDataLeg])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"segments")) Parser (Maybe Text -> IssuingTransactionPurchaseDetailsFlight')
-> Parser (Maybe Text)
-> Parser IssuingTransactionPurchaseDetailsFlight'
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
"travel_agency"))

-- | Create a new 'IssuingTransactionPurchaseDetailsFlight'' with all required fields.
mkIssuingTransactionPurchaseDetailsFlight' :: IssuingTransactionPurchaseDetailsFlight'
mkIssuingTransactionPurchaseDetailsFlight' :: IssuingTransactionPurchaseDetailsFlight'
mkIssuingTransactionPurchaseDetailsFlight' =
  IssuingTransactionPurchaseDetailsFlight' :: Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe [IssuingTransactionFlightDataLeg]
-> Maybe Text
-> IssuingTransactionPurchaseDetailsFlight'
IssuingTransactionPurchaseDetailsFlight'
    { issuingTransactionPurchaseDetailsFlight'DepartureAt :: Maybe Int
issuingTransactionPurchaseDetailsFlight'DepartureAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFlight'PassengerName :: Maybe Text
issuingTransactionPurchaseDetailsFlight'PassengerName = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFlight'Refundable :: Maybe Bool
issuingTransactionPurchaseDetailsFlight'Refundable = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFlight'Segments :: Maybe [IssuingTransactionFlightDataLeg]
issuingTransactionPurchaseDetailsFlight'Segments = Maybe [IssuingTransactionFlightDataLeg]
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFlight'TravelAgency :: Maybe Text
issuingTransactionPurchaseDetailsFlight'TravelAgency = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing_transaction_purchase_details.properties.fuel.anyOf@ in the specification.
--
-- Information about fuel that was purchased with this transaction.
data IssuingTransactionPurchaseDetailsFuel' = IssuingTransactionPurchaseDetailsFuel'
  { -- | type: The type of fuel that was purchased. One of \`diesel\`, \`unleaded_plus\`, \`unleaded_regular\`, \`unleaded_super\`, or \`other\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Type :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | unit: The units for \`volume_decimal\`. One of \`us_gallon\` or \`liter\`.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Unit :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | unit_cost_decimal: The cost in cents per each unit of fuel, represented as a decimal string with at most 12 decimal places.
    IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'UnitCostDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | volume_decimal: The volume of the fuel that was pumped, represented as a decimal string with at most 12 decimal places.
    IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'VolumeDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> IssuingTransactionPurchaseDetailsFuel' -> ShowS
[IssuingTransactionPurchaseDetailsFuel'] -> ShowS
IssuingTransactionPurchaseDetailsFuel' -> String
(Int -> IssuingTransactionPurchaseDetailsFuel' -> ShowS)
-> (IssuingTransactionPurchaseDetailsFuel' -> String)
-> ([IssuingTransactionPurchaseDetailsFuel'] -> ShowS)
-> Show IssuingTransactionPurchaseDetailsFuel'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingTransactionPurchaseDetailsFuel'] -> ShowS
$cshowList :: [IssuingTransactionPurchaseDetailsFuel'] -> ShowS
show :: IssuingTransactionPurchaseDetailsFuel' -> String
$cshow :: IssuingTransactionPurchaseDetailsFuel' -> String
showsPrec :: Int -> IssuingTransactionPurchaseDetailsFuel' -> ShowS
$cshowsPrec :: Int -> IssuingTransactionPurchaseDetailsFuel' -> ShowS
GHC.Show.Show,
      IssuingTransactionPurchaseDetailsFuel'
-> IssuingTransactionPurchaseDetailsFuel' -> Bool
(IssuingTransactionPurchaseDetailsFuel'
 -> IssuingTransactionPurchaseDetailsFuel' -> Bool)
-> (IssuingTransactionPurchaseDetailsFuel'
    -> IssuingTransactionPurchaseDetailsFuel' -> Bool)
-> Eq IssuingTransactionPurchaseDetailsFuel'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingTransactionPurchaseDetailsFuel'
-> IssuingTransactionPurchaseDetailsFuel' -> Bool
$c/= :: IssuingTransactionPurchaseDetailsFuel'
-> IssuingTransactionPurchaseDetailsFuel' -> Bool
== :: IssuingTransactionPurchaseDetailsFuel'
-> IssuingTransactionPurchaseDetailsFuel' -> Bool
$c== :: IssuingTransactionPurchaseDetailsFuel'
-> IssuingTransactionPurchaseDetailsFuel' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsFuel' where
  toJSON :: IssuingTransactionPurchaseDetailsFuel' -> Value
toJSON IssuingTransactionPurchaseDetailsFuel'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"type" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Type IssuingTransactionPurchaseDetailsFuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Unit IssuingTransactionPurchaseDetailsFuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_cost_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'UnitCostDecimal IssuingTransactionPurchaseDetailsFuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"volume_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'VolumeDecimal IssuingTransactionPurchaseDetailsFuel'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingTransactionPurchaseDetailsFuel' -> Encoding
toEncoding IssuingTransactionPurchaseDetailsFuel'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"type" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Type IssuingTransactionPurchaseDetailsFuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'Unit IssuingTransactionPurchaseDetailsFuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_cost_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'UnitCostDecimal IssuingTransactionPurchaseDetailsFuel'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"volume_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsFuel' -> Maybe Text
issuingTransactionPurchaseDetailsFuel'VolumeDecimal IssuingTransactionPurchaseDetailsFuel'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsFuel' where
  parseJSON :: Value -> Parser IssuingTransactionPurchaseDetailsFuel'
parseJSON = String
-> (Object -> Parser IssuingTransactionPurchaseDetailsFuel')
-> Value
-> Parser IssuingTransactionPurchaseDetailsFuel'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingTransactionPurchaseDetailsFuel'" (\Object
obj -> ((((Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> IssuingTransactionPurchaseDetailsFuel')
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> IssuingTransactionPurchaseDetailsFuel')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> IssuingTransactionPurchaseDetailsFuel'
IssuingTransactionPurchaseDetailsFuel' Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> IssuingTransactionPurchaseDetailsFuel')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> IssuingTransactionPurchaseDetailsFuel')
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
"type")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> IssuingTransactionPurchaseDetailsFuel')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text -> IssuingTransactionPurchaseDetailsFuel')
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
"unit")) Parser
  (Maybe Text
   -> Maybe Text -> IssuingTransactionPurchaseDetailsFuel')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> IssuingTransactionPurchaseDetailsFuel')
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
"unit_cost_decimal")) Parser (Maybe Text -> IssuingTransactionPurchaseDetailsFuel')
-> Parser (Maybe Text)
-> Parser IssuingTransactionPurchaseDetailsFuel'
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
"volume_decimal"))

-- | Create a new 'IssuingTransactionPurchaseDetailsFuel'' with all required fields.
mkIssuingTransactionPurchaseDetailsFuel' :: IssuingTransactionPurchaseDetailsFuel'
mkIssuingTransactionPurchaseDetailsFuel' :: IssuingTransactionPurchaseDetailsFuel'
mkIssuingTransactionPurchaseDetailsFuel' =
  IssuingTransactionPurchaseDetailsFuel' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> IssuingTransactionPurchaseDetailsFuel'
IssuingTransactionPurchaseDetailsFuel'
    { issuingTransactionPurchaseDetailsFuel'Type :: Maybe Text
issuingTransactionPurchaseDetailsFuel'Type = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFuel'Unit :: Maybe Text
issuingTransactionPurchaseDetailsFuel'Unit = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFuel'UnitCostDecimal :: Maybe Text
issuingTransactionPurchaseDetailsFuel'UnitCostDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsFuel'VolumeDecimal :: Maybe Text
issuingTransactionPurchaseDetailsFuel'VolumeDecimal = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.issuing_transaction_purchase_details.properties.lodging.anyOf@ in the specification.
--
-- Information about lodging that was purchased with this transaction.
data IssuingTransactionPurchaseDetailsLodging' = IssuingTransactionPurchaseDetailsLodging'
  { -- | check_in_at: The time of checking into the lodging.
    IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'CheckInAt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | nights: The number of nights stayed at the lodging.
    IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'Nights :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> IssuingTransactionPurchaseDetailsLodging' -> ShowS
[IssuingTransactionPurchaseDetailsLodging'] -> ShowS
IssuingTransactionPurchaseDetailsLodging' -> String
(Int -> IssuingTransactionPurchaseDetailsLodging' -> ShowS)
-> (IssuingTransactionPurchaseDetailsLodging' -> String)
-> ([IssuingTransactionPurchaseDetailsLodging'] -> ShowS)
-> Show IssuingTransactionPurchaseDetailsLodging'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [IssuingTransactionPurchaseDetailsLodging'] -> ShowS
$cshowList :: [IssuingTransactionPurchaseDetailsLodging'] -> ShowS
show :: IssuingTransactionPurchaseDetailsLodging' -> String
$cshow :: IssuingTransactionPurchaseDetailsLodging' -> String
showsPrec :: Int -> IssuingTransactionPurchaseDetailsLodging' -> ShowS
$cshowsPrec :: Int -> IssuingTransactionPurchaseDetailsLodging' -> ShowS
GHC.Show.Show,
      IssuingTransactionPurchaseDetailsLodging'
-> IssuingTransactionPurchaseDetailsLodging' -> Bool
(IssuingTransactionPurchaseDetailsLodging'
 -> IssuingTransactionPurchaseDetailsLodging' -> Bool)
-> (IssuingTransactionPurchaseDetailsLodging'
    -> IssuingTransactionPurchaseDetailsLodging' -> Bool)
-> Eq IssuingTransactionPurchaseDetailsLodging'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: IssuingTransactionPurchaseDetailsLodging'
-> IssuingTransactionPurchaseDetailsLodging' -> Bool
$c/= :: IssuingTransactionPurchaseDetailsLodging'
-> IssuingTransactionPurchaseDetailsLodging' -> Bool
== :: IssuingTransactionPurchaseDetailsLodging'
-> IssuingTransactionPurchaseDetailsLodging' -> Bool
$c== :: IssuingTransactionPurchaseDetailsLodging'
-> IssuingTransactionPurchaseDetailsLodging' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsLodging' where
  toJSON :: IssuingTransactionPurchaseDetailsLodging' -> Value
toJSON IssuingTransactionPurchaseDetailsLodging'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"check_in_at" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'CheckInAt IssuingTransactionPurchaseDetailsLodging'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"nights" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'Nights IssuingTransactionPurchaseDetailsLodging'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: IssuingTransactionPurchaseDetailsLodging' -> Encoding
toEncoding IssuingTransactionPurchaseDetailsLodging'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"check_in_at" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'CheckInAt IssuingTransactionPurchaseDetailsLodging'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"nights" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= IssuingTransactionPurchaseDetailsLodging' -> Maybe Int
issuingTransactionPurchaseDetailsLodging'Nights IssuingTransactionPurchaseDetailsLodging'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsLodging' where
  parseJSON :: Value -> Parser IssuingTransactionPurchaseDetailsLodging'
parseJSON = String
-> (Object -> Parser IssuingTransactionPurchaseDetailsLodging')
-> Value
-> Parser IssuingTransactionPurchaseDetailsLodging'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"IssuingTransactionPurchaseDetailsLodging'" (\Object
obj -> ((Maybe Int
 -> Maybe Int -> IssuingTransactionPurchaseDetailsLodging')
-> Parser
     (Maybe Int
      -> Maybe Int -> IssuingTransactionPurchaseDetailsLodging')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int -> Maybe Int -> IssuingTransactionPurchaseDetailsLodging'
IssuingTransactionPurchaseDetailsLodging' Parser
  (Maybe Int
   -> Maybe Int -> IssuingTransactionPurchaseDetailsLodging')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> IssuingTransactionPurchaseDetailsLodging')
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
"check_in_at")) Parser (Maybe Int -> IssuingTransactionPurchaseDetailsLodging')
-> Parser (Maybe Int)
-> Parser IssuingTransactionPurchaseDetailsLodging'
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
"nights"))

-- | Create a new 'IssuingTransactionPurchaseDetailsLodging'' with all required fields.
mkIssuingTransactionPurchaseDetailsLodging' :: IssuingTransactionPurchaseDetailsLodging'
mkIssuingTransactionPurchaseDetailsLodging' :: IssuingTransactionPurchaseDetailsLodging'
mkIssuingTransactionPurchaseDetailsLodging' =
  IssuingTransactionPurchaseDetailsLodging' :: Maybe Int -> Maybe Int -> IssuingTransactionPurchaseDetailsLodging'
IssuingTransactionPurchaseDetailsLodging'
    { issuingTransactionPurchaseDetailsLodging'CheckInAt :: Maybe Int
issuingTransactionPurchaseDetailsLodging'CheckInAt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      issuingTransactionPurchaseDetailsLodging'Nights :: Maybe Int
issuingTransactionPurchaseDetailsLodging'Nights = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }