-- | The API module Stripe.Api where import Stripe.Resources import Servant.API import qualified Data.Text as T type StripeAuth = BasicAuth "Stripe API" () type StripeApi = "v1" :> StripeApiInternal type StripeApiInternal = "customers" :> CustomerApi :<|> "products" :> ProductApi :<|> "prices" :> PriceApi :<|> "subscriptions" :> SubscriptionApi :<|> "checkout" :> "sessions" :> CheckoutApi :<|> "billing_portal" :> "sessions" :> CustomerPortalApi :<|> "events" :> EventApi type CustomerApi = StripeAuth :> ReqBody '[FormUrlEncoded] CustomerCreate :> Post '[JSON] Customer :<|> StripeAuth :> Capture ":customer_id" CustomerId :> Get '[JSON] Customer :<|> StripeAuth :> Capture ":customer_id" CustomerId :> ReqBody '[FormUrlEncoded] CustomerUpdate :> Post '[JSON] Customer :<|> StripeAuth :> QueryParam "starting_after" CustomerId :> Get '[JSON] (StripeList Customer) type EventApi = StripeAuth :> Capture ":event_id" EventId :> Get '[JSON] Event :<|> StripeAuth :> QueryParam "starting_after" EventId :> Get '[JSON] (StripeList Event) type ProductApi = StripeAuth :> ReqBody '[FormUrlEncoded] ProductCreate :> Post '[JSON] Product :<|> StripeAuth :> Capture ":product_id" ProductId :> Get '[JSON] Product type PriceApi = StripeAuth :> ReqBody '[FormUrlEncoded] PriceCreate :> Post '[JSON] Price :<|> StripeAuth :> Capture ":product_id" PriceId :> Get '[JSON] Price :<|> StripeAuth :> QueryParam "lookup_keys[]" T.Text :> Get '[JSON] (StripeList Price) type SubscriptionApi = StripeAuth :> ReqBody '[FormUrlEncoded] SubscriptionCreate :> Post '[JSON] Subscription :<|> StripeAuth :> Capture ":subscription_id" SubscriptionId :> Get '[JSON] Subscription :<|> StripeAuth :> QueryParam "customer" CustomerId :> Get '[JSON] (StripeList Subscription) type CheckoutApi = StripeAuth :> ReqBody '[FormUrlEncoded] CheckoutSessionCreate :> Post '[JSON] CheckoutSession :<|> StripeAuth :> Capture ":session_id" CheckoutSessionId :> Get '[JSON] CheckoutSession type CustomerPortalApi = StripeAuth :> ReqBody '[FormUrlEncoded] CustomerPortalCreate :> Post '[JSON] CustomerPortal