module Web.Stripe.InvoiceItem
(
createInvoiceItem
, getInvoiceItem
, getInvoiceItemExpandable
, getInvoiceItems
, getInvoiceItemsExpandable
, updateInvoiceItem
, deleteInvoiceItem
, InvoiceItemId (..)
, InvoiceItem (..)
, CustomerId (..)
, Currency (..)
, InvoiceId (..)
, Invoice (..)
, SubscriptionId (..)
, StripeDeleteResult (..)
, StripeList (..)
, Description
, Amount
) where
import Web.Stripe.Client.Internal (Method (GET, POST, DELETE), Stripe,
StripeRequest (..), callAPI, toMetaData, toExpandable,
getParams, toText, (</>), toTextLower)
import Web.Stripe.Types (Amount, Currency (..), StripeList(..),
CustomerId (..), Description,
InvoiceId (..), InvoiceItem (..), Invoice(..),
InvoiceItemId (..), Limit, StartingAfter, EndingBefore,
StripeDeleteResult (..), ExpandParams,
SubscriptionId (..), MetaData)
import Web.Stripe.Types.Util
createInvoiceItem
:: CustomerId
-> Amount
-> Currency
-> Maybe InvoiceId
-> Maybe SubscriptionId
-> Maybe Description
-> MetaData
-> Stripe InvoiceItem
createInvoiceItem
customerid
amount
currency
invoiceid
subscriptionId
description
metadata = callAPI request
where request = StripeRequest POST url params
url = "invoiceitems"
params = toMetaData metadata ++ getParams [
("customer", Just $ getCustomerId customerid)
, ("amount", toText `fmap` Just amount)
, ("currency", toTextLower `fmap` Just currency)
, ("invoice", (\(InvoiceId x) -> x) `fmap` invoiceid)
, ("subscription", (\(SubscriptionId x) -> x) `fmap` subscriptionId)
, ("description", description)
]
getInvoiceItems
:: Maybe CustomerId
-> Limit
-> StartingAfter InvoiceItemId
-> EndingBefore InvoiceItemId
-> Stripe (StripeList InvoiceItem)
getInvoiceItems
customerid
limit
startingAfter
endingBefore = callAPI request
where request = StripeRequest GET url params
url = "invoiceitems"
params = getParams [
("limit", toText `fmap` limit )
, ("starting_after", (\(InvoiceItemId x) -> x) `fmap` startingAfter)
, ("ending_before", (\(InvoiceItemId x) -> x) `fmap` endingBefore)
, ("customer", (\(CustomerId x) -> x) `fmap` customerid)
]
getInvoiceItemsExpandable
:: Maybe CustomerId
-> Limit
-> StartingAfter InvoiceItemId
-> EndingBefore InvoiceItemId
-> ExpandParams
-> Stripe (StripeList InvoiceItem)
getInvoiceItemsExpandable
customerid
limit
startingAfter
endingBefore
expandParams = callAPI request
where request = StripeRequest GET url params
url = "invoiceitems"
params = getParams [
("limit", toText `fmap` limit )
, ("starting_after", (\(InvoiceItemId x) -> x) `fmap` startingAfter)
, ("ending_before", (\(InvoiceItemId x) -> x) `fmap` endingBefore)
, ("customer", (\(CustomerId x) -> x) `fmap` customerid)
] ++ toExpandable expandParams
getInvoiceItem
:: InvoiceItemId
-> Stripe InvoiceItem
getInvoiceItem
invoiceitemid =
getInvoiceItemExpandable invoiceitemid []
getInvoiceItemExpandable
:: InvoiceItemId
-> ExpandParams
-> Stripe InvoiceItem
getInvoiceItemExpandable
invoiceitemid
expandParams = callAPI request
where request = StripeRequest GET url params
url = "invoiceitems" </> getInvoiceItemId invoiceitemid
params = toExpandable expandParams
updateInvoiceItem
:: InvoiceItemId
-> Maybe Amount
-> Maybe Description
-> MetaData
-> Stripe InvoiceItem
updateInvoiceItem
invoiceitemid
amount
description
metadata = callAPI request
where request = StripeRequest POST url params
url = "invoiceitems" </> getInvoiceItemId invoiceitemid
params = toMetaData metadata ++ getParams [
("amount", toText `fmap` amount)
, ("description", description)
]
deleteInvoiceItem
:: InvoiceItemId
-> Stripe StripeDeleteResult
deleteInvoiceItem
invoiceitemid = callAPI request
where request = StripeRequest DELETE url params
url = "invoiceitems" </> getInvoiceItemId invoiceitemid
params = []