UNPKG

@furystack/rest

Version:
45 lines 1.58 kB
import type { ApiEndpointSchema } from './api-endpoint-schema.js'; import type { Method } from './methods.js'; import type { OpenApiDocument } from './openapi-document.js'; /** * Defines the shape of a REST API as a mapping of HTTP methods to path-endpoint pairs. * Each endpoint describes its result type and optionally its URL parameters, query parameters, * request body, headers, and metadata like tags/deprecated/summary/description. * * This type is the shared contract between `@furystack/rest-service` (server) and * `@furystack/rest-client-fetch` (client). It can also be derived from an OpenAPI document * using `OpenApiToRestApi<T>`. */ export type RestApi = { [TMethod in Method]?: { [TUrl: string]: { result: unknown; url?: unknown; query?: unknown; body?: unknown; headers?: unknown; tags?: string[]; deprecated?: boolean; summary?: string; description?: string; }; }; }; /** * Represents an API with a GET action to retrieve its schema and OpenAPI document. * This type extends the base RestApi type to include specific GET endpoints for schema and OpenAPI retrieval. */ export type WithSchemaAction<T extends RestApi> = T & { GET: { '/schema': { result: ApiEndpointSchema<T>; headers: { accept: 'application/schema+json'; }; }; '/openapi.json': { result: OpenApiDocument; }; }; }; //# sourceMappingURL=rest-api.d.ts.map