API Reference
Complete API reference for all exported functions and types.
Functions
createOpenApiFetchHandler
Handle an incoming HTTP request as a tRPC OpenAPI call.
function createOpenApiFetchHandler(opts: FetchHandlerOptions): Promise<Response>interface FetchHandlerOptions<TRouter extends AnyRouter = AnyRouter> {
router: TRouter;
endpoint: string;
req: Request;
createContext: (opts: { req: Request } & Record<string, unknown>) => Promise<unknown> | unknown;
responseMeta?: (opts: {
type: ProcedureType | 'unknown';
paths: string[] | undefined;
ctx: unknown;
data: unknown[];
errors: unknown[];
info: unknown;
eagerGeneration: boolean;
}) => { status?: number; headers?: Record<string, string> } | undefined;
onError?: (opts: {
error: TRPCError;
type: ProcedureType | 'unknown';
path: string | undefined;
input: unknown;
ctx: unknown;
req: Request;
}) => void;
}generateOpenApiDocument
Generate an OpenAPI 3.1.0 document from a tRPC router.
function generateOpenApiDocument(router: AnyRouter, opts: GenerateOptions): OpenApiDocumentinterface GenerateOptions {
title: string;
description?: string;
version: string;
baseUrl: string;
tags?: string[];
docsUrl?: string;
securitySchemes?: Record<string, unknown>;
filter?: (opts: { path: string[]; metadata: OpenApiMeta }) => boolean;
extensions?: (opts: {
meta: OpenApiMeta;
procedurePath: string[];
operationId: string;
}) => Record<string, unknown> | undefined;
errorSchemas?: ErrorSchemaConfig;
}createErrorResponseSchema
Create a Zod schema for a standard error response, registered as an OpenAPI component.
function createErrorResponseSchema(refName: string, code: string, message: string): z.ZodObject<...>Types
OpenApiMeta
Metadata interface for tRPC procedures. Pass to initTRPC.meta<OpenApiMeta>().
interface OpenApiMeta {
openapi?: {
method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
path: string;
tags?: string[];
summary?: string;
description?: string;
successDescription?: string;
errorResponses?: Record<number, string>;
protect?: boolean;
enabled?: boolean;
contentTypes?: string[];
deprecated?: boolean;
} & Record<`x-${string}`, unknown>;
[key: string]: unknown;
}ErrorSchemaConfig
interface ErrorSchemaConfig {
schemas: Record<number, string>; // HTTP status → component schema name
autoAdd401?: boolean; // Auto-add 401 to all operations
}OpenApiDocument
interface OpenApiDocument {
openapi: string;
info: { title: string; description?: string; version: string };
servers?: Array<{ url: string; description?: string }>;
paths: Record<string, Record<string, unknown>>;
components?: {
schemas?: Record<string, unknown>;
securitySchemes?: Record<string, unknown>;
};
tags?: Array<{ name: string; description?: string }>;
security?: Array<Record<string, string[]>>;
externalDocs?: { url: string; description?: string };
}Constants
TRPC_ERROR_CODE_HTTP_STATUS
Map from tRPC error code keys to HTTP status codes.
const TRPC_ERROR_CODE_HTTP_STATUS: Record<TRPC_ERROR_CODE_KEY, number>;
TRPC_ERROR_CODE_HTTP_STATUS['NOT_FOUND'] // 404
TRPC_ERROR_CODE_HTTP_STATUS['BAD_REQUEST'] // 400
TRPC_ERROR_CODE_HTTP_STATUS['UNAUTHORIZED'] // 401