module Hreq.Core.API
    ( 
      module Hreq.Core.API.Request
      
    , module Hreq.Core.API.Response
      
    , module Hreq.Core.API.Internal
      
    , module Hreq.Core.API.MediaType
       
    , module Hreq.Core.API.Streaming
      
    , module Hreq.Core.API.TypeLevel
      
    , module Hreq.Core.API.Verb
      
    , module Hreq.Core.API
      
    , ToHttpApiData (..)
    , Header
    , Status (..)
    , HeaderName
    ) where
import Data.Kind
import Hreq.Core.API.Internal
import Hreq.Core.API.MediaType
import Hreq.Core.API.Request
import Hreq.Core.API.Response
import Hreq.Core.API.Streaming
import Hreq.Core.API.TypeLevel
import Hreq.Core.API.Verb
import Network.HTTP.Types (Header, HeaderName, Status (..))
import Web.HttpApiData (ToHttpApiData (..))
type StatusCode = Int
type JsonBody (a :: Type) = ReqBody JSON a
type GetJson a = Get '[ ResBody JSON a]
type PostJson a = Post '[ResBody JSON a]
type PutJson a = Put '[ ResBody JSON a]
type PatchJson a = Patch '[ ResBody JSON a]
type DeleteJson a = Delete '[ResBody JSON a]
type RawResponse v = Verb v '[ Raw ]
type EmptyResponse v = Verb v ('[ ] :: [ ResContent Type ])