guardrail-dev / sbt-guardrail   0.75.2

MIT License Website GitHub

Principled code generation from OpenAPI specifications

Scala versions: 2.12
sbt plugins: 1.0

sbt-guardrail sbt-guardrail | Join the chat at

An SBT plugin for adding clients and servers generated by guardrail to your service.


Check out the docs


addSbtPlugin("dev.guardrail" % "sbt-guardrail" % "<Please use the latest available release!>")


/* Available arguments:
    pkg: String
    dto: String
    framework: String
    modules: List[String]
    tracing: Boolean
    imports: List[String]
    encodeOptionalAs: Option[CodingConfig]
    decodeOptionalAs: Option[CodingConfig]
guardrailTasks in Compile := List(
  ScalaClient(file("github.yaml"), pkg="com.example.clients.github"),
  ScalaClient(file("github.yaml"), pkg="com.example.clients.github", 
              encodeOptionalAs = codingOptional,
              decodeOptionalAs = codingRequiredNullable),
  ScalaServer(file("myserver.yaml"), pkg="com.example.server", tracing=true),
  ScalaModels(file("myserver.yaml"), pkg="com.example.models"),
  JavaClient(file("github.yaml"), pkg="com.example.clients.github")

Alternatively use the guardrailDiscoveredOpenApiFiles setting to automatically discover OpenAPI spec files under src/main/openapi or src/test/openapi (see the test for full example):

Compile / guardrailTasks := (Compile / guardrailDiscoveredOpenApiFiles).value.flatMap { openApiFile =>
    ScalaClient(openApiFile.file, pkg = openApiFile.pkg, framework = "http4s"),
    ScalaServer(openApiFile.file, pkg = openApiFile.pkg, framework = "http4s")