endpoints4s.generic

Enriches algebras with operations performing generic derivation

Attributes

Members list

Type members

Classlikes

trait JsonSchemas extends JsonSchemas

Enriches JsonSchemas with two kinds of operations:

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

For instance, consider the following program that derives the JSON schema 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")
   ).xmap((User.apply _).tupled)(Function.unlift(User.unapply))
 }

Attributes

Supertypes
trait JsonSchemas
class Object
trait Matchable
class Any
Show all
case class discriminator(name: String) extends Annotation

Defines the name of the discriminator field of a generic tagged schema.

Defines the name of the discriminator field of a generic tagged schema.

Annotate a sealed trait definition with this annotation to define the name of its discriminator field.

Value parameters

name

Name of the tagged discriminator field

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Annotation
class Object
trait Matchable
class Any
Show all
case class docs(text: String) extends Annotation

Adds a description to a case class field, a case class, or a sealed trait.

Adds a description to a case class field, a case class, or a sealed trait.

Annotate a case class field, case class, or sealed trait with this annotation to set a description for the schema or the record field.

Value parameters

text

Description of the annotated schema or field

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Annotation
class Object
trait Matchable
class Any
Show all
case class name(value: String) extends Annotation

Defines the name of a generic schema.

Defines the name of a generic schema.

Annotate a sealed trait or case class definition with this annotation to define its schema name. Setting the name of a schema explicitly means that you can control exactly what the URI of the JSON schema will be in the OpenAPI documentation.

Value parameters

value

Name of the schema

Attributes

See also

Use title to customize the user-friendly name of the schema in the OpenAPI documentation

Note

The name of the schema is used internally by OpenAPI in the URI that gets used to refer to the schema. Consequently, the name set here should include only characters allowed in URIs.

Supertypes
trait Serializable
trait Product
trait Equals
class Annotation
class Object
trait Matchable
class Any
Show all
case class title(value: String) extends Annotation

Defines the title of a generic schema.

Defines the title of a generic schema.

Annotate a sealed trait or case class definition with this annotation to define its schema title.

Value parameters

text

Title of the schema

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Annotation
class Object
trait Matchable
class Any
Show all
case class unnamed() extends Annotation

Specifies that a generic schema should not have a name.

Specifies that a generic schema should not have a name.

Annotate a sealed trait or case class definition with this annotation to prevent the schema from being named. This is sometimes useful for forcing nested schemas to be inlined in OpenAPI documentation.

Attributes

Supertypes
trait Serializable
trait Product
trait Equals
class Annotation
class Object
trait Matchable
class Any
Show all