{-# 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 PurchaseCreate
module RecurlyClient.Types.PurchaseCreate 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.AccountPurchase
import {-# SOURCE #-} RecurlyClient.Types.LineItemCreate
import {-# SOURCE #-} RecurlyClient.Types.ShippingAddressCreate
import {-# SOURCE #-} RecurlyClient.Types.ShippingFeeCreate
import {-# SOURCE #-} RecurlyClient.Types.SubscriptionPurchase
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

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

A purchase is only a request data type and is not persistent in Recurly, an InvoiceCollection will be the returned type.
-}
data PurchaseCreate = PurchaseCreate
    { PurchaseCreate -> AccountPurchase
purchaseCreateAccount :: AccountPurchase
    -- ^ account
    , PurchaseCreate -> Maybe Text
purchaseCreateBilling_info_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ billing_info_id: The \`billing_info_id\` is the value that represents a specific billing info for an end customer. When \`billing_info_id\` is used to assign billing info to the subscription, all future billing events for the subscription will bill to the specified billing info. \`billing_info_id\` can ONLY be used for sites utilizing the Wallet feature.
    , PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ business_entity_code: The \`business_entity_code\` is the value that represents a specific business entity for an end customer. When \`business_entity_code\` is used to assign a business entity to the subscription, all future billing events for the subscription will bill to the specified business entity. Available when the \`Multiple Business Entities\` feature is enabled. If both \`business_entity_id\` and \`business_entity_code\` are present, \`business_entity_id\` will be used.
    , PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ business_entity_id: The \`business_entity_id\` is the value that represents a specific business entity for an end customer. When \`business_entity_id\` is used to assign a business entity to the subscription, all future billing events for the subscription will bill to the specified business entity. Available when the \`Multiple Business Entities\` feature is enabled. If both \`business_entity_id\` and \`business_entity_code\` are present, \`business_entity_id\` will be used.
    , PurchaseCreate -> Maybe PurchaseCreateCollection_method
purchaseCreateCollection_method :: (GHC.Maybe.Maybe PurchaseCreateCollection_method)
    -- ^ collection_method: Must be set to manual in order to preview a purchase for an Account that does not have payment information associated with the Billing Info.
    , PurchaseCreate -> Maybe [Text]
purchaseCreateCoupon_codes :: (GHC.Maybe.Maybe [Data.Text.Internal.Text])
    -- ^ coupon_codes: A list of coupon_codes to be redeemed on the subscription or account during the purchase.
    , PurchaseCreate -> Maybe Text
purchaseCreateCredit_customer_notes :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ credit_customer_notes: Notes to be put on the credit invoice resulting from credits in the purchase, if any.
    , PurchaseCreate -> Text
purchaseCreateCurrency :: Data.Text.Internal.Text
    -- ^ currency: 3-letter ISO 4217 currency code.
    --
    -- Constraints:
    --
    -- * Maximum length of 3
    , PurchaseCreate -> Maybe Text
purchaseCreateCustomer_notes :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ customer_notes
    , PurchaseCreate -> Maybe Text
purchaseCreateGateway_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ gateway_code: The default payment gateway identifier to be used for the purchase transaction.  This will also be applied as the default for any subscriptions included in the purchase request.
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , PurchaseCreate -> Maybe Text
purchaseCreateGift_card_redemption_code :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ gift_card_redemption_code: A gift card redemption code to be redeemed on the purchase invoice.
    , PurchaseCreate -> Maybe [LineItemCreate]
purchaseCreateLine_items :: (GHC.Maybe.Maybe [LineItemCreate])
    -- ^ line_items: A list of one time charges or credits to be created with the purchase.
    , PurchaseCreate -> Maybe Int
purchaseCreateNet_terms :: (GHC.Maybe.Maybe GHC.Types.Int)
    -- ^ net_terms: Integer paired with \`Net Terms Type\` and representing the number
    -- of days past the current date (for \`net\` Net Terms Type) or days after
    -- the last day of the current month (for \`eom\` Net Terms Type) that the
    -- invoice will become past due. For \`manual\` collection method, an additional 24 hours is
    -- added to ensure the customer has the entire last day to make payment before
    -- becoming past due. For example:
    --
    -- If an invoice is due \`net 0\`, it is due \'On Receipt\' and will become past due 24 hours after it\'s created.
    -- If an invoice is due \`net 30\`, it will become past due at 31 days exactly.
    -- If an invoice is due \`eom 30\`, it will become past due 31 days from the last day of the current month.
    --
    -- For \`automatic\` collection method, the additional 24 hours is not added. For example, On-Receipt is due immediately, and \`net 30\` will become due exactly 30 days from invoice generation, at which point Recurly will attempt collection.
    -- When \`eom\` Net Terms Type is passed, the value for \`Net Terms\` is restricted to \`0, 15, 30, 45, 60, or 90\`.
    --
    -- For more information on how net terms work with \`manual\` collection visit our docs page (https:\/\/docs.recurly.com\/docs\/manual-payments\#section-collection-terms)
    -- or visit (https:\/\/docs.recurly.com\/docs\/automatic-invoicing-terms\#section-collection-terms) for information about net terms using \`automatic\` collection.
    --
    -- Constraints:
    --
    -- * Minimum  of 0.0
    , PurchaseCreate -> Maybe PurchaseCreateNet_terms_type
purchaseCreateNet_terms_type :: (GHC.Maybe.Maybe PurchaseCreateNet_terms_type)
    -- ^ net_terms_type: Optionally supplied string that may be either \`net\` or \`eom\` (end-of-month).
    -- When \`net\`, an invoice becomes past due the specified number of \`Net Terms\` days from the current date.
    -- When \`eom\` an invoice becomes past due the specified number of \`Net Terms\` days from the last day of the current month.
    , PurchaseCreate -> Maybe Text
purchaseCreatePo_number :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ po_number: For manual invoicing, this identifies the PO number associated with the subscription.
    --
    -- Constraints:
    --
    -- * Maximum length of 50
    , PurchaseCreate -> Maybe PurchaseCreateShipping
purchaseCreateShipping :: (GHC.Maybe.Maybe PurchaseCreateShipping)
    -- ^ shipping
    , PurchaseCreate -> Maybe [SubscriptionPurchase]
purchaseCreateSubscriptions :: (GHC.Maybe.Maybe [SubscriptionPurchase])
    -- ^ subscriptions: A list of subscriptions to be created with the purchase.
    , PurchaseCreate -> Maybe Text
purchaseCreateTerms_and_conditions :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ terms_and_conditions: Terms and conditions to be put on the purchase invoice.
    , PurchaseCreate -> Maybe PurchaseCreateTransaction_type
purchaseCreateTransaction_type :: (GHC.Maybe.Maybe PurchaseCreateTransaction_type)
    -- ^ transaction_type: An optional type designation for the payment gateway transaction created by this request. Supports \'moto\' value, which is the acronym for mail order and telephone transactions.
    , PurchaseCreate -> Maybe Text
purchaseCreateVat_reverse_charge_notes :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ vat_reverse_charge_notes: VAT reverse charge notes for cross border European tax settlement.
    }
    deriving
        ( Int -> PurchaseCreate -> ShowS
[PurchaseCreate] -> ShowS
PurchaseCreate -> String
(Int -> PurchaseCreate -> ShowS)
-> (PurchaseCreate -> String)
-> ([PurchaseCreate] -> ShowS)
-> Show PurchaseCreate
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PurchaseCreate -> ShowS
showsPrec :: Int -> PurchaseCreate -> ShowS
$cshow :: PurchaseCreate -> String
show :: PurchaseCreate -> String
$cshowList :: [PurchaseCreate] -> ShowS
showList :: [PurchaseCreate] -> ShowS
GHC.Show.Show
        , PurchaseCreate -> PurchaseCreate -> Bool
(PurchaseCreate -> PurchaseCreate -> Bool)
-> (PurchaseCreate -> PurchaseCreate -> Bool) -> Eq PurchaseCreate
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PurchaseCreate -> PurchaseCreate -> Bool
== :: PurchaseCreate -> PurchaseCreate -> Bool
$c/= :: PurchaseCreate -> PurchaseCreate -> Bool
/= :: PurchaseCreate -> PurchaseCreate -> Bool
GHC.Classes.Eq
        )

instance Data.Aeson.Types.ToJSON.ToJSON PurchaseCreate where
    toJSON :: PurchaseCreate -> Value
toJSON PurchaseCreate
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object ([[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Key
"account" Key -> AccountPurchase -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..= PurchaseCreate -> AccountPurchase
purchaseCreateAccount PurchaseCreate
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
"billing_info_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBilling_info_id PurchaseCreate
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
"business_entity_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_code PurchaseCreate
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
"business_entity_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_id PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PurchaseCreateCollection_method -> [Pair])
-> Maybe PurchaseCreateCollection_method
-> [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])
-> (PurchaseCreateCollection_method -> Pair)
-> PurchaseCreateCollection_method
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"collection_method" Key -> PurchaseCreateCollection_method -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateCollection_method
purchaseCreateCollection_method PurchaseCreate
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
"coupon_codes" Key -> [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [Text]
purchaseCreateCoupon_codes PurchaseCreate
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
"credit_customer_notes" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateCredit_customer_notes PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Key
"currency" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..= PurchaseCreate -> Text
purchaseCreateCurrency PurchaseCreate
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
"customer_notes" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateCustomer_notes PurchaseCreate
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
"gateway_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateGateway_code PurchaseCreate
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
"gift_card_redemption_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateGift_card_redemption_code PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([LineItemCreate] -> [Pair]) -> Maybe [LineItemCreate] -> [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])
-> ([LineItemCreate] -> Pair) -> [LineItemCreate] -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"line_items" Key -> [LineItemCreate] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [LineItemCreate]
purchaseCreateLine_items PurchaseCreate
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
"net_terms" Key -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Int
purchaseCreateNet_terms PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PurchaseCreateNet_terms_type -> [Pair])
-> Maybe PurchaseCreateNet_terms_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])
-> (PurchaseCreateNet_terms_type -> Pair)
-> PurchaseCreateNet_terms_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"net_terms_type" Key -> PurchaseCreateNet_terms_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateNet_terms_type
purchaseCreateNet_terms_type PurchaseCreate
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
"po_number" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreatePo_number PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PurchaseCreateShipping -> [Pair])
-> Maybe PurchaseCreateShipping
-> [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])
-> (PurchaseCreateShipping -> Pair)
-> PurchaseCreateShipping
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"shipping" Key -> PurchaseCreateShipping -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateShipping
purchaseCreateShipping PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([SubscriptionPurchase] -> [Pair])
-> Maybe [SubscriptionPurchase]
-> [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])
-> ([SubscriptionPurchase] -> Pair)
-> [SubscriptionPurchase]
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"subscriptions" Key -> [SubscriptionPurchase] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [SubscriptionPurchase]
purchaseCreateSubscriptions PurchaseCreate
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
"terms_and_conditions" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateTerms_and_conditions PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> (PurchaseCreateTransaction_type -> [Pair])
-> Maybe PurchaseCreateTransaction_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])
-> (PurchaseCreateTransaction_type -> Pair)
-> PurchaseCreateTransaction_type
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"transaction_type" Key -> PurchaseCreateTransaction_type -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateTransaction_type
purchaseCreateTransaction_type PurchaseCreate
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
"vat_reverse_charge_notes" Key -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateVat_reverse_charge_notes PurchaseCreate
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [[Pair]]
forall a. Monoid a => a
GHC.Base.mempty))
    toEncoding :: PurchaseCreate -> Encoding
toEncoding PurchaseCreate
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 ([Key
"account" Key -> AccountPurchase -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..= PurchaseCreate -> AccountPurchase
purchaseCreateAccount PurchaseCreate
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
"billing_info_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBilling_info_id PurchaseCreate
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
"business_entity_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_code PurchaseCreate
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
"business_entity_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateBusiness_entity_id PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PurchaseCreateCollection_method -> [Series])
-> Maybe PurchaseCreateCollection_method
-> [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])
-> (PurchaseCreateCollection_method -> Series)
-> PurchaseCreateCollection_method
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"collection_method" Key -> PurchaseCreateCollection_method -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateCollection_method
purchaseCreateCollection_method PurchaseCreate
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
"coupon_codes" Key -> [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [Text]
purchaseCreateCoupon_codes PurchaseCreate
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
"credit_customer_notes" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateCredit_customer_notes PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Key
"currency" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..= PurchaseCreate -> Text
purchaseCreateCurrency PurchaseCreate
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
"customer_notes" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateCustomer_notes PurchaseCreate
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
"gateway_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateGateway_code PurchaseCreate
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
"gift_card_redemption_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..=)) (PurchaseCreate -> Maybe Text
purchaseCreateGift_card_redemption_code PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([LineItemCreate] -> [Series])
-> Maybe [LineItemCreate]
-> [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])
-> ([LineItemCreate] -> Series) -> [LineItemCreate] -> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"line_items" Key -> [LineItemCreate] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [LineItemCreate]
purchaseCreateLine_items PurchaseCreate
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
"net_terms" Key -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Int
purchaseCreateNet_terms PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PurchaseCreateNet_terms_type -> [Series])
-> Maybe PurchaseCreateNet_terms_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])
-> (PurchaseCreateNet_terms_type -> Series)
-> PurchaseCreateNet_terms_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"net_terms_type" Key -> PurchaseCreateNet_terms_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateNet_terms_type
purchaseCreateNet_terms_type PurchaseCreate
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
"po_number" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreatePo_number PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PurchaseCreateShipping -> [Series])
-> Maybe PurchaseCreateShipping
-> [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])
-> (PurchaseCreateShipping -> Series)
-> PurchaseCreateShipping
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"shipping" Key -> PurchaseCreateShipping -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateShipping
purchaseCreateShipping PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([SubscriptionPurchase] -> [Series])
-> Maybe [SubscriptionPurchase]
-> [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])
-> ([SubscriptionPurchase] -> Series)
-> [SubscriptionPurchase]
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"subscriptions" Key -> [SubscriptionPurchase] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe [SubscriptionPurchase]
purchaseCreateSubscriptions PurchaseCreate
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
"terms_and_conditions" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateTerms_and_conditions PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> (PurchaseCreateTransaction_type -> [Series])
-> Maybe PurchaseCreateTransaction_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])
-> (PurchaseCreateTransaction_type -> Series)
-> PurchaseCreateTransaction_type
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"transaction_type" Key -> PurchaseCreateTransaction_type -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe PurchaseCreateTransaction_type
purchaseCreateTransaction_type PurchaseCreate
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
"vat_reverse_charge_notes" Key -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreate -> Maybe Text
purchaseCreateVat_reverse_charge_notes PurchaseCreate
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [[Series]]
forall a. Monoid a => a
GHC.Base.mempty)))
instance Data.Aeson.Types.FromJSON.FromJSON PurchaseCreate where
    parseJSON :: Value -> Parser PurchaseCreate
parseJSON = String
-> (Object -> Parser PurchaseCreate)
-> Value
-> Parser PurchaseCreate
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PurchaseCreate" (\Object
obj -> ((((((((((((((((((((AccountPurchase
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe PurchaseCreateCollection_method
 -> Maybe [Text]
 -> Maybe Text
 -> Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe [LineItemCreate]
 -> Maybe Int
 -> Maybe PurchaseCreateNet_terms_type
 -> Maybe Text
 -> Maybe PurchaseCreateShipping
 -> Maybe [SubscriptionPurchase]
 -> Maybe Text
 -> Maybe PurchaseCreateTransaction_type
 -> Maybe Text
 -> PurchaseCreate)
-> Parser
     (AccountPurchase
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PurchaseCreateCollection_method
      -> Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure AccountPurchase
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe PurchaseCreateCollection_method
-> Maybe [Text]
-> Maybe Text
-> Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe [LineItemCreate]
-> Maybe Int
-> Maybe PurchaseCreateNet_terms_type
-> Maybe Text
-> Maybe PurchaseCreateShipping
-> Maybe [SubscriptionPurchase]
-> Maybe Text
-> Maybe PurchaseCreateTransaction_type
-> Maybe Text
-> PurchaseCreate
PurchaseCreate Parser
  (AccountPurchase
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PurchaseCreateCollection_method
   -> Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser AccountPurchase
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe PurchaseCreateCollection_method
      -> Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 AccountPurchase
forall a. FromJSON a => Object -> Key -> Parser a
Data.Aeson.Types.FromJSON..: Key
"account")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe PurchaseCreateCollection_method
   -> Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe PurchaseCreateCollection_method
      -> Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"billing_info_id")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe PurchaseCreateCollection_method
   -> Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe PurchaseCreateCollection_method
      -> Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"business_entity_code")) Parser
  (Maybe Text
   -> Maybe PurchaseCreateCollection_method
   -> Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PurchaseCreateCollection_method
      -> Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"business_entity_id")) Parser
  (Maybe PurchaseCreateCollection_method
   -> Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe PurchaseCreateCollection_method)
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 PurchaseCreateCollection_method)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"collection_method")) Parser
  (Maybe [Text]
   -> Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"coupon_codes")) Parser
  (Maybe Text
   -> Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"credit_customer_notes")) Parser
  (Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser Text
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"currency")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"customer_notes")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"gateway_code")) Parser
  (Maybe Text
   -> Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe [LineItemCreate]
      -> Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"gift_card_redemption_code")) Parser
  (Maybe [LineItemCreate]
   -> Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe [LineItemCreate])
-> Parser
     (Maybe Int
      -> Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 [LineItemCreate])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"line_items")) Parser
  (Maybe Int
   -> Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Int)
-> Parser
     (Maybe PurchaseCreateNet_terms_type
      -> Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"net_terms")) Parser
  (Maybe PurchaseCreateNet_terms_type
   -> Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe PurchaseCreateNet_terms_type)
-> Parser
     (Maybe Text
      -> Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 PurchaseCreateNet_terms_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"net_terms_type")) Parser
  (Maybe Text
   -> Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PurchaseCreateShipping
      -> Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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
"po_number")) Parser
  (Maybe PurchaseCreateShipping
   -> Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe PurchaseCreateShipping)
-> Parser
     (Maybe [SubscriptionPurchase]
      -> Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 PurchaseCreateShipping)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"shipping")) Parser
  (Maybe [SubscriptionPurchase]
   -> Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe [SubscriptionPurchase])
-> Parser
     (Maybe Text
      -> Maybe PurchaseCreateTransaction_type
      -> Maybe Text
      -> PurchaseCreate)
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 [SubscriptionPurchase])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"subscriptions")) Parser
  (Maybe Text
   -> Maybe PurchaseCreateTransaction_type
   -> Maybe Text
   -> PurchaseCreate)
-> Parser (Maybe Text)
-> Parser
     (Maybe PurchaseCreateTransaction_type
      -> Maybe Text -> PurchaseCreate)
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
"terms_and_conditions")) Parser
  (Maybe PurchaseCreateTransaction_type
   -> Maybe Text -> PurchaseCreate)
-> Parser (Maybe PurchaseCreateTransaction_type)
-> Parser (Maybe Text -> PurchaseCreate)
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 PurchaseCreateTransaction_type)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"transaction_type")) Parser (Maybe Text -> PurchaseCreate)
-> Parser (Maybe Text) -> Parser PurchaseCreate
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
"vat_reverse_charge_notes"))

-- | Create a new 'PurchaseCreate' with all required fields.
mkPurchaseCreate ::
    -- | 'purchaseCreateAccount'
    AccountPurchase ->
    -- | 'purchaseCreateCurrency'
    Data.Text.Internal.Text ->
    PurchaseCreate
mkPurchaseCreate :: AccountPurchase -> Text -> PurchaseCreate
mkPurchaseCreate AccountPurchase
purchaseCreateAccount Text
purchaseCreateCurrency =
    PurchaseCreate
        { purchaseCreateAccount :: AccountPurchase
purchaseCreateAccount = AccountPurchase
purchaseCreateAccount
        , purchaseCreateBilling_info_id :: Maybe Text
purchaseCreateBilling_info_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateBusiness_entity_code :: Maybe Text
purchaseCreateBusiness_entity_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateBusiness_entity_id :: Maybe Text
purchaseCreateBusiness_entity_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateCollection_method :: Maybe PurchaseCreateCollection_method
purchaseCreateCollection_method = Maybe PurchaseCreateCollection_method
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateCoupon_codes :: Maybe [Text]
purchaseCreateCoupon_codes = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateCredit_customer_notes :: Maybe Text
purchaseCreateCredit_customer_notes = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateCurrency :: Text
purchaseCreateCurrency = Text
purchaseCreateCurrency
        , purchaseCreateCustomer_notes :: Maybe Text
purchaseCreateCustomer_notes = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateGateway_code :: Maybe Text
purchaseCreateGateway_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateGift_card_redemption_code :: Maybe Text
purchaseCreateGift_card_redemption_code = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateLine_items :: Maybe [LineItemCreate]
purchaseCreateLine_items = Maybe [LineItemCreate]
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateNet_terms :: Maybe Int
purchaseCreateNet_terms = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateNet_terms_type :: Maybe PurchaseCreateNet_terms_type
purchaseCreateNet_terms_type = Maybe PurchaseCreateNet_terms_type
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreatePo_number :: Maybe Text
purchaseCreatePo_number = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateShipping :: Maybe PurchaseCreateShipping
purchaseCreateShipping = Maybe PurchaseCreateShipping
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateSubscriptions :: Maybe [SubscriptionPurchase]
purchaseCreateSubscriptions = Maybe [SubscriptionPurchase]
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateTerms_and_conditions :: Maybe Text
purchaseCreateTerms_and_conditions = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateTransaction_type :: Maybe PurchaseCreateTransaction_type
purchaseCreateTransaction_type = Maybe PurchaseCreateTransaction_type
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateVat_reverse_charge_notes :: Maybe Text
purchaseCreateVat_reverse_charge_notes = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        }

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

Must be set to manual in order to preview a purchase for an Account that does not have payment information associated with the Billing Info.
-}
data PurchaseCreateCollection_method
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PurchaseCreateCollection_methodOther Data.Aeson.Types.Internal.Value
    | -- | This constructor can be used to send values to the server which are not present in the specification yet.
      PurchaseCreateCollection_methodTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"automatic"@
      PurchaseCreateCollection_methodEnumAutomatic
    | -- | Represents the JSON value @"manual"@
      PurchaseCreateCollection_methodEnumManual
    deriving (Int -> PurchaseCreateCollection_method -> ShowS
[PurchaseCreateCollection_method] -> ShowS
PurchaseCreateCollection_method -> String
(Int -> PurchaseCreateCollection_method -> ShowS)
-> (PurchaseCreateCollection_method -> String)
-> ([PurchaseCreateCollection_method] -> ShowS)
-> Show PurchaseCreateCollection_method
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PurchaseCreateCollection_method -> ShowS
showsPrec :: Int -> PurchaseCreateCollection_method -> ShowS
$cshow :: PurchaseCreateCollection_method -> String
show :: PurchaseCreateCollection_method -> String
$cshowList :: [PurchaseCreateCollection_method] -> ShowS
showList :: [PurchaseCreateCollection_method] -> ShowS
GHC.Show.Show, PurchaseCreateCollection_method
-> PurchaseCreateCollection_method -> Bool
(PurchaseCreateCollection_method
 -> PurchaseCreateCollection_method -> Bool)
-> (PurchaseCreateCollection_method
    -> PurchaseCreateCollection_method -> Bool)
-> Eq PurchaseCreateCollection_method
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PurchaseCreateCollection_method
-> PurchaseCreateCollection_method -> Bool
== :: PurchaseCreateCollection_method
-> PurchaseCreateCollection_method -> Bool
$c/= :: PurchaseCreateCollection_method
-> PurchaseCreateCollection_method -> Bool
/= :: PurchaseCreateCollection_method
-> PurchaseCreateCollection_method -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PurchaseCreateCollection_method where
    toJSON :: PurchaseCreateCollection_method -> Value
toJSON (PurchaseCreateCollection_methodOther Value
val) = Value
val
    toJSON (PurchaseCreateCollection_methodTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PurchaseCreateCollection_method
PurchaseCreateCollection_methodEnumAutomatic) = Value
"automatic"
    toJSON (PurchaseCreateCollection_method
PurchaseCreateCollection_methodEnumManual) = Value
"manual"
instance Data.Aeson.Types.FromJSON.FromJSON PurchaseCreateCollection_method where
    parseJSON :: Value -> Parser PurchaseCreateCollection_method
parseJSON Value
val =
        PurchaseCreateCollection_method
-> Parser PurchaseCreateCollection_method
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
"automatic" -> PurchaseCreateCollection_method
PurchaseCreateCollection_methodEnumAutomatic
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"manual" -> PurchaseCreateCollection_method
PurchaseCreateCollection_methodEnumManual
                | Bool
GHC.Base.otherwise -> Value -> PurchaseCreateCollection_method
PurchaseCreateCollection_methodOther Value
val
            )

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

Optionally supplied string that may be either \`net\` or \`eom\` (end-of-month).
When \`net\`, an invoice becomes past due the specified number of \`Net Terms\` days from the current date.
When \`eom\` an invoice becomes past due the specified number of \`Net Terms\` days from the last day of the current month.
-}
data PurchaseCreateNet_terms_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PurchaseCreateNet_terms_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.
      PurchaseCreateNet_terms_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"net"@
      PurchaseCreateNet_terms_typeEnumNet
    | -- | Represents the JSON value @"eom"@
      PurchaseCreateNet_terms_typeEnumEom
    deriving (Int -> PurchaseCreateNet_terms_type -> ShowS
[PurchaseCreateNet_terms_type] -> ShowS
PurchaseCreateNet_terms_type -> String
(Int -> PurchaseCreateNet_terms_type -> ShowS)
-> (PurchaseCreateNet_terms_type -> String)
-> ([PurchaseCreateNet_terms_type] -> ShowS)
-> Show PurchaseCreateNet_terms_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PurchaseCreateNet_terms_type -> ShowS
showsPrec :: Int -> PurchaseCreateNet_terms_type -> ShowS
$cshow :: PurchaseCreateNet_terms_type -> String
show :: PurchaseCreateNet_terms_type -> String
$cshowList :: [PurchaseCreateNet_terms_type] -> ShowS
showList :: [PurchaseCreateNet_terms_type] -> ShowS
GHC.Show.Show, PurchaseCreateNet_terms_type
-> PurchaseCreateNet_terms_type -> Bool
(PurchaseCreateNet_terms_type
 -> PurchaseCreateNet_terms_type -> Bool)
-> (PurchaseCreateNet_terms_type
    -> PurchaseCreateNet_terms_type -> Bool)
-> Eq PurchaseCreateNet_terms_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PurchaseCreateNet_terms_type
-> PurchaseCreateNet_terms_type -> Bool
== :: PurchaseCreateNet_terms_type
-> PurchaseCreateNet_terms_type -> Bool
$c/= :: PurchaseCreateNet_terms_type
-> PurchaseCreateNet_terms_type -> Bool
/= :: PurchaseCreateNet_terms_type
-> PurchaseCreateNet_terms_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PurchaseCreateNet_terms_type where
    toJSON :: PurchaseCreateNet_terms_type -> Value
toJSON (PurchaseCreateNet_terms_typeOther Value
val) = Value
val
    toJSON (PurchaseCreateNet_terms_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PurchaseCreateNet_terms_type
PurchaseCreateNet_terms_typeEnumNet) = Value
"net"
    toJSON (PurchaseCreateNet_terms_type
PurchaseCreateNet_terms_typeEnumEom) = Value
"eom"
instance Data.Aeson.Types.FromJSON.FromJSON PurchaseCreateNet_terms_type where
    parseJSON :: Value -> Parser PurchaseCreateNet_terms_type
parseJSON Value
val =
        PurchaseCreateNet_terms_type -> Parser PurchaseCreateNet_terms_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
"net" -> PurchaseCreateNet_terms_type
PurchaseCreateNet_terms_typeEnumNet
                | Value
val Value -> Value -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Value
"eom" -> PurchaseCreateNet_terms_type
PurchaseCreateNet_terms_typeEnumEom
                | Bool
GHC.Base.otherwise -> Value -> PurchaseCreateNet_terms_type
PurchaseCreateNet_terms_typeOther Value
val
            )

-- | Defines the object schema located at @components.schemas.PurchaseCreate.properties.shipping@ in the specification.
data PurchaseCreateShipping = PurchaseCreateShipping
    { PurchaseCreateShipping -> Maybe ShippingAddressCreate
purchaseCreateShippingAddress :: (GHC.Maybe.Maybe ShippingAddressCreate)
    -- ^ address
    , PurchaseCreateShipping -> Maybe Text
purchaseCreateShippingAddress_id :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
    -- ^ address_id: Assign a shipping address from the account\'s existing shipping addresses. If this and \`address\` are both present, \`address\` will take precedence.
    --
    -- Constraints:
    --
    -- * Maximum length of 13
    , PurchaseCreateShipping -> Maybe [ShippingFeeCreate]
purchaseCreateShippingFees :: (GHC.Maybe.Maybe [ShippingFeeCreate])
    -- ^ fees: A list of shipping fees to be created as charges with the purchase.
    }
    deriving
        ( Int -> PurchaseCreateShipping -> ShowS
[PurchaseCreateShipping] -> ShowS
PurchaseCreateShipping -> String
(Int -> PurchaseCreateShipping -> ShowS)
-> (PurchaseCreateShipping -> String)
-> ([PurchaseCreateShipping] -> ShowS)
-> Show PurchaseCreateShipping
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PurchaseCreateShipping -> ShowS
showsPrec :: Int -> PurchaseCreateShipping -> ShowS
$cshow :: PurchaseCreateShipping -> String
show :: PurchaseCreateShipping -> String
$cshowList :: [PurchaseCreateShipping] -> ShowS
showList :: [PurchaseCreateShipping] -> ShowS
GHC.Show.Show
        , PurchaseCreateShipping -> PurchaseCreateShipping -> Bool
(PurchaseCreateShipping -> PurchaseCreateShipping -> Bool)
-> (PurchaseCreateShipping -> PurchaseCreateShipping -> Bool)
-> Eq PurchaseCreateShipping
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PurchaseCreateShipping -> PurchaseCreateShipping -> Bool
== :: PurchaseCreateShipping -> PurchaseCreateShipping -> Bool
$c/= :: PurchaseCreateShipping -> PurchaseCreateShipping -> Bool
/= :: PurchaseCreateShipping -> PurchaseCreateShipping -> Bool
GHC.Classes.Eq
        )

instance Data.Aeson.Types.ToJSON.ToJSON PurchaseCreateShipping where
    toJSON :: PurchaseCreateShipping -> Value
toJSON PurchaseCreateShipping
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object ([[Pair]] -> [Pair]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
Data.Foldable.concat ([Pair]
-> (ShippingAddressCreate -> [Pair])
-> Maybe ShippingAddressCreate
-> [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])
-> (ShippingAddressCreate -> Pair)
-> ShippingAddressCreate
-> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"address" Key -> ShippingAddressCreate -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreateShipping -> Maybe ShippingAddressCreate
purchaseCreateShippingAddress PurchaseCreateShipping
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
"address_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..=)) (PurchaseCreateShipping -> Maybe Text
purchaseCreateShippingAddress_id PurchaseCreateShipping
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [Pair]
-> ([ShippingFeeCreate] -> [Pair])
-> Maybe [ShippingFeeCreate]
-> [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])
-> ([ShippingFeeCreate] -> Pair) -> [ShippingFeeCreate] -> [Pair]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"fees" Key -> [ShippingFeeCreate] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
Data.Aeson.Types.ToJSON..=)) (PurchaseCreateShipping -> Maybe [ShippingFeeCreate]
purchaseCreateShippingFees PurchaseCreateShipping
obj) [Pair] -> [[Pair]] -> [[Pair]]
forall a. a -> [a] -> [a]
: [[Pair]]
forall a. Monoid a => a
GHC.Base.mempty))
    toEncoding :: PurchaseCreateShipping -> Encoding
toEncoding PurchaseCreateShipping
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]
-> (ShippingAddressCreate -> [Series])
-> Maybe ShippingAddressCreate
-> [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])
-> (ShippingAddressCreate -> Series)
-> ShippingAddressCreate
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"address" Key -> ShippingAddressCreate -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreateShipping -> Maybe ShippingAddressCreate
purchaseCreateShippingAddress PurchaseCreateShipping
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
"address_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..=)) (PurchaseCreateShipping -> Maybe Text
purchaseCreateShippingAddress_id PurchaseCreateShipping
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [Series]
-> ([ShippingFeeCreate] -> [Series])
-> Maybe [ShippingFeeCreate]
-> [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])
-> ([ShippingFeeCreate] -> Series)
-> [ShippingFeeCreate]
-> [Series]
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. (Key
"fees" Key -> [ShippingFeeCreate] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Series
Data.Aeson.Types.ToJSON..=)) (PurchaseCreateShipping -> Maybe [ShippingFeeCreate]
purchaseCreateShippingFees PurchaseCreateShipping
obj) [Series] -> [[Series]] -> [[Series]]
forall a. a -> [a] -> [a]
: [[Series]]
forall a. Monoid a => a
GHC.Base.mempty)))
instance Data.Aeson.Types.FromJSON.FromJSON PurchaseCreateShipping where
    parseJSON :: Value -> Parser PurchaseCreateShipping
parseJSON = String
-> (Object -> Parser PurchaseCreateShipping)
-> Value
-> Parser PurchaseCreateShipping
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"PurchaseCreateShipping" (\Object
obj -> (((Maybe ShippingAddressCreate
 -> Maybe Text
 -> Maybe [ShippingFeeCreate]
 -> PurchaseCreateShipping)
-> Parser
     (Maybe ShippingAddressCreate
      -> Maybe Text
      -> Maybe [ShippingFeeCreate]
      -> PurchaseCreateShipping)
forall a. a -> Parser a
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe ShippingAddressCreate
-> Maybe Text
-> Maybe [ShippingFeeCreate]
-> PurchaseCreateShipping
PurchaseCreateShipping Parser
  (Maybe ShippingAddressCreate
   -> Maybe Text
   -> Maybe [ShippingFeeCreate]
   -> PurchaseCreateShipping)
-> Parser (Maybe ShippingAddressCreate)
-> Parser
     (Maybe Text -> Maybe [ShippingFeeCreate] -> PurchaseCreateShipping)
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 ShippingAddressCreate)
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"address")) Parser
  (Maybe Text -> Maybe [ShippingFeeCreate] -> PurchaseCreateShipping)
-> Parser (Maybe Text)
-> Parser (Maybe [ShippingFeeCreate] -> PurchaseCreateShipping)
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
"address_id")) Parser (Maybe [ShippingFeeCreate] -> PurchaseCreateShipping)
-> Parser (Maybe [ShippingFeeCreate])
-> Parser PurchaseCreateShipping
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 [ShippingFeeCreate])
forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Key
"fees"))

-- | Create a new 'PurchaseCreateShipping' with all required fields.
mkPurchaseCreateShipping :: PurchaseCreateShipping
mkPurchaseCreateShipping :: PurchaseCreateShipping
mkPurchaseCreateShipping =
    PurchaseCreateShipping
        { purchaseCreateShippingAddress :: Maybe ShippingAddressCreate
purchaseCreateShippingAddress = Maybe ShippingAddressCreate
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateShippingAddress_id :: Maybe Text
purchaseCreateShippingAddress_id = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
        , purchaseCreateShippingFees :: Maybe [ShippingFeeCreate]
purchaseCreateShippingFees = Maybe [ShippingFeeCreate]
forall a. Maybe a
GHC.Maybe.Nothing
        }

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

An optional type designation for the payment gateway transaction created by this request. Supports \'moto\' value, which is the acronym for mail order and telephone transactions.
-}
data PurchaseCreateTransaction_type
    = -- | This case is used if the value encountered during decoding does not match any of the provided cases in the specification.
      PurchaseCreateTransaction_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.
      PurchaseCreateTransaction_typeTyped Data.Text.Internal.Text
    | -- | Represents the JSON value @"moto"@
      PurchaseCreateTransaction_typeEnumMoto
    deriving (Int -> PurchaseCreateTransaction_type -> ShowS
[PurchaseCreateTransaction_type] -> ShowS
PurchaseCreateTransaction_type -> String
(Int -> PurchaseCreateTransaction_type -> ShowS)
-> (PurchaseCreateTransaction_type -> String)
-> ([PurchaseCreateTransaction_type] -> ShowS)
-> Show PurchaseCreateTransaction_type
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> PurchaseCreateTransaction_type -> ShowS
showsPrec :: Int -> PurchaseCreateTransaction_type -> ShowS
$cshow :: PurchaseCreateTransaction_type -> String
show :: PurchaseCreateTransaction_type -> String
$cshowList :: [PurchaseCreateTransaction_type] -> ShowS
showList :: [PurchaseCreateTransaction_type] -> ShowS
GHC.Show.Show, PurchaseCreateTransaction_type
-> PurchaseCreateTransaction_type -> Bool
(PurchaseCreateTransaction_type
 -> PurchaseCreateTransaction_type -> Bool)
-> (PurchaseCreateTransaction_type
    -> PurchaseCreateTransaction_type -> Bool)
-> Eq PurchaseCreateTransaction_type
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: PurchaseCreateTransaction_type
-> PurchaseCreateTransaction_type -> Bool
== :: PurchaseCreateTransaction_type
-> PurchaseCreateTransaction_type -> Bool
$c/= :: PurchaseCreateTransaction_type
-> PurchaseCreateTransaction_type -> Bool
/= :: PurchaseCreateTransaction_type
-> PurchaseCreateTransaction_type -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON PurchaseCreateTransaction_type where
    toJSON :: PurchaseCreateTransaction_type -> Value
toJSON (PurchaseCreateTransaction_typeOther Value
val) = Value
val
    toJSON (PurchaseCreateTransaction_typeTyped Text
val) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
val
    toJSON (PurchaseCreateTransaction_type
PurchaseCreateTransaction_typeEnumMoto) = Value
"moto"
instance Data.Aeson.Types.FromJSON.FromJSON PurchaseCreateTransaction_type where
    parseJSON :: Value -> Parser PurchaseCreateTransaction_type
parseJSON Value
val =
        PurchaseCreateTransaction_type
-> Parser PurchaseCreateTransaction_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
"moto" -> PurchaseCreateTransaction_type
PurchaseCreateTransaction_typeEnumMoto
                | Bool
GHC.Base.otherwise -> Value -> PurchaseCreateTransaction_type
PurchaseCreateTransaction_typeOther Value
val
            )