{-# LANGUAGE OverloadedStrings, TemplateHaskell #-}
-- | Invitation API.
module Web.Mackerel.Api.Invitation (createInvitation, revokeInvitation) where

import Data.Aeson (Value)
import qualified Data.HashMap.Lazy as HM
import Network.HTTP.Types (StdMethod(..))

import Web.Mackerel.Client
import Web.Mackerel.Internal.Api
import Web.Mackerel.Types.Invitation

createInvitation :: Client -> Invitation -> IO (Either ApiError Invitation)
createInvitation client invitation
  = request client POST "/api/v0/invitations" [] (Just invitation) (createHandler id)

revokeInvitation :: Client -> String -> IO (Either ApiError ())
revokeInvitation client email
  = request client POST "/api/v0/invitations/revoke" [] (Just (HM.singleton "email" email :: HM.HashMap String String)) (createHandler ((\_ -> ()) :: Value -> ()))