servant-routes
Copyright(c) Frederick Pringle 2025
LicenseBSD-3-Clause
Maintainerfrederick.pringle@fpringle.com
Safe HaskellNone
LanguageHaskell2010

Servant.API.Routes.Route

Description

Simple term-level representation of Servant API endpoints.

Synopsis

API routes

The Route type is not sophisticated, and its internals are hidden. Create Routes using defRoute, and update its fields using the provided lenses.

data Route Source #

A simple representation of a single endpoint of an API.

Instances

Instances details
ToJSON Route Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Show Route Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Methods

showsPrec :: Int -> Route -> ShowS #

show :: Route -> String #

showList :: [Route] -> ShowS #

Eq Route Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Methods

(==) :: Route -> Route -> Bool #

(/=) :: Route -> Route -> Bool #

Ord Route Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Methods

compare :: Route -> Route -> Ordering #

(<) :: Route -> Route -> Bool #

(<=) :: Route -> Route -> Bool #

(>) :: Route -> Route -> Bool #

(>=) :: Route -> Route -> Bool #

max :: Route -> Route -> Route #

min :: Route -> Route -> Route #

defRoute :: Method -> Route Source #

Given a REST Method, create a default Route: root path ("/") with no params, headers, body, auths, or response.

renderRoute :: Route -> Text Source #

Pretty-print a Route. Note that the output is minimal and doesn't contain all the information contained in a Route. For full output, use the ToJSON instance.

ghci> renderRoute $ defRoute \"POST\"
"POST /"
ghci> :{
ghci| renderRoute $
ghci|   defRoute \"POST\"
ghci|     & routePath %~ prependPathPart "api/v2"
ghci|     & routeParams .~ [singleParam @"p1" @T.Text, flagParam @"flag", arrayElemParam @"p2s" @(Maybe Int)]
ghci| :}
"POST /api/v2?p1=<Text>&flag&p2s=<[Maybe Int]>"

Optics

add :: Ord a => ASetter s t (Set a) (Set a) -> a -> s -> t Source #

Auxiliary types

newtype RouteDescription Source #

Description of a route. This will correspond to the Servant Description combinator.

It should be noted that the HasRoutes behaviour for Description diverges from that in servant-openapi3, in the case that one EP has multiple Description combinators. For example, given the following API:

type MyAPI =
  "transaction" :> TransactionAPI
    :<|> "user" :> Description "User sub-API"
          :> ( Description "Get my user" :> Get '[JSON] User
              :<|> "list" :> Get '[JSON] [User]
             )

The Operation that servant-openapi generates for the GET /user endpoint will have the two Descriptions mappend-ed together: "User sub-APIGet my user".

The corresponding Route will take the most specific RouteDescription: "Get my user".

Constructors

RouteDescription 

Fields

Instances

Instances details
FromJSON RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

ToJSON RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

IsString RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Monoid RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Semigroup RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Show RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Eq RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Ord RouteDescription Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

newtype RouteSummary Source #

Short summary of a route. This will correspond to the Servant Summary combinator. The behaviour described for RouteDescription is the same for RouteSummary.

Constructors

RouteSummary 

Fields

Instances

Instances details
FromJSON RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

ToJSON RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

IsString RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Monoid RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Semigroup RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Show RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Eq RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route

Ord RouteSummary Source # 
Instance details

Defined in Servant.API.Routes.Internal.Route