Packages

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) extends Product with Serializable

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.

Self Type
Endpoint[PathInput, Input, Err, Output, Middleware]
Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Endpoint
  2. Serializable
  3. Product
  4. Equals
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new Endpoint(route: RoutePattern[PathInput], input: HttpCodec[RequestType, Input], output: HttpCodec[ResponseType, Output], error: HttpCodec[ResponseType, Err], doc: Doc, middleware: Middleware)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##: Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. 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.

  5. def @@[M2 <: EndpointMiddleware](that: M2)(implicit inCombiner: Combiner[Middleware.In, @@.M2.In], outCombiner: Combiner[Middleware.Out, @@.M2.Out], errAlternator: Alternator[Middleware.Err, @@.M2.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.

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

    Flattens out this endpoint to a chunk of alternatives.

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

  7. 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]
  8. 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]
  9. 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]
  10. 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]
  11. 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]
  12. 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]
  13. 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]
  14. 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]
  15. 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]
  16. def apply[A, B, C](a: A, b: B, c: C)(implicit ev: <:<[(A, B, C), Input]): Invocation[PathInput, Input, Err, Output, Middleware]
  17. def apply[A, B](a: A, b: B)(implicit ev: <:<[(A, B), Input]): Invocation[PathInput, Input, Err, Output, Middleware]
  18. def apply(input: Input): Invocation[PathInput, Input, Err, Output, Middleware]
  19. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  20. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.CloneNotSupportedException]) @IntrinsicCandidate() @native()
  21. val doc: Doc
  22. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  23. val error: HttpCodec[ResponseType, Err]
  24. def examplesIn: Map[String, Input]
  25. def examplesIn(examples: (String, Input)*): Endpoint[PathInput, Input, Err, Output, Middleware]
  26. def examplesOut: Map[String, Output]
  27. def examplesOut(examples: (String, Output)*): Endpoint[PathInput, Input, Err, Output, Middleware]
  28. final def getClass(): Class[_ <: AnyRef]
    Definition Classes
    AnyRef → Any
    Annotations
    @IntrinsicCandidate() @native()
  29. 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.

  30. def implement[Env](original: Handler[Env, Err, Input, Output])(implicit trace: Trace): Route[Env, Nothing]
  31. def in[Input2](mediaType: MediaType, name: String, doc: Doc)(implicit arg0: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
  32. def in[Input2](mediaType: MediaType, name: String)(implicit arg0: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
  33. def in[Input2](mediaType: MediaType, doc: Doc)(implicit arg0: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
  34. def in[Input2](mediaType: MediaType)(implicit arg0: HttpContentCodec[Input2], combiner: Combiner[Input, Input2]): Endpoint[PathInput, Out, Err, Output, Middleware]
  35. def in[Input2](name: String, doc: Doc)(implicit arg0: 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.

  36. def in[Input2](name: String)(implicit arg0: 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.

  37. def in[Input2](doc: Doc)(implicit arg0: 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.

  38. def in[Input2](implicit arg0: 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.

  39. 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.

  40. def inStream[Input2](name: String, doc: Doc)(implicit arg0: 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.

  41. def inStream[Input2](name: String)(implicit arg0: 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.

  42. def inStream[Input2](doc: Doc)(implicit arg0: 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.

  43. def inStream[Input2](implicit arg0: 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.

  44. val input: HttpCodec[RequestType, Input]
  45. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  46. val middleware: Middleware
  47. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  48. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  49. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @IntrinsicCandidate() @native()
  50. def out[Output2](status: Status, mediaType: MediaType)(implicit arg0: 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.

  51. def out[Output2](status: Status, mediaType: MediaType, doc: Doc)(implicit arg0: 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.

  52. def out[Output2](mediaType: MediaType, doc: Doc)(implicit arg0: 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.

  53. def out[Output2](status: Status, doc: Doc)(implicit arg0: 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.

  54. def out[Output2](status: Status)(implicit arg0: 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.

  55. def out[Output2](mediaType: MediaType)(implicit arg0: 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.

  56. def out[Output2](doc: Doc)(implicit arg0: 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.

  57. def out[Output2](implicit arg0: 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.

  58. 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.

  59. def outError[Err2](status: Status, doc: Doc)(implicit arg0: 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.

  60. def outError[Err2](status: Status)(implicit arg0: 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.

  61. def outErrors[Err2]: OutErrors[PathInput, Input, Err, Output, Middleware, Err2]
  62. def outStream[Output2](status: Status, mediaType: MediaType, doc: Doc)(implicit arg0: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
  63. def outStream[Output2](status: Status, mediaType: MediaType)(implicit arg0: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
  64. def outStream[Output2](mediaType: MediaType, doc: Doc)(implicit arg0: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
  65. def outStream[Output2](mediaType: MediaType)(implicit arg0: HttpContentCodec[Output2], alt: Alternator[Output, ZStream[Any, Nothing, Output2]]): Endpoint[PathInput, Input, Err, Out, Middleware]
  66. def outStream[Output2](status: Status, doc: Doc)(implicit arg0: 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.

  67. def outStream[Output2](doc: Doc)(implicit arg0: 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.

  68. def outStream[Output2](implicit arg0: 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.

  69. val output: HttpCodec[ResponseType, Output]
  70. def productElementNames: Iterator[String]
    Definition Classes
    Product
  71. 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.

  72. val route: RoutePattern[PathInput]
  73. final def synchronized[T0](arg0: => T0): T0
    Definition Classes
    AnyRef
  74. 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.

  75. 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.

    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)
      }
  76. 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.

  77. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])
  78. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException]) @native()
  79. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.InterruptedException])

Deprecated Value Members

  1. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws(classOf[java.lang.Throwable]) @Deprecated
    Deprecated

    (Since version 9)

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from AnyRef

Inherited from Any

Ungrouped