sttp.tapir.ztapir

Type members

Classlikes

case
class ZPartialServerEndpoint[R, A, U, I, E, O, -C](endpoint: Endpoint[A, I, E, O, C], securityLogic: A => ZIO[R, E, U]) extends EndpointInputsOps[A, I, E, O, C] with EndpointOutputsOps[A, I, E, O, C] with EndpointInfoOps[C] with EndpointMetaOps

An endpoint with the security logic provided, and the main logic yet unspecified. See RichZEndpoint.zServerLogic.

An endpoint with the security logic provided, and the main logic yet unspecified. See RichZEndpoint.zServerLogic.

The provided security part of the server logic transforms inputs of type A, either to an error of type E, or value of type U.

The part of the server logic which is not provided, will have to transform a tuple: (U, I) either into an error, or a value of type O.

Inputs/outputs can be added to partial endpoints as to regular endpoints, however the shape of the error outputs is fixed and cannot be changed. Hence, it's possible to create a base, secured input, and then specialise it with inputs, outputs and logic as needed.

Type Params
A

Type of the security inputs, transformed into U

C

The capabilities that are required by this endpoint's inputs/outputs. Any, if no requirements.

E

Error output parameter types.

I

Input parameter types.

O

Output parameter types.

U

Type of transformed security input.

trait ZTapir

Inherited classlikes

implicit
class ModifyEach[F[_], T](t: F[T])(implicit f: ModifyFunctor[F, T])
implicit
class ModifyEachMap[F[_, _], K, T](t: F[K, T])(implicit fac: Factory[(K, T), F[K, T]])
Inherited from
ModifyMacroSupport
trait ModifyFunctor[F[_], A]
implicit
class RichZEndpoint[A, I, E, O, C](e: Endpoint[A, I, E, O, C])
Inherited from
ZTapir
implicit
class RichZServiceEndpoint[R, A, U, I, E, O, C](zse: ZServerEndpoint[R, C])
Inherited from
ZTapir
final
class WebSocketBodyBuilder[REQ, REQ_CF <: CodecFormat, RESP, RESP_CF <: CodecFormat]
Inherited from
Tapir

Inherited types

type TapirFile = File
Inherited from
TapirExtensions
type ZServerEndpoint[R, -C] = ServerEndpoint[C, [_] =>> RIO[R, _$1]]
Inherited from
ZTapir

Value members

Inherited methods

def anyFromStringBody[T, CF <: CodecFormat](codec: Codec[String, T, CF], charset: Charset): Body[String, T]

A body in any format, read using the given codec, from a raw string read using charset.

A body in any format, read using the given codec, from a raw string read using charset.

Inherited from
Tapir
def anyFromUtf8StringBody[T, CF <: CodecFormat](codec: Codec[String, T, CF]): Body[String, T]

A body in any format, read using the given codec, from a raw string read using UTF-8.

A body in any format, read using the given codec, from a raw string read using UTF-8.

Inherited from
Tapir
def auth: TapirAuth

Inputs which describe authentication credentials with metadata.

Inputs which describe authentication credentials with metadata.

Inherited from
Tapir
def binaryBody[R : ([R] =>> Codec[R, T, OctetStream]), T]: Body[R, T]
Inherited from
Tapir
def byteArrayBody: Body[Array[Byte], Array[Byte]]
Inherited from
Tapir
def byteBufferBody: Body[ByteBuffer, ByteBuffer]
Inherited from
Tapir
def clientIp: EndpointInput[Option[String]]
Inherited from
TapirComputedInputs
def cookies: Header[List[Cookie]]
Inherited from
Tapir
def customJsonBody[T : JsonCodec]: Body[String, T]

Requires an implicit Codec.JsonCodec in scope. Such a codec can be created using Codec.json.

Requires an implicit Codec.JsonCodec in scope. Such a codec can be created using Codec.json.

However, json codecs are usually derived from json-library-specific implicits. That's why integrations with various json libraries define jsonBody methods, which directly require the library-specific implicits.

Unless you have defined a custom json codec, the jsonBody methods should be used.

Inherited from
Tapir
def emptyOutputAs[T](value: T): Basic[T]

An empty output. Useful if one of the oneOf branches of a coproduct type is a case object that should be mapped to an empty body.

An empty output. Useful if one of the oneOf branches of a coproduct type is a case object that should be mapped to an empty body.

Inherited from
Tapir
def extractFromRequest[T](f: ServerRequest => T): ExtractFromRequest[T]

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.

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.

Inherited from
Tapir
def fileBody: Body[FileRange, TapirFile]
Inherited from
Tapir
def fileGetServerEndpoint[F[_]](path: EndpointInput[Unit])(systemPath: String): ServerEndpoint[Any, F]

A server endpoint, which exposes a single file from local storage found at systemPath, using the given path.

A server endpoint, which exposes a single file from local storage found at systemPath, using the given path.

fileServerEndpoint("static" / "hello.html")("/home/app/static/data.html")
Inherited from
TapirStaticContentEndpoints
def fileRangeBody: Body[FileRange, FileRange]
Inherited from
Tapir
def fileServerEndpoints[F[_]](prefix: EndpointInput[Unit])(systemPath: String): List[ServerEndpoint[Any, F]]

Create pair of endpoints (head, get) for particular file

Create pair of endpoints (head, get) for particular file

Inherited from
TapirStaticContentEndpoints
def filesGetEndpoint(prefix: EndpointInput[Unit]): PublicEndpoint[StaticInput, StaticErrorOutput, StaticOutput[FileRange], Any]
Inherited from
TapirStaticContentEndpoints
def filesGetServerEndpoint[F[_]](prefix: EndpointInput[Unit])(systemPath: String): ServerEndpoint[Any, F]

A server endpoint, which exposes files from local storage found at systemPath, using the given prefix. Typically, the prefix is a path, but it can also contain other inputs. For example:

A server endpoint, which exposes files from local storage found at systemPath, using the given prefix. Typically, the prefix is a path, but it can also contain other inputs. For example:

filesServerEndpoint("static" / "files")("/home/app/static")

A request to /static/files/css/styles.css will try to read the /home/app/static/css/styles.css file.

Inherited from
TapirStaticContentEndpoints
def filesHeadServerEndpoint[F[_]](prefix: EndpointInput[Unit])(systemPath: String): ServerEndpoint[Any, F]

A server endpoint, used to verify if sever supports range requests for file under particular path Additionally it verify file existence and returns its size

A server endpoint, used to verify if sever supports range requests for file under particular path Additionally it verify file existence and returns its size

Inherited from
TapirStaticContentEndpoints
def formBody[T : ([T] =>> Codec[String, T, XWwwFormUrlencoded])](charset: Charset): Body[String, T]
Inherited from
Tapir
def formBody[T : ([T] =>> Codec[String, T, XWwwFormUrlencoded])]: Body[String, T]
Inherited from
Tapir
def header(name: String, value: String): FixedHeader[Unit]
Inherited from
Tapir
def header(h: Header): FixedHeader[Unit]
Inherited from
Tapir
def header[T : ([T] =>> Codec[List[String], T, TextPlain])](name: String): Header[T]
Inherited from
Tapir
def headers: Headers[List[Header]]
Inherited from
Tapir
def inputStreamBody: Body[InputStream, InputStream]
Inherited from
Tapir
def isWebSocket: EndpointInput[Boolean]
Inherited from
TapirComputedInputs
def multipartBody[T](implicit multipartCodec: MultipartCodec[T]): Body[Seq[RawPart], T]
Inherited from
Tapir
def oneOf[T](firstCase: OneOfMapping[_ <: T], otherCases: OneOfMapping[_ <: T]*): OneOf[T, T]

An output which contains a number of variant outputs.

An output which contains a number of variant outputs.

All possible outputs must have a common supertype (T). Typically, the supertype is a sealed trait, and the mappings are implementing case classes.

When encoding to a response, the first matching output is chosen, using the following rules:

  1. the mappings appliesTo method, applied to the output value (as returned by the server logic) must return true.
  2. when a fixed content type is specified by the output, it must match the request's Accept header (if present). This implements content negotiation.

When decoding from a response, the first output which decodes successfully is chosen.

The outputs might vary in status codes, headers (e.g. different content types), and body implementations. However, for bodies, only replayable ones can be used, and they need to have the same raw representation (e.g. all byte-array-base, or all file-based).

Note that exhaustiveness of the mappings (that all subtypes of T are covered) is not checked.

Inherited from
Tapir
def oneOfDefaultMapping[T](output: EndpointOutput[T]): OneOfMapping[T]

Create a fallback mapping to be used in oneOf output descriptions. Multiple such mappings can be specified, with different body content types.

Create a fallback mapping to be used in oneOf output descriptions. Multiple such mappings can be specified, with different body content types.

Inherited from
Tapir
inline
def oneOfMapping[T : ClassTag](statusCode: StatusCode, output: EndpointOutput[T]): OneOfMapping[T]

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the runtime class of T. Adds a fixed status-code output with the given value.

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the runtime class of T. Adds a fixed status-code output with the given value.

This will fail at compile-time if the type erasure of T is different from T, as a runtime check in this situation would give invalid results. In such cases, use oneOfMappingClassMatcher, oneOfMappingValueMatcher or oneOfMappingFromMatchType instead.

Should be used in oneOf output descriptions.

Inherited from
TapirMacros
inline
def oneOfMapping[T : ClassTag](output: EndpointOutput[T]): OneOfMapping[T]

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the runtime class of T.

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the runtime class of T.

This will fail at compile-time if the type erasure of T is different from T, as a runtime check in this situation would give invalid results. In such cases, use oneOfMappingClassMatcher, oneOfMappingValueMatcher or oneOfMappingFromMatchType instead.

Should be used in oneOf output descriptions.

Inherited from
TapirMacros
def oneOfMappingClassMatcher[T](code: StatusCode, output: EndpointOutput[T], runtimeClass: Class[_]): OneOfMapping[T]

Create a one-of-mapping which uses output i the class of the provided value (when interpreting as a server) matches the given runtimeClass. Note that this does not take into account type erasure. Adds a fixed status-code output with the given value.

Create a one-of-mapping which uses output i the class of the provided value (when interpreting as a server) matches the given runtimeClass. Note that this does not take into account type erasure. Adds a fixed status-code output with the given value.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingClassMatcher[T](output: EndpointOutput[T], runtimeClass: Class[_]): OneOfMapping[T]

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the given runtimeClass. Note that this does not take into account type erasure.

Create a one-of-mapping which uses output if the class of the provided value (when interpreting as a server) matches the given runtimeClass. Note that this does not take into account type erasure.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingExactMatcher[T : ClassTag](code: StatusCode, output: EndpointOutput[T])(firstExactValue: T, rest: T*): OneOfMapping[T]

Create a one-of-mapping which uses output if the provided value exactly matches one of the values provided in the second argument list. Adds a fixed status-code output with the given value.

Create a one-of-mapping which uses output if the provided value exactly matches one of the values provided in the second argument list. Adds a fixed status-code output with the given value.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingExactMatcher[T : ClassTag](output: EndpointOutput[T])(firstExactValue: T, rest: T*): OneOfMapping[T]

Create a one-of-mapping which output if the provided value exactly matches one of the values provided in the second argument list.

Create a one-of-mapping which output if the provided value exactly matches one of the values provided in the second argument list.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingFromMatchType[T : MatchType](code: StatusCode, output: EndpointOutput[T]): OneOfMapping[T]

Experimental!

Experimental!

Create a one-of-mapping which uses output 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. Adds a fixed status-code output with the given value.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingFromMatchType[T : MatchType](output: EndpointOutput[T]): OneOfMapping[T]

Experimental!

Experimental!

Create a one-of-mapping which uses output 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.

Inherited from
Tapir
def oneOfMappingValueMatcher[T](code: StatusCode, output: EndpointOutput[T])(matcher: PartialFunction[Any, Boolean]): OneOfMapping[T]

Create a one-of-mapping which uses output if the provided value (when interpreting as a server matches the matcher predicate. Adds a fixed status-code output with the given value.

Create a one-of-mapping which uses output if the provided value (when interpreting as a server matches the matcher predicate. Adds a fixed status-code output with the given value.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def oneOfMappingValueMatcher[T](output: EndpointOutput[T])(matcher: PartialFunction[Any, Boolean]): OneOfMapping[T]

Create a one-of-mapping which uses output if the provided value (when interpreting as a server matches the matcher predicate.

Create a one-of-mapping which uses output if the provided value (when interpreting as a server matches the matcher predicate.

Should be used in oneOf output descriptions.

Inherited from
Tapir
def path[T : ([T] =>> Codec[String, T, TextPlain])](name: String): PathCapture[T]
Inherited from
Tapir
def path[T : ([T] =>> Codec[String, T, TextPlain])]: PathCapture[T]
Inherited from
Tapir
def pathBody: Body[FileRange, Path]
Inherited from
TapirExtensions
def paths: PathsCapture[List[String]]
Inherited from
Tapir
def plainBody[T : ([T] =>> Codec[String, T, TextPlain])](charset: Charset): Body[String, T]
Inherited from
Tapir
def plainBody[T : ([T] =>> Codec[String, T, TextPlain])]: Body[String, T]
Inherited from
Tapir
def query[T : ([T] =>> Codec[List[String], T, TextPlain])](name: String): Query[T]
Inherited from
Tapir
def queryParams: QueryParams[QueryParams]
Inherited from
Tapir
def rawBinaryBody[R : Binary](implicit evidence$11: Binary[R], codec: Codec[R, R, OctetStream]): Body[R, R]
Inherited from
Tapir
def resourceGetServerEndpoint[F[_]](prefix: EndpointInput[Unit])(classLoader: ClassLoader, resourcePath: String, useGzippedIfAvailable: Boolean): ServerEndpoint[Any, F]

A server endpoint, which exposes a single resource available from the given classLoader at resourcePath, using the given path.

A server endpoint, which exposes a single resource available from the given classLoader at resourcePath, using the given path.

resourceServerEndpoint("static" / "hello.html")(classOf[App].getClassLoader, "app/data.html")
Inherited from
TapirStaticContentEndpoints
def resourcesGetEndpoint(prefix: EndpointInput[Unit]): PublicEndpoint[StaticInput, StaticErrorOutput, StaticOutput[InputStream], Any]
Inherited from
TapirStaticContentEndpoints
def resourcesGetServerEndpoint[F[_]](prefix: EndpointInput[Unit])(classLoader: ClassLoader, resourcePrefix: String): ServerEndpoint[Any, F]

A server endpoint, which exposes resources available from the given classLoader, using the given prefix. Typically, the prefix is a path, but it can also contain other inputs. For example:

A server endpoint, which exposes resources available from the given classLoader, using the given prefix. Typically, the prefix is a path, but it can also contain other inputs. For example:

resourcesServerEndpoint("static" / "files")(classOf[App].getClassLoader, "app")

A request to /static/files/css/styles.css will try to read the /app/css/styles.css resource.

Inherited from
TapirStaticContentEndpoints
def setCookie(name: String): Header[CookieValueWithMeta]
Inherited from
Tapir
def setCookieOpt(name: String): Header[Option[CookieValueWithMeta]]
Inherited from
Tapir
def setCookies: Header[List[CookieWithMeta]]
Inherited from
Tapir
def statusCode(statusCode: StatusCode): FixedStatusCode[Unit]

An fixed status code output.

An fixed status code output.

Inherited from
Tapir
def statusCode: StatusCode[StatusCode]

An output which maps to the status code in the response.

An output which maps to the status code in the response.

Inherited from
Tapir
def streamBinaryBody[S](s: Streams[S]): StreamBodyIO[BinaryStream, BinaryStream, S]

Creates a stream body with a binary schema. The application/octet-stream media type will be used by default, but can be later overridden by providing a custom Content-Type header value.

Creates a stream body with a binary schema. The application/octet-stream media type will be used by default, but can be later overridden by providing a custom Content-Type header value.

Value Params
s

A supported streams implementation.

Inherited from
Tapir
def streamBody[S, T](s: Streams[S])(schema: Schema[T], format: CodecFormat, charset: Option[Charset]): StreamBodyIO[BinaryStream, BinaryStream, S]

Creates a stream body with a text schema.

Creates a stream body with a text schema.

Value Params
charset

An optional charset of the resulting stream's data, to be used in the content type.

format

The media type to use by default. Can be later overridden by providing a custom Content-Type header.

s

A supported streams implementation.

schema

Schema of the body. This should be a schema for the "deserialized" stream.

Inherited from
Tapir
def streamTextBody[S](s: Streams[S])(format: CodecFormat, charset: Option[Charset]): StreamBodyIO[BinaryStream, BinaryStream, S]

Creates a stream body with a text schema.

Creates a stream body with a text schema.

Value Params
charset

An optional charset of the resulting stream's data, to be used in the content type.

format

The media type to use by default. Can be later overridden by providing a custom Content-Type header.

s

A supported streams implementation.

Inherited from
Tapir
def stringBody(charset: Charset): Body[String, String]
Inherited from
Tapir
def stringBody(charset: String): Body[String, String]
Inherited from
Tapir
def stringBody: Body[String, String]
Inherited from
Tapir
def webSocketBody[REQ, REQ_CF <: CodecFormat, RESP, RESP_CF <: CodecFormat]: WebSocketBodyBuilder[REQ, REQ_CF, RESP, RESP_CF]
Type Params
REQ

The type of messages that are sent to the server.

REQ_CF

The codec format (media type) of messages that are sent to the server.

RESP

The type of messages that are received from the server.

RESP_CF

The codec format (media type) of messages that are received from the server.

Inherited from
Tapir
def webSocketBodyRaw[S](s: Streams[S]): WebSocketBodyOutput[Pipe[WebSocketFrame, WebSocketFrame], WebSocketFrame, WebSocketFrame, Pipe[WebSocketFrame, WebSocketFrame], S]
Inherited from
Tapir
def xmlBody[T : XmlCodec]: Body[String, T]

Requires an implicit Codec.XmlCodec in scope. Such a codec can be created using Codec.xml.

Requires an implicit Codec.XmlCodec in scope. Such a codec can be created using Codec.xml.

Inherited from
Tapir

Deprecated and Inherited methods

@deprecated(message = "Use customJsonBody", since = "0.18.0")
def anyJsonBody[T : JsonCodec]: Body[String, T]
Deprecated
[Since version 0.18.0] Use customJsonBody
Inherited from
Tapir

Inherited fields

val emptyOutput: Empty[Unit]

An empty output.

An empty output.

Inherited from
Tapir
val endpoint: PublicEndpoint[Unit, Unit, Unit, Any]
Inherited from
Tapir
val htmlBodyUtf8: Body[String, String]
Inherited from
Tapir
val infallibleEndpoint: PublicEndpoint[Unit, Nothing, Unit, Any]
Inherited from
Tapir
val multipartBody: Body[Seq[RawPart], Seq[Part[Array[Byte]]]]
Inherited from
Tapir

Implicits

Inherited implicits

final implicit
def ModifyEach[F[_], T](t: F[T])(implicit f: ModifyFunctor[F, T]): ModifyEach[F, T]
Inherited from
ModifyMacroFunctorSupport
final implicit
def ModifyEachMap[F[_, _], K, T](t: F[K, T])(implicit fac: Factory[(K, T), F[K, T]]): ModifyEachMap[F, K, T]
Inherited from
ModifyMacroSupport
final implicit
def RichZEndpoint[A, I, E, O, C](e: Endpoint[A, I, E, O, C]): RichZEndpoint[A, I, E, O, C]
Inherited from
ZTapir
final implicit
def RichZServiceEndpoint[R, A, U, I, E, O, C](zse: ZServerEndpoint[R, C]): RichZServiceEndpoint[R, A, U, I, E, O, C]
Inherited from
ZTapir
implicit
Inherited from
ModifyMacroFunctorSupport
implicit
def stringToPath(s: String): FixedPath[Unit]
Inherited from
Tapir
implicit
def traversableModifyFunctor[F[_], A](implicit fac: Factory[A, F[A]], ev: F[A] => Iterable[A]): ModifyFunctor[F, A]
Inherited from
ModifyMacroSupport