{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the types generated from the schema AddOnCreate
module RecurlyClient.Types.AddOnCreate where

import qualified Control.Monad.Fail
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString
import qualified Data.ByteString as Data.ByteString.Internal
import qualified Data.Foldable
import qualified Data.Functor
import qualified Data.Maybe
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text as Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified RecurlyClient.Common
import RecurlyClient.TypeAlias
import {-# SOURCE #-} RecurlyClient.Types.AddOnPricing
import {-# SOURCE #-} RecurlyClient.Types.PercentageTiersByCurrency
import {-# SOURCE #-} RecurlyClient.Types.Tier
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

{- | Defines the object schema located at @components.schemas.AddOnCreate@ in the specification.

Full add-on details.
-}
data AddOnCreate = AddOnCreate
    { AddOnCreate -> Maybe Text
addOnCreateAccounting_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ accounting_code: Accounting code for invoice line items for this add-on. If no value is provided, it defaults to add-on\'s code. If \`item_code\`\/\`item_id\` is part of the request then \`accounting_code\` must be absent.
    --
    -- Constraints:
    --
    -- * Maximum length of 20
    -- * Must match pattern \'\/^[a-z0-9_+-]+\$\/\'
    , AddOnCreate -> Maybe AddOnCreateAdd_on_type
addOnCreateAdd_on_type :: (GHC.Maybe.Maybe AddOnCreateAdd_on_type)
    -- ^ add_on_type: Whether the add-on type is fixed, or usage-based.
    , AddOnCreate -> Maybe Int
addOnCreateAvalara_service_type :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ avalara_service_type: Used by Avalara for Communications taxes. The transaction type in combination with the service type describe how the add-on is taxed. Refer to [the documentation](https:\/\/help.avalara.com\/AvaTax_for_Communications\/Tax_Calculation\/AvaTax_for_Communications_Tax_Engine\/Mapping_Resources\/TM_00115_AFC_Modules_Corresponding_Transaction_Types) for more available t\/s types. If an \`Item\` is associated to the \`AddOn\`, then the \`avalara_service_type\` must be absent.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , AddOnCreate -> Maybe Int
addOnCreateAvalara_transaction_type :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ avalara_transaction_type: Used by Avalara for Communications taxes. The transaction type in combination with the service type describe how the add-on is taxed. Refer to [the documentation](https:\/\/help.avalara.com\/AvaTax_for_Communications\/Tax_Calculation\/AvaTax_for_Communications_Tax_Engine\/Mapping_Resources\/TM_00115_AFC_Modules_Corresponding_Transaction_Types) for more available t\/s types. If an \`Item\` is associated to the \`AddOn\`, then the \`avalara_transaction_type\` must be absent.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , AddOnCreate -> Text
addOnCreateCode :: Data.Text.Internal.Text
    -- ^ code: The unique identifier for the add-on within its plan. If \`item_code\`\/\`item_id\` is part of the request then \`code\` must be absent. If \`item_code\`\/\`item_id\` is not present \`code\` is required.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    , AddOnCreate -> Maybe (NonEmpty AddOnPricing)
addOnCreateCurrencies :: (GHC.Maybe.Maybe (GHC.Base.NonEmpty AddOnPricing))
    -- ^ currencies: * If \`item_code\`\/\`item_id\` is part of the request and the item
    -- has a default currency, then \`currencies\` is optional. If the item does
    -- not have a default currency, then \`currencies\` is required. If \`item_code\`\/\`item_id\`
    -- is not present \`currencies\` is required.
    -- * If the add-on\'s \`tier_type\` is \`tiered\`, \`volume\`, or \`stairstep\`,
    -- then \`currencies\` must be absent.
    -- * Must be absent if \`add_on_type\` is \`usage\` and \`usage_type\` is \`percentage\`.
    --
    --
    -- Constraints:
    --
    -- * Must have a minimum of 1 items
    , AddOnCreate -> Maybe Int
addOnCreateDefault_quantity :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ default_quantity: Default quantity for the hosted pages.
    , AddOnCreate -> Maybe Bool
addOnCreateDisplay_quantity :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ display_quantity: Determines if the quantity field is displayed on the hosted pages for the add-on.
    , AddOnCreate -> Maybe Text
addOnCreateItem_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ item_code: Unique code to identify an item. Available when the \`Credit Invoices\` feature is enabled. If \`item_id\` and \`item_code\` are both present, \`item_id\` will be used.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    -- * Must match pattern \'\/^[a-z0-9_+-]+\$\/\'
    , AddOnCreate -> Maybe Text
addOnCreateItem_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ item_id: System-generated unique identifier for an item. Available when the \`Credit Invoices\` feature is enabled. If \`item_id\` and \`item_code\` are both present, \`item_id\` will be used.
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe Text
addOnCreateLiability_gl_account_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ liability_gl_account_id: The ID of a general ledger account. General ledger accounts are
    -- only accessible as a part of the Recurly RevRec Standard and
    -- Recurly RevRec Advanced features.
    --
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ measured_unit_id: System-generated unique identifier for a measured unit to be associated with the add-on. Either \`measured_unit_id\` or \`measured_unit_name\` are required when \`add_on_type\` is \`usage\`. If \`measured_unit_id\` and \`measured_unit_name\` are both present, \`measured_unit_id\` will be used.
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_name :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ measured_unit_name: Name of a measured unit to be associated with the add-on. Either \`measured_unit_id\` or \`measured_unit_name\` are required when \`add_on_type\` is \`usage\`. If \`measured_unit_id\` and \`measured_unit_name\` are both present, \`measured_unit_id\` will be used.
    , AddOnCreate -> Text
addOnCreateName :: Data.Text.Internal.Text
    -- ^ name: Describes your add-on and will appear in subscribers\' invoices. If \`item_code\`\/\`item_id\` is part of the request then \`name\` must be absent. If \`item_code\`\/\`item_id\` is not present \`name\` is required.
    --
    -- Constraints:
    --
    -- * Maximum length of 255
    , AddOnCreate -> Maybe Bool
addOnCreateOptional :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ optional: Whether the add-on is optional for the customer to include in their purchase on the hosted payment page. If false, the add-on will be included when a subscription is created through the Recurly UI. However, the add-on will not be included when a subscription is created through the API.
    , AddOnCreate -> Maybe [PercentageTiersByCurrency]
addOnCreatePercentage_tiers :: (GHC.Maybe.Maybe [PercentageTiersByCurrency])
    -- ^ percentage_tiers: Array of objects which must have at least one set of tiers
    -- per currency and the currency code. The tier_type must be \`volume\` or \`tiered\`,
    -- if not, it must be absent. There must be one tier without an \`ending_amount\` value
    -- which represents the final tier. This feature is currently in development and
    -- requires approval and enablement, please contact support.
    , AddOnCreate -> Maybe Text
addOnCreatePerformance_obligation_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ performance_obligation_id: The ID of a performance obligation. Performance obligations are
    -- only accessible as a part of the Recurly RevRec Standard and
    -- Recurly RevRec Advanced features.
    --
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe Text
addOnCreatePlan_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ plan_id
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe Text
addOnCreateRevenue_gl_account_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ revenue_gl_account_id: The ID of a general ledger account. General ledger accounts are
    -- only accessible as a part of the Recurly RevRec Standard and
    -- Recurly RevRec Advanced features.
    --
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , AddOnCreate -> Maybe AddOnCreateRevenue_schedule_type
addOnCreateRevenue_schedule_type :: (GHC.Maybe.Maybe AddOnCreateRevenue_schedule_type)
    -- ^ revenue_schedule_type: When this add-on is invoiced, the line item will use this revenue schedule. If \`item_code\`\/\`item_id\` is part of the request then \`revenue_schedule_type\` must be absent in the request as the value will be set from the item.
    , AddOnCreate -> Maybe Text
addOnCreateTax_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ tax_code: Optional field used by Avalara, Vertex, and Recurly\'s In-the-Box tax solution to determine taxation rules. You can pass in specific tax codes using any of these tax integrations. For Recurly\'s In-the-Box tax offering you can also choose to instead use simple values of \`unknown\`, \`physical\`, or \`digital\` tax codes. If \`item_code\`\/\`item_id\` is part of the request then \`tax_code\` must be absent.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    , AddOnCreate -> Maybe AddOnCreateTier_type
addOnCreateTier_type :: (GHC.Maybe.Maybe AddOnCreateTier_type)
    -- ^ tier_type: The pricing model for the add-on.  For more information,
    -- [click here](https:\/\/docs.recurly.com\/docs\/billing-models\#section-quantity-based). See our
    -- [Guide](https:\/\/recurly.com\/developers\/guides\/item-addon-guide.html) for an overview of how
    -- to configure quantity-based pricing models.
    , AddOnCreate -> Maybe [Tier]
addOnCreateTiers :: (GHC.Maybe.Maybe [Tier])
    -- ^ tiers: If the tier_type is \`flat\`, then \`tiers\` must be absent. The \`tiers\` object
    -- must include one to many tiers with \`ending_quantity\` and \`unit_amount\` for
    -- the desired \`currencies\`. There must be one tier without an \`ending_quantity\` value
    -- which represents the final tier.
    , AddOnCreate -> Maybe AddOnCreateUsage_calculation_type
addOnCreateUsage_calculation_type :: (GHC.Maybe.Maybe AddOnCreateUsage_calculation_type)
    -- ^ usage_calculation_type: The type of calculation to be employed for an add-on.  Cumulative billing will sum all usage records created in the current billing cycle.  Last-in-period billing will apply only the most recent usage record in the billing period.  If no value is specified, cumulative billing will be used.
    , AddOnCreate -> Maybe Float
addOnCreateUsage_percentage :: (GHC.Maybe.Maybe GHC.Types.Float)
    -- ^ usage_percentage: The percentage taken of the monetary amount of usage tracked. This can be up to 4 decimal places. A value between 0.0 and 100.0. Required if \`add_on_type\` is usage, \`tier_type\` is \`flat\` and \`usage_type\` is percentage. Must be omitted otherwise.
    , AddOnCreate -> Maybe AddOnCreateUsage_timeframe
addOnCreateUsage_timeframe :: (GHC.Maybe.Maybe AddOnCreateUsage_timeframe)
    -- ^ usage_timeframe: The time at which usage totals are reset for billing purposes.
    -- Allows for \`tiered\` add-ons to accumulate usage over the course of multiple
    -- billing periods.
    , AddOnCreate -> Maybe AddOnCreateUsage_type
addOnCreateUsage_type :: (GHC.Maybe.Maybe AddOnCreateUsage_type)
    -- ^ usage_type: Type of usage, required if \`add_on_type\` is \`usage\`. See our
    -- [Guide](https:\/\/recurly.com\/developers\/guides\/usage-based-billing-guide.html) for an
    -- overview of how to configure usage add-ons.
    }
    deriving
        ( Int -> AddOnCreate -> ShowS
[AddOnCreate] -> ShowS
AddOnCreate -> String
(Int -> AddOnCreate -> ShowS)
-> (AddOnCreate -> String)
-> ([AddOnCreate] -> ShowS)
-> Show AddOnCreate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreate -> ShowS
showsPrec :: Int -> AddOnCreate -> ShowS
$cshow :: AddOnCreate -> String
show :: AddOnCreate -> String
$cshowList :: [AddOnCreate] -> ShowS
showList :: [AddOnCreate] -> ShowS
GHC.Show.Show
        , AddOnCreate -> AddOnCreate -> Bool
(AddOnCreate -> AddOnCreate -> Bool)
-> (AddOnCreate -> AddOnCreate -> Bool) -> Eq AddOnCreate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreate -> AddOnCreate -> Bool
== :: AddOnCreate -> AddOnCreate -> Bool
$c/= :: AddOnCreate -> AddOnCreate -> Bool
/= :: AddOnCreate -> AddOnCreate -> Bool
GHC.Classes.Eq
        )

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreate where
    toJSON :: AddOnCreate -> Value
toJSON AddOnCreate
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object ([[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"accounting_code" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateAccounting_code AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateAdd_on_type -> [Pair])
-> Maybe AddOnCreateAdd_on_type
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateAdd_on_type -> Pair)
-> AddOnCreateAdd_on_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"add_on_type" Key -> AddOnCreateAdd_on_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateAdd_on_type
addOnCreateAdd_on_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Int -> [Pair]) -> Maybe Int -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Int -> Pair) -> Int -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"avalara_service_type" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateAvalara_service_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Int -> [Pair]) -> Maybe Int -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Int -> Pair) -> Int -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"avalara_transaction_type" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateAvalara_transaction_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Key
"code" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..= AddOnCreate -> Text
addOnCreateCode AddOnCreate
obj] [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (NonEmpty AddOnPricing -> [Pair])
-> Maybe (NonEmpty AddOnPricing)
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (NonEmpty AddOnPricing -> Pair)
-> NonEmpty AddOnPricing
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"currencies" Key -> NonEmpty AddOnPricing -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe (NonEmpty AddOnPricing)
addOnCreateCurrencies AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Int -> [Pair]) -> Maybe Int -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Int -> Pair) -> Int -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"default_quantity" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateDefault_quantity AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Bool -> [Pair]) -> Maybe Bool -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Bool -> Pair) -> Bool -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"display_quantity" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Bool
addOnCreateDisplay_quantity AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"item_code" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateItem_code AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"item_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateItem_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"liability_gl_account_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateLiability_gl_account_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"measured_unit_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"measured_unit_name" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_name AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Key
"name" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..= AddOnCreate -> Text
addOnCreateName AddOnCreate
obj] [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Bool -> [Pair]) -> Maybe Bool -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Bool -> Pair) -> Bool -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"optional" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Bool
addOnCreateOptional AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([PercentageTiersByCurrency] -> [Pair])
-> Maybe [PercentageTiersByCurrency]
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> ([PercentageTiersByCurrency] -> Pair)
-> [PercentageTiersByCurrency]
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"percentage_tiers" Key -> [PercentageTiersByCurrency] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe [PercentageTiersByCurrency]
addOnCreatePercentage_tiers AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"performance_obligation_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreatePerformance_obligation_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"plan_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreatePlan_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_gl_account_id" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateRevenue_gl_account_id AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateRevenue_schedule_type -> [Pair])
-> Maybe AddOnCreateRevenue_schedule_type
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateRevenue_schedule_type -> Pair)
-> AddOnCreateRevenue_schedule_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_schedule_type" Key -> AddOnCreateRevenue_schedule_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateRevenue_schedule_type
addOnCreateRevenue_schedule_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Text -> [Pair]) -> Maybe Text -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Text -> Pair) -> Text -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tax_code" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateTax_code AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateTier_type -> [Pair])
-> Maybe AddOnCreateTier_type
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateTier_type -> Pair) -> AddOnCreateTier_type -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tier_type" Key -> AddOnCreateTier_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateTier_type
addOnCreateTier_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> ([Tier] -> [Pair]) -> Maybe [Tier] -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> ([Tier] -> Pair) -> [Tier] -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tiers" Key -> [Tier] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe [Tier]
addOnCreateTiers AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateUsage_calculation_type -> [Pair])
-> Maybe AddOnCreateUsage_calculation_type
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateUsage_calculation_type -> Pair)
-> AddOnCreateUsage_calculation_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_calculation_type" Key -> AddOnCreateUsage_calculation_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_calculation_type
addOnCreateUsage_calculation_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (Float -> [Pair]) -> Maybe Float -> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair]) -> (Float -> Pair) -> Float -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_percentage" Key -> Float -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Float
addOnCreateUsage_percentage AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateUsage_timeframe -> [Pair])
-> Maybe AddOnCreateUsage_timeframe
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateUsage_timeframe -> Pair)
-> AddOnCreateUsage_timeframe
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_timeframe" Key -> AddOnCreateUsage_timeframe -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_timeframe
addOnCreateUsage_timeframe AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (AddOnCreateUsage_type -> [Pair])
-> Maybe AddOnCreateUsage_type
-> [Pair]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Pair]
forall a. Monoid a => a
GHC.Base.mempty (Pair -> [Pair]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Pair -> [Pair])
-> (AddOnCreateUsage_type -> Pair)
-> AddOnCreateUsage_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_type" Key -> AddOnCreateUsage_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_type
addOnCreateUsage_type AddOnCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [[Pair]]
forall a. Monoid a => a
GHC.Base.mempty))
    toEncoding :: AddOnCreate -> Encoding
toEncoding AddOnCreate
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ([Series] -> Series
forall a. Monoid a => [a] -> a
GHC.Base.mconcat ([[Series]] -> [Series]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"accounting_code" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateAccounting_code AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateAdd_on_type -> [Series])
-> Maybe AddOnCreateAdd_on_type
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateAdd_on_type -> Series)
-> AddOnCreateAdd_on_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"add_on_type" Key -> AddOnCreateAdd_on_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateAdd_on_type
addOnCreateAdd_on_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Int -> [Series]) -> Maybe Int -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Int -> Series) -> Int -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"avalara_service_type" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateAvalara_service_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Int -> [Series]) -> Maybe Int -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Int -> Series) -> Int -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"avalara_transaction_type" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateAvalara_transaction_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Key
"code" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..= AddOnCreate -> Text
addOnCreateCode AddOnCreate
obj] [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (NonEmpty AddOnPricing -> [Series])
-> Maybe (NonEmpty AddOnPricing)
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (NonEmpty AddOnPricing -> Series)
-> NonEmpty AddOnPricing
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"currencies" Key -> NonEmpty AddOnPricing -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe (NonEmpty AddOnPricing)
addOnCreateCurrencies AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Int -> [Series]) -> Maybe Int -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Int -> Series) -> Int -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"default_quantity" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Int
addOnCreateDefault_quantity AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Bool -> [Series]) -> Maybe Bool -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Bool -> Series) -> Bool -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"display_quantity" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Bool
addOnCreateDisplay_quantity AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"item_code" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateItem_code AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"item_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateItem_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"liability_gl_account_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateLiability_gl_account_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"measured_unit_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"measured_unit_name" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateMeasured_unit_name AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Key
"name" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..= AddOnCreate -> Text
addOnCreateName AddOnCreate
obj] [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Bool -> [Series]) -> Maybe Bool -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Bool -> Series) -> Bool -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"optional" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Bool
addOnCreateOptional AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([PercentageTiersByCurrency] -> [Series])
-> Maybe [PercentageTiersByCurrency]
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> ([PercentageTiersByCurrency] -> Series)
-> [PercentageTiersByCurrency]
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"percentage_tiers" Key -> [PercentageTiersByCurrency] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe [PercentageTiersByCurrency]
addOnCreatePercentage_tiers AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"performance_obligation_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreatePerformance_obligation_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"plan_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreatePlan_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_gl_account_id" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateRevenue_gl_account_id AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateRevenue_schedule_type -> [Series])
-> Maybe AddOnCreateRevenue_schedule_type
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateRevenue_schedule_type -> Series)
-> AddOnCreateRevenue_schedule_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_schedule_type" Key -> AddOnCreateRevenue_schedule_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateRevenue_schedule_type
addOnCreateRevenue_schedule_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Text -> [Series]) -> Maybe Text -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Text -> Series) -> Text -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tax_code" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Text
addOnCreateTax_code AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateTier_type -> [Series])
-> Maybe AddOnCreateTier_type
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateTier_type -> Series)
-> AddOnCreateTier_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tier_type" Key -> AddOnCreateTier_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateTier_type
addOnCreateTier_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> ([Tier] -> [Series]) -> Maybe [Tier] -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> ([Tier] -> Series) -> [Tier] -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"tiers" Key -> [Tier] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe [Tier]
addOnCreateTiers AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateUsage_calculation_type -> [Series])
-> Maybe AddOnCreateUsage_calculation_type
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateUsage_calculation_type -> Series)
-> AddOnCreateUsage_calculation_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_calculation_type" Key -> AddOnCreateUsage_calculation_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_calculation_type
addOnCreateUsage_calculation_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series] -> (Float -> [Series]) -> Maybe Float -> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series]) -> (Float -> Series) -> Float -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_percentage" Key -> Float -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe Float
addOnCreateUsage_percentage AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateUsage_timeframe -> [Series])
-> Maybe AddOnCreateUsage_timeframe
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateUsage_timeframe -> Series)
-> AddOnCreateUsage_timeframe
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_timeframe" Key -> AddOnCreateUsage_timeframe -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_timeframe
addOnCreateUsage_timeframe AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (AddOnCreateUsage_type -> [Series])
-> Maybe AddOnCreateUsage_type
-> [Series]
forall b a. b -> (a -> b) -> Maybe a -> b
Data.Maybe.maybe [Series]
forall a. Monoid a => a
GHC.Base.mempty (Series -> [Series]
forall a. a -> [a]
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure (Series -> [Series])
-> (AddOnCreateUsage_type -> Series)
-> AddOnCreateUsage_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"usage_type" Key -> AddOnCreateUsage_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (AddOnCreate -> Maybe AddOnCreateUsage_type
addOnCreateUsage_type AddOnCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [[Series]]
forall a. Monoid a => a
GHC.Base.mempty)))
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreate where
    parseJSON :: Value -> Parser AddOnCreate
parseJSON = String
-> (Object -> Parser AddOnCreate) -> Value -> Parser AddOnCreate
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"AddOnCreate" (\Object
obj -> (((((((((((((((((((((((((((Maybe Text
 -> Maybe AddOnCreateAdd_on_type
 -> Maybe Int
 -> Maybe Int
 -> Text
 -> Maybe (NonEmpty AddOnPricing)
 -> Maybe Int
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Text
 -> Maybe Bool
 -> Maybe [PercentageTiersByCurrency]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe AddOnCreateRevenue_schedule_type
 -> Maybe Text
 -> Maybe AddOnCreateTier_type
 -> Maybe [Tier]
 -> Maybe AddOnCreateUsage_calculation_type
 -> Maybe Float
 -> Maybe AddOnCreateUsage_timeframe
 -> Maybe AddOnCreateUsage_type
 -> AddOnCreate)
-> Parser
     (Maybe Text
      -> Maybe AddOnCreateAdd_on_type
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe AddOnCreateAdd_on_type
-> Maybe Int
-> Maybe Int
-> Text
-> Maybe (NonEmpty AddOnPricing)
-> Maybe Int
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Text
-> Maybe Bool
-> Maybe [PercentageTiersByCurrency]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe AddOnCreateRevenue_schedule_type
-> Maybe Text
-> Maybe AddOnCreateTier_type
-> Maybe [Tier]
-> Maybe AddOnCreateUsage_calculation_type
-> Maybe Float
-> Maybe AddOnCreateUsage_timeframe
-> Maybe AddOnCreateUsage_type
-> AddOnCreate
AddOnCreate Parser
  (Maybe Text
   -> Maybe AddOnCreateAdd_on_type
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe AddOnCreateAdd_on_type
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"accounting_code")) Parser
  (Maybe AddOnCreateAdd_on_type
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe AddOnCreateAdd_on_type)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Text
      -> Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateAdd_on_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"add_on_type")) Parser
  (Maybe Int
   -> Maybe Int
   -> Text
   -> Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Text
      -> Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"avalara_service_type")) Parser
  (Maybe Int
   -> Text
   -> Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Int)
-> Parser
     (Text
      -> Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"avalara_transaction_type")) Parser
  (Text
   -> Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser Text
-> Parser
     (Maybe (NonEmpty AddOnPricing)
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
Data.Aeson.Types.FromJSON..: Key
"code")) Parser
  (Maybe (NonEmpty AddOnPricing)
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe (NonEmpty AddOnPricing))
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe (NonEmpty AddOnPricing))
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"currencies")) Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"default_quantity")) Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"display_quantity")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"item_code")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"item_id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"liability_gl_account_id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"measured_unit_id")) Parser
  (Maybe Text
   -> Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"measured_unit_name")) Parser
  (Text
   -> Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser Text
-> Parser
     (Maybe Bool
      -> Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser Text
forall a. FromJSON a => Object -> Key -> Parser a
Data.Aeson.Types.FromJSON..: Key
"name")) Parser
  (Maybe Bool
   -> Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [PercentageTiersByCurrency]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"optional")) Parser
  (Maybe [PercentageTiersByCurrency]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe [PercentageTiersByCurrency])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe [PercentageTiersByCurrency])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"percentage_tiers")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"performance_obligation_id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"plan_id")) Parser
  (Maybe Text
   -> Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe AddOnCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"revenue_gl_account_id")) Parser
  (Maybe AddOnCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe AddOnCreateRevenue_schedule_type)
-> Parser
     (Maybe Text
      -> Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateRevenue_schedule_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"revenue_schedule_type")) Parser
  (Maybe Text
   -> Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe AddOnCreateTier_type
      -> Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"tax_code")) Parser
  (Maybe AddOnCreateTier_type
   -> Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe AddOnCreateTier_type)
-> Parser
     (Maybe [Tier]
      -> Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateTier_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"tier_type")) Parser
  (Maybe [Tier]
   -> Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe [Tier])
-> Parser
     (Maybe AddOnCreateUsage_calculation_type
      -> Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe [Tier])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"tiers")) Parser
  (Maybe AddOnCreateUsage_calculation_type
   -> Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe AddOnCreateUsage_calculation_type)
-> Parser
     (Maybe Float
      -> Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type
      -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateUsage_calculation_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"usage_calculation_type")) Parser
  (Maybe Float
   -> Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type
   -> AddOnCreate)
-> Parser (Maybe Float)
-> Parser
     (Maybe AddOnCreateUsage_timeframe
      -> Maybe AddOnCreateUsage_type -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe Float)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"usage_percentage")) Parser
  (Maybe AddOnCreateUsage_timeframe
   -> Maybe AddOnCreateUsage_type -> AddOnCreate)
-> Parser (Maybe AddOnCreateUsage_timeframe)
-> Parser (Maybe AddOnCreateUsage_type -> AddOnCreate)
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateUsage_timeframe)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"usage_timeframe")) Parser (Maybe AddOnCreateUsage_type -> AddOnCreate)
-> Parser (Maybe AddOnCreateUsage_type) -> Parser AddOnCreate
forall a b. Parser (a -> b) -> Parser a -> Parser b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Key -> Parser (Maybe AddOnCreateUsage_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"usage_type"))

-- | Create a new 'AddOnCreate' with all required fields.
mkAddOnCreate ::
    -- | 'addOnCreateCode'
    Data.Text.Internal.Text ->
    -- | 'addOnCreateName'
    Data.Text.Internal.Text ->
    AddOnCreate
mkAddOnCreate :: Text -> Text -> AddOnCreate
mkAddOnCreate Text
addOnCreateCode Text
addOnCreateName =
    AddOnCreate
        { addOnCreateAccounting_code :: Maybe Text
addOnCreateAccounting_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateAdd_on_type :: Maybe AddOnCreateAdd_on_type
addOnCreateAdd_on_type = Maybe AddOnCreateAdd_on_type
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateAvalara_service_type :: Maybe Int
addOnCreateAvalara_service_type = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateAvalara_transaction_type :: Maybe Int
addOnCreateAvalara_transaction_type = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateCode :: Text
addOnCreateCode = Text
addOnCreateCode
        , addOnCreateCurrencies :: Maybe (NonEmpty AddOnPricing)
addOnCreateCurrencies = Maybe (NonEmpty AddOnPricing)
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateDefault_quantity :: Maybe Int
addOnCreateDefault_quantity = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateDisplay_quantity :: Maybe Bool
addOnCreateDisplay_quantity = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateItem_code :: Maybe Text
addOnCreateItem_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateItem_id :: Maybe Text
addOnCreateItem_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateLiability_gl_account_id :: Maybe Text
addOnCreateLiability_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateMeasured_unit_id :: Maybe Text
addOnCreateMeasured_unit_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateMeasured_unit_name :: Maybe Text
addOnCreateMeasured_unit_name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateName :: Text
addOnCreateName = Text
addOnCreateName
        , addOnCreateOptional :: Maybe Bool
addOnCreateOptional = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreatePercentage_tiers :: Maybe [PercentageTiersByCurrency]
addOnCreatePercentage_tiers = Maybe [PercentageTiersByCurrency]
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreatePerformance_obligation_id :: Maybe Text
addOnCreatePerformance_obligation_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreatePlan_id :: Maybe Text
addOnCreatePlan_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateRevenue_gl_account_id :: Maybe Text
addOnCreateRevenue_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateRevenue_schedule_type :: Maybe AddOnCreateRevenue_schedule_type
addOnCreateRevenue_schedule_type = Maybe AddOnCreateRevenue_schedule_type
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateTax_code :: Maybe Text
addOnCreateTax_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateTier_type :: Maybe AddOnCreateTier_type
addOnCreateTier_type = Maybe AddOnCreateTier_type
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateTiers :: Maybe [Tier]
addOnCreateTiers = Maybe [Tier]
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateUsage_calculation_type :: Maybe AddOnCreateUsage_calculation_type
addOnCreateUsage_calculation_type = Maybe AddOnCreateUsage_calculation_type
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateUsage_percentage :: Maybe Float
addOnCreateUsage_percentage = Maybe Float
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateUsage_timeframe :: Maybe AddOnCreateUsage_timeframe
addOnCreateUsage_timeframe = Maybe AddOnCreateUsage_timeframe
forall a. Maybe a
GHC.Maybe.Nothing
        , addOnCreateUsage_type :: Maybe AddOnCreateUsage_type
addOnCreateUsage_type = Maybe AddOnCreateUsage_type
forall a. Maybe a
GHC.Maybe.Nothing
        }

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.add_on_type@ in the specification.

Whether the add-on type is fixed, or usage-based.
-}
data AddOnCreateAdd_on_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateAdd_on_typeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateAdd_on_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"fixed"@
      AddOnCreateAdd_on_typeEnumFixed
    | -- | Represents the JSON value @"usage"@
      AddOnCreateAdd_on_typeEnumUsage
    deriving (Int -> AddOnCreateAdd_on_type -> ShowS
[AddOnCreateAdd_on_type] -> ShowS
AddOnCreateAdd_on_type -> String
(Int -> AddOnCreateAdd_on_type -> ShowS)
-> (AddOnCreateAdd_on_type -> String)
-> ([AddOnCreateAdd_on_type] -> ShowS)
-> Show AddOnCreateAdd_on_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateAdd_on_type -> ShowS
showsPrec :: Int -> AddOnCreateAdd_on_type -> ShowS
$cshow :: AddOnCreateAdd_on_type -> String
show :: AddOnCreateAdd_on_type -> String
$cshowList :: [AddOnCreateAdd_on_type] -> ShowS
showList :: [AddOnCreateAdd_on_type] -> ShowS
GHC.Show.Show, AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool
(AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool)
-> (AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool)
-> Eq AddOnCreateAdd_on_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool
== :: AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool
$c/= :: AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool
/= :: AddOnCreateAdd_on_type -> AddOnCreateAdd_on_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateAdd_on_type where
    toJSON :: AddOnCreateAdd_on_type -> Value
toJSON (AddOnCreateAdd_on_typeOther Value
val) = Value
val
    toJSON (AddOnCreateAdd_on_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateAdd_on_type
AddOnCreateAdd_on_typeEnumFixed) = Value
"fixed"
    toJSON (AddOnCreateAdd_on_type
AddOnCreateAdd_on_typeEnumUsage) = Value
"usage"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateAdd_on_type where
    parseJSON :: Value -> Parser AddOnCreateAdd_on_type
parseJSON Value
val =
        AddOnCreateAdd_on_type -> Parser AddOnCreateAdd_on_type
forall a. a -> Parser a
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
"fixed" -> AddOnCreateAdd_on_type
AddOnCreateAdd_on_typeEnumFixed
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"usage" -> AddOnCreateAdd_on_type
AddOnCreateAdd_on_typeEnumUsage
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateAdd_on_type
AddOnCreateAdd_on_typeOther Value
val
            )

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.revenue_schedule_type@ in the specification.

When this add-on is invoiced, the line item will use this revenue schedule. If \`item_code\`\/\`item_id\` is part of the request then \`revenue_schedule_type\` must be absent in the request as the value will be set from the item.
-}
data AddOnCreateRevenue_schedule_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateRevenue_schedule_typeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateRevenue_schedule_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"at_range_end"@
      AddOnCreateRevenue_schedule_typeEnumAt_range_end
    | -- | Represents the JSON value @"at_range_start"@
      AddOnCreateRevenue_schedule_typeEnumAt_range_start
    | -- | Represents the JSON value @"evenly"@
      AddOnCreateRevenue_schedule_typeEnumEvenly
    | -- | Represents the JSON value @"never"@
      AddOnCreateRevenue_schedule_typeEnumNever
    deriving (Int -> AddOnCreateRevenue_schedule_type -> ShowS
[AddOnCreateRevenue_schedule_type] -> ShowS
AddOnCreateRevenue_schedule_type -> String
(Int -> AddOnCreateRevenue_schedule_type -> ShowS)
-> (AddOnCreateRevenue_schedule_type -> String)
-> ([AddOnCreateRevenue_schedule_type] -> ShowS)
-> Show AddOnCreateRevenue_schedule_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateRevenue_schedule_type -> ShowS
showsPrec :: Int -> AddOnCreateRevenue_schedule_type -> ShowS
$cshow :: AddOnCreateRevenue_schedule_type -> String
show :: AddOnCreateRevenue_schedule_type -> String
$cshowList :: [AddOnCreateRevenue_schedule_type] -> ShowS
showList :: [AddOnCreateRevenue_schedule_type] -> ShowS
GHC.Show.Show, AddOnCreateRevenue_schedule_type
-> AddOnCreateRevenue_schedule_type -> Bool
(AddOnCreateRevenue_schedule_type
 -> AddOnCreateRevenue_schedule_type -> Bool)
-> (AddOnCreateRevenue_schedule_type
    -> AddOnCreateRevenue_schedule_type -> Bool)
-> Eq AddOnCreateRevenue_schedule_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateRevenue_schedule_type
-> AddOnCreateRevenue_schedule_type -> Bool
== :: AddOnCreateRevenue_schedule_type
-> AddOnCreateRevenue_schedule_type -> Bool
$c/= :: AddOnCreateRevenue_schedule_type
-> AddOnCreateRevenue_schedule_type -> Bool
/= :: AddOnCreateRevenue_schedule_type
-> AddOnCreateRevenue_schedule_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateRevenue_schedule_type where
    toJSON :: AddOnCreateRevenue_schedule_type -> Value
toJSON (AddOnCreateRevenue_schedule_typeOther Value
val) = Value
val
    toJSON (AddOnCreateRevenue_schedule_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumAt_range_end) = Value
"at_range_end"
    toJSON (AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumAt_range_start) = Value
"at_range_start"
    toJSON (AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumEvenly) = Value
"evenly"
    toJSON (AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumNever) = Value
"never"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateRevenue_schedule_type where
    parseJSON :: Value -> Parser AddOnCreateRevenue_schedule_type
parseJSON Value
val =
        AddOnCreateRevenue_schedule_type
-> Parser AddOnCreateRevenue_schedule_type
forall a. a -> Parser a
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
"at_range_end" -> AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumAt_range_end
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"at_range_start" -> AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumAt_range_start
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"evenly" -> AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumEvenly
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"never" -> AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeEnumNever
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateRevenue_schedule_type
AddOnCreateRevenue_schedule_typeOther Value
val
            )

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.tier_type@ in the specification.

The pricing model for the add-on.  For more information,
[click here](https:\/\/docs.recurly.com\/docs\/billing-models\#section-quantity-based). See our
[Guide](https:\/\/recurly.com\/developers\/guides\/item-addon-guide.html) for an overview of how
to configure quantity-based pricing models.
-}
data AddOnCreateTier_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateTier_typeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateTier_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"flat"@
      AddOnCreateTier_typeEnumFlat
    | -- | Represents the JSON value @"tiered"@
      AddOnCreateTier_typeEnumTiered
    | -- | Represents the JSON value @"stairstep"@
      AddOnCreateTier_typeEnumStairstep
    | -- | Represents the JSON value @"volume"@
      AddOnCreateTier_typeEnumVolume
    deriving (Int -> AddOnCreateTier_type -> ShowS
[AddOnCreateTier_type] -> ShowS
AddOnCreateTier_type -> String
(Int -> AddOnCreateTier_type -> ShowS)
-> (AddOnCreateTier_type -> String)
-> ([AddOnCreateTier_type] -> ShowS)
-> Show AddOnCreateTier_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateTier_type -> ShowS
showsPrec :: Int -> AddOnCreateTier_type -> ShowS
$cshow :: AddOnCreateTier_type -> String
show :: AddOnCreateTier_type -> String
$cshowList :: [AddOnCreateTier_type] -> ShowS
showList :: [AddOnCreateTier_type] -> ShowS
GHC.Show.Show, AddOnCreateTier_type -> AddOnCreateTier_type -> Bool
(AddOnCreateTier_type -> AddOnCreateTier_type -> Bool)
-> (AddOnCreateTier_type -> AddOnCreateTier_type -> Bool)
-> Eq AddOnCreateTier_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateTier_type -> AddOnCreateTier_type -> Bool
== :: AddOnCreateTier_type -> AddOnCreateTier_type -> Bool
$c/= :: AddOnCreateTier_type -> AddOnCreateTier_type -> Bool
/= :: AddOnCreateTier_type -> AddOnCreateTier_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateTier_type where
    toJSON :: AddOnCreateTier_type -> Value
toJSON (AddOnCreateTier_typeOther Value
val) = Value
val
    toJSON (AddOnCreateTier_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateTier_type
AddOnCreateTier_typeEnumFlat) = Value
"flat"
    toJSON (AddOnCreateTier_type
AddOnCreateTier_typeEnumTiered) = Value
"tiered"
    toJSON (AddOnCreateTier_type
AddOnCreateTier_typeEnumStairstep) = Value
"stairstep"
    toJSON (AddOnCreateTier_type
AddOnCreateTier_typeEnumVolume) = Value
"volume"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateTier_type where
    parseJSON :: Value -> Parser AddOnCreateTier_type
parseJSON Value
val =
        AddOnCreateTier_type -> Parser AddOnCreateTier_type
forall a. a -> Parser a
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
"flat" -> AddOnCreateTier_type
AddOnCreateTier_typeEnumFlat
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"tiered" -> AddOnCreateTier_type
AddOnCreateTier_typeEnumTiered
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"stairstep" -> AddOnCreateTier_type
AddOnCreateTier_typeEnumStairstep
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"volume" -> AddOnCreateTier_type
AddOnCreateTier_typeEnumVolume
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateTier_type
AddOnCreateTier_typeOther Value
val
            )

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.usage_calculation_type@ in the specification.

The type of calculation to be employed for an add-on.  Cumulative billing will sum all usage records created in the current billing cycle.  Last-in-period billing will apply only the most recent usage record in the billing period.  If no value is specified, cumulative billing will be used.
-}
data AddOnCreateUsage_calculation_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateUsage_calculation_typeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateUsage_calculation_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"cumulative"@
      AddOnCreateUsage_calculation_typeEnumCumulative
    | -- | Represents the JSON value @"last_in_period"@
      AddOnCreateUsage_calculation_typeEnumLast_in_period
    deriving (Int -> AddOnCreateUsage_calculation_type -> ShowS
[AddOnCreateUsage_calculation_type] -> ShowS
AddOnCreateUsage_calculation_type -> String
(Int -> AddOnCreateUsage_calculation_type -> ShowS)
-> (AddOnCreateUsage_calculation_type -> String)
-> ([AddOnCreateUsage_calculation_type] -> ShowS)
-> Show AddOnCreateUsage_calculation_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateUsage_calculation_type -> ShowS
showsPrec :: Int -> AddOnCreateUsage_calculation_type -> ShowS
$cshow :: AddOnCreateUsage_calculation_type -> String
show :: AddOnCreateUsage_calculation_type -> String
$cshowList :: [AddOnCreateUsage_calculation_type] -> ShowS
showList :: [AddOnCreateUsage_calculation_type] -> ShowS
GHC.Show.Show, AddOnCreateUsage_calculation_type
-> AddOnCreateUsage_calculation_type -> Bool
(AddOnCreateUsage_calculation_type
 -> AddOnCreateUsage_calculation_type -> Bool)
-> (AddOnCreateUsage_calculation_type
    -> AddOnCreateUsage_calculation_type -> Bool)
-> Eq AddOnCreateUsage_calculation_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateUsage_calculation_type
-> AddOnCreateUsage_calculation_type -> Bool
== :: AddOnCreateUsage_calculation_type
-> AddOnCreateUsage_calculation_type -> Bool
$c/= :: AddOnCreateUsage_calculation_type
-> AddOnCreateUsage_calculation_type -> Bool
/= :: AddOnCreateUsage_calculation_type
-> AddOnCreateUsage_calculation_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateUsage_calculation_type where
    toJSON :: AddOnCreateUsage_calculation_type -> Value
toJSON (AddOnCreateUsage_calculation_typeOther Value
val) = Value
val
    toJSON (AddOnCreateUsage_calculation_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateUsage_calculation_type
AddOnCreateUsage_calculation_typeEnumCumulative) = Value
"cumulative"
    toJSON (AddOnCreateUsage_calculation_type
AddOnCreateUsage_calculation_typeEnumLast_in_period) = Value
"last_in_period"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateUsage_calculation_type where
    parseJSON :: Value -> Parser AddOnCreateUsage_calculation_type
parseJSON Value
val =
        AddOnCreateUsage_calculation_type
-> Parser AddOnCreateUsage_calculation_type
forall a. a -> Parser a
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
"cumulative" -> AddOnCreateUsage_calculation_type
AddOnCreateUsage_calculation_typeEnumCumulative
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"last_in_period" -> AddOnCreateUsage_calculation_type
AddOnCreateUsage_calculation_typeEnumLast_in_period
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateUsage_calculation_type
AddOnCreateUsage_calculation_typeOther Value
val
            )

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.usage_timeframe@ in the specification.

The time at which usage totals are reset for billing purposes.
Allows for \`tiered\` add-ons to accumulate usage over the course of multiple
billing periods.
-}
data AddOnCreateUsage_timeframe
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateUsage_timeframeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateUsage_timeframeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"billing_period"@
      AddOnCreateUsage_timeframeEnumBilling_period
    | -- | Represents the JSON value @"subscription_term"@
      AddOnCreateUsage_timeframeEnumSubscription_term
    deriving (Int -> AddOnCreateUsage_timeframe -> ShowS
[AddOnCreateUsage_timeframe] -> ShowS
AddOnCreateUsage_timeframe -> String
(Int -> AddOnCreateUsage_timeframe -> ShowS)
-> (AddOnCreateUsage_timeframe -> String)
-> ([AddOnCreateUsage_timeframe] -> ShowS)
-> Show AddOnCreateUsage_timeframe
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateUsage_timeframe -> ShowS
showsPrec :: Int -> AddOnCreateUsage_timeframe -> ShowS
$cshow :: AddOnCreateUsage_timeframe -> String
show :: AddOnCreateUsage_timeframe -> String
$cshowList :: [AddOnCreateUsage_timeframe] -> ShowS
showList :: [AddOnCreateUsage_timeframe] -> ShowS
GHC.Show.Show, AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool
(AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool)
-> (AddOnCreateUsage_timeframe
    -> AddOnCreateUsage_timeframe -> Bool)
-> Eq AddOnCreateUsage_timeframe
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool
== :: AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool
$c/= :: AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool
/= :: AddOnCreateUsage_timeframe -> AddOnCreateUsage_timeframe -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateUsage_timeframe where
    toJSON :: AddOnCreateUsage_timeframe -> Value
toJSON (AddOnCreateUsage_timeframeOther Value
val) = Value
val
    toJSON (AddOnCreateUsage_timeframeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateUsage_timeframe
AddOnCreateUsage_timeframeEnumBilling_period) = Value
"billing_period"
    toJSON (AddOnCreateUsage_timeframe
AddOnCreateUsage_timeframeEnumSubscription_term) = Value
"subscription_term"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateUsage_timeframe where
    parseJSON :: Value -> Parser AddOnCreateUsage_timeframe
parseJSON Value
val =
        AddOnCreateUsage_timeframe -> Parser AddOnCreateUsage_timeframe
forall a. a -> Parser a
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
"billing_period" -> AddOnCreateUsage_timeframe
AddOnCreateUsage_timeframeEnumBilling_period
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"subscription_term" -> AddOnCreateUsage_timeframe
AddOnCreateUsage_timeframeEnumSubscription_term
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateUsage_timeframe
AddOnCreateUsage_timeframeOther Value
val
            )

{- | Defines the enum schema located at @components.schemas.AddOnCreate.properties.usage_type@ in the specification.

Type of usage, required if \`add_on_type\` is \`usage\`. See our
[Guide](https:\/\/recurly.com\/developers\/guides\/usage-based-billing-guide.html) for an
overview of how to configure usage add-ons.
-}
data AddOnCreateUsage_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      AddOnCreateUsage_typeOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      AddOnCreateUsage_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"price"@
      AddOnCreateUsage_typeEnumPrice
    | -- | Represents the JSON value @"percentage"@
      AddOnCreateUsage_typeEnumPercentage
    deriving (Int -> AddOnCreateUsage_type -> ShowS
[AddOnCreateUsage_type] -> ShowS
AddOnCreateUsage_type -> String
(Int -> AddOnCreateUsage_type -> ShowS)
-> (AddOnCreateUsage_type -> String)
-> ([AddOnCreateUsage_type] -> ShowS)
-> Show AddOnCreateUsage_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AddOnCreateUsage_type -> ShowS
showsPrec :: Int -> AddOnCreateUsage_type -> ShowS
$cshow :: AddOnCreateUsage_type -> String
show :: AddOnCreateUsage_type -> String
$cshowList :: [AddOnCreateUsage_type] -> ShowS
showList :: [AddOnCreateUsage_type] -> ShowS
GHC.Show.Show, AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool
(AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool)
-> (AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool)
-> Eq AddOnCreateUsage_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool
== :: AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool
$c/= :: AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool
/= :: AddOnCreateUsage_type -> AddOnCreateUsage_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON AddOnCreateUsage_type where
    toJSON :: AddOnCreateUsage_type -> Value
toJSON (AddOnCreateUsage_typeOther Value
val) = Value
val
    toJSON (AddOnCreateUsage_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (AddOnCreateUsage_type
AddOnCreateUsage_typeEnumPrice) = Value
"price"
    toJSON (AddOnCreateUsage_type
AddOnCreateUsage_typeEnumPercentage) = Value
"percentage"
instance Data.Aeson.Types.FromJSON.FromJSON AddOnCreateUsage_type where
    parseJSON :: Value -> Parser AddOnCreateUsage_type
parseJSON Value
val =
        AddOnCreateUsage_type -> Parser AddOnCreateUsage_type
forall a. a -> Parser a
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
"price" -> AddOnCreateUsage_type
AddOnCreateUsage_typeEnumPrice
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"percentage" -> AddOnCreateUsage_type
AddOnCreateUsage_typeEnumPercentage
                | Bool
GHC.Base.otherwise -> Value -> AddOnCreateUsage_type
AddOnCreateUsage_typeOther Value
val
            )