OASert is a high-performance Rust library for runtime validation of HTTP requests against OpenAPI 3.x specifications. It provides a comprehensive suite of tools for traversing, validating, and caching OpenAPI document structures to ensure strict compliance with defined API contracts during request processing.
-
Comprehensive Request Validation
Performs rigorous validation of HTTP request elements (payloads, headers, query parameters, path parameters) against OpenAPI v3.x specifications, ensuring complete compliance with defined schemas. -
High-Performance Validator Caching
Implements a thread-safe, concurrent caching infrastructure powered byDashMap(v7.0) that minimizes redundant validator instantiations and optimizes memory usage. -
Advanced Specification Traversal
Provides sophisticated algorithms for navigating complex OpenAPI documents, with robust handling of nested$refreferences through pointer resolution and circular reference detection. -
Validation Error Reporting
Detailed error reporting with specific categories like missing properties, invalid types, or unsupported schema versions. -
Supports OpenAPI Drafts
Includes support for both OpenAPI 3.0.x (Draft 4) and OpenAPI 3.1.x (Draft 2020–12). -
Supports Partial Validation Allows for partial validation of requests (i.e. validate headers, validate scopes, validate body, etc.)
-
Runtime Agnostic Does not depend on any specific runtime and can be dropped in where needed (i.e., hyper, aws lambda, etc.)
Add OASert to your Cargo.toml:
[dependencies]
oasert = "0.1.1"- Parse your OpenAPI specification into a
serde_json::Value. - Create an
OpenApiPayloadValidatorusing the parsed specification. - Pass incoming requests to the validator
See a full example using hyper here See a full example using AWS Lambda here
Efficient caching mechanism for validators to avoid repeated instantiations.
- Insert or retrieve validators dynamically.
- Clear the cache when needed.
- Automatically create validators for specific IDs if not cached.
Utility class to traverse OpenAPI specifications with support for:
- Resolving
$refpointers. - Fetching required or optional specification nodes.
- Handling complex paths and parameters.
Type mapping utility to convert OpenAPI types (string, boolean, etc.) into native Rust types.
Comprehensive error handling for:
- Missing parameters or fields.
- Unsupported specification versions.
- Invalid schema values or types.