tapir, or Typed API descRiptions
With tapir, you can describe HTTP API endpoints as immutable Scala values. Each endpoint can contain a number of input and output parameters. An endpoint specification can be interpreted as:
a server, given the “business logic”: a function, which computes output parameters based on input parameters. Currently supported:
a client, which is a function from input parameters to output parameters. Currently supported:
documentation. Currently supported:
Tapir is licensed under Apache2, the source code is available on GitHub.
Depending on how you prefer to explore the library, take a look at one of the examples or read on for a more detailed description of how tapir works!
Tapir is available:
all modules - Scala 2.12 and 2.13 on the JVM
selected modules (core; http4s, vertx, netty, aws servers; sttp and http4s clients; openapi; some js and datatype integrations) - Scala 3 on the JVM
selected modules (aws server; sttp client; some js and datatype integrations) - Scala 2.12, 2.13 and 3 using Scala.JS.
Other sttp projects
sttp is a family of Scala HTTP-related projects, and currently includes:
sttp client: the Scala HTTP client you always wanted!
sttp tapir: this project
sttp model: simple HTTP model classes (used by client & tapir)
Sponsors
Development and maintenance of sttp tapir is sponsored by SoftwareMill, a software development and consulting company. We help clients scale their business through software. Our areas of expertise include backends, distributed systems, blockchain, machine learning and data analytics.
Table of contents
- Running as an akka-http server
- Running as an http4s server
- Running as an http4s server using ZIO
- Running as a Netty-based server
- Running as a Finatra server
- Running as a Play server
- Running as a Vert.X server
- Running as a zio-http server
- Running using the AWS serverless stack
- Server options
- Interceptors
- Server logic
- Observability
- Error handling
- Logging & debugging