Skip to main content Link Search Menu Expand Document (external link)

Api overview

HTTP API service declaration.

Added in v1.0.0


Table of contents


constructors

delete

Signature

export declare const delete: <Id extends string>(id: Id, path: PathInput, options?: Partial<ApiEndpoint.Options> | undefined) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

endpoint

Signature

export declare const endpoint: <Id extends string>(
  method: Method,
  id: Id,
  path: PathInput,
  options?: Partial<ApiEndpoint.Options> | undefined
) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

get

Signature

export declare const get: <Id extends string>(
  id: Id,
  path: PathInput,
  options?: Partial<ApiEndpoint.Options> | undefined
) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

make

Signature

export declare const make: (options?: Partial<ApiOptions>) => Api.Empty

Added in v1.0.0

patch

Signature

export declare const patch: <Id extends string>(
  id: Id,
  path: PathInput,
  options?: Partial<ApiEndpoint.Options> | undefined
) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

post

Signature

export declare const post: <Id extends string>(
  id: Id,
  path: PathInput,
  options?: Partial<ApiEndpoint.Options> | undefined
) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

put

Signature

export declare const put: <Id extends string>(
  id: Id,
  path: PathInput,
  options?: Partial<ApiEndpoint.Options> | undefined
) => ApiEndpoint.ApiEndpoint.Default<Id>

Added in v1.0.0

setRequest

Signature

export declare const setRequest: <Request extends ApiRequest.Any>(
  request: Request
) => <
  Id extends string,
  _ extends ApiRequest.Any,
  Response extends ApiResponse.Any,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, _, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, Response, Security>

Added in v1.0.0

getters

getEndpoint

Signature

export declare const getEndpoint: <A extends Api.Any, Id extends Api.Ids<A>>(api: A, id: Id) => Api.EndpointById<A, Id>

Added in v1.0.0

models

Api (interface)

Signature

export interface Api<E extends ApiEndpoint.ApiEndpoint.Any> extends Pipeable.Pipeable {
  readonly groups: ReadonlyArray<ApiGroup.ApiGroup<E>>
  readonly options: ApiOptions
}

Added in v1.0.0

Api (namespace)

Added in v1.0.0

Any (type alias)

Any api with Endpoint = Endpoint.Any

Signature

export type Any = Api<ApiEndpoint.ApiEndpoint.Any>

Added in v1.0.0

Content (type alias)

Signature

export type Content<A> = A extends Api<infer E> ? ApiEndpoint.ApiEndpoint.Context<E> : never

Added in v1.0.0

Empty (type alias)

Default api group spec.

Signature

export type Empty = Api<never>

Added in v1.0.0

EndpointById (type alias)

Signature

export type EndpointById<A extends Any, Id extends ApiEndpoint.ApiEndpoint.AnyId> = [A] extends [Api<infer E>]
  ? E extends ApiEndpoint.ApiEndpoint<Id, any, any, any>
    ? E
    : never
  : never

Added in v1.0.0

Endpoints (type alias)

Signature

export type Endpoints<A extends Any> = [A] extends [Api<infer E>] ? E : never

Added in v1.0.0

Ids (type alias)

Signature

export type Ids<A extends Any> = [Endpoints<A>] extends [ApiEndpoint.ApiEndpoint<infer Id, any, any, any>] ? Id : never

Added in v1.0.0

ApiOptions (interface)

Signature

export interface ApiOptions {
  readonly title: string
  readonly version: string
  readonly description?: string
  readonly servers?: ReadonlyArray<OpenApiTypes.OpenAPISpecServer | string>
  readonly license?: {
    readonly name: string
    readonly url?: string
  }
}

Added in v1.0.0

modifications

addEndpoint

Signature

export declare const addEndpoint: <E2 extends ApiEndpoint.ApiEndpoint.Any>(
  endpoint: E2
) => <E1 extends ApiEndpoint.ApiEndpoint.Any>(api: Api<E1>) => Api<E2 | E1>

Added in v1.0.0

addGroup

Signature

export declare const addGroup: <E2 extends ApiEndpoint.ApiEndpoint.Any>(
  group: ApiGroup.ApiGroup<E2>
) => <E1 extends ApiEndpoint.ApiEndpoint.Any>(api: Api<E1>) => Api<E2 | E1>

Added in v1.0.0

addResponse

Signature

export declare const addResponse: <
  Status extends number,
  Body = ApiSchema.Ignored,
  Headers = ApiSchema.Ignored,
  R = never
>(
  response:
    | ApiResponse<Status, Body, Headers, R>
    | {
        readonly status: Status
        readonly body?: Schema.Schema<Body, any, R> | undefined
        readonly headers?: Schema.Schema<Headers, any, R> | undefined
      }
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  Response1 extends ApiResponse.Any,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, Response1, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<Status, Body, Headers, R> | Response1, Security>

Added in v1.0.0

setRequestBody

Signature

export declare const setRequestBody: <B, R2>(
  schema: Schema.Schema<B, any, R2>
) => <Id extends string, _, P, Q, H, R1, Response extends ApiResponse.Any, Security extends Security.Security.Any>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, ApiRequest<_, P, Q, H, R1>, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, Q, H, R2 | R1>, Response, Security>

Added in v1.0.0

setRequestHeaders

Signature

export declare const setRequestHeaders: <H, R2>(
  schema: Schema.Schema<H, any, R2>
) => <Id extends string, B, P, Q, _, R1, Response extends ApiResponse.Any, Security extends Security.Security.Any>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, Q, _, R1>, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, Q, H, R2 | R1>, Response, Security>

Added in v1.0.0

setRequestPath

Signature

export declare const setRequestPath: <P, R2>(
  schema: Schema.Schema<P, any, R2>
) => <Id extends string, B, _, Q, H, R1, Response extends ApiResponse.Any, Security extends Security.Security.Any>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, _, Q, H, R1>, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, Q, H, R2 | R1>, Response, Security>

Added in v1.0.0

setRequestQuery

Signature

export declare const setRequestQuery: <Q, R2>(
  schema: Schema.Schema<Q, any, R2>
) => <Id extends string, B, P, _, H, R1, Response extends ApiResponse.Any, Security extends Security.Security.Any>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, _, H, R1>, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, ApiRequest<B, P, Q, H, R2 | R1>, Response, Security>

Added in v1.0.0

setResponse

Signature

export declare const setResponse: <
  Status extends number,
  Body = ApiSchema.Ignored,
  Headers = ApiSchema.Ignored,
  R = never
>(
  response:
    | {
        readonly status: Status
        readonly body?: Schema.Schema<Body, any, R> | undefined
        readonly headers?: Schema.Schema<Headers, any, R> | undefined
      }
    | ApiResponse<Status, Body, Headers, R>
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  _ extends ApiResponse.Any,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, _, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<Status, Body, Headers, R>, Security>

Added in v1.0.0

setResponseBody

Signature

export declare const setResponseBody: <B, R2>(
  schema: Schema.Schema<B, any, R2>
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  S extends number,
  _,
  H,
  R1,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<S, _, H, R1>, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<S, B, H, R2 | R1>, Security>

Added in v1.0.0

setResponseHeaders

Signature

export declare const setResponseHeaders: <H, R2>(
  schema: Schema.Schema<H, any, R2>
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  S extends number,
  B,
  _,
  R1,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<S, B, _, R1>, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<S, B, H, R2 | R1>, Security>

Added in v1.0.0

setResponseRepresentations

Signature

export declare const setResponseRepresentations: (
  representations: readonly [Representation, ...Representation[]]
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  Response extends ApiResponse.Any,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, Response, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, Response, Security>

Added in v1.0.0

setResponseStatus

Signature

export declare const setResponseStatus: <Status extends number>(
  status: Status
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  _ extends number,
  B,
  H,
  R,
  Security extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<_, B, H, R>, Security>
) => ApiEndpoint.ApiEndpoint<Id, Request, ApiResponse<Status, B, H, R>, Security>

Added in v1.0.0

setSecurity

Signature

export declare const setSecurity: <Security extends Security.Security.Any>(
  security: Security
) => <
  Id extends string,
  Request extends ApiRequest.Any,
  Response extends ApiResponse.Any,
  _ extends Security.Security.Any
>(
  endpoint: ApiEndpoint.ApiEndpoint<Id, Request, Response, _>
) => ApiEndpoint.ApiEndpoint<Id, Request, Response, Security>

Added in v1.0.0

schemas

FormData

FormData schema

Signature

export declare const FormData: Schema.Schema<FormData, FormData, never>

Added in v1.0.0

type id

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