module Control.Monad.Apiary.Action
    ( ActionT
    , hoistActionT
    -- * stop action
    , application
    , stop

    -- * getter
    , param
    , params

    -- * setter
    , status
    -- ** response header
    , addHeader, setHeaders, modifyHeader
    , contentType
    -- ** response body
    , reset
    , builder
    , bytes, lazyBytes
    , text,  lazyText
    , showing
    , json
    , string, char
    , appendBuilder
    , appendBytes, appendLazyBytes
    , appendText, appendLazyText
    , appendShowing
    , appendString, appendChar
    , file
    , file'

    -- ** monolithic action
    -- *** redirect
    , redirect, redirectPermanently, redirectTemporary

    -- *** documentation
    , defaultDocumentationAction
    , DefaultDocumentConfig(..)

    -- * not export from Web.Apiary
    , ContentType
    , stopWith
    , applyDict
    -- ** getter
    , getRequest
    , getHeaders
    , getParams
    , getQueryParams

    , ActionReqBody(..), getReqBody
    , getReqBodyParams
    , getReqBodyFiles
    , getReqBodyJSON
    -- ** setter
    , devFile
    , devFile'
    , stream
    , rawResponse
    , StreamingBody
    -- ** vault
    , lookupVault
    , modifyVault
    , insertVault
    , adjustVault
    , deleteVault
    -- ** redirect
    , redirectWith
    ) where

import Control.Monad.Apiary.Action.Internal
import Network.Wai