Trait

endpoints.generic

JsonSchemas

Related Doc: package generic

Permalink

trait JsonSchemas extends algebra.JsonSchemas

Enriches JsonSchemas with two kinds of operations:

- genericJsonSchema[A] derives the JsonSchema of an algebraic data type A; - (field1 :×: field2 :×: …).as[A] builds a tuple of Records and maps it to a case class A

The data type description derivation is based on the underlying field and constructor names.

For instance, consider the following program that derives the description of a case class:

case class User(name: String, age: Int)
object User {
  implicit val schema: JsonSchema[User] = genericJsonSchema[User]
}

It is equivalent to the following:

case class User(name: String, age: Int)
object User {
  implicit val schema: JsonSchema[User] = (
    field[String]("name") zip
    field[Int]("age")
  ).invmap((User.apply _).tupled)(Function.unlift(User.unapply))
}
Source
JsonSchemas.scala
Linear Supertypes
algebra.JsonSchemas, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. JsonSchemas
  2. JsonSchemas
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. abstract type Enum[A] <: JsonSchema[A]

    Permalink
    Definition Classes
    JsonSchemas
  2. trait GenericJsonSchema[A] extends AnyRef

    Permalink
  3. trait GenericJsonSchemaLowLowPriority extends AnyRef

    Permalink
  4. trait GenericJsonSchemaLowPriority extends GenericJsonSchemaLowLowPriority

    Permalink
  5. abstract type JsonSchema[A]

    Permalink
    Definition Classes
    JsonSchemas
  6. implicit final class JsonSchemaOps[A] extends AnyRef

    Permalink
    Definition Classes
    JsonSchemas
  7. abstract type Record[A] <: JsonSchema[A]

    Permalink
    Definition Classes
    JsonSchemas
  8. final class RecordGenericOps[L <: HList] extends AnyRef

    Permalink
  9. implicit final class RecordOps[A] extends AnyRef

    Permalink
    Definition Classes
    JsonSchemas
  10. abstract type Tagged[A] <: JsonSchema[A]

    Permalink
    Definition Classes
    JsonSchemas
  11. implicit final class TaggedOps[A] extends AnyRef

    Permalink
    Definition Classes
    JsonSchemas

Abstract Value Members

  1. implicit abstract def arrayJsonSchema[C[X] <: Seq[X], A](implicit jsonSchema: JsonSchema[A], cbf: CanBuildFrom[_, A, C[A]]): JsonSchema[C[A]]

    Permalink
    Definition Classes
    JsonSchemas
  2. implicit abstract def bigdecimalJsonSchema: JsonSchema[BigDecimal]

    Permalink
    Definition Classes
    JsonSchemas
  3. implicit abstract def booleanJsonSchema: JsonSchema[Boolean]

    Permalink
    Definition Classes
    JsonSchemas
  4. abstract def choiceTagged[A, B](taggedA: Tagged[A], taggedB: Tagged[B]): Tagged[Either[A, B]]

    Permalink
    Definition Classes
    JsonSchemas
  5. implicit abstract def doubleJsonSchema: JsonSchema[Double]

    Permalink
    Definition Classes
    JsonSchemas
  6. abstract def emptyRecord: Record[Unit]

    Permalink
    Definition Classes
    JsonSchemas
  7. abstract def enumeration[A](values: Seq[A])(encode: (A) ⇒ String)(implicit tpe: JsonSchema[String]): Enum[A]

    Permalink
    Definition Classes
    JsonSchemas
  8. abstract def field[A](name: String, documentation: Option[String])(implicit tpe: JsonSchema[A]): Record[A]

    Permalink
    Definition Classes
    JsonSchemas
  9. implicit abstract def floatJsonSchema: JsonSchema[Float]

    Permalink
    Definition Classes
    JsonSchemas
  10. implicit abstract def intJsonSchema: JsonSchema[Int]

    Permalink
    Definition Classes
    JsonSchemas
  11. abstract def invmapJsonSchema[A, B](jsonSchema: JsonSchema[A], f: (A) ⇒ B, g: (B) ⇒ A): JsonSchema[B]

    Permalink
    Definition Classes
    JsonSchemas
  12. abstract def invmapRecord[A, B](record: Record[A], f: (A) ⇒ B, g: (B) ⇒ A): Record[B]

    Permalink
    Definition Classes
    JsonSchemas
  13. abstract def invmapTagged[A, B](taggedA: Tagged[A], f: (A) ⇒ B, g: (B) ⇒ A): Tagged[B]

    Permalink
    Definition Classes
    JsonSchemas
  14. abstract def lazySchema[A](schema: ⇒ JsonSchema[A], name: String): JsonSchema[A]

    Permalink
    Definition Classes
    JsonSchemas
  15. implicit abstract def longJsonSchema: JsonSchema[Long]

    Permalink
    Definition Classes
    JsonSchemas
  16. abstract def named[A, S[T] <: JsonSchema[T]](schema: S[A], name: String): S[A]

    Permalink
    Definition Classes
    JsonSchemas
  17. abstract def optField[A](name: String, documentation: Option[String])(implicit tpe: JsonSchema[A]): Record[Option[A]]

    Permalink
    Definition Classes
    JsonSchemas
  18. implicit abstract def stringJsonSchema: JsonSchema[String]

    Permalink
    Definition Classes
    JsonSchemas
  19. abstract def taggedRecord[A](recordA: Record[A], tag: String): Tagged[A]

    Permalink
    Definition Classes
    JsonSchemas
  20. abstract def withDiscriminator[A](tagged: Tagged[A], discriminatorName: String): Tagged[A]

    Permalink
    Definition Classes
    JsonSchemas
  21. abstract def zipRecords[A, B](recordA: Record[A], recordB: Record[B]): Record[(A, B)]

    Permalink
    Definition Classes
    JsonSchemas

Concrete Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. object GenericJsonSchema extends GenericJsonSchemaLowPriority

    Permalink
  5. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  6. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  7. def defaultDiscriminatorName: String

    Permalink
    Definition Classes
    JsonSchemas
  8. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. def genericJsonSchema[A](implicit arg0: ClassTag[A], genJsonSchema: GenericJsonSchema[A]): JsonSchema[A]

    Permalink

    returns

    a JsonSchema[A] obtained from an implicitly derived GenericJsonSchema[A] In a sense, this operation asks shapeless to compute a type level description of a data type (based on HLists and Coproducts) and turns it into a term level description of the data type (based on the JsonSchemas algebra interface)

  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  15. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  18. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  19. implicit def toRecordGenericOps[A](record: Record[A]): RecordGenericOps[::[A, HNil]]

    Permalink
  20. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  21. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  22. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from algebra.JsonSchemas

Inherited from AnyRef

Inherited from Any

Ungrouped