HttpApiEndpoint
Defines endpoint declarations used inside an HTTP API group.
An endpoint records a stable identifier, HTTP method, router path, request schemas, response schemas, declared errors, middleware, and annotations. Endpoint values are declarations, not handlers: builders use them to decode requests, type handler input, encode responses, generate OpenAPI metadata, and derive generated-client call signatures. This module also includes HTTP method constructors, payload and response schema helpers, and type utilities used by builders and generated clients.
Constructors
Signature
declare const get: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Record<string, Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "GET", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToStringTreeCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Record<string, Encoder<string | readonly Array<string> | undefined, unknown>> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "GET", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates a HEAD endpoint declaration.
Signature
declare const head: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Record<string, Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "HEAD", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToStringTreeCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Record<string, Encoder<string | readonly Array<string> | undefined, unknown>> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "HEAD", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates endpoint constructors for a specific HTTP method. The resulting constructor builds an HttpApiEndpoint from an identifier, path, and optional request and response schemas, applying automatic JSON or string-tree codecs unless disableCodecs is enabled.
Signature
declare function make<Method extends HttpMethod>(method: Method): { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Top | readonly Array<Top> | Record<string, Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, Method, Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, Method extends WithBody ? ToJsonCodec<ToSchema<Payload>> : ToStringTreeCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Top | readonly Array<Top> | Record<string, Encoder<string | readonly Array<string> | undefined, unknown>> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, Method, Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates an OPTIONS endpoint declaration.
Signature
declare const options: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Record<string, Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "OPTIONS", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToStringTreeCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Record<string, Encoder<string | readonly Array<string> | undefined, unknown>> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "OPTIONS", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates a PATCH endpoint declaration.
Signature
declare const patch: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Top | readonly Array<Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "PATCH", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToJsonCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Top | readonly Array<Top> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "PATCH", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates a POST endpoint declaration.
Signature
declare const post: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Top | readonly Array<Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "POST", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToJsonCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Top | readonly Array<Top> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "POST", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Creates a PUT endpoint declaration.
Signature
declare const put: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Top | readonly Array<Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "PUT", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToJsonCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Top | readonly Array<Top> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "PUT", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Guards
isHttpApiEndpoint
Returns true when a value is an HttpApiEndpoint, narrowing the value to the endpoint interface.
Signature
declare function isHttpApiEndpoint(u: unknown): u is Top;Models
ClientResponseMode type
Controls what a generated client method returns: the decoded success value, the decoded value paired with the raw response, or only the raw response.
Signature
type ClientResponseMode = "decoded-only" | "decoded-and-response" | "response-only";Constraint interface
A widened HttpApiEndpoint type used when the concrete method, path, schemas, and middleware types are not needed.
Signature
interface Constraint { readonly "~effect/httpapi/HttpApiEndpoint": "~effect/httpapi/HttpApiEndpoint"; readonly "~Error": Constraint; readonly "~Request": unknown; readonly "~RequestRaw": unknown; readonly "~Success": Constraint; readonly identifier: string;}ConstraintRequest interface
A widened endpoint type that preserves request and middleware pipeline phantom fields.
Signature
interface ConstraintRequest extends Constraint { readonly "~Headers": Constraint; readonly "~Middleware": unknown; readonly "~Params": Constraint; readonly "~Payload": Constraint; readonly "~Query": Constraint;}HttpApiEndpoint interface
Represents an API endpoint. An API endpoint is mapped to a single route on the underlying HttpRouter.
Signature
interface HttpApiEndpoint< out Identifier extends string, out Method extends HttpMethod, out Path extends string, out Params extends Schema.Top = never, out Query extends Schema.Top = never, out Payload extends Schema.Top = never, out Headers extends Schema.Top = never, out Success extends Schema.Top = typeof HttpApiSchema.NoContent, out Error extends Schema.Top = never, in out Middleware = never, out MiddlewareServices = never,> extends Pipeable { constructor(_: never); readonly "~effect/httpapi/HttpApiEndpoint": "~effect/httpapi/HttpApiEndpoint"; readonly "~Error": Error; readonly "~Headers": Headers; readonly "~Middleware": Middleware; readonly "~MiddlewareServices": MiddlewareServices; readonly "~Params": Params; readonly "~Payload": Payload; readonly "~Query": Query; readonly "~Request": RequestFromParts< HttpApiEndpoint< Identifier, Method, Path, Params, Query, Payload, Headers, Success, Error, Middleware, MiddlewareServices >, Params["Type"], Query["Type"], Payload["Type"], Headers["Type"] >; readonly "~RequestRaw": RequestRawFromParts< HttpApiEndpoint< Identifier, Method, Path, Params, Query, Payload, Headers, Success, Error, Middleware, MiddlewareServices >, Params["Type"], Query["Type"], Headers["Type"] >; readonly "~Success": Success; readonly annotations: Context<never>; readonly error: ReadonlySet<Top>; readonly headers: Top | undefined; readonly identifier: Identifier; readonly method: Method; readonly middlewares: ReadonlySet<Key<Middleware, any>>; readonly params: Top | undefined; readonly path: Path; readonly payload: PayloadMap; readonly query: Top | undefined; readonly success: ReadonlySet<Top>; annotate<I, S>( key: Key<I, S>, value: NoInfer<S>, ): HttpApiEndpoint< Identifier, Method, Path, Params, Query, Payload, Headers, Success, Error, Middleware, MiddlewareServices >; annotateMerge<I>( annotations: Context<I>, ): HttpApiEndpoint< Identifier, Method, Path, Params, Query, Payload, Headers, Success, Error, Middleware, MiddlewareServices >; middleware<I extends AnyId, S>( middleware: Key<I, S>, ): HttpApiEndpoint< Identifier, Method, Path, Params, Query, Payload, Headers, Success, Error, Middleware | I, ApplyServices<I, MiddlewareServices> >; prefix<Prefix extends PathInput>( prefix: Prefix, ): HttpApiEndpoint< Identifier, Method, `${Prefix}${Path}`, Params, Query, Payload, Headers, Success, Error, Middleware, MiddlewareServices >;}PayloadMap type
Maps normalized media types to a payload encoding strategy and one or more schemas. Each schema retains its declared content type in its encoding annotation.
Signature
type PayloadMap = ReadonlyMap< string, { readonly encoding: HttpApiSchema.PayloadEncoding; readonly schemas: readonly [Schema.Top, ...Array<Schema.Top>]; }>;A widened endpoint type that preserves concrete runtime properties such as method, path, schemas, annotations, and middleware sets.
Signature
interface Top extends HttpApiEndpoint< string, HttpMethod, string, Schema.Top, Schema.Top, Schema.Top, Schema.Top, Schema.Top, Schema.Top, any, unknown> { constructor(_: never);}Other
Signature
declare const delete: { <Identifier extends string, Path extends PathInput, Params extends Top | Fields = never, Query extends Top | Fields = never, Payload extends Top | readonly Array<Top> = never, Headers extends Top | Fields = never, Success extends SuccessConstraint = NoContent, Error extends Top | readonly Array<Top> = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs?: false; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "DELETE", Path, ToStringTreeCodec<Params>, ToStringTreeCodec<Query>, ToJsonCodec<ToSchema<Payload>>, ToStringTreeCodec<Headers>, ToSuccessCodec<Success>, ToJsonCodec<Error extends readonly Array<Constraint> ? Error[number] : Error>>; <Identifier extends string, Path extends PathInput, Params extends ParamsConstraint = never, Query extends QueryConstraint = never, Payload extends Top | readonly Array<Top> = never, Headers extends HeadersConstraint = never, Success extends SuccessConstraint = NoContent, Error extends ErrorConstraint = never>(identifier: Identifier, path: Path, options?: { readonly disableCodecs: true; readonly error?: Error & ErrorNoStream<NoInfer<Error>>; readonly headers?: Headers; readonly params?: Params; readonly payload?: Payload; readonly query?: Query; readonly success?: Success; }): HttpApiEndpoint<Identifier, "DELETE", Path, Params extends Fields ? Struct<Params> : Params, Query extends Fields ? Struct<Query> : Query, ToSchema<Payload>, ToSchema<Headers>, UnwrapReadonlyArray<Success>, Error extends readonly Array<Constraint> ? Error[number] : Error>;}Utility Types
AddMiddleware type
Returns an endpoint type with additional middleware applied and the endpoint's middleware service requirements updated accordingly.
Signature
type AddMiddleware<Endpoint, M extends HttpApiMiddleware.AnyId> = Endpoint extends HttpApiEndpoint< infer _Identifier, infer _Method, infer _Path, infer _Params, infer _Query, infer _Payload, infer _Headers, infer _Success, infer _Error, infer _M, infer _MR > ? HttpApiEndpoint< _Identifier, _Method, _Path, _Params, _Query, _Payload, _Headers, _Success, _Error, _M | M, HttpApiMiddleware.ApplyServices<M, _MR> > : never;Returns an endpoint type with the supplied path prefix prepended while preserving the endpoint's schemas, method, errors, and middleware.
Signature
type AddPrefix<Endpoint, Prefix extends HttpRouter.PathInput> = Endpoint extends HttpApiEndpoint< infer _Identifier, infer _Method, infer _Path, infer _Params, infer _Query, infer _Payload, infer _Headers, infer _Success, infer _Error, infer _M, infer _MR > ? HttpApiEndpoint< _Identifier, _Method, `${Prefix}${_Path}`, _Params, _Query, _Payload, _Headers, _Success, _Error, _M, _MR > : never;ClientRequest type
Builds the request object accepted by a generated client method, including only the params, query, headers, payload, and response mode fields required by the endpoint. Multipart payloads are supplied as FormData.
Signature
type ClientRequest< Params extends Schema.Constraint, Query extends Schema.Constraint, Payload extends Schema.Constraint, Headers extends Schema.Constraint, ResponseMode extends ClientResponseMode,> = [Params["Type"]] extends [never] ? {} : { readonly params: Params["Type"]; } & [Query["Type"]] extends [never] ? {} : { readonly query: Query["Type"]; } & [Headers["Type"]] extends [never] ? {} : { readonly headers: Headers["Type"]; } & [Payload["Type"]] extends [never] ? {} : Payload["Type"] extends infer P ? P extends | Brand<HttpApiSchema.MultipartTypeId> | Brand<HttpApiSchema.MultipartStreamTypeId> ? { readonly payload: FormData; } : { readonly payload: Payload["Type"]; } : { readonly payload: Payload["Type"]; } extends infer Req ? keyof Req extends never ? void | { readonly responseMode?: ResponseMode; } : Req & { readonly responseMode?: ResponseMode; } : void;ClientServices type
Computes the services required on the client to encode endpoint requests and decode endpoint success or error responses.
Signature
type ClientServices<Endpoint> = Endpoint extends ConstraintRequest ? | Endpoint["~Params"]["EncodingServices"] | Endpoint["~Query"]["EncodingServices"] | Endpoint["~Payload"]["EncodingServices"] | Endpoint["~Headers"]["EncodingServices"] | SuccessDecodingServices<Endpoint["~Success"]> | Endpoint["~Error"]["DecodingServices"] : never;Extracts the error schema associated with an endpoint.
Signature
type Error<Endpoint> = Endpoint extends Constraint ? Endpoint["~Error"] : never;ErrorConstraint type
Constraint for error response schemas, allowing either a single schema or a readonly array of schemas.
Signature
type ErrorConstraint = Schema.Top | ReadonlyArray<Schema.Top>;Computes the full error value union for an endpoint, including the endpoint error schema's type and errors introduced by middleware.
Signature
type Errors<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Error"]["Type"] | HttpApiMiddleware.Error<Endpoint["~Middleware"]> : never;ErrorServicesDecode type
Computes the services required to decode an endpoint's error responses, including services required by middleware error decoders.
Signature
type ErrorServicesDecode<Endpoint> = Endpoint extends ConstraintRequest ? | Endpoint["~Error"]["DecodingServices"] | HttpApiMiddleware.ErrorServicesDecode<Endpoint["~Middleware"]> : never;ErrorServicesEncode type
Computes the services required to encode an endpoint's error responses, including services required by middleware error encoders.
Signature
type ErrorServicesEncode<Endpoint> = Endpoint extends ConstraintRequest ? | Endpoint["~Error"]["EncodingServices"] | HttpApiMiddleware.ErrorServicesEncode<Endpoint["~Middleware"]> : never;ErrorsWithIdentifier type
Computes the full error value union for the endpoint with the specified identifier in an endpoint union.
Signature
type ErrorsWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Errors< WithIdentifier<Endpoints, Identifier>>;ExcludeIdentifier type
Removes endpoints with the specified identifier from a union of endpoints.
Signature
type ExcludeIdentifier<Endpoints, Identifier extends string> = Exclude< Endpoints, { readonly identifier: Identifier; }>;ExcludeProvided type
Removes services provided by the HTTP router and endpoint middleware from a service requirement union.
Signature
type ExcludeProvided<Endpoint extends Constraint, R> = Exclude< R, HttpRouter.Provided | HttpApiMiddleware.Provides<Middleware<Endpoint>>>;ExcludeProvidedWithIdentifier type
Removes services provided by the HTTP router and the selected endpoint's middleware from a service requirement union.
Signature
type ExcludeProvidedWithIdentifier< Endpoints extends Constraint, Identifier extends string, R,> = ExcludeProvided<WithIdentifier<Endpoints, Identifier>, R>;The normal server handler for an endpoint, accepting the decoded request shape and returning either the endpoint success value or a custom HttpServerResponse.
Signature
type Handler<Endpoint extends Constraint, E, R> = ( request: Simplify<Endpoint["~Request"]>,) => Effect< SuccessType<Endpoint["~Success"]> | HttpServerResponse, Endpoint["~Error"]["Type"] | E, R>;HandlerRaw type
The raw server handler for an endpoint, receiving a request shape without a decoded payload so the handler can read the raw HttpServerRequest directly.
Signature
type HandlerRaw<Endpoint extends Constraint, E, R> = ( request: Simplify<Endpoint["~RequestRaw"]>,) => Effect< SuccessType<Endpoint["~Success"]> | HttpServerResponse, Endpoint["~Error"]["Type"] | E, R>;HandlerRawWithIdentifier type
Derives the raw handler type for the endpoint with the specified identifier in an endpoint union.
Signature
type HandlerRawWithIdentifier< Endpoints extends Constraint, Identifier extends string, E, R,> = HandlerRaw<WithIdentifier<Endpoints, Identifier>, E, R>;HandlerWithIdentifier type
Derives the normal handler type for the endpoint with the specified identifier in an endpoint union.
Signature
type HandlerWithIdentifier<Endpoints extends Constraint, Identifier extends string, E, R> = Handler< WithIdentifier<Endpoints, Identifier>, E, R>;Extracts the schema used for an endpoint's request headers.
Signature
type Headers<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Headers"] : never;HeadersConstraint type
Constraint for header schemas: each header must encode to string | undefined, or the schema must encode to a record of those values.
Signature
type HeadersConstraint = | Record<string, Schema.Encoder<string | undefined, unknown>> | Schema.Encoder<Record<string, string | undefined>, unknown>;Identifier type
Extracts the endpoint identifier literal from an HttpApiEndpoint.
Signature
type Identifier<Endpoint> = Endpoint extends Constraint ? Endpoint["identifier"] : never;Middleware type
Extracts the middleware identifiers attached to an endpoint.
Signature
type Middleware<Endpoint> = Endpoint extends { readonly "~Middleware": infer M;} ? M : never;MiddlewareClient type
Computes the client-side middleware services required by an endpoint.
Signature
type MiddlewareClient<Endpoint> = HttpApiMiddleware.MiddlewareClient<Middleware<Endpoint>>;MiddlewareError type
Computes the error types that can be produced by the middleware attached to an endpoint.
Signature
type MiddlewareError<Endpoint> = HttpApiMiddleware.Error<Middleware<Endpoint>>;MiddlewareProvides type
Computes the services provided by the middleware attached to an endpoint.
Signature
type MiddlewareProvides<Endpoint> = HttpApiMiddleware.Provides<Middleware<Endpoint>>;MiddlewareServices type
Extracts the additional services required by middleware applied to an endpoint.
Signature
type MiddlewareServices<Endpoint> = Endpoint extends { readonly "~MiddlewareServices": infer R;} ? R : never;MiddlewareServicesWithIdentifier type
Extracts the middleware service requirements for the endpoint with the specified identifier in an endpoint union.
Signature
type MiddlewareServicesWithIdentifier< Endpoints extends Constraint, Identifier extends string,> = MiddlewareServices<WithIdentifier<Endpoints, Identifier>>;MiddlewareWithIdentifier type
Extracts the middleware identifiers for the endpoint with the specified identifier in an endpoint union.
Signature
type MiddlewareWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Middleware< WithIdentifier<Endpoints, Identifier>>;Extracts the schema used for an endpoint's path parameters.
Signature
type Params<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Params"] : never;ParamsConstraint type
Constraint for path parameter schemas: each parameter must encode to string | undefined, or the schema must encode to a record of those values.
Signature
type ParamsConstraint = | Record<string, Schema.Encoder<string | undefined, unknown>> | Schema.Encoder<Record<string, string | undefined>, unknown>;Extracts the schema used for an endpoint's request payload.
Signature
type Payload<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Payload"] : never;PayloadConstraint type
Payload schema depends on the HTTP method: - for no-body methods, payload is modeled as query params, so each field must encode to string | ReadonlyArray<string> | undefined and OpenAPI can expand it into in: query parameters - for body methods, payload may be any Schema.Top (or content-type keyed schemas) and OpenAPI uses requestBody instead of parameters
Signature
type PayloadConstraint<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<string, Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>> : Schema.Top | ReadonlyArray<Schema.Top>;PayloadConstraintCodecs type
Payload constraint used when automatic codecs are enabled: no-body methods accept field records for query-style encoding, while body methods accept one or more schemas.
Signature
type PayloadConstraintCodecs<Method extends HttpMethod> = Method extends HttpMethod.NoBody ? Record<string, Schema.Top> : Schema.Top | ReadonlyArray<Schema.Top>;Extracts the schema used for an endpoint's query parameters.
Signature
type Query<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Query"] : never;QueryConstraint type
Constraint for query schemas: each field must encode to string, an array of strings, or undefined, or the schema must encode to a record of those values.
Signature
type QueryConstraint = | Record<string, Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>> | Schema.Encoder<string | ReadonlyArray<string> | undefined, unknown>;Builds the decoded request shape passed to a normal endpoint handler, including available params, query, payload, headers, the raw request, endpoint, and group. Multipart stream payloads are exposed as streams of parts.
Signature
type Request<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~Request"] : {};RequestRaw type
Builds the request shape passed to a raw endpoint handler, including decoded params, query, and headers plus the raw request, endpoint, and group, while leaving payload handling to the raw request.
Signature
type RequestRaw<Endpoint> = Endpoint extends ConstraintRequest ? Endpoint["~RequestRaw"] : {};ServerServices type
Computes the services required on the server to decode endpoint inputs and encode endpoint success, error, and middleware error responses.
Signature
type ServerServices<Endpoint> = Endpoint extends ConstraintRequest ? | Endpoint["~Params"]["DecodingServices"] | Endpoint["~Query"]["DecodingServices"] | Endpoint["~Payload"]["DecodingServices"] | Endpoint["~Headers"]["DecodingServices"] | SuccessEncodingServices<Endpoint["~Success"]> | Endpoint["~Error"]["EncodingServices"] | HttpApiMiddleware.ErrorServicesEncode<Endpoint["~Middleware"]> : never;ServerServicesWithIdentifier type
Computes the server-side service requirements for the endpoint with the specified identifier in an endpoint union.
Signature
type ServerServicesWithIdentifier< Endpoints extends Constraint, Identifier extends string,> = ServerServices<WithIdentifier<Endpoints, Identifier>>;Extracts the success schema associated with an endpoint.
Signature
type Success<Endpoint> = Endpoint extends Constraint ? Endpoint["~Success"] : never;SuccessConstraint type
Constraint for success response schemas, allowing either a single schema or a readonly array of schemas.
Signature
type SuccessConstraint = Schema.Top | ReadonlyArray<Schema.Top>;SuccessWithIdentifier type
Extracts the decoded success value type for the endpoint with the specified identifier in an endpoint union.
Signature
type SuccessWithIdentifier<Endpoints extends Constraint, Identifier extends string> = Success<WithIdentifier<Endpoints, Identifier>> extends infer S ? SuccessType<S> : never;WithIdentifier type
Selects the endpoint with the specified identifier from a union of endpoints.
Signature
type WithIdentifier<Endpoints, Identifier extends string> = Extract< Endpoints, { readonly identifier: Identifier; }>;
Creates a
GETendpoint declaration.