Skip to content
CAI
Software that uses CAICheck a score

juhaku/utoipa

57.0

Adequate · 30 September 2026

32.5k

lines of production code

Rust

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

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

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.