{-# 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 SubscriptionScheduleAddInvoiceItem module StripeAPI.Types.SubscriptionScheduleAddInvoiceItem 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.Foldable import qualified Data.Functor import qualified Data.Maybe 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.DeletedPrice import {-# SOURCE #-} StripeAPI.Types.Price import {-# SOURCE #-} StripeAPI.Types.TaxRate import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | Defines the object schema located at @components.schemas.subscription_schedule_add_invoice_item@ in the specification. -- -- An Add Invoice Item describes the prices and quantities that will be added as pending invoice items when entering a phase. data SubscriptionScheduleAddInvoiceItem = SubscriptionScheduleAddInvoiceItem { -- | price: ID of the price used to generate the invoice item. subscriptionScheduleAddInvoiceItemPrice :: SubscriptionScheduleAddInvoiceItemPrice'Variants, -- | quantity: The quantity of the invoice item. subscriptionScheduleAddInvoiceItemQuantity :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable GHC.Types.Int)), -- | tax_rates: The tax rates which apply to the item. When set, the \`default_tax_rates\` do not apply to this item. subscriptionScheduleAddInvoiceItemTaxRates :: (GHC.Maybe.Maybe (StripeAPI.Common.Nullable ([TaxRate]))) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleAddInvoiceItem where toJSON obj = Data.Aeson.Types.Internal.object (Data.Foldable.concat (["price" Data.Aeson.Types.ToJSON..= subscriptionScheduleAddInvoiceItemPrice obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("quantity" Data.Aeson.Types.ToJSON..=)) (subscriptionScheduleAddInvoiceItemQuantity obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("tax_rates" Data.Aeson.Types.ToJSON..=)) (subscriptionScheduleAddInvoiceItemTaxRates obj) : GHC.Base.mempty)) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (GHC.Base.mconcat (Data.Foldable.concat (["price" Data.Aeson.Types.ToJSON..= subscriptionScheduleAddInvoiceItemPrice obj] : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("quantity" Data.Aeson.Types.ToJSON..=)) (subscriptionScheduleAddInvoiceItemQuantity obj) : Data.Maybe.maybe GHC.Base.mempty (GHC.Base.pure GHC.Base.. ("tax_rates" Data.Aeson.Types.ToJSON..=)) (subscriptionScheduleAddInvoiceItemTaxRates obj) : GHC.Base.mempty))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleAddInvoiceItem where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionScheduleAddInvoiceItem" (\obj -> ((GHC.Base.pure SubscriptionScheduleAddInvoiceItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "price")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:! "tax_rates")) -- | Create a new 'SubscriptionScheduleAddInvoiceItem' with all required fields. mkSubscriptionScheduleAddInvoiceItem :: -- | 'subscriptionScheduleAddInvoiceItemPrice' SubscriptionScheduleAddInvoiceItemPrice'Variants -> SubscriptionScheduleAddInvoiceItem mkSubscriptionScheduleAddInvoiceItem subscriptionScheduleAddInvoiceItemPrice = SubscriptionScheduleAddInvoiceItem { subscriptionScheduleAddInvoiceItemPrice = subscriptionScheduleAddInvoiceItemPrice, subscriptionScheduleAddInvoiceItemQuantity = GHC.Maybe.Nothing, subscriptionScheduleAddInvoiceItemTaxRates = GHC.Maybe.Nothing } -- | Defines the oneOf schema located at @components.schemas.subscription_schedule_add_invoice_item.properties.price.anyOf@ in the specification. -- -- ID of the price used to generate the invoice item. data SubscriptionScheduleAddInvoiceItemPrice'Variants = SubscriptionScheduleAddInvoiceItemPrice'Text Data.Text.Internal.Text | SubscriptionScheduleAddInvoiceItemPrice'Price Price | SubscriptionScheduleAddInvoiceItemPrice'DeletedPrice DeletedPrice deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionScheduleAddInvoiceItemPrice'Variants where toJSON (SubscriptionScheduleAddInvoiceItemPrice'Text a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (SubscriptionScheduleAddInvoiceItemPrice'Price a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (SubscriptionScheduleAddInvoiceItemPrice'DeletedPrice a) = Data.Aeson.Types.ToJSON.toJSON a instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionScheduleAddInvoiceItemPrice'Variants where parseJSON val = case (SubscriptionScheduleAddInvoiceItemPrice'Text Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((SubscriptionScheduleAddInvoiceItemPrice'Price Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> ((SubscriptionScheduleAddInvoiceItemPrice'DeletedPrice Data.Functor.<$> Data.Aeson.Types.FromJSON.fromJSON val) GHC.Base.<|> Data.Aeson.Types.Internal.Error "No variant matched")) of Data.Aeson.Types.Internal.Success a -> GHC.Base.pure a Data.Aeson.Types.Internal.Error a -> Control.Monad.Fail.fail a