Skip to content

Latest commit

 

History

History
66 lines (46 loc) · 2.13 KB

sbt-openapi-codegen.md

File metadata and controls

66 lines (46 loc) · 2.13 KB

Generate endpoint definitions from an OpenAPI YAML

.. note::

  This is a really early alpha implementation.

Installation steps

Add the sbt plugin to the project/plugins.sbt:

addSbtPlugin("com.softwaremill.sttp.tapir" % "sbt-openapi-codegen" % "0.18.0-M1")

Enable the plugin for your project in the build.sbt:

enablePlugins(OpenapiCodegenPlugin)

Add your OpenApi file to the project, and override the openapiSwaggerFile setting in the build.sbt:

openapiSwaggerFile := baseDirectory.value / "swagger.yaml"

At this point your compile step will try to generate the endpoint definitions to the sttp.tapir.generated.TapirGeneratedEndpoints object, where you can access the defined case-classes and endpoint definitions.

Usage and options

The generator currently supports these settings, you can override them in the build.sbt;

=================== ==================================== ===========================================
setting             default value                        description                             
=================== ==================================== ===========================================
openapiSwaggerFile  baseDirectory.value / "swagger.yaml" The swagger file with the api definitions.
openapiPackage      sttp.tapir.generated                 The name for the generated package.
openapiObject       TapirGeneratedEndpoints              The name for the generated object.
=================== ==================================== ===========================================

The general usage is;

import sttp.tapir.generated._
import sttp.tapir.docs.openapi._
import sttp.tapir.openapi.circe.yaml._

val docs = TapirGeneratedEndpoints.generatedEndpoints.toOpenAPI("My Bookshop", "1.0")

Limitations

Currently, the generated code depends on "io.circe" %% "circe-generic". In the future probably we will make the encoder/decoder json lib configurable (PRs welcome).

We currently miss a lot of OpenApi features like:

  • tags
  • enums/ADTs
  • missing model types and meta descriptions (like date, minLength)
  • file handling