{-# 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}
--
-- \<p>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.StripeT m (Network.HTTP.Client.Types.Response PostInvoiceitemsInvoiceitemResponse)
postInvoiceitemsInvoiceitem :: Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBody
-> StripeT m (Response PostInvoiceitemsInvoiceitemResponse)
postInvoiceitemsInvoiceitem
  Text
invoiceitem
  Maybe PostInvoiceitemsInvoiceitemRequestBody
body =
    (Response ByteString
 -> Response PostInvoiceitemsInvoiceitemResponse)
-> StripeT m (Response ByteString)
-> StripeT m (Response PostInvoiceitemsInvoiceitemResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
      ( \Response ByteString
response_0 ->
          (ByteString -> PostInvoiceitemsInvoiceitemResponse)
-> Response ByteString
-> Response PostInvoiceitemsInvoiceitemResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
            ( (String -> PostInvoiceitemsInvoiceitemResponse)
-> (PostInvoiceitemsInvoiceitemResponse
    -> PostInvoiceitemsInvoiceitemResponse)
-> Either String PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> PostInvoiceitemsInvoiceitemResponse
PostInvoiceitemsInvoiceitemResponseError PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse
forall a. a -> a
GHC.Base.id
                (Either String PostInvoiceitemsInvoiceitemResponse
 -> PostInvoiceitemsInvoiceitemResponse)
-> (ByteString
    -> Either String PostInvoiceitemsInvoiceitemResponse)
-> ByteString
-> PostInvoiceitemsInvoiceitemResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. ( \Response ByteString
response ByteString
body ->
                               if
                                   | (\Status
status_1 -> Status -> Int
Network.HTTP.Types.Status.statusCode Status
status_1 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Int
200) (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                     Invoiceitem -> PostInvoiceitemsInvoiceitemResponse
PostInvoiceitemsInvoiceitemResponse200
                                       (Invoiceitem -> PostInvoiceitemsInvoiceitemResponse)
-> Either String Invoiceitem
-> Either String PostInvoiceitemsInvoiceitemResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Invoiceitem
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                            Data.Either.Either
                                                              GHC.Base.String
                                                              Invoiceitem
                                                        )
                                   | Bool -> Status -> Bool
forall a b. a -> b -> a
GHC.Base.const Bool
GHC.Types.True (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                     Error -> PostInvoiceitemsInvoiceitemResponse
PostInvoiceitemsInvoiceitemResponseDefault
                                       (Error -> PostInvoiceitemsInvoiceitemResponse)
-> Either String Error
-> Either String PostInvoiceitemsInvoiceitemResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Error
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                            Data.Either.Either
                                                              GHC.Base.String
                                                              Error
                                                        )
                                   | Bool
GHC.Base.otherwise -> String -> Either String PostInvoiceitemsInvoiceitemResponse
forall a b. a -> Either a b
Data.Either.Left String
"Missing default response type"
                           )
                  Response ByteString
response_0
            )
            Response ByteString
response_0
      )
      (Text
-> Text
-> [QueryParameter]
-> Maybe PostInvoiceitemsInvoiceitemRequestBody
-> RequestBodyEncoding
-> StripeT m (Response ByteString)
forall (m :: * -> *) body.
(MonadHTTP m, ToJSON body) =>
Text
-> Text
-> [QueryParameter]
-> Maybe body
-> RequestBodyEncoding
-> StripeT m (Response ByteString)
StripeAPI.Common.doBodyCallWithConfigurationM (Text -> Text
Data.Text.toUpper (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
GHC.Base.$ String -> Text
Data.Text.pack String
"POST") (String -> Text
Data.Text.pack (String
"/v1/invoiceitems/" String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ (ByteString -> String
Data.ByteString.Char8.unpack (Bool -> ByteString -> ByteString
Network.HTTP.Types.URI.urlEncode Bool
GHC.Types.True (ByteString -> ByteString) -> ByteString -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ (String -> ByteString
Data.ByteString.Char8.pack (String -> ByteString) -> String -> ByteString
forall a b. (a -> b) -> a -> b
GHC.Base.$ Text -> String
forall a. StringifyModel a => a -> String
StripeAPI.Common.stringifyModel Text
invoiceitem)) String -> String -> String
forall a. [a] -> [a] -> [a]
GHC.Base.++ String
""))) [QueryParameter]
forall a. Monoid a => a
GHC.Base.mempty Maybe PostInvoiceitemsInvoiceitemRequestBody
body RequestBodyEncoding
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.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
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
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
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.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Bool
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.
    PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
postInvoiceitemsInvoiceitemRequestBodyDiscounts :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants),
    -- | expand: Specifies which fields in the response should be expanded.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe [Text]
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\`.
    PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
postInvoiceitemsInvoiceitemRequestBodyMetadata :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants),
    -- | period: The period associated with this invoice item.
    PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
postInvoiceitemsInvoiceitemRequestBodyPeriod :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'),
    -- | price: The ID of the price object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
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.
    PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
postInvoiceitemsInvoiceitemRequestBodyPriceData :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'),
    -- | quantity: Non-negative integer. The quantity of units for the invoice item.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
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.
    PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
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.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
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.
    PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> PostInvoiceitemsInvoiceitemRequestBody -> String -> String
[PostInvoiceitemsInvoiceitemRequestBody] -> String -> String
PostInvoiceitemsInvoiceitemRequestBody -> String
(Int -> PostInvoiceitemsInvoiceitemRequestBody -> String -> String)
-> (PostInvoiceitemsInvoiceitemRequestBody -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBody] -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBody
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBody] -> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBody] -> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBody -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBody -> String
showsPrec :: Int -> PostInvoiceitemsInvoiceitemRequestBody -> String -> String
$cshowsPrec :: Int -> PostInvoiceitemsInvoiceitemRequestBody -> String -> String
GHC.Show.Show,
      PostInvoiceitemsInvoiceitemRequestBody
-> PostInvoiceitemsInvoiceitemRequestBody -> Bool
(PostInvoiceitemsInvoiceitemRequestBody
 -> PostInvoiceitemsInvoiceitemRequestBody -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBody
    -> PostInvoiceitemsInvoiceitemRequestBody -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBody
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBody
-> PostInvoiceitemsInvoiceitemRequestBody -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBody
-> PostInvoiceitemsInvoiceitemRequestBody -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBody
-> PostInvoiceitemsInvoiceitemRequestBody -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBody
-> PostInvoiceitemsInvoiceitemRequestBody -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBody where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBody -> Value
toJSON PostInvoiceitemsInvoiceitemRequestBody
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyAmount PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"description" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDescription PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"discountable" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Bool
postInvoiceitemsInvoiceitemRequestBodyDiscountable PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"discounts" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
postInvoiceitemsInvoiceitemRequestBodyDiscounts PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"expand" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe [Text]
postInvoiceitemsInvoiceitemRequestBodyExpand PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
postInvoiceitemsInvoiceitemRequestBodyMetadata PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"period" Text -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
postInvoiceitemsInvoiceitemRequestBodyPeriod PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"price" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPrice PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"price_data" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
postInvoiceitemsInvoiceitemRequestBodyPriceData PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"quantity" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyQuantity PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_rates" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
postInvoiceitemsInvoiceitemRequestBodyTaxRates PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyUnitAmount PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal PostInvoiceitemsInvoiceitemRequestBody
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostInvoiceitemsInvoiceitemRequestBody -> Encoding
toEncoding PostInvoiceitemsInvoiceitemRequestBody
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyAmount PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"description" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDescription PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"discountable" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Bool
postInvoiceitemsInvoiceitemRequestBodyDiscountable PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"discounts" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
postInvoiceitemsInvoiceitemRequestBodyDiscounts PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"expand" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe [Text]
postInvoiceitemsInvoiceitemRequestBodyExpand PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
postInvoiceitemsInvoiceitemRequestBodyMetadata PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"period" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
postInvoiceitemsInvoiceitemRequestBodyPeriod PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"price" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPrice PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"price_data" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
postInvoiceitemsInvoiceitemRequestBodyPriceData PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"quantity" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyQuantity PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tax_rates" Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
postInvoiceitemsInvoiceitemRequestBodyTaxRates PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyUnitAmount PostInvoiceitemsInvoiceitemRequestBody
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"unit_amount_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBody -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal PostInvoiceitemsInvoiceitemRequestBody
obj)))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBody where
  parseJSON :: Value -> Parser PostInvoiceitemsInvoiceitemRequestBody
parseJSON = String
-> (Object -> Parser PostInvoiceitemsInvoiceitemRequestBody)
-> Value
-> Parser PostInvoiceitemsInvoiceitemRequestBody
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostInvoiceitemsInvoiceitemRequestBody" (\Object
obj -> (((((((((((((Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
 -> Maybe [Text]
 -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
 -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
 -> Maybe Text
 -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
 -> Maybe Int
 -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
 -> Maybe Int
 -> Maybe Text
 -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
      -> Maybe [Text]
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Maybe [Text]
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> Maybe Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> Maybe Int
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Maybe Int
-> Maybe Text
-> PostInvoiceitemsInvoiceitemRequestBody
PostInvoiceitemsInvoiceitemRequestBody Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
   -> Maybe [Text]
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
      -> Maybe [Text]
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"amount")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
   -> Maybe [Text]
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
      -> Maybe [Text]
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"description")) Parser
  (Maybe Bool
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
   -> Maybe [Text]
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Bool)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
      -> Maybe [Text]
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"discountable")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
   -> Maybe [Text]
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants)
-> Parser
     (Maybe [Text]
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"discounts")) Parser
  (Maybe [Text]
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe [Text])
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"expand")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
      -> Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
   -> Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod')
-> Parser
     (Maybe Text
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"period")) Parser
  (Maybe Text
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Text)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
      -> Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"price")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
   -> Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser
     (Maybe Int
      -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"price_data")) Parser
  (Maybe Int
   -> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Int)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBody)
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
"quantity")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants)
-> Parser
     (Maybe Int -> Maybe Text -> PostInvoiceitemsInvoiceitemRequestBody)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_rates")) Parser
  (Maybe Int -> Maybe Text -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Int)
-> Parser (Maybe Text -> PostInvoiceitemsInvoiceitemRequestBody)
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
"unit_amount")) Parser (Maybe Text -> PostInvoiceitemsInvoiceitemRequestBody)
-> Parser (Maybe Text)
-> Parser PostInvoiceitemsInvoiceitemRequestBody
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_amount_decimal"))

-- | Create a new 'PostInvoiceitemsInvoiceitemRequestBody' with all required fields.
mkPostInvoiceitemsInvoiceitemRequestBody :: PostInvoiceitemsInvoiceitemRequestBody
mkPostInvoiceitemsInvoiceitemRequestBody :: PostInvoiceitemsInvoiceitemRequestBody
mkPostInvoiceitemsInvoiceitemRequestBody =
  PostInvoiceitemsInvoiceitemRequestBody :: Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Maybe [Text]
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> Maybe Text
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> Maybe Int
-> Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Maybe Int
-> Maybe Text
-> PostInvoiceitemsInvoiceitemRequestBody
PostInvoiceitemsInvoiceitemRequestBody
    { postInvoiceitemsInvoiceitemRequestBodyAmount :: Maybe Int
postInvoiceitemsInvoiceitemRequestBodyAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyDescription :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyDiscountable :: Maybe Bool
postInvoiceitemsInvoiceitemRequestBodyDiscountable = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyDiscounts :: Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
postInvoiceitemsInvoiceitemRequestBodyDiscounts = Maybe PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyExpand :: Maybe [Text]
postInvoiceitemsInvoiceitemRequestBodyExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyMetadata :: Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
postInvoiceitemsInvoiceitemRequestBodyMetadata = Maybe PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyPeriod :: Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
postInvoiceitemsInvoiceitemRequestBodyPeriod = Maybe PostInvoiceitemsInvoiceitemRequestBodyPeriod'
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyPrice :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPrice = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyPriceData :: Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
postInvoiceitemsInvoiceitemRequestBodyPriceData = Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyQuantity :: Maybe Int
postInvoiceitemsInvoiceitemRequestBodyQuantity = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyTaxRates :: Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
postInvoiceitemsInvoiceitemRequestBodyTaxRates = Maybe PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyUnitAmount :: Maybe Int
postInvoiceitemsInvoiceitemRequestBodyUnitAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyUnitAmountDecimal = Maybe Text
forall a. Maybe a
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'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | discount
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
    -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> String
-> String
GHC.Show.Show,
      PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
 -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
    -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Value
toJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"coupon" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"discount" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 -> Encoding
toEncoding PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"coupon" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"discount" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
-> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
obj))

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

-- | Create a new 'PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1' with all required fields.
mkPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
mkPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
mkPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 =
  PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 :: Maybe Text
-> Maybe Text
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1
    { postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Coupon = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1Discount = Maybe Text
forall a. Maybe a
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 (Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants]
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
    -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants]
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants]
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants]
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> String
-> String
GHC.Show.Show, PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
 -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
 -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
    -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
    -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants -> Value
toJSON (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'ListTPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
a) = [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
a
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants where
  parseJSON :: Value
-> Parser PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'EmptyString
        | Bool
GHC.Base.otherwise -> case ([PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
-> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
PostInvoiceitemsInvoiceitemRequestBodyDiscounts'ListTPostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1 ([PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
 -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants)
-> Result [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
-> Result PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value
-> Result [PostInvoiceitemsInvoiceitemRequestBodyDiscounts'OneOf1]
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
a -> PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostInvoiceitemsInvoiceitemRequestBodyDiscounts'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
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 (Int
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants]
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
    -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants]
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants]
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants]
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> String
-> String
GHC.Show.Show, PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
 -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
    -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants -> Value
toJSON (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Object Object
a) = Object -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Object
a
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
PostInvoiceitemsInvoiceitemRequestBodyMetadata'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants where
  parseJSON :: Value
-> Parser PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
PostInvoiceitemsInvoiceitemRequestBodyMetadata'EmptyString
        | Bool
GHC.Base.otherwise -> case (Object -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
PostInvoiceitemsInvoiceitemRequestBodyMetadata'Object (Object -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants)
-> Result Object
-> Result PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Object
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
a -> PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostInvoiceitemsInvoiceitemRequestBodyMetadata'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
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' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End :: GHC.Types.Int,
    -- | start
    PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'Start :: GHC.Types.Int
  }
  deriving
    ( Int
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyPeriod'] -> String -> String
PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyPeriod']
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyPeriod'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyPeriod'] -> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyPeriod'] -> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> String
-> String
GHC.Show.Show,
      PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyPeriod'
 -> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyPeriod'
    -> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyPeriod'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyPeriod'
-> PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPeriod' where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Value
toJSON PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"end" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"start" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'Start PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Encoding
toEncoding PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"end" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"start" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPeriod' -> Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'Start PostInvoiceitemsInvoiceitemRequestBodyPeriod'
obj))

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPeriod' where
  parseJSON :: Value -> Parser PostInvoiceitemsInvoiceitemRequestBodyPeriod'
parseJSON = String
-> (Object -> Parser PostInvoiceitemsInvoiceitemRequestBodyPeriod')
-> Value
-> Parser PostInvoiceitemsInvoiceitemRequestBodyPeriod'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostInvoiceitemsInvoiceitemRequestBodyPeriod'" (\Object
obj -> ((Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod')
-> Parser
     (Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
PostInvoiceitemsInvoiceitemRequestBodyPeriod' Parser
  (Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod')
-> Parser Int
-> Parser (Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"end")) Parser (Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod')
-> Parser Int
-> Parser PostInvoiceitemsInvoiceitemRequestBodyPeriod'
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"start"))

-- | Create a new 'PostInvoiceitemsInvoiceitemRequestBodyPeriod'' with all required fields.
mkPostInvoiceitemsInvoiceitemRequestBodyPeriod' ::
  -- | 'postInvoiceitemsInvoiceitemRequestBodyPeriod'End'
  GHC.Types.Int ->
  -- | 'postInvoiceitemsInvoiceitemRequestBodyPeriod'Start'
  GHC.Types.Int ->
  PostInvoiceitemsInvoiceitemRequestBodyPeriod'
mkPostInvoiceitemsInvoiceitemRequestBodyPeriod' :: Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
mkPostInvoiceitemsInvoiceitemRequestBodyPeriod' Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'Start =
  PostInvoiceitemsInvoiceitemRequestBodyPeriod' :: Int -> Int -> PostInvoiceitemsInvoiceitemRequestBodyPeriod'
PostInvoiceitemsInvoiceitemRequestBodyPeriod'
    { postInvoiceitemsInvoiceitemRequestBodyPeriod'End :: Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End = Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'End,
      postInvoiceitemsInvoiceitemRequestBodyPeriod'Start :: Int
postInvoiceitemsInvoiceitemRequestBodyPeriod'Start = Int
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' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency :: Data.Text.Internal.Text,
    -- | product
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product :: Data.Text.Internal.Text,
    -- | tax_behavior
    PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior :: (GHC.Maybe.Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'),
    -- | unit_amount
    PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | unit_amount_decimal
    PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyPriceData']
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyPriceData']
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyPriceData'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyPriceData']
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyPriceData']
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> String
-> String
GHC.Show.Show,
      PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyPriceData'
 -> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyPriceData'
    -> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyPriceData'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData' where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Value
toJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"product" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tax_behavior" Text
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"unit_amount_decimal" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Encoding
toEncoding PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"product" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"tax_behavior" Text
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData'
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"unit_amount" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Int
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"unit_amount_decimal" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= PostInvoiceitemsInvoiceitemRequestBodyPriceData' -> Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal PostInvoiceitemsInvoiceitemRequestBodyPriceData'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData' where
  parseJSON :: Value -> Parser PostInvoiceitemsInvoiceitemRequestBodyPriceData'
parseJSON = String
-> (Object
    -> Parser PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Value
-> Parser PostInvoiceitemsInvoiceitemRequestBodyPriceData'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PostInvoiceitemsInvoiceitemRequestBodyPriceData'" (\Object
obj -> (((((Text
 -> Text
 -> Maybe
      PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
 -> Maybe Int
 -> Maybe Text
 -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser
     (Text
      -> Text
      -> Maybe
           PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Text
-> Text
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
PostInvoiceitemsInvoiceitemRequestBodyPriceData' Parser
  (Text
   -> Text
   -> Maybe
        PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser Text
-> Parser
     (Text
      -> Maybe
           PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"currency")) Parser
  (Text
   -> Maybe
        PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser Text
-> Parser
     (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
      -> Maybe Int
      -> Maybe Text
      -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"product")) Parser
  (Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
   -> Maybe Int
   -> Maybe Text
   -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser
     (Maybe
        PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior')
-> Parser
     (Maybe Int
      -> Maybe Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser
     (Maybe
        PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"tax_behavior")) Parser
  (Maybe Int
   -> Maybe Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser (Maybe Int)
-> Parser
     (Maybe Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
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
"unit_amount")) Parser
  (Maybe Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData')
-> Parser (Maybe Text)
-> Parser PostInvoiceitemsInvoiceitemRequestBodyPriceData'
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_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' :: Text -> Text -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
mkPostInvoiceitemsInvoiceitemRequestBodyPriceData' Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product =
  PostInvoiceitemsInvoiceitemRequestBodyPriceData' :: Text
-> Text
-> Maybe
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Maybe Int
-> Maybe Text
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'
    { postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency :: Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency = Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Currency,
      postInvoiceitemsInvoiceitemRequestBodyPriceData'Product :: Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product = Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'Product,
      postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior :: Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
postInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior = Maybe PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount :: Maybe Int
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmount = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal :: Maybe Text
postInvoiceitemsInvoiceitemRequestBodyPriceData'UnitAmountDecimal = Maybe Text
forall a. Maybe a
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 (Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior']
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
    -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior']
    -> String -> String)
-> Show
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior']
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior']
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> String
-> String
GHC.Show.Show, PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Bool
(PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
 -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
 -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
    -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
    -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior' where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Value
toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Other Value
val) = Value
val
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Typed Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumExclusive) = Value
"exclusive"
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumInclusive) = Value
"inclusive"
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumUnspecified) = Value
"unspecified"

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior' where
  parseJSON :: Value
-> Parser
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
parseJSON Value
val =
    PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
-> Parser
     PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure
      ( if
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"exclusive" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumExclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"inclusive" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumInclusive
            | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"unspecified" -> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'EnumUnspecified
            | Bool
GHC.Base.otherwise -> Value
-> PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'
PostInvoiceitemsInvoiceitemRequestBodyPriceData'TaxBehavior'Other Value
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 (Int
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> String
-> String
[PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants]
-> String -> String
PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> String
(Int
 -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
 -> String
 -> String)
-> (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
    -> String)
-> ([PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants]
    -> String -> String)
-> Show PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants]
-> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants]
-> String -> String
show :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> String
$cshow :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> String
showsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> String
-> String
$cshowsPrec :: Int
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> String
-> String
GHC.Show.Show, PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool
(PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
 -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool)
-> (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
    -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool)
-> Eq PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool
$c/= :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool
== :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool
$c== :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants where
  toJSON :: PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants -> Value
toJSON (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'ListTText [Text]
a) = [Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON [Text]
a
  toJSON (PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
PostInvoiceitemsInvoiceitemRequestBodyTaxRates'EmptyString) = Value
""

instance Data.Aeson.Types.FromJSON.FromJSON PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants where
  parseJSON :: Value
-> Parser PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
parseJSON Value
val =
    if
        | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"" -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
PostInvoiceitemsInvoiceitemRequestBodyTaxRates'EmptyString
        | Bool
GHC.Base.otherwise -> case ([Text] -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
PostInvoiceitemsInvoiceitemRequestBodyTaxRates'ListTText ([Text] -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants)
-> Result [Text]
-> Result PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result [Text]
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Result PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String
-> Result PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched" of
          Data.Aeson.Types.Internal.Success PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
a -> PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
-> Parser PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
a
          Data.Aeson.Types.Internal.Error String
a -> String
-> Parser PostInvoiceitemsInvoiceitemRequestBodyTaxRates'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
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 (Int -> PostInvoiceitemsInvoiceitemResponse -> String -> String
[PostInvoiceitemsInvoiceitemResponse] -> String -> String
PostInvoiceitemsInvoiceitemResponse -> String
(Int -> PostInvoiceitemsInvoiceitemResponse -> String -> String)
-> (PostInvoiceitemsInvoiceitemResponse -> String)
-> ([PostInvoiceitemsInvoiceitemResponse] -> String -> String)
-> Show PostInvoiceitemsInvoiceitemResponse
forall a.
(Int -> a -> String -> String)
-> (a -> String) -> ([a] -> String -> String) -> Show a
showList :: [PostInvoiceitemsInvoiceitemResponse] -> String -> String
$cshowList :: [PostInvoiceitemsInvoiceitemResponse] -> String -> String
show :: PostInvoiceitemsInvoiceitemResponse -> String
$cshow :: PostInvoiceitemsInvoiceitemResponse -> String
showsPrec :: Int -> PostInvoiceitemsInvoiceitemResponse -> String -> String
$cshowsPrec :: Int -> PostInvoiceitemsInvoiceitemResponse -> String -> String
GHC.Show.Show, PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse -> Bool
(PostInvoiceitemsInvoiceitemResponse
 -> PostInvoiceitemsInvoiceitemResponse -> Bool)
-> (PostInvoiceitemsInvoiceitemResponse
    -> PostInvoiceitemsInvoiceitemResponse -> Bool)
-> Eq PostInvoiceitemsInvoiceitemResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse -> Bool
$c/= :: PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse -> Bool
== :: PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse -> Bool
$c== :: PostInvoiceitemsInvoiceitemResponse
-> PostInvoiceitemsInvoiceitemResponse -> Bool
GHC.Classes.Eq)