    {-# LANGUAGE DataKinds      #-}
    {-# LANGUAGE KindSignatures #-}

    module Servant.API.WithNamedContext where

    import           GHC.TypeLits
    import           Data.Kind
                     (Type)

    -- | 'WithNamedContext' names a specific tagged context to use for the
    -- combinators in the API. (See also in @servant-server@,
    -- @Servant.Server.Context@.) For example:
    --
    -- > type UseNamedContextAPI = WithNamedContext "myContext" '[String] (
    -- >     ReqBody '[JSON] Int :> Get '[JSON] Int)
    --
    -- Both the 'ReqBody' and 'Get' combinators will use the 'WithNamedContext' with
    -- type tag "myContext" as their context.
    --
    -- 'Context's are only relevant for @servant-server@.
    --
    -- For more information, see the tutorial.
    data WithNamedContext (name :: Symbol) (subContext :: [Type]) subApi