TypeScript type definitions for OpenAPI documents across all specification versions.
83
Cross-version union types for building version-agnostic OpenAPI tools and parsers. These types enable libraries to work with multiple OpenAPI specification versions without requiring version-specific handling.
Union type representing any OpenAPI document across all supported versions.
/**
* Generic OpenAPI document type supporting all specification versions
* @template T - Extension object type for custom properties
*/
type Document<T extends {} = {}> =
| OpenAPIV2.Document<T>
| OpenAPIV3.Document<T>
| OpenAPIV3_1.Document<T>;Union type representing any OpenAPI operation object across all supported versions.
/**
* Generic OpenAPI operation type supporting all specification versions
* @template T - Extension object type for custom properties
*/
type Operation<T extends {} = {}> =
| OpenAPIV2.OperationObject<T>
| OpenAPIV3.OperationObject<T>
| OpenAPIV3_1.OperationObject<T>;Union type representing any OpenAPI parameter across all supported versions.
/**
* Generic OpenAPI parameter type supporting all specification versions
*/
type Parameter =
| OpenAPIV3_1.ReferenceObject
| OpenAPIV3_1.ParameterObject
| OpenAPIV3.ReferenceObject
| OpenAPIV3.ParameterObject
| OpenAPIV2.ReferenceObject
| OpenAPIV2.Parameter;Union type representing parameter arrays across all supported versions.
/**
* Generic OpenAPI parameters array type supporting all specification versions
*/
type Parameters =
| (OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.ParameterObject)[]
| (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[]
| (OpenAPIV2.ReferenceObject | OpenAPIV2.Parameter)[];Generic request object structure for OpenAPI request handling.
/**
* Generic request interface for OpenAPI request processing
*/
interface Request {
/** Request body data */
body?: any;
/** Request headers object */
headers?: object;
/** Path parameters object */
params?: object;
/** Query parameters object */
query?: object;
}Usage Examples:
import { OpenAPI } from "openapi-types";
// Version-agnostic document processing
function getDocumentTitle(doc: OpenAPI.Document): string {
return doc.info.title;
}
// Version-agnostic operation processing
function getOperationId(operation: OpenAPI.Operation): string | undefined {
return operation.operationId;
}
// Generic parameter validation
function validateParameter(param: OpenAPI.Parameter): boolean {
// Handle different parameter formats across versions
if ('$ref' in param) {
return true; // Reference object
}
return param.name != null && param.in != null;
}
// Request processing
function processRequest(req: OpenAPI.Request) {
console.log('Body:', req.body);
console.log('Headers:', req.headers);
console.log('Params:', req.params);
console.log('Query:', req.query);
}Install with Tessl CLI
npx tessl i tessl/npm-openapi-typesevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10