package tapir
- Alphabetic
- By Inheritance
- tapir
- Tapir
- ModifyMacroSupport
- ModifyMacroFunctorSupport
- TapirDerivedInputs
- AnyRef
- Any
- Hide All
- Show All
- Public
- Protected
Package Members
Type Members
- type AnyCodec = Codec[_, _ <: CodecFormat, _]
- type AnyCodecForMany = CodecForMany[_, _ <: CodecFormat, _]
- type AnyCodecMeta = CodecMeta[_, _ <: CodecFormat, _]
- type AnyPart = Part[_]
- trait Codec[T, CF <: CodecFormat, R] extends Decode[T, R]
A pair of functions: one to encode a value of type
T
to a raw value of typeR
formatted asCF
, and another one to decode.A pair of functions: one to encode a value of type
T
to a raw value of typeR
formatted asCF
, and another one to decode.Also contains meta-data on the
schema
of the value, the codec format and the raw value type.- T
Type of the values which can be encoded / to which raw values can be decoded.
- CF
The format of encoded values. Corresponds to a media type.
- R
Type of the raw value to which values are encoded.
- Annotations
- @implicitNotFound("""Cannot find a codec for type: ${T}, formatted as: ${CF}.
Did you define a codec for: ${T}?
Did you import the codecs for: ${CF}?
Is there an implicit schema for: ${T}, and all of its components?
(codecs are looked up as implicit values of type Codec[${T}, ${CF}, _];
schemas are looked up as implicit values of type Schema[${T}])
""")
- trait CodecForMany[T, CF <: CodecFormat, R] extends Decode[T, Seq[R]]
A Codec which can encode to multiple (0..n) raw values / decode from multiple raw values.
A Codec which can encode to multiple (0..n) raw values / decode from multiple raw values. An multiple raw value specifies that the raw values should be included in the output multiple times. Depending on the codec, decoding from a multiple value might yield DecodeResult.Missing or DecodeResult.Multiple.
Should be used for inputs/outputs which can be mapped to a multiple values.
The main difference comparing to Codec is the signature of the
encode
andrawDecode
methods. For each Codec, a CodecForMany can be derived.- Annotations
- @implicitNotFound("""Cannot find a codec for type: ${T}, formatted as: ${CF}.
Did you define a codec for: ${T}?
Did you import the codecs for: ${CF}?
Is there an implicit schema for: ${T}, and all of its components?
(codecs are looked up as implicit values of type Codec[${T}, ${CF}, _];
schemas are looked up as implicit values of type Schema[${T}])
""")
- trait CodecForOptional[T, CF <: CodecFormat, R] extends Decode[T, Option[R]]
A Codec which can encode to optional raw values / decode from optional *raw* values.
A Codec which can encode to optional raw values / decode from optional *raw* values. An optional raw value specifies if the raw value should be included in the output, or not. Depending on the codec, decoding from an optional value might yield DecodeResult.Missing.
Should be used for inputs/outputs which can be mapped to an optional value.
The main difference comparing to Codec is the signature of the
encode
andrawDecode
methods. For each Codec, a CodecForOptional can be derived.- Annotations
- @implicitNotFound("""Cannot find a codec for type: ${T}, formatted as: ${CF}.
Did you define a codec for: ${T}?
Did you import the codecs for: ${CF}?
Is there an implicit schema for: ${T}, and all of its components?
(codecs are looked up as implicit values of type Codec[${T}, ${CF}, _];
schemas are looked up as implicit values of type Schema[${T}])
""")
- trait CodecFormat extends AnyRef
Specifies the format of the encoded values.
Specifies the format of the encoded values. Each variant must be a proper type so that it can be used as a discriminator for different (implicit) instances of Codec values.
- case class CodecMeta[T, CF <: CodecFormat, R] extends Product with Serializable
Contains meta-data for a Codec, between type
T
and a raw valueR
.Contains meta-data for a Codec, between type
T
and a raw valueR
.The meta-data consists of the schema for type
T
, validator and reified type of the raw value. - trait Decode[T, R] extends AnyRef
- sealed trait DecodeFailure extends DecodeResult[Nothing]
- sealed trait DecodeResult[+T] extends AnyRef
- case class Endpoint[I, E, O, +S](input: EndpointInput[I], errorOutput: EndpointOutput[E], output: EndpointOutput[O], info: EndpointInfo) extends Product with Serializable
- I
Input parameter types.
- E
Error output parameter types.
- O
Output parameter types.
- S
The type of streams that are used by this endpoint's inputs/outputs.
Nothing
, if no streams are used.
- sealed trait EndpointIO[I] extends EndpointInput[I] with EndpointOutput[I]
- case class EndpointInfo(name: Option[String], summary: Option[String], description: Option[String], tags: Vector[String], deprecated: Boolean) extends Product with Serializable
- sealed trait EndpointInput[I] extends AnyRef
- sealed trait EndpointOutput[I] extends AnyRef
- trait LowPrioritySchema extends AnyRef
- case class MultipartValueType(partCodecMetas: Map[String, AnyCodecMeta], defaultCodecMeta: Option[AnyCodecMeta]) extends RawValueType[Seq[RawPart]] with Product with Serializable
- type RawPart = Part[_]
- sealed trait RawValueType[R] extends AnyRef
- case class Schema[T](schemaType: SchemaType, isOptional: Boolean = false, description: Option[String] = None, format: Option[String] = None, deprecated: Boolean = false) extends Product with Serializable
Describes the shape of the low-level, "raw" representation of type
T
.Describes the shape of the low-level, "raw" representation of type
T
.- format
The name of the format of the low-level representation of
T
.
- sealed trait SchemaType extends AnyRef
- sealed trait StreamingEndpointIO[I, +S] extends AnyRef
- case class StringValueType(charset: Charset) extends RawValueType[String] with Product with Serializable
- trait Tapir extends TapirDerivedInputs with ModifyMacroSupport
- trait TapirAliases extends AnyRef
Mixin containing aliases for top-level types and modules in the tapir package.
- trait TapirDerivedInputs extends AnyRef
- case class ValidationError[T](validator: Primitive[T], invalidValue: T, path: List[FieldName] = Nil) extends Product with Serializable
- sealed trait Validator[T] extends AnyRef
- implicit class ModifyEach[F[_], T] extends AnyRef
- Definition Classes
- ModifyMacroFunctorSupport
- trait ModifyFunctor[F[_], A] extends AnyRef
- Definition Classes
- ModifyMacroFunctorSupport
- implicit class ModifyEachMap[F[_, _], K, T] extends AnyRef
- Definition Classes
- ModifyMacroSupport
Value Members
- def auth: TapirAuth.type
- Definition Classes
- Tapir
- def binaryBody[T](implicit codec: CodecForOptional[T, OctetStream, _]): Body[T, OctetStream, _]
- Definition Classes
- Tapir
- def body[T, CF <: CodecFormat](implicit tm: CodecForOptional[T, CF, _]): Body[T, CF, _]
- Definition Classes
- Tapir
- def clientIp: EndpointInput[Option[String]]
- Definition Classes
- TapirDerivedInputs
- def cookie[T](name: String)(implicit arg0: PlainCodecForOptional[T]): Cookie[T]
- Definition Classes
- Tapir
- def cookies: Header[List[Cookie]]
- Definition Classes
- Tapir
- def emptyOutput: EndpointOutput[Unit]
An empty output.
An empty output. Useful if one of
oneOf
branches should be mapped to the status code only.- Definition Classes
- Tapir
- val endpoint: Endpoint[Unit, Unit, Unit, Nothing]
- Definition Classes
- Tapir
- def extractFromRequest[T](f: (ServerRequest) => T): ExtractFromRequest[T]
Extract a value from a server request.
Extract a value from a server request. This input is only used by server interpreters, it is ignored by documentation interpreters and the provided value is discarded by client interpreters.
- Definition Classes
- Tapir
- def formBody[T](implicit codec: CodecForOptional[T, XWwwFormUrlencoded, _]): Body[T, XWwwFormUrlencoded, _]
- Definition Classes
- Tapir
- def header(name: String, value: String): FixedHeader
- Definition Classes
- Tapir
- def header(h: Header): FixedHeader
- Definition Classes
- Tapir
- def header[T](name: String)(implicit arg0: PlainCodecForMany[T]): Header[T]
- Definition Classes
- Tapir
- def headers: Headers
- Definition Classes
- Tapir
- val htmlBodyUtf8: Body[String, TextHtml, String]
- Definition Classes
- Tapir
- val infallibleEndpoint: Endpoint[Unit, Nothing, Unit, Nothing]
- Definition Classes
- Tapir
- def jsonBody[T](implicit codec: CodecForOptional[T, Json, _]): Body[T, Json, _]
- Definition Classes
- Tapir
- def multipartBody[T](implicit codec: CodecForOptional[T, MultipartFormData, _]): Body[T, MultipartFormData, _]
- Definition Classes
- Tapir
- def oneOf[I](firstCase: StatusMapping[_ <: I], otherCases: StatusMapping[_ <: I]*): OneOf[I]
Maps status codes to outputs.
Maps status codes to outputs. All outputs must have a common supertype (
I
). Typically, the supertype is a sealed trait, and the mappings are implementing cases classes.Note that exhaustiveness of the mappings is not checked (that all subtypes of
I
are covered).- Definition Classes
- Tapir
- implicit def optionModifyFunctor[A]: ModifyFunctor[Option, A]
- Definition Classes
- ModifyMacroFunctorSupport
- def path[T](name: String)(implicit arg0: PlainCodec[T]): PathCapture[T]
- Definition Classes
- Tapir
- def path[T](implicit arg0: PlainCodec[T]): PathCapture[T]
- Definition Classes
- Tapir
- def paths: PathsCapture
- Definition Classes
- Tapir
- def plainBody[T](implicit codec: CodecForOptional[T, TextPlain, _]): Body[T, TextPlain, _]
- Definition Classes
- Tapir
- def query[T](name: String)(implicit arg0: PlainCodecForMany[T]): Query[T]
- Definition Classes
- Tapir
- def queryParams: QueryParams
- Definition Classes
- Tapir
- def schemaFor[T](implicit arg0: Schema[T]): Schema[T]
- Definition Classes
- Tapir
- def setCookie(name: String): Header[CookieValueWithMeta]
- Definition Classes
- Tapir
- def setCookies: Header[List[CookieWithMeta]]
- Definition Classes
- Tapir
- def statusCode(statusCode: StatusCode): FixedStatusCode
- Definition Classes
- Tapir
- def statusCode: StatusCode
- Definition Classes
- Tapir
- def statusDefaultMapping[O](output: EndpointOutput[O]): StatusMapping[O]
Create a fallback mapping to be used in oneOf output descriptions.
- macro def statusMapping[O](statusCode: StatusCode, output: EndpointOutput[O])(implicit arg0: ClassTag[O]): StatusMapping[O]
Create a status mapping which uses
statusCode
andoutput
if the class of the provided value (when interpreting as a server) matches the runtime class ofO
.Create a status mapping which uses
statusCode
andoutput
if the class of the provided value (when interpreting as a server) matches the runtime class ofO
.This will fail at compile-time if the type erasure of
O
is different fromO
, as a runtime check in this situation would give invalid results. In such cases, use statusMappingClassMatcher, statusMappingValueMatcher or statusMappingFromMatchType instead.Should be used in oneOf output descriptions.
- Definition Classes
- Tapir
- def statusMappingClassMatcher[O](statusCode: StatusCode, output: EndpointOutput[O], runtimeClass: Class[_]): StatusMapping[O]
Create a status mapping which uses
statusCode
andoutput
if the class of the provided value (when interpreting as a server) matches the givenruntimeClass
. - def statusMappingFromMatchType[O](statusCode: StatusCode, output: EndpointOutput[O])(implicit arg0: MatchType[O]): StatusMapping[O]
Experimental!
Experimental!
Create a status mapping which uses
statusCode
andoutput
if the provided value matches the target type, as checked by MatchType. Instances of MatchType are automatically derived and recursively check that classes of all fields match, to bypass issues caused by type erasure.Should be used in oneOf output descriptions.
- Definition Classes
- Tapir
- def statusMappingValueMatcher[O](statusCode: StatusCode, output: EndpointOutput[O])(matcher: PartialFunction[Any, Boolean]): StatusMapping[O]
Create a status mapping which uses
statusCode
andoutput
if the provided value (when interpreting as a server matches thematcher
predicate. - def streamBody[S](schema: Schema[_], format: CodecFormat): Body[S, format.type]
- schema
Schema of the body. Note that any schema can be passed here, usually this will be a schema for the "deserialized" stream.
- format
The format of the stream body, which specifies its media type.
- Definition Classes
- Tapir
- def stringBody(charset: Charset): Body[String, TextPlain, String]
- Definition Classes
- Tapir
- def stringBody(charset: String): Body[String, TextPlain, String]
- Definition Classes
- Tapir
- def stringBody: Body[String, TextPlain, String]
- Definition Classes
- Tapir
- implicit def stringToPath(s: String): EndpointInput[Unit]
- Definition Classes
- Tapir
- implicit def traversableModifyFunctor[F[_], A](implicit fac: Factory[A, F[A]], ev: (F[A]) => Iterable[A]): ModifyFunctor[F, A]
- Definition Classes
- ModifyMacroSupport
- object ByteArrayValueType extends RawValueType[Array[Byte]] with Product with Serializable
- object ByteBufferValueType extends RawValueType[ByteBuffer] with Product with Serializable
- object Codec extends MultipartCodecDerivation with FormCodecDerivation
- object CodecForMany
- object CodecForOptional
- object CodecFormat
- object CodecMeta extends Serializable
- object DecodeResult
- object Defaults
- object EndpointIO
- object EndpointInput
- object EndpointOutput
- object FileValueType extends RawValueType[File] with Product with Serializable
- object InputStreamValueType extends RawValueType[InputStream] with Product with Serializable
- object RenderPathTemplate
- object Schema extends SchemaMagnoliaDerivation with LowPrioritySchema with Serializable
- object SchemaType
- object StreamingEndpointIO
- object TapirAuth
- object Validator extends ValidatorMagnoliaDerivation with ValidatorEnumMacro