JsonSchemaOps

endpoints4s.algebra.JsonSchemas.JsonSchemaOps
final implicit class JsonSchemaOps[A](schemaA: JsonSchema[A]) extends JsonSchemaDocumentationOps[A]

Implicit methods for values of type JsonSchema

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any

Members list

Type members

Types

type Self = JsonSchema[A]

Value members

Concrete methods

def orFallbackTo[B](schemaB: JsonSchema[B]): JsonSchema[Either[A, B]]

A schema that can be either schemaA or schemaB.

A schema that can be either schemaA or schemaB.

  • Encoder interpreters forward to schemaA to encode a Left value or schemaB to encode a Right value,
  • Decoder interpreters first try to decode with schemaA, and fallback to schemaB in case of failure,
  • Documentation interpreter produce a oneOf JSON schema.

The difference between this operation and the operation orElse on “tagged” schemas is that this operation does not rely on a discriminator field between the alternative schemas. As a consequence, decoding is slower than with “tagged” schemas and provides less precise error messages.

Value parameters

schemaB

fallback schema

Attributes

Note

Be careful to use ''disjoint'' schemas for A and B (none must be a subtype of the other), otherwise, a value of type B might also be successfully decoded as a value of type A, and this could have surprising consequences.

def withDescription(description: String): JsonSchema[A]

Include a description of what this schema represents

Include a description of what this schema represents

  • Encoder and decoder interpreters ignore this description,
  • Documentation interpreters can show this description.

Value parameters

description

information about the values described by the schema

Attributes

def withExample(example: A): JsonSchema[A]

Include an example of value in this schema

Include an example of value in this schema

  • Encoder and decoder interpreters ignore this value,
  • Documentation interpreters can show this example value.

Value parameters

example

Example value to attach to the schema

Attributes

def withTitle(title: String): JsonSchema[A]

Include a title for the schema

Include a title for the schema

  • Encoder and decoder interpreters ignore the title,
  • Documentation interpreters can show this title.

Value parameters

title

short title to attach to the schema

Attributes