Skip to content

raimohanska/autoschema

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoSchema

Build Status

Generate JSON Schema from Scala classes!

Features

  • Generates JSON Schema from classes
  • Annotate your classes to customize schema generation
  • Supports common types
    • Seq, Lists, Arrays, etc.
    • Options
    • java.util.Date and Joda DateTime
    • String, Boolean, Int, Long, Double
    • java.util.UUID
  • Caching of generated schema

Unsupported Features

  • Play Framework JSON types

Installation

Add this line to your build.sbt:

    libraryDependencies += "org.coursera" %% "autoschema" % "0.1"

Usage

With a type parameter

    case class MyType(myValue: Int)
    AutoSchema.createSchema[MyType]

With a reflection type

    AutoSchema.createSchema(myReflectionType)

Annotations

AutoSchema has a few annotations that you can use to customize generated schema

Description

Lets you manually define comments for case clases and fields which are translated in a description field of the commented element in the JSON schema.

    @Description("This is my class")
    case class MyClass(@Term.Description("This is my field") myField: String)

FormatAs

Lets you manually set the type and format values of the schema to be generated for a specific type or value

On a Type

    @FormatAs("string", "date")
    case class MyDateType

On a Value

    case class MyType(@Term.FormatAs("string", "date") date: String)

ExposeAs

Lets you use the schema of some type as the schema for another type or value

On a Type

    @ExposeAs[Int]
    case class MyIntLikeType

On a Value

    case class MyType(@Term.ExposeAs[Id] id: MyTypeId)

Hide

Lets you hide a value in generated schema

    case class MyType(@Term.Hide mySecretField: Int)

Copyright 2014 Coursera Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

Generates JSON Schema from Scala classes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 100.0%