{-# 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. issuingTransactionPurchaseDetailsFlight :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsFlight'), -- | fuel: Information about fuel that was purchased with this transaction. issuingTransactionPurchaseDetailsFuel :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsFuel'), -- | lodging: Information about lodging that was purchased with this transaction. issuingTransactionPurchaseDetailsLodging :: (GHC.Maybe.Maybe IssuingTransactionPurchaseDetailsLodging'), -- | receipt: The line items in the purchase. issuingTransactionPurchaseDetailsReceipt :: (GHC.Maybe.Maybe ([IssuingTransactionReceiptData])), -- | reference: A merchant-specific order number. -- -- Constraints: -- -- * Maximum length of 5000 issuingTransactionPurchaseDetailsReference :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetails where toJSON obj = Data.Aeson.Types.Internal.object ("flight" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight obj : "fuel" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel obj : "lodging" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging obj : "receipt" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsReceipt obj : "reference" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsReference obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("flight" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight obj) GHC.Base.<> (("fuel" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel obj) GHC.Base.<> (("lodging" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging obj) GHC.Base.<> (("receipt" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsReceipt obj) GHC.Base.<> ("reference" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsReference obj))))) instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetails where parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingTransactionPurchaseDetails" (\obj -> ((((GHC.Base.pure IssuingTransactionPurchaseDetails GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "flight")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "fuel")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "lodging")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "receipt")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "reference")) -- | Create a new 'IssuingTransactionPurchaseDetails' with all required fields. mkIssuingTransactionPurchaseDetails :: IssuingTransactionPurchaseDetails mkIssuingTransactionPurchaseDetails = IssuingTransactionPurchaseDetails { issuingTransactionPurchaseDetailsFlight = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFuel = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsLodging = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsReceipt = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsReference = 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'DepartureAt :: (GHC.Maybe.Maybe GHC.Types.Int), -- | passenger_name: The name of the passenger. -- -- Constraints: -- -- * Maximum length of 5000 issuingTransactionPurchaseDetailsFlight'PassengerName :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | refundable: Whether the ticket is refundable. issuingTransactionPurchaseDetailsFlight'Refundable :: (GHC.Maybe.Maybe GHC.Types.Bool), -- | segments: The legs of the trip. issuingTransactionPurchaseDetailsFlight'Segments :: (GHC.Maybe.Maybe ([IssuingTransactionFlightDataLeg])), -- | travel_agency: The travel agency that issued the ticket. -- -- Constraints: -- -- * Maximum length of 5000 issuingTransactionPurchaseDetailsFlight'TravelAgency :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsFlight' where toJSON obj = Data.Aeson.Types.Internal.object ("departure_at" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'DepartureAt obj : "passenger_name" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'PassengerName obj : "refundable" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'Refundable obj : "segments" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'Segments obj : "travel_agency" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'TravelAgency obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("departure_at" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'DepartureAt obj) GHC.Base.<> (("passenger_name" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'PassengerName obj) GHC.Base.<> (("refundable" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'Refundable obj) GHC.Base.<> (("segments" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'Segments obj) GHC.Base.<> ("travel_agency" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFlight'TravelAgency obj))))) instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsFlight' where parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingTransactionPurchaseDetailsFlight'" (\obj -> ((((GHC.Base.pure IssuingTransactionPurchaseDetailsFlight' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "departure_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "passenger_name")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "refundable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "segments")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "travel_agency")) -- | Create a new 'IssuingTransactionPurchaseDetailsFlight'' with all required fields. mkIssuingTransactionPurchaseDetailsFlight' :: IssuingTransactionPurchaseDetailsFlight' mkIssuingTransactionPurchaseDetailsFlight' = IssuingTransactionPurchaseDetailsFlight' { issuingTransactionPurchaseDetailsFlight'DepartureAt = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFlight'PassengerName = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFlight'Refundable = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFlight'Segments = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFlight'TravelAgency = 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'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'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'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'VolumeDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsFuel' where toJSON obj = Data.Aeson.Types.Internal.object ("type" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'Type obj : "unit" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'Unit obj : "unit_cost_decimal" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'UnitCostDecimal obj : "volume_decimal" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'VolumeDecimal obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("type" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'Type obj) GHC.Base.<> (("unit" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'Unit obj) GHC.Base.<> (("unit_cost_decimal" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'UnitCostDecimal obj) GHC.Base.<> ("volume_decimal" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsFuel'VolumeDecimal obj)))) instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsFuel' where parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingTransactionPurchaseDetailsFuel'" (\obj -> (((GHC.Base.pure IssuingTransactionPurchaseDetailsFuel' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "type")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_cost_decimal")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "volume_decimal")) -- | Create a new 'IssuingTransactionPurchaseDetailsFuel'' with all required fields. mkIssuingTransactionPurchaseDetailsFuel' :: IssuingTransactionPurchaseDetailsFuel' mkIssuingTransactionPurchaseDetailsFuel' = IssuingTransactionPurchaseDetailsFuel' { issuingTransactionPurchaseDetailsFuel'Type = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFuel'Unit = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFuel'UnitCostDecimal = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsFuel'VolumeDecimal = 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'CheckInAt :: (GHC.Maybe.Maybe GHC.Types.Int), -- | nights: The number of nights stayed at the lodging. issuingTransactionPurchaseDetailsLodging'Nights :: (GHC.Maybe.Maybe GHC.Types.Int) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON IssuingTransactionPurchaseDetailsLodging' where toJSON obj = Data.Aeson.Types.Internal.object ("check_in_at" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging'CheckInAt obj : "nights" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging'Nights obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("check_in_at" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging'CheckInAt obj) GHC.Base.<> ("nights" Data.Aeson.Types.ToJSON..= issuingTransactionPurchaseDetailsLodging'Nights obj)) instance Data.Aeson.Types.FromJSON.FromJSON IssuingTransactionPurchaseDetailsLodging' where parseJSON = Data.Aeson.Types.FromJSON.withObject "IssuingTransactionPurchaseDetailsLodging'" (\obj -> (GHC.Base.pure IssuingTransactionPurchaseDetailsLodging' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "check_in_at")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "nights")) -- | Create a new 'IssuingTransactionPurchaseDetailsLodging'' with all required fields. mkIssuingTransactionPurchaseDetailsLodging' :: IssuingTransactionPurchaseDetailsLodging' mkIssuingTransactionPurchaseDetailsLodging' = IssuingTransactionPurchaseDetailsLodging' { issuingTransactionPurchaseDetailsLodging'CheckInAt = GHC.Maybe.Nothing, issuingTransactionPurchaseDetailsLodging'Nights = GHC.Maybe.Nothing }