SchemaCompanionMacros

sttp.tapir.macros.SchemaCompanionMacros

Attributes

Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
object Schema.type

Members list

Value members

Concrete methods

Creates a schema for an enumeration, where the validator is derived using sttp.tapir.Validator.derivedEnumeration. This requires that this is an enum, where all cases are parameterless, or that all subtypes of the sealed hierarchy T are objects.

Creates a schema for an enumeration, where the validator is derived using sttp.tapir.Validator.derivedEnumeration. This requires that this is an enum, where all cases are parameterless, or that all subtypes of the sealed hierarchy T are objects.

This method cannot be implicit, as there's no way to constraint the type T to be an enum / sealed trait or class enumeration, so that this would be invoked only when necessary.

Attributes

Creates a schema for an Enumeration, where the validator is created using the enumeration's values. Unlike the default derivedEnumerationValue method, which provides the schema implicitly, this variant allows customising how the schema is created. This is useful if the low-level representation of the schema is different than a String, or if the enumeration's values should be encoded in a different way than using .toString.

Creates a schema for an Enumeration, where the validator is created using the enumeration's values. Unlike the default derivedEnumerationValue method, which provides the schema implicitly, this variant allows customising how the schema is created. This is useful if the low-level representation of the schema is different than a String, or if the enumeration's values should be encoded in a different way than using .toString.

Because of technical limitations of macros, the customisation arguments can't be given here directly, instead being delegated to CreateDerivedEnumerationSchema.

Attributes

inline def oneOfUsingField[E, V](inline extractor: E => V, asString: V => String)(mapping: (V, Schema[_])*)(implicit conf: Configuration, discriminatorSchema: Schema[V]): Schema[E]

Create a coproduct schema (e.g. for a sealed trait), where the value of the discriminator between child types is a read of a field of the base type. The field, if not yet present, is added to each child schema.

Create a coproduct schema (e.g. for a sealed trait), where the value of the discriminator between child types is a read of a field of the base type. The field, if not yet present, is added to each child schema.

The schemas of the child types have to be provided explicitly with their value mappings in mapping.

Note that if the discriminator value is some transformation of the child's type name (obtained using the implicit Configuration), the coproduct schema can be derived automatically or semi-automatically.

Value parameters

discriminatorSchema

The schema that is used when adding the discriminator as a field to child schemas (if it's not yet in the schema).

Attributes

inline def oneOfWrapped[E](implicit conf: Configuration): Schema[E]

Create a coproduct schema for an enum, sealed trait or sealed abstract class, where to discriminate between child types a wrapper product is used. The name of the sole field in this product corresponds to the type's name, transformed using the implicit Configuration.

Create a coproduct schema for an enum, sealed trait or sealed abstract class, where to discriminate between child types a wrapper product is used. The name of the sole field in this product corresponds to the type's name, transformed using the implicit Configuration.

See also Schema.wrapWithSingleFieldProduct, which creates the wrapper product given a schema.

Attributes

inline def schemaForMap[K, V : Schema](keyToString: K => String): Schema[Map[K, V]]

Create a schema for a map with arbitrary keys. The schema for the keys (Schema[K]) should be a string (that is, the schema type should be sttp.tapir.SchemaType.SString), however this cannot be verified at compile-time and is not verified at run-time.

Create a schema for a map with arbitrary keys. The schema for the keys (Schema[K]) should be a string (that is, the schema type should be sttp.tapir.SchemaType.SString), however this cannot be verified at compile-time and is not verified at run-time.

The given keyToString conversion function is used during validation.

If you'd like this schema to be available as an implicit for a given type of keys, create an custom implicit, e.g.:

case class MyKey(value: String) extends AnyVal
implicit val schemaForMyMap = Schema.schemaForMap[MyKey, MyValue](_.value)

Attributes

Inherited methods

inline def derived[T](using genericDerivationConfig: Configuration, m: Of[T]): Schema[T]

Attributes

Inherited from:
SchemaMagnoliaDerivation

Implicits

Implicits

implicit inline def derivedEnumerationValue[T <: Value]: Schema[T]

Create a schema for an Enumeration, where the validator is created using the enumeration's values. The low-level representation of the enum is a String, and the enum values in the documentation will be encoded using .toString.

Create a schema for an Enumeration, where the validator is created using the enumeration's values. The low-level representation of the enum is a String, and the enum values in the documentation will be encoded using .toString.

Attributes

implicit inline def schemaForMap[V : Schema]: Schema[Map[String, V]]