juhaku/utoipa
57.0
Adequate · 30 September 2026
32.5k
lines of production code
Rust
primary language
2
measurements over time
What this system is
This system is a Rust library ecosystem that automatically generates OpenAPI 3.2-compliant documentation specifications from code. It provides framework-specific bindings for Actix-web, Axum, and Rocket to extract path and schema information, alongside crates for serving interactive API documentation via Swagger UI, Redoc, RapiDoc, and Scalar.
How it got here
2021–2022 — Utoipa 6.0 and OpenAPI 3.2 migration
27 changes.
This period focused on the major 6.0 release, rewriting the core codebase to support OpenAPI 3.2 and upgrading dependencies like syn 3. It involved restructuring the macro generation logic into modular components and adding first-party integrations for Axum, Actix-web, and Rocket. The work also included comprehensive example updates, dual licensing, and the adoption of yaml\_serde for serialization.
2023–2026 — Framework integrations and documentation UIs
25 changes.
This period focused on expanding utoipa's ecosystem by introducing dedicated crates for Axum, Redoc, RapiDoc, and Scalar, alongside comprehensive examples for various web frameworks. Significant work also involved refining schema generation logic, adding global configuration capabilities, and updating vendored UI assets to support modern OpenAPI standards.
Features
Add Redoc integration for utoipa
Users can now serve interactive OpenAPI documentation using Redoc. The crate provides a \Redoc\ component that generates HTML from OpenAPI specs and includes framework-specific integrations for actix-web, axum, and rocket, allowing seamless mounting of the documentation UI at a specified URL.
utoipa-redoc/src · high confidence
Add Rocket and Warp todo examples with multiple API documentation viewers
New example applications have been added for the Rocket and Warp frameworks, demonstrating how to integrate utoipa with Swagger UI, Redoc, RapiDoc, and Scalar. The Rocket example (\examples/rocket-todo\) provides a complete todo management API with in-memory storage, API key authentication, and endpoints for listing, creating, marking as done, deleting, and searching todos, served alongside multiple documentation interfaces. The Warp example (\examples/todo-warp-rapidoc\) offers a simpler todo API with filtering and ordering capabilities, served with RapiDoc.
examples/rocket-todo · high confidence
Add axum-utoipa bindings example
Added a new example application demonstrating the integration of utoipa with the axum web framework using the utoipa-axum crate. The example includes a runnable server that serves Swagger UI documentation at /swagger-ui, showcasing features such as route registration via the routes! macro, nested API routers for customer and order modules, and OpenAPI schema generation for request/response bodies.
examples/axum-utoipa-bindings · high confidence
Add axum-utoipa-nesting-vendored example with Docker support
A new example demonstrating how to use utoipa with axum, featuring programmatic and macro-based nesting of OpenAPI definitions and the use of the vendored utoipa-swagger-ui. The example includes a Dockerfile and instructions to run the application in a container, serving the Swagger UI at /swagger-ui.
examples/axum-utoipa-nesting-vendored · high confidence
Add example demonstrating utoipa-redoc with external file configuration
This change introduces a new example application (\todo-warp-redoc-with-file-config\) that demonstrates how to use \utoipa-redoc\ as a standalone component with the \warp\ framework, specifically highlighting the ability to configure the Redoc UI via an external JSON file (\redoc.json\) rather than inline code. The example includes a \build.rs\ script that sets the \UTOIPA\_REDOC\_CONFIG\_FILE\ environment variable to point to the configuration, and serves the Redoc UI at \/redoc\ while exposing a basic Todo API at \/api\ with in-memory storage and security scheme support.
examples/todo-warp-redoc-with-file-config · high confidence
Add example for serving multiple API documentation sets with Swagger UI
This change introduces a new \warp-multiple-api-docs\ example demonstrating how to serve multiple OpenAPI definitions (e.g., \/api-doc1.json\ and \/api-doc2.json\) using \utoipa\ and \utoipa-swagger-ui\. The example configures a \warp\ server to expose distinct API docs and provides a Swagger UI interface with a "Select a definition" dropdown, allowing users to switch between the different API specifications. It also includes a redirect from \/swagger-ui\ to \/swagger-ui/\ for proper path handling.
examples/warp-multiple-api-docs · high confidence
Add generics-actix demo application
A new example application has been added to demonstrate using external generic types (specifically \geo-types\) within \actix-web\ endpoints. The demo exposes two API endpoints, \/coord\_f64\ and \/coord\_u64\, which accept coordinate parameters and return generic coordinate objects, while also showcasing \utoipa\ and \utoipa-swagger-ui\ integration for API documentation.
examples/generics-actix · high confidence
Add raw-json-actix example demonstrating utoipa with raw JSON endpoints
A new example application has been added to demonstrate using utoipa with actix-web to handle raw JSON bodies. The example exposes a PATCH endpoint that accepts a serde\_json::Value, logs the parsed JSON structure (string, number, array, etc.) to the console, and provides Swagger UI documentation at /swagger-ui/. Users can run the demo locally via cargo run and interact with the API to see how raw JSON types are processed and documented.
examples/raw-json-actix · high confidence
Add simple-axum example demonstrating OpenAPI JSON endpoint
A new example project named simple-axum has been added to the examples directory. It provides a minimal Axum-based server that exposes an OpenAPI schema as a JSON file at the /api-docs/openapi.json endpoint, serving as a reference implementation for integrating utoipa with Axum.
examples/simple-axum · high confidence
Add tide-based Todo API example with Swagger UI
Added a new example demonstrating a Todo management API built with the Tide web framework. The application features in-memory storage and exposes CRUD endpoints for todo items. It integrates utoipa to generate OpenAPI documentation and serves the Swagger UI at /swagger-ui, allowing users to interact with the API directly. The example also includes a demonstration of API key-based security for restricted endpoints.
examples/todo-tide · high confidence
Add todo-axum example with multi-format API documentation
Introduces a new \todo-axum\ example application demonstrating an in-memory Todo API built with Axum and utoipa. The example integrates multiple API documentation viewers—Swagger UI, Redoc, RapiDoc, and Scalar—accessible at their respective paths, and includes a security scheme requiring an API key for restricted endpoints.
examples/todo-axum · high confidence
Add warp-based Todo example with Swagger UI integration
Introduces a new \todo-warp\ example demonstrating how to integrate \utoipa\ and \utoipa-swagger-ui\ with the \warp\ web framework. The example provides an in-memory Todo API with list, create, and delete endpoints, including security restrictions via an API key header for the delete operation. It also includes a Swagger UI interface accessible at \/swagger-ui/\, with a redirect from \/swagger-ui\ to \/swagger-ui/\ to ensure proper loading.
examples/todo-warp · high confidence
Added example for multiple API docs with scopes
Added a new demo application in \examples/actix-web-multiple-api-docs-with-scopes\ that demonstrates how to serve multiple OpenAPI definitions (api1 and api2) using utoipa-swagger-ui within a single Actix-web application. The example configures Swagger UI to allow users to select between different API definitions via a dropdown or direct URL parameters, and registers API paths under a common \/api\ scope.
examples/actix-web-multiple-api-docs-with-scopes · high confidence
Added examples documentation and symlink
The \examples\ directory now includes a \README.md\ that guides users on how to run the provided examples (such as \todo-actix\, \todo-axum\, and \rocket-todo\) and access their Swagger UI, Redoc, RapiDoc, and Scalar interfaces. It also lists community-maintained examples for frameworks like graphul, salvo, viz, and ntex. Additionally, a symlink \axum-utoipa-docker\ has been added, pointing to the \axum-utoipa-nesting-vendored\ example.
examples · high confidence
Added framework-specific argument resolution for Actix-web, Axum, and Rocket
New integration modules have been added to \utoipa-gen\ to automatically resolve function arguments and path operations for Actix-web, Axum, and Rocket. These modules implement \ArgumentResolver\ and \PathOperationResolver\ traits to parse handler signatures, extracting path parameters, query parameters, and request bodies specific to each framework's conventions (e.g., Axum's tuple path parameters, Rocket's anonymous arguments, and Actix-web's route attributes). This enables automatic OpenAPI schema generation for handler inputs without requiring manual annotation for every parameter.
utoipa-gen/src/ext · high confidence
Added multipart file upload examples for Axum and Actix Web
New example projects have been added for \examples/actix-web-multipart\ and \examples/axum-multipart\, demonstrating how to handle multipart file uploads with utoipa. Each example includes a README and a \main.rs\ that sets up a server (on port 8080) with Swagger UI, allowing users to upload files via a \/hello\ endpoint that processes both text fields and binary file data.
examples/actix-web-multipart, examples/axum-multipart · high confidence
Demo example for adding OpenAPI extensions via macro and trait
Added a new \simple-x-extensions\ example demonstrating how to inject custom OpenAPI extensions (x-\*) into the generated specification. The example shows two approaches: using the \extensions\ attribute within the \utoipa::path\ macro for granular control on paths, parameters, responses, and request bodies, and implementing the \Modify\ trait to apply extensions globally across the entire OpenAPI document structure.
examples/simple-x-extensions · high confidence
Demonstration of global type alias configuration in utoipa
A new example crate has been added to demonstrate how to configure global Rust type aliases within the utoipa project. The example includes a build script that registers aliases (such as mapping 'MyType' to 'bool' and 'MyInt' to 'Option\<i32\>') and a main source file that applies these aliases via the \\#\[schema(value\_type = ...)\]\ attribute. Tests verify that these aliases correctly resolve to their underlying types in the generated OpenAPI schema, including handling of generic types like \Entry\<i32\>\.
utoipa-config/config-test-crate · high confidence
Dual licensing and structured changelog for utoipa
The repository now distributes under a dual Apache-2.0/MIT license, giving users the choice of terms for usage and distribution. A root CHANGELOG.md has been added to serve as a central index, linking to the individual changelogs maintained within each crate (such as utoipa, utoipa-gen, and the framework-specific bindings). Additionally, a justfile has been introduced to standardize development workflows, providing recipes for running tests across all crates with their specific feature sets, generating documentation, and updating vendored Swagger UI assets.
(repo-wide) · high confidence
Example demonstrating OpenAPI 3.2 SSE support with itemSchema
Added a new example in examples/openapi-3\_2-sse that shows how to document a Server-Sent Events endpoint using utoipa's OpenAPI 3.2 support. The example opts into OpenAPI 3.2.0 output and uses the new item\_schema attribute to describe the shape of events in a text/event-stream response, mapping to the OpenAPI 3.2 itemSchema media type keyword. It includes a working axum-based server that streams pet status updates and Swagger UI for inspection.
_examples/openapi-3\2-sse · high confidence
Initial release of utoipa-axum bindings
Introduces the utoipa-axum crate, providing bindings that integrate utoipa with the Axum web framework. This allows developers to register Axum handlers and automatically generate OpenAPI specifications using the \OpenApiRouter\ and \routes!\ macro. The release includes the initial API, documentation, and license files.
utoipa-axum · high confidence
Introduce utoipa-actix-web bindings for automatic OpenAPI generation
This release adds the utoipa-actix-web crate, providing bindings that automatically collect paths and schemas from Actix Web App, Scope, and ServiceConfig to generate OpenAPI specifications without manual declarations. The implementation includes a passthrough for scoped middleware via Scope::wrap, adds map support for ServiceConfig, and raises the Minimum Supported Rust Version (MSRV) to 1.88.
utoipa-actix-web · high confidence
Introduce utoipa-axum integration for automatic OpenAPI generation
The \utoipa-axum\ crate is now available, providing an ergonomic API to integrate \utoipa\ with \axum\. It introduces the \OpenApiRouter\ wrapper and the \routes!\ macro, allowing developers to register Axum handlers annotated with \\#\[utoipa::path\]\ and automatically generate the corresponding OpenAPI specification. This enables seamless composition of service routes and API documentation in a single step.
utoipa-axum/src · high confidence
Introduce utoipa-config crate for global schema and alias configuration
The new utoipa-config crate allows users to define global configuration for utoipa, specifically enabling rust type aliases via \.alias\_for(...)\ and controlling schema collection modes (all vs. non-inlined) via \.schema\_collect(...)\. This configuration is written to a file during the build process and read back by the compiler, requiring users to be aware that the config is stored in the project's OUTPUT directory and may need code adjustments to align with changed configurations.
utoipa-config, utoipa-config/src · high confidence
Introduce utoipa-rapidoc crate for RapiDoc integration
The new utoipa-rapidoc crate provides a bridge between utoipa and the RapiDoc OpenAPI visualizer, allowing users to serve RapiDoc UI via actix-web, rocket, or axum frameworks, or standalone. It includes a RapiDoc struct with methods to configure the spec URL, customize HTML templates, and integrate with OpenAPI specs for predefined frameworks.
utoipa-rapidoc/src · high confidence
Introduce utoipa-scalar crate for serving Scalar API documentation
Adds the new utoipa-scalar crate, which bridges utoipa and the Scalar OpenAPI visualizer. This allows users to serve Scalar documentation via actix-web, rocket, or axum, or use it standalone. The crate supports custom HTML templates and requires Rust 1.88+.
utoipa-scalar · high confidence
Introduce utoipa-scalar crate for serving Scalar OpenAPI UI
A new \utoipa-scalar\ crate has been added to bridge utoipa and the Scalar OpenAPI visualizer. It provides a \Scalar\ struct that generates an HTML page embedding the OpenAPI specification, which can be served via built-in integrations for \actix-web\, \axum\, and \rocket\, or manually as standalone HTML. The HTML template supports customizable page titles and allows users to override the default template with custom HTML.
utoipa-scalar/src · high confidence
New OpenAPI 3.2-compliant data model and builder API for API documentation
The \utoipa/src/openapi\ module has been completely rewritten to introduce a new, builder-based API for constructing OpenAPI documents, aligning with the OpenAPI 3.2 specification. This change replaces the previous implementation with dedicated structs for core components such as \Content\, \Encoding\, \Example\, \Extensions\, \ExternalDocs\, \Header\, \Info\, \Link\, \Paths\, \RequestBody\, and \Responses\. Each component now features a corresponding builder (e.g., \ContentBuilder\, \InfoBuilder\) to facilitate fluent configuration. The update also introduces support for OpenAPI specification extensions (x-something) via a new \Extensions\ type, allows for multiple examples in responses and request bodies, and ensures deterministic serialization order for paths and responses using \BTreeMap\ and \IndexMap\. This refactoring provides a more robust and flexible foundation for generating OpenAPI documentation.
utoipa/src/openapi · high confidence
New actix-web examples demonstrating API scopes and multi-documentation UIs
Added two new examples for the actix-web integration: \actix-web-scopes-binding\ demonstrates how to use \utoipa-actix-web\ scopes to organize API paths, and \todo-actix\ provides a complete CRUD demo with in-memory storage, API key authentication, and support for Swagger UI, Redoc, RapiDoc, and Scalar documentation interfaces.
examples/todo-actix · high confidence
New framework integrations and authentication for Swagger UI
The \utoipa-swagger-ui\ crate now provides first-party integration modules for the \actix-web\, \axum\, and \rocket\ frameworks, allowing developers to easily mount the Swagger UI and OpenAPI documentation endpoints using native routing patterns for each server. Additionally, the Swagger UI configuration now supports basic authentication, enabling developers to protect the documentation endpoint with username and password credentials via the \BasicAuth\ config option.
utoipa-swagger-ui/src · high confidence
utoipa-rapidoc crate initialization and documentation
This change introduces the \utoipa-rapidoc\ crate, providing a bridge between utoipa and the RapiDoc OpenAPI visualizer. It includes the core HTML template for rendering RapiDoc, a README with usage examples for Axum, Actix-web, and Rocket, and a comprehensive changelog documenting the crate's version history from 0.1.0 to 7.0.0, including updates to the underlying utoipa library and framework integrations.
utoipa-rapidoc · high confidence
Removals
Removal of initial OpenAPI schema implementation
The initial OpenAPI schema implementation located in src/openapi has been removed. This change deletes the entire module, including the core OpenApi struct and its supporting types such as Contact, Info, Licence, PathItem, Operation, RequestBody, Response, Security, Server, and Tag. Users relying on this initial schema generation capability will no longer have access to these types.
src/openapi · high confidence
Removal of legacy src module files
The \src/error.rs\, \src/lib.rs\, and \src/types.rs\ files have been deleted from the source tree. This removes the previous \Error\ enum implementation, the main library entry point (including the \OpenApi\ trait and \utoipa\_gen\ re-exports), and the empty types module, indicating a structural cleanup or migration of these components to a different location or crate.
src · high confidence
Behavioural changes
29 commits (3 fixes) modifying utoipa-gen/src/path/response
A change to existing behaviour in utoipa-gen/src/path/response — 29 commits (3 fixs), 3 files.
utoipa-gen/src/path/response · medium confidence · unverified
Enhanced OpenAPI Info generation with environment variable support and terms of service
The OpenAPI info generation now automatically populates metadata (title, version, description, authors, license) from Cargo environment variables when deriving OpenAPI specs, allowing users to skip manual configuration in many cases. Additionally, the \\#\[openapi(info(...))\]\ attribute now supports a \terms\_of\_service\ field, and the license structure includes an \identifier\ field to better align with SPDX expressions found in Cargo package metadata.
utoipa-gen/src/openapi · high confidence
New path macro components for detailed API documentation
The \utoipa-gen\ path module has been restructured into dedicated source files to support richer attribute parsing for the \\#\[utoipa::path\]\ macro. This change introduces structured parsers for request bodies (\request\_body.rs\), responses (\response.rs\), parameters (\parameter.rs\), and media types (\media\_type.rs\), enabling users to define complex content types, multiple examples, and encoding details. It also adds a new \example.rs\ module for granular example configuration and a \status.rs\ constant list for HTTP status code validation, while \handler.rs\ centralizes the token generation for path handlers.
utoipa-gen/src/path · high confidence
Refactored schema generation into a modular component architecture
The \utoipa-gen\ derive macro implementation has been restructured into a new modular component system located in \utoipa-gen/src/component\. This change introduces dedicated modules for handling schema generation (\schema.rs\), parameter derivation (\into\_params.rs\), and serde attribute parsing (\serde.rs\), alongside a centralized feature definition file (\features.rs\). For users, this refactoring underpins the support for advanced schema attributes such as \\#\[schema(ignore)\]\, \\#\[schema(pattern = ...)\]\, and enhanced serde integration (including \flatten\, \deny\_unknown\_fields\, and enum representations), while improving the maintainability and extensibility of the macro's internal logic.
utoipa-gen/src/component · high confidence
Refactored schema generation into modular components with expanded attribute support
The schema generation logic in utoipa-gen has been restructured into dedicated modules (enums, features, xml) to improve maintainability and extensibility. This change introduces a more granular feature-parsing system, allowing for finer control over schema attributes. Users can now leverage expanded support for enum representations (including \repr\ types and serde tagging), XML serialization attributes (name, namespace, prefix, attribute, wrapped), and validation constraints on unnamed structs. The refactoring also standardizes how schema features like \deprecated\, \description\, \title\, and \no\_recursion\ are parsed and applied across named structs, unnamed structs, and enums, ensuring consistent behavior and better error diagnostics during macro expansion.
utoipa-gen/src/component/schema · high confidence
Refactored schema validation feature implementation
The schema validation logic in \utoipa-gen\ has been restructured into dedicated modules (\attributes.rs\, \validation.rs\, and \validators.rs\). This change introduces a new \NumberValue\ type to correctly handle negative literals in validation attributes (such as \minimum\, \maximum\, and \multiple\_of\), ensuring that negative values are parsed and generated accurately in the resulting OpenAPI schema. It also establishes a composable \Validator\ trait system to enforce type-specific constraints (e.g., ensuring \minimum\ is only used on numeric types), improving the robustness of schema generation.
utoipa-gen/src/component/features · high confidence
Swagger UI static assets removed from source tree
The pre-built Swagger UI distribution files (index.html, oauth2-redirect.html, and the bundled JavaScript) are no longer included in the repository. This change removes the static frontend assets from the src/swagger\_ui/dist directory, indicating that the UI is now likely served via a different mechanism or dependency rather than being bundled directly in the source.
_src/swagger\ui · high confidence
Utoipa v6 release with OpenAPI 3.2 support and new type integrations
This release updates the utoipa crate to version 6, introducing support for the OpenAPI 3.2 specification. It adds new type support for ULID, jiff 0.2 timestamps, and BigDecimal, while also enhancing framework integrations for Axum and actix-web. The library now includes features for preserving path and property order, supports non-strict integer formats, and allows custom schema formats. Additionally, it replaces the previous YAML serialization backend with yaml\_serde and introduces a \macros\ feature flag to control macro generation.
utoipa/src · high confidence
Vendored Swagger UI updated to version 5.32.6
The \utoipa-swagger-ui-vendored\ crate now includes Swagger UI version 5.32.6, replacing the previous version. This update ensures that users enabling the \vendored\ feature in \utoipa-swagger-ui\ receive the latest Swagger UI assets, which are embedded directly into the crate to support sandboxed environments without network access. The crate also updates its Minimum Supported Rust Version (MSRV) to 1.88.
utoipa-swagger-ui-vendored · high confidence
utoipa 6.0.0 release: OpenAPI 3.2 support and YAML library swap
The utoipa crate has been updated to version 6.0.0, introducing support for the OpenAPI 3.2.0 specification (including new fields like \webhooks\, \jsonSchemaDialect\, and expanded component support). This release also adds a breaking change by removing the \serde\_norway\ dependency in favor of \yaml\_serde\ for YAML serialization, and upgrades the Minimum Supported Rust Version (MSRV) to 1.88. Additional features include support for \BigDecimal\, \jiff\ v0.2 \Timestamp\, and new builder options for \title\ and \default\ on \RefBuilder\.
utoipa · high confidence
utoipa-gen rewritten for syn 3 and OpenAPI 3.2 support
The utoipa-gen code generation library has been completely rewritten to upgrade the underlying \syn\ dependency from version 2 to version 3, enabling support for the latest Rust syntax features. This refactor also introduces native support for generating OpenAPI 3.2 specifications via a new \version\ attribute on the \OpenApi\ derive macro. The change includes a comprehensive restructuring of the internal codebase, introducing new modules for handling component schemas, path attributes, security requirements, and server definitions, while maintaining backward compatibility for existing schema generation logic.
utoipa-gen/src · high confidence
utoipa-gen: OpenAPI 3.2 support, schema extensions, and Option/required fixes
The utoipa-gen macro crate now supports generating OpenAPI 3.2 documents (selectable via the \version\ attribute on \\#\[derive(OpenApi)\]\) and allows adding custom extensions to \ToSchema\ structs. It also introduces \item\_schema\ for streaming response types, generic support for \IntoParams\, and \bigdecimal\ type support. A key behavioral change fixes how \Option\ fields with \deserialize\_with\ are treated: they are now marked as required unless a \default\ is specified, preventing incorrect schema generation. Additionally, the crate upgrades its MSRV to Rust 1.88, replaces the \paste\ crate with \pastey\, and emits \vec!\[\]\ instead of array literals to avoid stack overflow issues with large structs.
utoipa-gen · high confidence
utoipa-redoc version 7.0.0 release with utoipa 6.0.0 integration
The utoipa-redoc crate has been updated to version 7.0.0, which upgrades the underlying utoipa dependency to version 6.0.0. This release includes documentation updates, license file symlinks, and the default Redoc HTML template used for rendering OpenAPI specifications.
utoipa-redoc · high confidence
utoipa-swagger-ui v10.0.0: MSRV bump, Swagger UI 5.32.6, and custom asset embedding
The utoipa-swagger-ui crate has been updated to version 10.0.0, raising the Minimum Supported Rust Version (MSRV) to 1.88 and upgrading the embedded Swagger UI to version 5.32.6. This release introduces custom embedding for Swagger UI assets, allowing users to overwrite default files (such as index.html) via the SWAGGER\_UI\_OVERWRITE\_FOLDER environment variable during the build process. The build script now uses the \zip\ crate v3.0 and supports downloading Swagger UI from local file paths via the file:// scheme in SWAGGER\_UI\_DOWNLOAD\_URL.
utoipa-swagger-ui · high confidence
Test coverage
Added generated OpenAPI specification for actix-web bindings; Added snapshot tests for utoipa-gen derive macros; Expanded test coverage for utoipa-gen derive macros; Removed obsolete OpenAPI derive macro test.
Dependencies
Utoipa 6.0 release with Axum 0.8 bindings and Swagger UI 10.0
This release updates the core utoipa library to version 6.0.0 and the Swagger UI integration to 10.0.1, introducing first-class bindings for Axum 0.8 (via the new utoipa-axum crate) alongside existing support for Actix-web 4 and Rocket 0.5. The proc-macro generator (utoipa-gen) has been upgraded to use Syn 3, and the project has raised its Minimum Supported Rust Version (MSRV) to 1.88. Additionally, the dependency tree has been tightened to cap the \time\ crate below version 0.3.52 to resolve build incompatibilities with the \cookie\ crate used by Rocket.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 63 → 57 (-5.6)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 91 → 90 (-0.1)
- Architecture 73 → 76 (+3.2)
- Maturity 63 → 63 (+0.1)
- Readiness 73 → 50 (-23.4)
- Security 71 → 70 (-0.4)
- Accessibility 55 → 55 (+0.0)
- Performance 100 (new)
Resolved (6)
- Hotspot: utoipa-gen/src/component.rs (utoipa-gen/src/component.rs)
- Hotspot: utoipa-gen/src/path.rs (utoipa-gen/src/path.rs)
- Hotspot: utoipa-gen/src/schema_type.rs (utoipa-gen/src/schema_type.rs)
- Hotspot: utoipa/src/openapi/path.rs (utoipa/src/openapi/path.rs)
- Off-boarding risk: anonymized user #1
- TodoComment (utoipa-gen/tests/path_derive_auto_into_responses_actix.rs)
New (15)
- Ambiguous constructor naming. new takes a single HttpMethod, while from_http_methods (plural) takes an iterator of methods. This suggests new might be a convenience for single methods, but the naming doesn't clearly indicate that from_http_methods is the general case for multiple methods.
- Dependency hygiene PARTLY measured — Cargo dependencies read, no committed lock to grade for currency
- Duplicated block (7 lines × 2) (utoipa-gen/src/openapi.rs)
- Duplicated block (7 lines × 2) (utoipa-gen/src/openapi.rs)
- End-of-life runtime: Rust 1.88
- Four distinct methods perform the same core operation (extracting the OpenApi spec from the router) with confusingly similar names. 'into', 'to', and 'get' are used interchangeably for conversion/extraction, and 'get' is overloaded for mutable/immutable variants without clear semantic distinction in naming.
- Hotspot: utoipa-gen/src/component/schema.rs (utoipa-gen/src/component/schema.rs)
- Inconsistent builder method naming across UI integrations. RapiDoc uses with_openapi and with_url, while Servable traits use with_url and with_url_and_config. The parameter order and naming (spec_url vs url) are inconsistent between RapiDoc and Servable implementations.
- Inconsistent naming for route registration. 'route' is used for method routers, while 'route_service' is used for generic services. This breaks the pattern of a single route or add_route method that accepts a generic handler/service type.
- Inverted test pyramid
- Off the main sequence: utoipa
- Off the main sequence: utoipa-config
- Off-boarding risk: anonymized user #1
- Param::new (cognitive 17) (utoipa-gen/src/component/into_params.rs)
- Projects may be oversized for their cohesion
Changes since last survey
- 13 commits — 8 feature/other, 5 fixes
By area
- utoipa-gen/tests — 5 commits
- utoipa-gen/src — 4 commits
- (root) — 2 commits
- .github/actions — 1 commit
- utoipa/src — 1 commit
Notable commits
- fix: Fix format
- fix: Fix min properties schema generation (#1623)
- fix: Fix publish crate version bash substitution pattern
- fix: Fix unsigned integer known format serialization (#1554)
- fix: Fix utoipa-swagger-ui build (#1624)
- change: Accept expr for attr for title and names (#1524)
- change: Add missing utoipa-gen snapshots for rename-expression derives (#1625)
- change: Mark Option fields with deserialize_with as required (#1627)
- change: Re-enable actix auto_into_responses Result test (#1603)
- change: Remove support for expression ignore in ToSchema and IntoParams (#1619)
- change: Support merge in OpenApi derive (#1628)
- change: Update next release versions (#1618)
- change: feature: support extensions in utoipa::ToSchema named structs (#1593)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
juhaku/utoipa was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 2ec67b85677e05e492aa77e53c57fb3fe3dfc217 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.