Contraband 

Contraband is a description language for your datatypes and APIs, currently targeting Java and Scala.

You describe the types and fields of your API, and Contraband will:

  • generate either Java classes, or a pseudo case classes in Scala.
  • generate JSON bindings for the datatypes.

Contraband also enables you to evolve the API over time.

Setup 

To enable the Contraband plugin for your build, put the following line in project/contraband.sbt:

addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "X.Y.Z")

Your Contraband schema should be placed in src/main/contraband and src/test/contraband. Here’s how your build should be configured:

lazy val library = (project in file("library")).
  enablePlugins(ContrabandPlugin).
  settings(
    name := "foo library"
  )

Note 

Contraband is NOT supported under the Lightbend subscription.