{-# LANGUAGE ExplicitForAll #-} {-# 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 different functions to run the operation postInvoiceitemsInvoiceitem module StripeAPI.Operations.PostInvoiceitemsInvoiceitem where import qualified Control.Monad.Fail import qualified Control.Monad.Trans.Reader 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.Either 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 Data.Vector import qualified GHC.Base import qualified GHC.Classes import qualified GHC.Int import qualified GHC.Show import qualified GHC.Types import qualified Network.HTTP.Client import qualified Network.HTTP.Client as Network.HTTP.Client.Request import qualified Network.HTTP.Client as Network.HTTP.Client.Types import qualified Network.HTTP.Simple import qualified Network.HTTP.Types import qualified Network.HTTP.Types as Network.HTTP.Types.Status import qualified Network.HTTP.Types as Network.HTTP.Types.URI import qualified StripeAPI.Common import StripeAPI.Types import qualified Prelude as GHC.Integer.Type import qualified Prelude as GHC.Maybe -- | > POST /v1/invoiceitems/{invoiceitem} -- -- \

Updates the amount or description of an invoice item on an upcoming invoice. Updating an invoice item is only possible before the invoice it’s attached to is closed.\<\/p> postInvoiceitemsInvoiceitem :: forall m. StripeAPI.Common.MonadHTTP m => -- | invoiceitem | Constraints: Maximum length of 5000 Data.Text.Internal.Text -> -- | The request body to send GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBody -> -- | Monadic computation which returns the result of the operation StripeAPI.Common.ClientT m (Network.HTTP.Client.Types.Response PostInvoiceitemsInvoiceitemResponse) postInvoiceitemsInvoiceitem invoiceitem body = GHC.Base.fmap ( \response_0 -> GHC.Base.fmap ( Data.Either.either PostInvoiceitemsInvoiceitemResponseError GHC.Base.id GHC.Base.. ( \response body -> if | (\status_1 -> Network.HTTP.Types.Status.statusCode status_1 GHC.Classes.== 200) (Network.HTTP.Client.Types.responseStatus response) -> PostInvoiceitemsInvoiceitemResponse200 Data.Functor.<$> ( Data.Aeson.eitherDecodeStrict body :: Data.Either.Either GHC.Base.String Invoiceitem ) | GHC.Base.const GHC.Types.True (Network.HTTP.Client.Types.responseStatus response) -> PostInvoiceitemsInvoiceitemResponseDefault Data.Functor.<$> ( Data.Aeson.eitherDecodeStrict body :: Data.Either.Either GHC.Base.String Error ) | GHC.Base.otherwise -> Data.Either.Left "Missing default response type" ) response_0 ) response_0 ) (StripeAPI.Common.doBodyCallWithConfigurationM (Data.Text.toUpper GHC.Base.$ Data.Text.pack "POST") (Data.Text.pack ("/v1/invoiceitems/" GHC.Base.++ (Data.ByteString.Char8.unpack (Network.HTTP.Types.URI.urlEncode GHC.Types.True GHC.Base.$ (Data.ByteString.Char8.pack GHC.Base.$ StripeAPI.Common.stringifyModel invoiceitem)) GHC.Base.++ ""))) GHC.Base.mempty body StripeAPI.Common.RequestBodyEncodingFormData) -- | Defines the object schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema@ in the specification. data PostInvoiceitemsInvoiceitemRequestBody = PostInvoiceitemsInvoiceitemRequestBody { -- | amount: The integer amount in %s of the charge to be applied to the upcoming invoice. If you want to apply a credit to the customer\'s account, pass a negative amount. postInvoiceitemsInvoiceitemRequestBodyAmount :: (GHC.Maybe.Maybe GHC.Types.Int), -- | description: An arbitrary string which you can attach to the invoice item. The description is displayed in the invoice for easy tracking. -- -- Constraints: -- -- * Maximum length of 5000 postInvoiceitemsInvoiceitemRequestBodyDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | discountable: Controls whether discounts apply to this invoice item. Defaults to false for prorations or negative invoice items, and true for all other invoice items. Cannot be set to true for prorations. postInvoiceitemsInvoiceitemRequestBodyDiscountable :: (GHC.Maybe.Maybe GHC.Types.Bool), -- | discounts: The coupons & existing discounts which apply to the invoice item or invoice line item. Item discounts are applied before invoice discounts. Pass an empty string to remove previously-defined discounts. postInvoiceitemsInvoiceitemRequestBodyDiscounts :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants), -- | expand: Specifies which fields in the response should be expanded. postInvoiceitemsInvoiceitemRequestBodyExpand :: (GHC.Maybe.Maybe ([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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to \`metadata\`. postInvoiceitemsInvoiceitemRequestBodyMetadata :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants), -- | period: The period associated with this invoice item. postInvoiceitemsInvoiceitemRequestBodyPeriod :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'), -- | price: The ID of the price object. -- -- Constraints: -- -- * Maximum length of 5000 postInvoiceitemsInvoiceitemRequestBodyPrice :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | price_data: Data used to generate a new [Price](https:\/\/stripe.com\/docs\/api\/prices) object inline. postInvoiceitemsInvoiceitemRequestBodyPriceData :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'), -- | quantity: Non-negative integer. The quantity of units for the invoice item. postInvoiceitemsInvoiceitemRequestBodyQuantity :: (GHC.Maybe.Maybe GHC.Types.Int), -- | tax_rates: The tax rates which apply to the invoice item. When set, the \`default_tax_rates\` on the invoice do not apply to this invoice item. Pass an empty string to remove previously-defined tax rates. postInvoiceitemsInvoiceitemRequestBodyTaxRates :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants), -- | unit_amount: The integer unit amount in %s of the charge to be applied to the upcoming invoice. This unit_amount will be multiplied by the quantity to get the full amount. If you want to apply a credit to the customer\'s account, pass a negative unit_amount. postInvoiceitemsInvoiceitemRequestBodyUnitAmount :: (GHC.Maybe.Maybe GHC.Types.Int), -- | unit_amount_decimal: Same as \`unit_amount\`, but accepts a decimal value in %s with at most 12 decimal places. Only one of \`unit_amount\` and \`unit_amount_decimal\` can be set. postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBody where toJSON obj = Data.Aeson.Types.Internal.object ("amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyAmount obj : "description" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDescription obj : "discountable" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscountable obj : "discounts" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts obj : "expand" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyExpand obj : "metadata" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyMetadata obj : "period" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod obj : "price" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPrice obj : "price_data" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData obj : "quantity" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyQuantity obj : "tax_rates" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyTaxRates obj : "unit_amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyUnitAmount obj : "unit_amount_decimal" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyAmount obj) GHC.Base.<> (("description" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDescription obj) GHC.Base.<> (("discountable" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscountable obj) GHC.Base.<> (("discounts" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts obj) GHC.Base.<> (("expand" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyExpand obj) GHC.Base.<> (("metadata" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyMetadata obj) GHC.Base.<> (("period" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod obj) GHC.Base.<> (("price" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPrice obj) GHC.Base.<> (("price_data" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData obj) GHC.Base.<> (("quantity" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyQuantity obj) GHC.Base.<> (("tax_rates" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyTaxRates obj) GHC.Base.<> (("unit_amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyUnitAmount obj) GHC.Base.<> ("unit_amount_decimal" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal obj))))))))))))) instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBody where parseJSON = Data.Aeson.Types.FromJSON.withObject "PostInvoiceitemsInvoiceitemRequestBody" (\obj -> ((((((((((((GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBody GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "description")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discountable")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discounts")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "expand")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "metadata")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "period")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "price")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "price_data")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "quantity")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_rates")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount_decimal")) -- | Create a new 'PostInvoiceitemsInvoiceitemRequestBody' with all required fields. mkPostInvoiceitemsInvoiceitemRequestBody :: PostInvoiceitemsInvoiceitemRequestBody mkPostInvoiceitemsInvoiceitemRequestBody = PostInvoiceitemsInvoiceitemRequestBody { postInvoiceitemsInvoiceitemRequestBodyAmount = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyDescription = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyDiscountable = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyDiscounts = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyExpand = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyMetadata = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyPeriod = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyPrice = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyPriceData = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyQuantity = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyTaxRates = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyUnitAmount = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal = GHC.Maybe.Nothing } -- | Defines the object schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.discounts.anyOf.items@ in the specification. data PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 = PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 { -- | coupon -- -- Constraints: -- -- * Maximum length of 5000 postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon :: (GHC.Maybe.Maybe Data.Text.Internal.Text), -- | discount -- -- Constraints: -- -- * Maximum length of 5000 postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 where toJSON obj = Data.Aeson.Types.Internal.object ("coupon" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon obj : "discount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("coupon" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon obj) GHC.Base.<> ("discount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount obj)) instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 where parseJSON = Data.Aeson.Types.FromJSON.withObject "PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1" (\obj -> (GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "coupon")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "discount")) -- | Create a new 'PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1' with all required fields. mkPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 mkPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 = PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 { postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount = GHC.Maybe.Nothing } -- | Defines the oneOf schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.discounts.anyOf@ in the specification. -- -- The coupons & existing discounts which apply to the invoice item or invoice line item. Item discounts are applied before invoice discounts. Pass an empty string to remove previously-defined discounts. data PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants = -- | Represents the JSON value @""@ PostInvoiceitemsInvoiceitemRequestBodyDiscounts'EmptyString | PostInvoiceitemsInvoiceitemRequestBodyDiscounts'ListTPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 ([PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]) deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants where toJSON (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'ListTPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'EmptyString) = "" instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants where parseJSON val = if | val GHC.Classes.== "" -> GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyDiscounts'EmptyString | GHC.Base.otherwise -> case (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'ListTPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 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 -- | Defines the oneOf schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.metadata.anyOf@ in the specification. -- -- 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. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to \`metadata\`. data PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants = -- | Represents the JSON value @""@ PostInvoiceitemsInvoiceitemRequestBodyMetadata'EmptyString | PostInvoiceitemsInvoiceitemRequestBodyMetadata'Object Data.Aeson.Types.Internal.Object deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants where toJSON (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Object a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (PostInvoiceitemsInvoiceitemRequestBodyMetadata'EmptyString) = "" instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants where parseJSON val = if | val GHC.Classes.== "" -> GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyMetadata'EmptyString | GHC.Base.otherwise -> case (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Object 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 -- | Defines the object schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.period@ in the specification. -- -- The period associated with this invoice item. data PostInvoiceitemsInvoiceitemRequestBodyPeriod' = PostInvoiceitemsInvoiceitemRequestBodyPeriod' { -- | end postInvoiceitemsInvoiceitemRequestBodyPeriod'End :: GHC.Types.Int, -- | start postInvoiceitemsInvoiceitemRequestBodyPeriod'Start :: GHC.Types.Int } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPeriod' where toJSON obj = Data.Aeson.Types.Internal.object ("end" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod'End obj : "start" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod'Start obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("end" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod'End obj) GHC.Base.<> ("start" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPeriod'Start obj)) instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPeriod' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PostInvoiceitemsInvoiceitemRequestBodyPeriod'" (\obj -> (GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyPeriod' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "end")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "start")) -- | Create a new 'PostInvoiceitemsInvoiceitemRequestBodyPeriod'' with all required fields. mkPostInvoiceitemsInvoiceitemRequestBodyPeriod' :: -- | 'postInvoiceitemsInvoiceitemRequestBodyPeriod'End' GHC.Types.Int -> -- | 'postInvoiceitemsInvoiceitemRequestBodyPeriod'Start' GHC.Types.Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod' mkPostInvoiceitemsInvoiceitemRequestBodyPeriod' postInvoiceitemsInvoiceitemRequestBodyPeriod'End postInvoiceitemsInvoiceitemRequestBodyPeriod'Start = PostInvoiceitemsInvoiceitemRequestBodyPeriod' { postInvoiceitemsInvoiceitemRequestBodyPeriod'End = postInvoiceitemsInvoiceitemRequestBodyPeriod'End, postInvoiceitemsInvoiceitemRequestBodyPeriod'Start = postInvoiceitemsInvoiceitemRequestBodyPeriod'Start } -- | Defines the object schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.price_data@ in the specification. -- -- Data used to generate a new [Price](https:\/\/stripe.com\/docs\/api\/prices) object inline. data PostInvoiceitemsInvoiceitemRequestBodyPriceData' = PostInvoiceitemsInvoiceitemRequestBodyPriceData' { -- | currency postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency :: Data.Text.Internal.Text, -- | product -- -- Constraints: -- -- * Maximum length of 5000 postInvoiceitemsInvoiceitemRequestBodyPriceData'Product :: Data.Text.Internal.Text, -- | tax_behavior postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'), -- | unit_amount postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount :: (GHC.Maybe.Maybe GHC.Types.Int), -- | unit_amount_decimal postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text) } deriving ( GHC.Show.Show, GHC.Classes.Eq ) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData' where toJSON obj = Data.Aeson.Types.Internal.object ("currency" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency obj : "product" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'Product obj : "tax_behavior" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior obj : "unit_amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount obj : "unit_amount_decimal" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal obj : GHC.Base.mempty) toEncoding obj = Data.Aeson.Encoding.Internal.pairs (("currency" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency obj) GHC.Base.<> (("product" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'Product obj) GHC.Base.<> (("tax_behavior" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior obj) GHC.Base.<> (("unit_amount" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount obj) GHC.Base.<> ("unit_amount_decimal" Data.Aeson.Types.ToJSON..= postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal obj))))) instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData' where parseJSON = Data.Aeson.Types.FromJSON.withObject "PostInvoiceitemsInvoiceitemRequestBodyPriceData'" (\obj -> ((((GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyPriceData' GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "currency")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..: "product")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "tax_behavior")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount")) GHC.Base.<*> (obj Data.Aeson.Types.FromJSON..:? "unit_amount_decimal")) -- | Create a new 'PostInvoiceitemsInvoiceitemRequestBodyPriceData'' with all required fields. mkPostInvoiceitemsInvoiceitemRequestBodyPriceData' :: -- | 'postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency' Data.Text.Internal.Text -> -- | 'postInvoiceitemsInvoiceitemRequestBodyPriceData'Product' Data.Text.Internal.Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData' mkPostInvoiceitemsInvoiceitemRequestBodyPriceData' postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency postInvoiceitemsInvoiceitemRequestBodyPriceData'Product = PostInvoiceitemsInvoiceitemRequestBodyPriceData' { postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency = postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency, postInvoiceitemsInvoiceitemRequestBodyPriceData'Product = postInvoiceitemsInvoiceitemRequestBodyPriceData'Product, postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount = GHC.Maybe.Nothing, postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal = GHC.Maybe.Nothing } -- | Defines the enum schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.price_data.properties.tax_behavior@ in the specification. data PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior' = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification. PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'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. PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Typed Data.Text.Internal.Text | -- | Represents the JSON value @"exclusive"@ PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumExclusive | -- | Represents the JSON value @"inclusive"@ PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumInclusive | -- | Represents the JSON value @"unspecified"@ PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumUnspecified deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior' where toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Other val) = val toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Typed val) = Data.Aeson.Types.ToJSON.toJSON val toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumExclusive) = "exclusive" toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumInclusive) = "inclusive" toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumUnspecified) = "unspecified" instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior' where parseJSON val = GHC.Base.pure ( if | val GHC.Classes.== "exclusive" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumExclusive | val GHC.Classes.== "inclusive" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumInclusive | val GHC.Classes.== "unspecified" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumUnspecified | GHC.Base.otherwise -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Other val ) -- | Defines the oneOf schema located at @paths.\/v1\/invoiceitems\/{invoiceitem}.POST.requestBody.content.application\/x-www-form-urlencoded.schema.properties.tax_rates.anyOf@ in the specification. -- -- The tax rates which apply to the invoice item. When set, the \`default_tax_rates\` on the invoice do not apply to this invoice item. Pass an empty string to remove previously-defined tax rates. data PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants = -- | Represents the JSON value @""@ PostInvoiceitemsInvoiceitemRequestBodyTaxRates'EmptyString | PostInvoiceitemsInvoiceitemRequestBodyTaxRates'ListTText ([Data.Text.Internal.Text]) deriving (GHC.Show.Show, GHC.Classes.Eq) instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants where toJSON (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'ListTText a) = Data.Aeson.Types.ToJSON.toJSON a toJSON (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'EmptyString) = "" instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants where parseJSON val = if | val GHC.Classes.== "" -> GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyTaxRates'EmptyString | GHC.Base.otherwise -> case (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'ListTText 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 -- | Represents a response of the operation 'postInvoiceitemsInvoiceitem'. -- -- The response constructor is chosen by the status code of the response. If no case matches (no specific case for the response code, no range case, no default case), 'PostInvoiceitemsInvoiceitemResponseError' is used. data PostInvoiceitemsInvoiceitemResponse = -- | Means either no matching case available or a parse error PostInvoiceitemsInvoiceitemResponseError GHC.Base.String | -- | Successful response. PostInvoiceitemsInvoiceitemResponse200 Invoiceitem | -- | Error response. PostInvoiceitemsInvoiceitemResponseDefault Error deriving (GHC.Show.Show, GHC.Classes.Eq)