HttpApi overview
Added in v1.0.0
Table of contents
constructors
make
An HttpApi
is a collection of HttpApiEndpoint
s. You can use an HttpApi
to represent a portion of your domain.
The endpoints can be implemented later using the HttpApiBuilder.make
api.
Signature
export declare const make: <const Id extends string>(identifier: Id) => HttpApi<Id, never, HttpApiDecodeError>
Added in v1.0.0
guards
isHttpApi
Signature
export declare const isHttpApi: (u: unknown) => u is HttpApi.Any
Added in v1.0.0
models
HttpApi (interface)
An HttpApi
is a collection of HttpApiEndpoint
s. You can use an HttpApi
to represent a portion of your domain.
The endpoints can be implemented later using the HttpApiBuilder.make
api.
Signature
export interface HttpApi<
out Id extends string,
out Groups extends HttpApiGroup.HttpApiGroup.Any = never,
in out E = never,
out R = never
> extends Pipeable {
new (_: never): {}
readonly [TypeId]: TypeId
readonly identifier: Id
readonly groups: Record.ReadonlyRecord<string, Groups>
readonly annotations: Context.Context<never>
readonly errorSchema: Schema.Schema<E, unknown, R>
readonly middlewares: ReadonlySet<HttpApiMiddleware.TagClassAny>
/**
* Add a `HttpApiGroup` to the `HttpApi`.
*/
add<A extends HttpApiGroup.HttpApiGroup.Any>(group: A): HttpApi<Id, Groups | A, E, R>
/**
* Add another `HttpApi` to the `HttpApi`.
*/
addHttpApi<Id2 extends string, Groups2 extends HttpApiGroup.HttpApiGroup.Any, E2, R2>(
api: HttpApi<Id2, Groups2, E2, R2>
): HttpApi<Id, Groups | HttpApiGroup.HttpApiGroup.AddContext<Groups2, R2>, E | E2, R>
/**
* Add an global error to the `HttpApi`.
*/
addError<A, I, RX>(
schema: Schema.Schema<A, I, RX>,
annotations?: {
readonly status?: number | undefined
}
): HttpApi<Id, Groups, E | A, R | RX>
/**
* Prefix all endpoints in the `HttpApi`.
*/
prefix(prefix: HttpApiEndpoint.PathSegment): HttpApi<Id, Groups, E, R>
/**
* Add a middleware to a `HttpApi`. It will be applied to all endpoints in the
* `HttpApi`.
*/
middleware<I extends HttpApiMiddleware.HttpApiMiddleware.AnyId, S>(
middleware: Context.Tag<I, S>
): HttpApi<
Id,
Groups,
E | HttpApiMiddleware.HttpApiMiddleware.Error<I>,
R | I | HttpApiMiddleware.HttpApiMiddleware.ErrorContext<I>
>
/**
* Annotate the `HttpApi`.
*/
annotate<I, S>(tag: Context.Tag<I, S>, value: S): HttpApi<Id, Groups, E, R>
/**
* Annotate the `HttpApi` with a Context.
*/
annotateContext<I>(context: Context.Context<I>): HttpApi<Id, Groups, E, R>
}
Added in v1.0.0
HttpApi (namespace)
Added in v1.0.0
Any (interface)
Signature
export interface Any {
readonly [TypeId]: TypeId
}
Added in v1.0.0
AnyWithProps (type alias)
Signature
export type AnyWithProps = HttpApi<string, HttpApiGroup.HttpApiGroup.AnyWithProps, any, any>
Added in v1.0.0
reflection
reflect
Extract metadata from an HttpApi
, which can be used to generate documentation or other tooling.
See the OpenApi
& HttpApiClient
modules for examples of how to use this function.
Signature
export declare const reflect: <Id extends string, Groups extends HttpApiGroup.HttpApiGroup.Any, Error, R>(
self: HttpApi<Id, Groups, Error, R>,
options: {
readonly predicate?: Predicate.Predicate<{
readonly endpoint: HttpApiEndpoint.HttpApiEndpoint.AnyWithProps
readonly group: HttpApiGroup.HttpApiGroup.AnyWithProps
}>
readonly onGroup: (options: {
readonly group: HttpApiGroup.HttpApiGroup.AnyWithProps
readonly mergedAnnotations: Context.Context<never>
}) => void
readonly onEndpoint: (options: {
readonly group: HttpApiGroup.HttpApiGroup.AnyWithProps
readonly endpoint: HttpApiEndpoint.HttpApiEndpoint<string, HttpMethod>
readonly mergedAnnotations: Context.Context<never>
readonly middleware: ReadonlySet<HttpApiMiddleware.TagClassAny>
readonly payloads: ReadonlyMap<string, { readonly encoding: HttpApiSchema.Encoding; readonly ast: AST.AST }>
readonly successes: ReadonlyMap<
number,
{ readonly ast: Option.Option<AST.AST>; readonly description: Option.Option<string> }
>
readonly errors: ReadonlyMap<
number,
{ readonly ast: Option.Option<AST.AST>; readonly description: Option.Option<string> }
>
}) => void
}
) => void
Added in v1.0.0
tags
AdditionalSchemas (class)
Adds additional schemas to components/schemas. The provided schemas must have a identifier
annotation.
Signature
export declare class AdditionalSchemas
Added in v1.0.0
Api (class)
Signature
export declare class Api
Added in v1.0.0
type ids
TypeId
Signature
export declare const TypeId: typeof TypeId
Added in v1.0.0
TypeId (type alias)
Signature
export type TypeId = typeof TypeId
Added in v1.0.0