A family of combinators for defining webservices APIs and serving them

You can learn about the basics in the tutorial.




Breaking changes

Other changes

  • Add a type representing an empty API (#753)
  • Add linkURI' and Link accessors (#745 , #717 , #715)
  • Prepare for GHC-8.2 (#722)
  • Add HasLink AuthProtect instance (#720)
  • AllCTRender [] () TypeError (use NoContent) (#671)
  • Documentation improvements and typo fixes (#702 , #709 , #716 , #725 , #727)


Breaking changes

  • Use NT from natural-transformation for Enter (#616)

  • Change to MkLink (Verb ...) = Link (previously URI). To consume Link use its ToHttpApiData instance or linkURI. (#527)

Other changes

  • Add Servant.API.TypeLevel module with type families to work with API types. (#345 , #305)

  • Default JSON content type change to application/json;charset=utf-8. (#263) Related browser bugs: Chromium and Firefox

  • Accept class may accept multiple content-types. MimeUnrender adopted as well. (#613 , #615)


  • Added 'noHeader' function for not adding response headers.


  • Added Eq, Show, Read, Generic and Ord instances to IsSecure
  • BACKWARDS INCOMPATIBLE: replace use of ToFromByteString with To/FromHttpApiData for GetHeaders/BuildHeadersTo
  • BACKWARDS INCOMPATIBLE: Moved From/ToFormUrlEncoded classes, which were renamed to From/ToForm to http-api-data


  • Add CaptureAll combinator. Captures all of the remaining segments in a URL.
  • Add Servant.API.TypeLevel module, with frequently used type-level functionaliy.


  • Minor fixes, documentation changes and cabal tweaks


  • Add module Servant.Utils.Enter (https://github.com/haskell-servant/servant/pull/478)
  • Allow to set the same header multiple times in responses.


  • Add WithNamedConfig combinator.
  • Add HttpVersion, IsSecure, RemoteHost and Vault combinators
  • Fix safeLink, so Header is not in fact required.
  • Add more instances for (:<|>)
  • Use http-api-data instead of Servant.Common.Text
  • Remove matrix params.
  • Add PlainText String MimeRender and MimeUnrender instances.
  • Add new Verbs combinator, and make all existing and new verb combinators type synonyms of it.
  • Add BasicAuth combinator to support Basic authentication
  • Add generalized authentication support


  • Fix missing cases for Patch in safeLink


  • Allow whitespace after parsing JSON
  • Stricter matching for safeLink for Capture


  • Delete now is like Get, Post, Put, and Patch and returns a response body
  • Multiple content-type/accept support for all the relevant combinators
  • Provide JSON, PlainText, OctetStream and FormUrlEncoded content types out of the box
  • Type-safe link generation to API endpoints
  • Support for the PATCH HTTP method
  • Removed the home-made QuasiQuote for writing API types in a more human-friendly format until we come up with a better design for it
  • Make most if not all of the haddock code examples run through doctest
  • Some general code cleanup
  • Add response headers
Used by 103 packages:
alerta, aur, avers-api, avers-api-docs, avers-server, circlehs, dixi, ethereum-analyzer-webui, fbmessenger-api, giphy-api, gogol-core, google-maps-geocoding, google-static-maps, google-translate, grakn, hackernews, harvest-api, haskell-kubernetes, hipchat-hs, hoggl, hw-kafka-avro, keysafe, lackey, language-puppet, listenbrainz-client, lxd-client, magicbane, mailchimp, mellon-web, miso, mondo, monzo, nomyx-api, openweathermap, pdf-slave-server, pivotal-tracker, pocket, quickwebapp, rbpcp-api, react-flux-servant, servant-aeson-specs, servant-auth-client, servant-auth-cookie, servant-auth-docs, servant-auth-hmac, servant-auth-swagger, servant-auth-token, servant-auth-token-api, servant-blaze, servant-cassava, servant-checked-exceptions, servant-client, servant-csharp, servant-db, servant-db-postgresql, servant-docs, servant-ede, servant-ekg, servant-elm, servant-examples, servant-foreign, servant-generic, servant-github, servant-github-webhook, servant-haxl-client, servant-iCalendar, servant-jquery, servant-js, servant-JuicyPixels, servant-lucid, servant-matrix-param, servant-mock, servant-multipart, servant-named, servant-pool, servant-postgresql, servant-purescript, servant-pushbullet-client, servant-py, servant-quickcheck, servant-rawm, servant-router, servant-scotty, servant-server, servant-smsc-ru, servant-snap, servant-static-th, servant-subscriber, servant-swagger, servant-swagger-ui, servant-yaml, servant-zeppelin-client, servant-zeppelin-server, servant-zeppelin-swagger, slack-web, smsaero, telegram-api, thentos-cookie-session, tpb, twfy-api-client, yahoo-finance-api, ziptastic-client, ziptastic-core
comments powered byDisqus