{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
module Mollie.API.Refunds
( RefundAPI
, getRefunds
, getRefundsPaginated
, newRefund
, createPaymentRefund
, getPaymentRefund
, cancelPaymentRefund
) where
import Data.Default (Default, def)
import GHC.Generics (Generic)
import Mollie.API.Internal (HalJSON)
import Mollie.API.Types
import Servant.API
import Servant.API.Generic
data RefundAPI route = RefundAPI
{ getRefundsPaginated :: route :- "refunds"
:> QueryParam "limit" Int
:> QueryParam "from" RefundId
:> Get '[HalJSON] (List Refund)
, getRefunds :: route :- "refunds"
:> Get '[HalJSON] (List Refund)
, createPaymentRefund :: route :- "payments"
:> Capture "paymentId" PaymentId
:> "refunds"
:> ReqBody '[JSON] NewRefund
:> Post '[HalJSON] Refund
, getPaymentRefund :: route :- "payments"
:> Capture "paymentId" PaymentId
:> "refunds"
:> Capture "id" RefundId
:> Get '[HalJSON] Refund
, cancelPaymentRefund :: route :- "payments"
:> Capture "paymentId" PaymentId
:> "refunds"
:> Capture "id" RefundId
:> DeleteNoContent '[HalJSON] NoContent
} deriving Generic
newRefund :: NewRefund
newRefund = def