{-# 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 PlanCreate
module RecurlyClient.Types.PlanCreate 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.AddOnCreate
import {-# SOURCE #-} RecurlyClient.Types.PlanHostedPages
import {-# SOURCE #-} RecurlyClient.Types.PlanPricing
import {-# SOURCE #-} RecurlyClient.Types.PlanRampInterval
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.PlanCreate@ in the specification.
data PlanCreate = PlanCreate
    { PlanCreate -> Maybe Text
planCreateAccounting_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ accounting_code: Accounting code for invoice line items for the plan. If no value is provided, it defaults to plan\'s code.
    --
    -- Constraints:
    --
    -- * Maximum length of 20
    -- * Must match pattern \'\/^[a-z0-9_+-]+\$\/\'
    , PlanCreate -> Maybe [AddOnCreate]
planCreateAdd_ons :: (GHC.Maybe.Maybe [AddOnCreate])
    -- ^ add_ons
    , PlanCreate -> Maybe Bool
planCreateAllow_any_item_on_subscriptions :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ allow_any_item_on_subscriptions: Used to determine whether items can be assigned as add-ons to individual subscriptions.
    -- If \`true\`, items can be assigned as add-ons to individual subscription add-ons.
    -- If \`false\`, only plan add-ons can be used.
    , PlanCreate -> Maybe Bool
planCreateAuto_renew :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ auto_renew: Subscriptions will automatically inherit this value once they are active. If \`auto_renew\` is \`true\`, then a subscription will automatically renew its term at renewal. If \`auto_renew\` is \`false\`, then a subscription will expire at the end of its term. \`auto_renew\` can be overridden on the subscription record itself.
    , PlanCreate -> Maybe Int
planCreateAvalara_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 plan 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.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , PlanCreate -> Maybe Int
planCreateAvalara_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 plan 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.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , PlanCreate -> Text
planCreateCode :: Data.Text.Internal.Text
    -- ^ code: Unique code to identify the plan. This is used in Hosted Payment Page URLs and in the invoice exports.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    -- * Must match pattern \'\/^[a-z0-9_+-]+\$\/i\'
    , PlanCreate -> NonEmpty PlanPricing
planCreateCurrencies :: (GHC.Base.NonEmpty PlanPricing)
    -- ^ currencies
    --
    -- Constraints:
    --
    -- * Must have a minimum of 1 items
    , PlanCreate -> Maybe CustomFields
planCreateCustom_fields :: (GHC.Maybe.Maybe CustomFields)
    -- ^ custom_fields: The custom fields will only be altered when they are included in a request. Sending an empty array will not remove any existing values. To remove a field send the name with a null or empty value.
    , PlanCreate -> Maybe Text
planCreateDescription :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ description: Optional description, not displayed.
    , PlanCreate -> Maybe Text
planCreateDunning_campaign_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ dunning_campaign_id: Unique ID to identify a dunning campaign. Used to specify if a non-default dunning campaign should be assigned to this plan. For sites without multiple dunning campaigns enabled, the default dunning campaign will always be used.
    , PlanCreate -> Maybe PlanHostedPages
planCreateHosted_pages :: (GHC.Maybe.Maybe PlanHostedPages)
    -- ^ hosted_pages
    , PlanCreate -> Maybe Int
planCreateInterval_length :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ interval_length: Length of the plan\'s billing interval in \`interval_unit\`.
    --
    -- Constraints:
    --
    -- * Minimum  of 1.0
    , PlanCreate -> Maybe PlanCreateInterval_unit
planCreateInterval_unit :: (GHC.Maybe.Maybe PlanCreateInterval_unit)
    -- ^ interval_unit: Unit for the plan\'s billing interval.
    , PlanCreate -> Maybe Text
planCreateLiability_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
    , PlanCreate -> Text
planCreateName :: Data.Text.Internal.Text
    -- ^ name: This name describes your plan and will appear on the Hosted Payment Page and the subscriber\'s invoice.
    --
    -- Constraints:
    --
    -- * Maximum length of 255
    , PlanCreate -> Maybe Text
planCreatePerformance_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
    , PlanCreate -> Maybe PlanCreatePricing_model
planCreatePricing_model :: (GHC.Maybe.Maybe PlanCreatePricing_model)
    -- ^ pricing_model: A fixed pricing model has the same price for each billing period.
    -- A ramp pricing model defines a set of Ramp Intervals, where a subscription changes price on
    -- a specified cadence of billing periods. The price change could be an increase or decrease.
    , PlanCreate -> Maybe [PlanRampInterval]
planCreateRamp_intervals :: (GHC.Maybe.Maybe [PlanRampInterval])
    -- ^ ramp_intervals
    , PlanCreate -> Maybe Text
planCreateRevenue_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
    , PlanCreate -> Maybe PlanCreateRevenue_schedule_type
planCreateRevenue_schedule_type :: (GHC.Maybe.Maybe PlanCreateRevenue_schedule_type)
    -- ^ revenue_schedule_type
    , PlanCreate -> Maybe Text
planCreateSetup_fee_accounting_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ setup_fee_accounting_code: Accounting code for invoice line items for the plan\'s setup fee. If no value is provided, it defaults to plan\'s accounting code.
    --
    -- Constraints:
    --
    -- * Maximum length of 20
    -- * Must match pattern \'\/^[a-z0-9_+-]+\$\/\'
    , PlanCreate -> Maybe Text
planCreateSetup_fee_liability_gl_account_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ setup_fee_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
    , PlanCreate -> Maybe Text
planCreateSetup_fee_performance_obligation_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ setup_fee_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
    , PlanCreate -> Maybe Text
planCreateSetup_fee_revenue_gl_account_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ setup_fee_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
    , PlanCreate -> Maybe PlanCreateSetup_fee_revenue_schedule_type
planCreateSetup_fee_revenue_schedule_type :: (GHC.Maybe.Maybe PlanCreateSetup_fee_revenue_schedule_type)
    -- ^ setup_fee_revenue_schedule_type
    , PlanCreate -> Maybe Text
planCreateTax_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.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    , PlanCreate -> Maybe Bool
planCreateTax_exempt :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ tax_exempt: \`true\` exempts tax on the plan, \`false\` applies tax on the plan.
    , PlanCreate -> Maybe Int
planCreateTotal_billing_cycles :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ total_billing_cycles: Automatically terminate plans after a defined number of billing cycles.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , PlanCreate -> Maybe Int
planCreateTrial_length :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ trial_length: Length of plan\'s trial period in \`trial_units\`. \`0\` means \`no trial\`.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , PlanCreate -> Maybe Bool
planCreateTrial_requires_billing_info :: (GHC.Maybe.Maybe GHC.Types.Bool)
    -- ^ trial_requires_billing_info: Allow free trial subscriptions to be created without billing info. Should not be used if billing info is needed for initial invoice due to existing uninvoiced charges or setup fee.
    , PlanCreate -> Maybe PlanCreateTrial_unit
planCreateTrial_unit :: (GHC.Maybe.Maybe PlanCreateTrial_unit)
    -- ^ trial_unit: Units for the plan\'s trial period.
    , PlanCreate -> Maybe Text
planCreateVertex_transaction_type :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ vertex_transaction_type: Used by Vertex for tax calculations. Possible values are \`sale\`, \`rental\`, \`lease\`.
    }
    deriving
        ( Int -> PlanCreate -> ShowS
[PlanCreate] -> ShowS
PlanCreate -> String
(Int -> PlanCreate -> ShowS)
-> (PlanCreate -> String)
-> ([PlanCreate] -> ShowS)
-> Show PlanCreate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreate -> ShowS
showsPrec :: Int -> PlanCreate -> ShowS
$cshow :: PlanCreate -> String
show :: PlanCreate -> String
$cshowList :: [PlanCreate] -> ShowS
showList :: [PlanCreate] -> ShowS
GHC.Show.Show
        , PlanCreate -> PlanCreate -> Bool
(PlanCreate -> PlanCreate -> Bool)
-> (PlanCreate -> PlanCreate -> Bool) -> Eq PlanCreate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreate -> PlanCreate -> Bool
== :: PlanCreate -> PlanCreate -> Bool
$c/= :: PlanCreate -> PlanCreate -> Bool
/= :: PlanCreate -> PlanCreate -> Bool
GHC.Classes.Eq
        )

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreate where
    toJSON :: PlanCreate -> Value
toJSON PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateAccounting_code PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([AddOnCreate] -> [Pair]) -> Maybe [AddOnCreate] -> [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])
-> ([AddOnCreate] -> Pair) -> [AddOnCreate] -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"add_ons" Key -> [AddOnCreate] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe [AddOnCreate]
planCreateAdd_ons PlanCreate
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
"allow_any_item_on_subscriptions" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateAllow_any_item_on_subscriptions PlanCreate
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
"auto_renew" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateAuto_renew PlanCreate
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..=)) (PlanCreate -> Maybe Int
planCreateAvalara_service_type PlanCreate
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..=)) (PlanCreate -> Maybe Int
planCreateAvalara_transaction_type PlanCreate
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..= PlanCreate -> Text
planCreateCode PlanCreate
obj] [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Key
"currencies" Key -> NonEmpty PlanPricing -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..= PlanCreate -> NonEmpty PlanPricing
planCreateCurrencies PlanCreate
obj] [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair] -> (CustomFields -> [Pair]) -> Maybe CustomFields -> [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])
-> (CustomFields -> Pair) -> CustomFields -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"custom_fields" Key -> CustomFields -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe CustomFields
planCreateCustom_fields PlanCreate
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
"description" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Text
planCreateDescription PlanCreate
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
"dunning_campaign_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..=)) (PlanCreate -> Maybe Text
planCreateDunning_campaign_id PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanHostedPages -> [Pair]) -> Maybe PlanHostedPages -> [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])
-> (PlanHostedPages -> Pair) -> PlanHostedPages -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"hosted_pages" Key -> PlanHostedPages -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanHostedPages
planCreateHosted_pages PlanCreate
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
"interval_length" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateInterval_length PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanCreateInterval_unit -> [Pair])
-> Maybe PlanCreateInterval_unit
-> [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])
-> (PlanCreateInterval_unit -> Pair)
-> PlanCreateInterval_unit
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"interval_unit" Key -> PlanCreateInterval_unit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateInterval_unit
planCreateInterval_unit PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateLiability_gl_account_id PlanCreate
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..= PlanCreate -> Text
planCreateName PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreatePerformance_obligation_id PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanCreatePricing_model -> [Pair])
-> Maybe PlanCreatePricing_model
-> [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])
-> (PlanCreatePricing_model -> Pair)
-> PlanCreatePricing_model
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"pricing_model" Key -> PlanCreatePricing_model -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreatePricing_model
planCreatePricing_model PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([PlanRampInterval] -> [Pair])
-> Maybe [PlanRampInterval]
-> [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])
-> ([PlanRampInterval] -> Pair) -> [PlanRampInterval] -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"ramp_intervals" Key -> [PlanRampInterval] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe [PlanRampInterval]
planCreateRamp_intervals PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateRevenue_gl_account_id PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanCreateRevenue_schedule_type -> [Pair])
-> Maybe PlanCreateRevenue_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])
-> (PlanCreateRevenue_schedule_type -> Pair)
-> PlanCreateRevenue_schedule_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_schedule_type" Key -> PlanCreateRevenue_schedule_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateRevenue_schedule_type
planCreateRevenue_schedule_type PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_accounting_code PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_liability_gl_account_id PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_performance_obligation_id PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_revenue_gl_account_id PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanCreateSetup_fee_revenue_schedule_type -> [Pair])
-> Maybe PlanCreateSetup_fee_revenue_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])
-> (PlanCreateSetup_fee_revenue_schedule_type -> Pair)
-> PlanCreateSetup_fee_revenue_schedule_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"setup_fee_revenue_schedule_type" Key -> PlanCreateSetup_fee_revenue_schedule_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateSetup_fee_revenue_schedule_type
planCreateSetup_fee_revenue_schedule_type PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateTax_code PlanCreate
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
"tax_exempt" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateTax_exempt PlanCreate
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
"total_billing_cycles" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateTotal_billing_cycles PlanCreate
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
"trial_length" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateTrial_length PlanCreate
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
"trial_requires_billing_info" Key -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateTrial_requires_billing_info PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PlanCreateTrial_unit -> [Pair])
-> Maybe PlanCreateTrial_unit
-> [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])
-> (PlanCreateTrial_unit -> Pair) -> PlanCreateTrial_unit -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"trial_unit" Key -> PlanCreateTrial_unit -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateTrial_unit
planCreateTrial_unit PlanCreate
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
"vertex_transaction_type" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Text
planCreateVertex_transaction_type PlanCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [[Pair]]
forall a. Monoid a => a
GHC.Base.mempty))
    toEncoding :: PlanCreate -> Encoding
toEncoding PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateAccounting_code PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([AddOnCreate] -> [Series]) -> Maybe [AddOnCreate] -> [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])
-> ([AddOnCreate] -> Series) -> [AddOnCreate] -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"add_ons" Key -> [AddOnCreate] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe [AddOnCreate]
planCreateAdd_ons PlanCreate
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
"allow_any_item_on_subscriptions" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateAllow_any_item_on_subscriptions PlanCreate
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
"auto_renew" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateAuto_renew PlanCreate
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..=)) (PlanCreate -> Maybe Int
planCreateAvalara_service_type PlanCreate
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..=)) (PlanCreate -> Maybe Int
planCreateAvalara_transaction_type PlanCreate
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..= PlanCreate -> Text
planCreateCode PlanCreate
obj] [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Key
"currencies" Key -> NonEmpty PlanPricing -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..= PlanCreate -> NonEmpty PlanPricing
planCreateCurrencies PlanCreate
obj] [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (CustomFields -> [Series]) -> Maybe CustomFields -> [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])
-> (CustomFields -> Series) -> CustomFields -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"custom_fields" Key -> CustomFields -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe CustomFields
planCreateCustom_fields PlanCreate
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
"description" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Text
planCreateDescription PlanCreate
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
"dunning_campaign_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..=)) (PlanCreate -> Maybe Text
planCreateDunning_campaign_id PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanHostedPages -> [Series])
-> Maybe PlanHostedPages
-> [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])
-> (PlanHostedPages -> Series) -> PlanHostedPages -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"hosted_pages" Key -> PlanHostedPages -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanHostedPages
planCreateHosted_pages PlanCreate
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
"interval_length" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateInterval_length PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanCreateInterval_unit -> [Series])
-> Maybe PlanCreateInterval_unit
-> [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])
-> (PlanCreateInterval_unit -> Series)
-> PlanCreateInterval_unit
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"interval_unit" Key -> PlanCreateInterval_unit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateInterval_unit
planCreateInterval_unit PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateLiability_gl_account_id PlanCreate
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..= PlanCreate -> Text
planCreateName PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreatePerformance_obligation_id PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanCreatePricing_model -> [Series])
-> Maybe PlanCreatePricing_model
-> [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])
-> (PlanCreatePricing_model -> Series)
-> PlanCreatePricing_model
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"pricing_model" Key -> PlanCreatePricing_model -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreatePricing_model
planCreatePricing_model PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([PlanRampInterval] -> [Series])
-> Maybe [PlanRampInterval]
-> [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])
-> ([PlanRampInterval] -> Series) -> [PlanRampInterval] -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"ramp_intervals" Key -> [PlanRampInterval] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe [PlanRampInterval]
planCreateRamp_intervals PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateRevenue_gl_account_id PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanCreateRevenue_schedule_type -> [Series])
-> Maybe PlanCreateRevenue_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])
-> (PlanCreateRevenue_schedule_type -> Series)
-> PlanCreateRevenue_schedule_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"revenue_schedule_type" Key -> PlanCreateRevenue_schedule_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateRevenue_schedule_type
planCreateRevenue_schedule_type PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_accounting_code PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_liability_gl_account_id PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_performance_obligation_id PlanCreate
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
"setup_fee_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..=)) (PlanCreate -> Maybe Text
planCreateSetup_fee_revenue_gl_account_id PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanCreateSetup_fee_revenue_schedule_type -> [Series])
-> Maybe PlanCreateSetup_fee_revenue_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])
-> (PlanCreateSetup_fee_revenue_schedule_type -> Series)
-> PlanCreateSetup_fee_revenue_schedule_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"setup_fee_revenue_schedule_type" Key -> PlanCreateSetup_fee_revenue_schedule_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateSetup_fee_revenue_schedule_type
planCreateSetup_fee_revenue_schedule_type PlanCreate
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..=)) (PlanCreate -> Maybe Text
planCreateTax_code PlanCreate
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
"tax_exempt" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateTax_exempt PlanCreate
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
"total_billing_cycles" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateTotal_billing_cycles PlanCreate
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
"trial_length" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Int
planCreateTrial_length PlanCreate
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
"trial_requires_billing_info" Key -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Bool
planCreateTrial_requires_billing_info PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PlanCreateTrial_unit -> [Series])
-> Maybe PlanCreateTrial_unit
-> [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])
-> (PlanCreateTrial_unit -> Series)
-> PlanCreateTrial_unit
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"trial_unit" Key -> PlanCreateTrial_unit -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe PlanCreateTrial_unit
planCreateTrial_unit PlanCreate
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
"vertex_transaction_type" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PlanCreate -> Maybe Text
planCreateVertex_transaction_type PlanCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [[Series]]
forall a. Monoid a => a
GHC.Base.mempty)))
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreate where
    parseJSON :: Value -> Parser PlanCreate
parseJSON = String
-> (Object -> Parser PlanCreate) -> Value -> Parser PlanCreate
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PlanCreate" (\Object
obj -> (((((((((((((((((((((((((((((((((Maybe Text
 -> Maybe [AddOnCreate]
 -> Maybe Bool
 -> Maybe Bool
 -> Maybe Int
 -> Maybe Int
 -> Text
 -> NonEmpty PlanPricing
 -> Maybe CustomFields
 -> Maybe Text
 -> Maybe Text
 -> Maybe PlanHostedPages
 -> Maybe Int
 -> Maybe PlanCreateInterval_unit
 -> Maybe Text
 -> Text
 -> Maybe Text
 -> Maybe PlanCreatePricing_model
 -> Maybe [PlanRampInterval]
 -> Maybe Text
 -> Maybe PlanCreateRevenue_schedule_type
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe PlanCreateSetup_fee_revenue_schedule_type
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Int
 -> Maybe Int
 -> Maybe Bool
 -> Maybe PlanCreateTrial_unit
 -> Maybe Text
 -> PlanCreate)
-> Parser
     (Maybe Text
      -> Maybe [AddOnCreate]
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Text
-> Maybe [AddOnCreate]
-> Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe Int
-> Text
-> NonEmpty PlanPricing
-> Maybe CustomFields
-> Maybe Text
-> Maybe Text
-> Maybe PlanHostedPages
-> Maybe Int
-> Maybe PlanCreateInterval_unit
-> Maybe Text
-> Text
-> Maybe Text
-> Maybe PlanCreatePricing_model
-> Maybe [PlanRampInterval]
-> Maybe Text
-> Maybe PlanCreateRevenue_schedule_type
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe PlanCreateSetup_fee_revenue_schedule_type
-> Maybe Text
-> Maybe Bool
-> Maybe Int
-> Maybe Int
-> Maybe Bool
-> Maybe PlanCreateTrial_unit
-> Maybe Text
-> PlanCreate
PlanCreate Parser
  (Maybe Text
   -> Maybe [AddOnCreate]
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe [AddOnCreate]
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 [AddOnCreate]
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe [AddOnCreate])
-> Parser
     (Maybe Bool
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 [AddOnCreate])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"add_ons")) Parser
  (Maybe Bool
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"allow_any_item_on_subscriptions")) Parser
  (Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Text
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"auto_renew")) Parser
  (Maybe Int
   -> Maybe Int
   -> Text
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Int)
-> Parser
     (Text
      -> NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
   -> NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser Text
-> Parser
     (NonEmpty PlanPricing
      -> Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
  (NonEmpty PlanPricing
   -> Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (NonEmpty PlanPricing)
-> Parser
     (Maybe CustomFields
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 (NonEmpty PlanPricing)
forall a. FromJSON a => Object -> Key -> Parser a
Data.Aeson.Types.FromJSON..: Key
"currencies")) Parser
  (Maybe CustomFields
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe CustomFields)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 CustomFields)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"custom_fields")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"description")) Parser
  (Maybe Text
   -> Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PlanHostedPages
      -> Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"dunning_campaign_id")) Parser
  (Maybe PlanHostedPages
   -> Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe PlanHostedPages)
-> Parser
     (Maybe Int
      -> Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanHostedPages)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"hosted_pages")) Parser
  (Maybe Int
   -> Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe PlanCreateInterval_unit
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"interval_length")) Parser
  (Maybe PlanCreateInterval_unit
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe PlanCreateInterval_unit)
-> Parser
     (Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreateInterval_unit)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"interval_unit")) Parser
  (Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
  (Text
   -> Maybe Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser Text
-> Parser
     (Maybe Text
      -> Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 Text
   -> Maybe PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PlanCreatePricing_model
      -> Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreatePricing_model
   -> Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe PlanCreatePricing_model)
-> Parser
     (Maybe [PlanRampInterval]
      -> Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreatePricing_model)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"pricing_model")) Parser
  (Maybe [PlanRampInterval]
   -> Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe [PlanRampInterval])
-> Parser
     (Maybe Text
      -> Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 [PlanRampInterval])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"ramp_intervals")) Parser
  (Maybe Text
   -> Maybe PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PlanCreateRevenue_schedule_type
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreateRevenue_schedule_type
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe PlanCreateRevenue_schedule_type)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreateRevenue_schedule_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"revenue_schedule_type")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"setup_fee_accounting_code")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"setup_fee_liability_gl_account_id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"setup_fee_performance_obligation_id")) Parser
  (Maybe Text
   -> Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PlanCreateSetup_fee_revenue_schedule_type
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"setup_fee_revenue_gl_account_id")) Parser
  (Maybe PlanCreateSetup_fee_revenue_schedule_type
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe PlanCreateSetup_fee_revenue_schedule_type)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 PlanCreateSetup_fee_revenue_schedule_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"setup_fee_revenue_schedule_type")) Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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 Bool
   -> Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"tax_exempt")) Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe PlanCreateTrial_unit
      -> Maybe Text
      -> PlanCreate)
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
"total_billing_cycles")) Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe PlanCreateTrial_unit
   -> Maybe Text
   -> PlanCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe PlanCreateTrial_unit -> Maybe Text -> PlanCreate)
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
"trial_length")) Parser
  (Maybe Bool
   -> Maybe PlanCreateTrial_unit -> Maybe Text -> PlanCreate)
-> Parser (Maybe Bool)
-> Parser (Maybe PlanCreateTrial_unit -> Maybe Text -> PlanCreate)
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
"trial_requires_billing_info")) Parser (Maybe PlanCreateTrial_unit -> Maybe Text -> PlanCreate)
-> Parser (Maybe PlanCreateTrial_unit)
-> Parser (Maybe Text -> PlanCreate)
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 PlanCreateTrial_unit)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"trial_unit")) Parser (Maybe Text -> PlanCreate)
-> Parser (Maybe Text) -> Parser PlanCreate
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
"vertex_transaction_type"))

-- | Create a new 'PlanCreate' with all required fields.
mkPlanCreate ::
    -- | 'planCreateCode'
    Data.Text.Internal.Text ->
    -- | 'planCreateCurrencies'
    GHC.Base.NonEmpty PlanPricing ->
    -- | 'planCreateName'
    Data.Text.Internal.Text ->
    PlanCreate
mkPlanCreate :: Text -> NonEmpty PlanPricing -> Text -> PlanCreate
mkPlanCreate Text
planCreateCode NonEmpty PlanPricing
planCreateCurrencies Text
planCreateName =
    PlanCreate
        { planCreateAccounting_code :: Maybe Text
planCreateAccounting_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateAdd_ons :: Maybe [AddOnCreate]
planCreateAdd_ons = Maybe [AddOnCreate]
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateAllow_any_item_on_subscriptions :: Maybe Bool
planCreateAllow_any_item_on_subscriptions = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateAuto_renew :: Maybe Bool
planCreateAuto_renew = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateAvalara_service_type :: Maybe Int
planCreateAvalara_service_type = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateAvalara_transaction_type :: Maybe Int
planCreateAvalara_transaction_type = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateCode :: Text
planCreateCode = Text
planCreateCode
        , planCreateCurrencies :: NonEmpty PlanPricing
planCreateCurrencies = NonEmpty PlanPricing
planCreateCurrencies
        , planCreateCustom_fields :: Maybe CustomFields
planCreateCustom_fields = Maybe CustomFields
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateDescription :: Maybe Text
planCreateDescription = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateDunning_campaign_id :: Maybe Text
planCreateDunning_campaign_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateHosted_pages :: Maybe PlanHostedPages
planCreateHosted_pages = Maybe PlanHostedPages
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateInterval_length :: Maybe Int
planCreateInterval_length = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateInterval_unit :: Maybe PlanCreateInterval_unit
planCreateInterval_unit = Maybe PlanCreateInterval_unit
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateLiability_gl_account_id :: Maybe Text
planCreateLiability_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateName :: Text
planCreateName = Text
planCreateName
        , planCreatePerformance_obligation_id :: Maybe Text
planCreatePerformance_obligation_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreatePricing_model :: Maybe PlanCreatePricing_model
planCreatePricing_model = Maybe PlanCreatePricing_model
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateRamp_intervals :: Maybe [PlanRampInterval]
planCreateRamp_intervals = Maybe [PlanRampInterval]
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateRevenue_gl_account_id :: Maybe Text
planCreateRevenue_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateRevenue_schedule_type :: Maybe PlanCreateRevenue_schedule_type
planCreateRevenue_schedule_type = Maybe PlanCreateRevenue_schedule_type
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateSetup_fee_accounting_code :: Maybe Text
planCreateSetup_fee_accounting_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateSetup_fee_liability_gl_account_id :: Maybe Text
planCreateSetup_fee_liability_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateSetup_fee_performance_obligation_id :: Maybe Text
planCreateSetup_fee_performance_obligation_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateSetup_fee_revenue_gl_account_id :: Maybe Text
planCreateSetup_fee_revenue_gl_account_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateSetup_fee_revenue_schedule_type :: Maybe PlanCreateSetup_fee_revenue_schedule_type
planCreateSetup_fee_revenue_schedule_type = Maybe PlanCreateSetup_fee_revenue_schedule_type
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTax_code :: Maybe Text
planCreateTax_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTax_exempt :: Maybe Bool
planCreateTax_exempt = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTotal_billing_cycles :: Maybe Int
planCreateTotal_billing_cycles = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTrial_length :: Maybe Int
planCreateTrial_length = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTrial_requires_billing_info :: Maybe Bool
planCreateTrial_requires_billing_info = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateTrial_unit :: Maybe PlanCreateTrial_unit
planCreateTrial_unit = Maybe PlanCreateTrial_unit
forall a. Maybe a
GHC.Maybe.Nothing
        , planCreateVertex_transaction_type :: Maybe Text
planCreateVertex_transaction_type = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        }

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

Unit for the plan\'s billing interval.
-}
data PlanCreateInterval_unit
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PlanCreateInterval_unitOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      PlanCreateInterval_unitTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"days"@
      PlanCreateInterval_unitEnumDays
    | -- | Represents the JSON value @"months"@
      PlanCreateInterval_unitEnumMonths
    deriving (Int -> PlanCreateInterval_unit -> ShowS
[PlanCreateInterval_unit] -> ShowS
PlanCreateInterval_unit -> String
(Int -> PlanCreateInterval_unit -> ShowS)
-> (PlanCreateInterval_unit -> String)
-> ([PlanCreateInterval_unit] -> ShowS)
-> Show PlanCreateInterval_unit
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreateInterval_unit -> ShowS
showsPrec :: Int -> PlanCreateInterval_unit -> ShowS
$cshow :: PlanCreateInterval_unit -> String
show :: PlanCreateInterval_unit -> String
$cshowList :: [PlanCreateInterval_unit] -> ShowS
showList :: [PlanCreateInterval_unit] -> ShowS
GHC.Show.Show, PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool
(PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool)
-> (PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool)
-> Eq PlanCreateInterval_unit
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool
== :: PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool
$c/= :: PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool
/= :: PlanCreateInterval_unit -> PlanCreateInterval_unit -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreateInterval_unit where
    toJSON :: PlanCreateInterval_unit -> Value
toJSON (PlanCreateInterval_unitOther Value
val) = Value
val
    toJSON (PlanCreateInterval_unitTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PlanCreateInterval_unit
PlanCreateInterval_unitEnumDays) = Value
"days"
    toJSON (PlanCreateInterval_unit
PlanCreateInterval_unitEnumMonths) = Value
"months"
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreateInterval_unit where
    parseJSON :: Value -> Parser PlanCreateInterval_unit
parseJSON Value
val =
        PlanCreateInterval_unit -> Parser PlanCreateInterval_unit
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
"days" -> PlanCreateInterval_unit
PlanCreateInterval_unitEnumDays
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"months" -> PlanCreateInterval_unit
PlanCreateInterval_unitEnumMonths
                | Bool
GHC.Base.otherwise -> Value -> PlanCreateInterval_unit
PlanCreateInterval_unitOther Value
val
            )

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

A fixed pricing model has the same price for each billing period.
A ramp pricing model defines a set of Ramp Intervals, where a subscription changes price on
a specified cadence of billing periods. The price change could be an increase or decrease.
-}
data PlanCreatePricing_model
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PlanCreatePricing_modelOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      PlanCreatePricing_modelTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"fixed"@
      PlanCreatePricing_modelEnumFixed
    | -- | Represents the JSON value @"ramp"@
      PlanCreatePricing_modelEnumRamp
    deriving (Int -> PlanCreatePricing_model -> ShowS
[PlanCreatePricing_model] -> ShowS
PlanCreatePricing_model -> String
(Int -> PlanCreatePricing_model -> ShowS)
-> (PlanCreatePricing_model -> String)
-> ([PlanCreatePricing_model] -> ShowS)
-> Show PlanCreatePricing_model
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreatePricing_model -> ShowS
showsPrec :: Int -> PlanCreatePricing_model -> ShowS
$cshow :: PlanCreatePricing_model -> String
show :: PlanCreatePricing_model -> String
$cshowList :: [PlanCreatePricing_model] -> ShowS
showList :: [PlanCreatePricing_model] -> ShowS
GHC.Show.Show, PlanCreatePricing_model -> PlanCreatePricing_model -> Bool
(PlanCreatePricing_model -> PlanCreatePricing_model -> Bool)
-> (PlanCreatePricing_model -> PlanCreatePricing_model -> Bool)
-> Eq PlanCreatePricing_model
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreatePricing_model -> PlanCreatePricing_model -> Bool
== :: PlanCreatePricing_model -> PlanCreatePricing_model -> Bool
$c/= :: PlanCreatePricing_model -> PlanCreatePricing_model -> Bool
/= :: PlanCreatePricing_model -> PlanCreatePricing_model -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreatePricing_model where
    toJSON :: PlanCreatePricing_model -> Value
toJSON (PlanCreatePricing_modelOther Value
val) = Value
val
    toJSON (PlanCreatePricing_modelTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PlanCreatePricing_model
PlanCreatePricing_modelEnumFixed) = Value
"fixed"
    toJSON (PlanCreatePricing_model
PlanCreatePricing_modelEnumRamp) = Value
"ramp"
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreatePricing_model where
    parseJSON :: Value -> Parser PlanCreatePricing_model
parseJSON Value
val =
        PlanCreatePricing_model -> Parser PlanCreatePricing_model
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" -> PlanCreatePricing_model
PlanCreatePricing_modelEnumFixed
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"ramp" -> PlanCreatePricing_model
PlanCreatePricing_modelEnumRamp
                | Bool
GHC.Base.otherwise -> Value -> PlanCreatePricing_model
PlanCreatePricing_modelOther Value
val
            )

-- | Defines the enum schema located at @components.schemas.PlanCreate.properties.revenue_schedule_type@ in the specification.
data PlanCreateRevenue_schedule_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PlanCreateRevenue_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.
      PlanCreateRevenue_schedule_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"at_range_end"@
      PlanCreateRevenue_schedule_typeEnumAt_range_end
    | -- | Represents the JSON value @"at_range_start"@
      PlanCreateRevenue_schedule_typeEnumAt_range_start
    | -- | Represents the JSON value @"evenly"@
      PlanCreateRevenue_schedule_typeEnumEvenly
    | -- | Represents the JSON value @"never"@
      PlanCreateRevenue_schedule_typeEnumNever
    deriving (Int -> PlanCreateRevenue_schedule_type -> ShowS
[PlanCreateRevenue_schedule_type] -> ShowS
PlanCreateRevenue_schedule_type -> String
(Int -> PlanCreateRevenue_schedule_type -> ShowS)
-> (PlanCreateRevenue_schedule_type -> String)
-> ([PlanCreateRevenue_schedule_type] -> ShowS)
-> Show PlanCreateRevenue_schedule_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreateRevenue_schedule_type -> ShowS
showsPrec :: Int -> PlanCreateRevenue_schedule_type -> ShowS
$cshow :: PlanCreateRevenue_schedule_type -> String
show :: PlanCreateRevenue_schedule_type -> String
$cshowList :: [PlanCreateRevenue_schedule_type] -> ShowS
showList :: [PlanCreateRevenue_schedule_type] -> ShowS
GHC.Show.Show, PlanCreateRevenue_schedule_type
-> PlanCreateRevenue_schedule_type -> Bool
(PlanCreateRevenue_schedule_type
 -> PlanCreateRevenue_schedule_type -> Bool)
-> (PlanCreateRevenue_schedule_type
    -> PlanCreateRevenue_schedule_type -> Bool)
-> Eq PlanCreateRevenue_schedule_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreateRevenue_schedule_type
-> PlanCreateRevenue_schedule_type -> Bool
== :: PlanCreateRevenue_schedule_type
-> PlanCreateRevenue_schedule_type -> Bool
$c/= :: PlanCreateRevenue_schedule_type
-> PlanCreateRevenue_schedule_type -> Bool
/= :: PlanCreateRevenue_schedule_type
-> PlanCreateRevenue_schedule_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreateRevenue_schedule_type where
    toJSON :: PlanCreateRevenue_schedule_type -> Value
toJSON (PlanCreateRevenue_schedule_typeOther Value
val) = Value
val
    toJSON (PlanCreateRevenue_schedule_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumAt_range_end) = Value
"at_range_end"
    toJSON (PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumAt_range_start) = Value
"at_range_start"
    toJSON (PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumEvenly) = Value
"evenly"
    toJSON (PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumNever) = Value
"never"
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreateRevenue_schedule_type where
    parseJSON :: Value -> Parser PlanCreateRevenue_schedule_type
parseJSON Value
val =
        PlanCreateRevenue_schedule_type
-> Parser PlanCreateRevenue_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" -> PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumAt_range_end
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"at_range_start" -> PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumAt_range_start
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"evenly" -> PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumEvenly
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"never" -> PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeEnumNever
                | Bool
GHC.Base.otherwise -> Value -> PlanCreateRevenue_schedule_type
PlanCreateRevenue_schedule_typeOther Value
val
            )

-- | Defines the enum schema located at @components.schemas.PlanCreate.properties.setup_fee_revenue_schedule_type@ in the specification.
data PlanCreateSetup_fee_revenue_schedule_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PlanCreateSetup_fee_revenue_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.
      PlanCreateSetup_fee_revenue_schedule_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"at_range_end"@
      PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_end
    | -- | Represents the JSON value @"at_range_start"@
      PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_start
    | -- | Represents the JSON value @"evenly"@
      PlanCreateSetup_fee_revenue_schedule_typeEnumEvenly
    | -- | Represents the JSON value @"never"@
      PlanCreateSetup_fee_revenue_schedule_typeEnumNever
    deriving (Int -> PlanCreateSetup_fee_revenue_schedule_type -> ShowS
[PlanCreateSetup_fee_revenue_schedule_type] -> ShowS
PlanCreateSetup_fee_revenue_schedule_type -> String
(Int -> PlanCreateSetup_fee_revenue_schedule_type -> ShowS)
-> (PlanCreateSetup_fee_revenue_schedule_type -> String)
-> ([PlanCreateSetup_fee_revenue_schedule_type] -> ShowS)
-> Show PlanCreateSetup_fee_revenue_schedule_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreateSetup_fee_revenue_schedule_type -> ShowS
showsPrec :: Int -> PlanCreateSetup_fee_revenue_schedule_type -> ShowS
$cshow :: PlanCreateSetup_fee_revenue_schedule_type -> String
show :: PlanCreateSetup_fee_revenue_schedule_type -> String
$cshowList :: [PlanCreateSetup_fee_revenue_schedule_type] -> ShowS
showList :: [PlanCreateSetup_fee_revenue_schedule_type] -> ShowS
GHC.Show.Show, PlanCreateSetup_fee_revenue_schedule_type
-> PlanCreateSetup_fee_revenue_schedule_type -> Bool
(PlanCreateSetup_fee_revenue_schedule_type
 -> PlanCreateSetup_fee_revenue_schedule_type -> Bool)
-> (PlanCreateSetup_fee_revenue_schedule_type
    -> PlanCreateSetup_fee_revenue_schedule_type -> Bool)
-> Eq PlanCreateSetup_fee_revenue_schedule_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreateSetup_fee_revenue_schedule_type
-> PlanCreateSetup_fee_revenue_schedule_type -> Bool
== :: PlanCreateSetup_fee_revenue_schedule_type
-> PlanCreateSetup_fee_revenue_schedule_type -> Bool
$c/= :: PlanCreateSetup_fee_revenue_schedule_type
-> PlanCreateSetup_fee_revenue_schedule_type -> Bool
/= :: PlanCreateSetup_fee_revenue_schedule_type
-> PlanCreateSetup_fee_revenue_schedule_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreateSetup_fee_revenue_schedule_type where
    toJSON :: PlanCreateSetup_fee_revenue_schedule_type -> Value
toJSON (PlanCreateSetup_fee_revenue_schedule_typeOther Value
val) = Value
val
    toJSON (PlanCreateSetup_fee_revenue_schedule_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_end) = Value
"at_range_end"
    toJSON (PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_start) = Value
"at_range_start"
    toJSON (PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumEvenly) = Value
"evenly"
    toJSON (PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumNever) = Value
"never"
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreateSetup_fee_revenue_schedule_type where
    parseJSON :: Value -> Parser PlanCreateSetup_fee_revenue_schedule_type
parseJSON Value
val =
        PlanCreateSetup_fee_revenue_schedule_type
-> Parser PlanCreateSetup_fee_revenue_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" -> PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_end
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"at_range_start" -> PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumAt_range_start
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"evenly" -> PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumEvenly
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"never" -> PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeEnumNever
                | Bool
GHC.Base.otherwise -> Value -> PlanCreateSetup_fee_revenue_schedule_type
PlanCreateSetup_fee_revenue_schedule_typeOther Value
val
            )

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

Units for the plan\'s trial period.
-}
data PlanCreateTrial_unit
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PlanCreateTrial_unitOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      PlanCreateTrial_unitTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"days"@
      PlanCreateTrial_unitEnumDays
    | -- | Represents the JSON value @"months"@
      PlanCreateTrial_unitEnumMonths
    deriving (Int -> PlanCreateTrial_unit -> ShowS
[PlanCreateTrial_unit] -> ShowS
PlanCreateTrial_unit -> String
(Int -> PlanCreateTrial_unit -> ShowS)
-> (PlanCreateTrial_unit -> String)
-> ([PlanCreateTrial_unit] -> ShowS)
-> Show PlanCreateTrial_unit
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PlanCreateTrial_unit -> ShowS
showsPrec :: Int -> PlanCreateTrial_unit -> ShowS
$cshow :: PlanCreateTrial_unit -> String
show :: PlanCreateTrial_unit -> String
$cshowList :: [PlanCreateTrial_unit] -> ShowS
showList :: [PlanCreateTrial_unit] -> ShowS
GHC.Show.Show, PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool
(PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool)
-> (PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool)
-> Eq PlanCreateTrial_unit
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool
== :: PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool
$c/= :: PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool
/= :: PlanCreateTrial_unit -> PlanCreateTrial_unit -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PlanCreateTrial_unit where
    toJSON :: PlanCreateTrial_unit -> Value
toJSON (PlanCreateTrial_unitOther Value
val) = Value
val
    toJSON (PlanCreateTrial_unitTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PlanCreateTrial_unit
PlanCreateTrial_unitEnumDays) = Value
"days"
    toJSON (PlanCreateTrial_unit
PlanCreateTrial_unitEnumMonths) = Value
"months"
instance Data.Aeson.Types.FromJSON.FromJSON PlanCreateTrial_unit where
    parseJSON :: Value -> Parser PlanCreateTrial_unit
parseJSON Value
val =
        PlanCreateTrial_unit -> Parser PlanCreateTrial_unit
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
"days" -> PlanCreateTrial_unit
PlanCreateTrial_unitEnumDays
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"months" -> PlanCreateTrial_unit
PlanCreateTrial_unitEnumMonths
                | Bool
GHC.Base.otherwise -> Value -> PlanCreateTrial_unit
PlanCreateTrial_unitOther Value
val
            )