Endpoint

zio.http.endpoint.Endpoint
See theEndpoint companion object
final case class Endpoint[PathInput, Input, Err, Output, Middleware <: EndpointMiddleware](route: RoutePattern[PathInput], input: HttpCodec[RequestType, Input], output: HttpCodec[ResponseType, Output], error: HttpCodec[ResponseType, Err], doc: Doc, middleware: Middleware)

An zio.http.endpoint.Endpoint represents an API endpoint for the HTTP protocol. Every API has an input, which comes from a combination of the HTTP route, query string parameters, and headers, and an output, which is the data computed by the handler of the API.

MiddlewareInput : Example: A subset of HttpCodec[Input] that doesn't give access to Input MiddlewareOutput: Example: A subset of Out[Output] that doesn't give access to Output Input: Example: Int Output: Example: User

As zio.http.endpoint.Endpoint is a purely declarative encoding of an endpoint, it is possible to use this model to generate a zio.http.Route (by supplying a handler for the endpoint), to generate OpenAPI documentation, to generate a type-safe Scala client for the endpoint, and possibly, to generate client libraries in other programming languages.

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all
Self type
Endpoint[PathInput, Input, Err, Output, Middleware]

Members list

Value members

Concrete methods

def ??(that: Doc): Endpoint[PathInput, Input, Err, Output, Middleware]

Returns a new API that is derived from this one, but which includes additional documentation that will be included in OpenAPI generation.

Returns a new API that is derived from this one, but which includes additional documentation that will be included in OpenAPI generation.

Attributes

def @@[M2 <: EndpointMiddleware](that: M2)(implicit inCombiner: Combiner[In, In], outCombiner: Combiner[Out, Out], errAlternator: Alternator[Err, Err]): Endpoint[PathInput, Input, Err, Output, Typed[Out, Out, Out]]

Returns a new endpoint derived from this one whose middleware is composed from the existing middleware of this endpoint, and the specified middleware.

Returns a new endpoint derived from this one whose middleware is composed from the existing middleware of this endpoint, and the specified middleware.

Attributes

def alternatives: Chunk[(Endpoint[PathInput, Input, Err, Output, Middleware], Condition)]

Flattens out this endpoint to a chunk of alternatives. Each alternative is guaranteed to not have any alternatives itself.

Flattens out this endpoint to a chunk of alternatives. Each alternative is guaranteed to not have any alternatives itself.

Attributes

def apply(input: Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B](a: A, b: B)(implicit ev: (A, B) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C](a: A, b: B, c: C)(implicit ev: (A, B, C) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D](a: A, b: B, c: C, d: D)(implicit ev: (A, B, C, D) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E](a: A, b: B, c: C, d: D, e: E)(implicit ev: (A, B, C, D, E) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F](a: A, b: B, c: C, d: D, e: E, f: F)(implicit ev: (A, B, C, D, E, F) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G](a: A, b: B, c: C, d: D, e: E, f: F, g: G)(implicit ev: (A, B, C, D, E, F, G) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G, H](a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H)(implicit ev: (A, B, C, D, E, F, G, H) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G, H, I](a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I)(implicit ev: (A, B, C, D, E, F, G, H, I) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G, H, I, J](a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J)(implicit ev: (A, B, C, D, E, F, G, H, I, J) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G, H, I, J, K](a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K)(implicit ev: (A, B, C, D, E, F, G, H, I, J, K) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def apply[A, B, C, D, E, F, G, H, I, J, K, L](a: A, b: B, c: C, d: D, e: E, f: F, g: G, h: H, i: I, j: J, k: K, l: L)(implicit ev: (A, B, C, D, E, F, G, H, I, J, K, L) <:< Input): Invocation[PathInput, Input, Err, Output, Middleware]
def examplesIn(examples: (String, Input)*): Endpoint[PathInput, Input, Err, Output, Middleware]
def examplesIn: Map[String, Input]
def examplesOut(examples: (String, Output)*): Endpoint[PathInput, Input, Err, Output, Middleware]
def examplesOut: Map[String, Output]
def header[A](codec: HeaderCodec[A])(implicit combiner: Combiner[Input, A]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint that requires the specified headers to be present.

Returns a new endpoint that requires the specified headers to be present.

Attributes

def implement[Env](original: Handler[Env, Err, Input, Output])(implicit trace: Trace): Route[Env, Nothing]
def in[Input2 : HttpContentCodec](implicit evidence$1: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema.

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema.

Attributes

def in[Input2 : HttpContentCodec](doc: Doc)(implicit evidence$2: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Attributes

def in[Input2 : HttpContentCodec](name: String)(implicit evidence$3: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Attributes

def in[Input2 : HttpContentCodec](name: String, doc: Doc)(implicit evidence$4: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Returns a new endpoint derived from this one, whose request content must satisfy the specified schema and is documented.

Attributes

def in[Input2 : HttpContentCodec](mediaType: MediaType)(implicit evidence$5: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
def in[Input2 : HttpContentCodec](mediaType: MediaType, doc: Doc)(implicit evidence$6: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
def in[Input2 : HttpContentCodec](mediaType: MediaType, name: String)(implicit evidence$7: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
def in[Input2 : HttpContentCodec](mediaType: MediaType, name: String, doc: Doc)(implicit evidence$8: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
def inCodec[Input2](codec: HttpCodec[RequestType, Input2])(implicit combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose request must satisfy the specified codec.

Returns a new endpoint derived from this one, whose request must satisfy the specified codec.

Attributes

def inStream[Input2 : HttpContentCodec](implicit evidence$9: HttpContentCodec[Input2], combiner: Combiner[Input, ZStream[Any, Nothing, Input2]]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose input type is a stream of the specified typ.

Returns a new endpoint derived from this one, whose input type is a stream of the specified typ.

Attributes

def inStream[Input2 : HttpContentCodec](doc: Doc)(implicit evidence$10: HttpContentCodec[Input2], combiner: Combiner[Input, ZStream[Any, Nothing, Input2]]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose input type is a stream of the specified type and is documented.

Returns a new endpoint derived from this one, whose input type is a stream of the specified type and is documented.

Attributes

def inStream[Input2 : HttpContentCodec](name: String)(implicit evidence$11: HttpContentCodec[Input2], combiner: Combiner[Input, ZStream[Any, Nothing, Input2]]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose input type is a stream of the specified type.

Returns a new endpoint derived from this one, whose input type is a stream of the specified type.

Attributes

def inStream[Input2 : HttpContentCodec](name: String, doc: Doc)(implicit evidence$12: HttpContentCodec[Input2], combiner: Combiner[Input, ZStream[Any, Nothing, Input2]]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint derived from this one, whose input type is a stream of the specified type and is documented.

Returns a new endpoint derived from this one, whose input type is a stream of the specified type and is documented.

Attributes

def out[Output2 : HttpContentCodec](implicit evidence$13: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code.

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code.

Attributes

def out[Output2 : HttpContentCodec](doc: Doc)(implicit evidence$14: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code and is documented.

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code and is documented.

Attributes

def out[Output2 : HttpContentCodec](mediaType: MediaType)(implicit evidence$15: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code.

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code.

Attributes

def out[Output2 : HttpContentCodec](status: Status)(implicit evidence$16: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code.

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code.

Attributes

def out[Output2 : HttpContentCodec](status: Status, doc: Doc)(implicit evidence$17: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code and is documented.

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code and is documented.

Attributes

def out[Output2 : HttpContentCodec](mediaType: MediaType, doc: Doc)(implicit evidence$18: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code and is documented.

Returns a new endpoint derived from this one, whose output type is the specified type for the ok status code and is documented.

Attributes

def out[Output2 : HttpContentCodec](status: Status, mediaType: MediaType, doc: Doc)(implicit evidence$19: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code and is documented.

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code and is documented.

Attributes

def out[Output2 : HttpContentCodec](status: Status, mediaType: MediaType)(implicit evidence$20: HttpContentCodec[Output2], alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code.

Returns a new endpoint derived from this one, whose output type is the specified type for the specified status code.

Attributes

def outCodec[Output2](codec: HttpCodec[ResponseType, Output2])(implicit alt: Alternator[Output, Output2]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose response must satisfy the specified codec.

Returns a new endpoint derived from this one, whose response must satisfy the specified codec.

Attributes

def outError[Err2 : HttpContentCodec](status: Status)(implicit evidence$21: HttpContentCodec[Err2], alt: Alternator[Err, Err2]): Endpoint[PathInput, Input, Out, Output, Middleware]

Returns a new endpoint that can fail with the specified error type for the specified status code.

Returns a new endpoint that can fail with the specified error type for the specified status code.

Attributes

def outError[Err2 : HttpContentCodec](status: Status, doc: Doc)(implicit evidence$22: HttpContentCodec[Err2], alt: Alternator[Err, Err2]): Endpoint[PathInput, Input, Out, Output, Middleware]

Returns a new endpoint that can fail with the specified error type for the specified status code and is documented.

Returns a new endpoint that can fail with the specified error type for the specified status code and is documented.

Attributes

def outErrors[Err2]: OutErrors[PathInput, Input, Err, Output, Middleware, Err2]
def outStream[Output2 : HttpContentCodec](implicit evidence$23: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the ok status code.

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the ok status code.

Attributes

def outStream[Output2 : HttpContentCodec](doc: Doc)(implicit evidence$24: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the ok status code.

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the ok status code.

Attributes

def outStream[Output2 : HttpContentCodec](status: Status, doc: Doc)(implicit evidence$25: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the specified status code and is documented.

Returns a new endpoint derived from this one, whose output type is a stream of the specified type for the specified status code and is documented.

Attributes

def outStream[Output2 : HttpContentCodec](mediaType: MediaType)(implicit evidence$26: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
def outStream[Output2 : HttpContentCodec](mediaType: MediaType, doc: Doc)(implicit evidence$27: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
def outStream[Output2 : HttpContentCodec](status: Status, mediaType: MediaType)(implicit evidence$28: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
def outStream[Output2 : HttpContentCodec](status: Status, mediaType: MediaType, doc: Doc)(implicit evidence$29: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
def query[A](codec: QueryCodec[A])(implicit combiner: Combiner[Input, A]): Endpoint[PathInput, Out, Err, Output, Middleware]

Returns a new endpoint that requires the specified query.

Returns a new endpoint that requires the specified query.

Attributes

def transformError[Err1](f: Err => Err1)(g: Err1 => Err): Endpoint[PathInput, Input, Err1, Output, Middleware]

Transforms the error of this endpoint using the specified functions.

Transforms the error of this endpoint using the specified functions.

Attributes

def transformIn[Input1](f: Input => Input1)(g: Input1 => Input): Endpoint[PathInput, Input1, Err, Output, Middleware]

Transforms the input of this endpoint using the specified functions. This is useful to build from different http inputs a domain specific input.

Transforms the input of this endpoint using the specified functions. This is useful to build from different http inputs a domain specific input.

For example

 case class ChangeUserName(userId: UUID, name: String)
 val endpoint =
 Endpoint(Method.POST / "user" / uuid("userId") / "changeName").in[String]
   .transformIn { case (userId, name) => ChangeUserName(userId, name) } {
     case ChangeUserName(userId, name) => (userId, name)
   }

Attributes

def transformOut[Output1](f: Output => Output1)(g: Output1 => Output): Endpoint[PathInput, Input, Err, Output1, Middleware]

Transforms the output of this endpoint using the specified functions.

Transforms the output of this endpoint using the specified functions.

Attributes

Inherited methods

def productElementNames: Iterator[String]

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

Attributes

Inherited from:
Product