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: Akka HTTP Routes/Directives Http4s HttpRoutes[F] Netty Finatra FinatraRoute Pe