{-# 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 SubscriptionItem module StripeAPI.Types.SubscriptionItem 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.Price import {-# SOURCE #-} StripeAPI.Types.SubscriptionItemBillingThresholds 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_item@ in the specification. -- -- Subscription items allow you to create customer subscriptions with more than -- one plan, making it easy to represent complex billing relationships. data SubscriptionItem = SubscriptionItem { -- | billing_thresholds: Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period subscriptionItemBillingThresholds :: (GHC.Maybe.Maybe SubscriptionItemBillingThresholds'), -- | created: Time at which the object was created. Measured in seconds since the Unix epoch. subscriptionItemCreated :: GHC.Types.Int, -- | id: Unique identifier for the object. -- -- Constraints: -- -- * Maximum length of 5000 subscriptionItemId :: Data.Text.Internal.Text, -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. subscriptionItemMetadata :: Data.Aeson.Types.Internal.Object, -- | price: Prices define the unit cost, currency, and (optional) billing cycle for both recurring and one-time purchases of products. -- [Products](https:\/\/stripe.com\/docs\/api\#products) help you track inventory or provisioning, and prices help you track payment terms. Different physical goods or levels of service should be represented by products, and pricing options should be represented by prices. This approach lets you change prices without having to change your provisioning scheme. -- -- For example, you might have a single \"gold\" product that has prices for \$10\/month, \$100\/year, and €9 once. -- -- Related guides: [Set up a subscription](https:\/\/stripe.com\/docs\/billing\/subscriptions\/set-up-subscription), [create an invoice](https:\/\/stripe.com\/docs\/billing\/invoices\/create), and more about [products and prices](https:\/\/stripe.com\/docs\/billing\/prices-guide). subscriptionItemPrice :: Price, -- | quantity: The [quantity](https:\/\/stripe.com\/docs\/subscriptions\/quantities) of the plan to which the customer should be subscribed. subscriptionItemQuantity :: (GHC.Maybe.Maybe GHC.Types.Int), -- | subscription: The \`subscription\` this \`subscription_item\` belongs to. -- -- Constraints: -- -- * Maximum length of 5000 subscriptionItemSubscription :: Data.Text.Internal.Text, -- | tax_rates: The tax rates which apply to this \`subscription_item\`. When set, the \`default_tax_rates\` on the subscription do not apply to this \`subscription_item\`. subscriptionItemTaxRates :: (GHC.Maybe.Maybe ([TaxRate])) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionItem where toJSON obj = Data.Aeson.Types.Internal.object ("billing_thresholds" Data.Aeson.Types.ToJSON..= subscriptionItemBillingThresholds obj : "created" Data.Aeson.Types.ToJSON..= subscriptionItemCreated obj : "id" Data.Aeson.Types.ToJSON..= subscriptionItemId obj : "metadata" Data.Aeson.Types.ToJSON..= subscriptionItemMetadata obj : "price" Data.Aeson.Types.ToJSON..= subscriptionItemPrice obj : "quantity" Data.Aeson.Types.ToJSON..= subscriptionItemQuantity obj : "subscription" Data.Aeson.Types.ToJSON..= subscriptionItemSubscription obj : "tax_rates" Data.Aeson.Types.ToJSON..= subscriptionItemTaxRates obj : "object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "subscription_item" : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("billing_thresholds" Data.Aeson.Types.ToJSON..= subscriptionItemBillingThresholds obj) GHC.Base.<> (("created" Data.Aeson.Types.ToJSON..= subscriptionItemCreated obj) GHC.Base.<> (("id" Data.Aeson.Types.ToJSON..= subscriptionItemId obj) GHC.Base.<> (("metadata" Data.Aeson.Types.ToJSON..= subscriptionItemMetadata obj) GHC.Base.<> (("price" Data.Aeson.Types.ToJSON..= subscriptionItemPrice obj) GHC.Base.<> (("quantity" Data.Aeson.Types.ToJSON..= subscriptionItemQuantity obj) GHC.Base.<> (("subscription" Data.Aeson.Types.ToJSON..= subscriptionItemSubscription obj) GHC.Base.<> (("tax_rates" Data.Aeson.Types.ToJSON..= subscriptionItemTaxRates obj) GHC.Base.<> ("object" Data.Aeson.Types.ToJSON..= Data.Aeson.Types.Internal.String "subscription_item"))))))))) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItem where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItem" (\obj -> (((((((GHC.Base.pure SubscriptionItem GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "billing_thresholds")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "created")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "id")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "price")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "subscription")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates")) -- | Create a new 'SubscriptionItem' with all required fields. mkSubscriptionItem :: -- | 'subscriptionItemCreated' GHC.Types.Int -> -- | 'subscriptionItemId' Data.Text.Internal.Text -> -- | 'subscriptionItemMetadata' Data.Aeson.Types.Internal.Object -> -- | 'subscriptionItemPrice' Price -> -- | 'subscriptionItemSubscription' Data.Text.Internal.Text -> SubscriptionItem mkSubscriptionItem subscriptionItemCreated subscriptionItemId subscriptionItemMetadata subscriptionItemPrice subscriptionItemSubscription = SubscriptionItem { subscriptionItemBillingThresholds = GHC.Maybe.Nothing, subscriptionItemCreated = subscriptionItemCreated, subscriptionItemId = subscriptionItemId, subscriptionItemMetadata = subscriptionItemMetadata, subscriptionItemPrice = subscriptionItemPrice, subscriptionItemQuantity = GHC.Maybe.Nothing, subscriptionItemSubscription = subscriptionItemSubscription, subscriptionItemTaxRates = GHC.Maybe.Nothing } -- | Defines the object schema located at @components.schemas.subscription_item.properties.billing_thresholds.anyOf@ in the specification. -- -- Define thresholds at which an invoice will be sent, and the related subscription advanced to a new billing period data SubscriptionItemBillingThresholds' = SubscriptionItemBillingThresholds' { -- | usage_gte: Usage threshold that triggers the subscription to create an invoice subscriptionItemBillingThresholds'UsageGte :: (GHC.Maybe.Maybe GHC.Types.Int) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON SubscriptionItemBillingThresholds' where toJSON obj = Data.Aeson.Types.Internal.object ("usage_gte" Data.Aeson.Types.ToJSON..= subscriptionItemBillingThresholds'UsageGte obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs ("usage_gte" Data.Aeson.Types.ToJSON..= subscriptionItemBillingThresholds'UsageGte obj) instance Data.Aeson.Types.FromJSON.FromJSON SubscriptionItemBillingThresholds' where parseJSON = Data.Aeson.Types.FromJSON.withObject "SubscriptionItemBillingThresholds'" (\obj -> GHC.Base.pure SubscriptionItemBillingThresholds' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "usage_gte")) -- | Create a new 'SubscriptionItemBillingThresholds'' with all required fields. mkSubscriptionItemBillingThresholds' :: SubscriptionItemBillingThresholds' mkSubscriptionItemBillingThresholds' = SubscriptionItemBillingThresholds' {subscriptionItemBillingThresholds'UsageGte = GHC.Maybe.Nothing}