Repository navigation
v3.5.0
What's Changed
Bug Fix: Endpoints Invisible to OpenAPI/Swagger (#25)
All ErrorOrX-generated endpoints were invisible to ASP.NET Core's OpenAPI document generator — "paths": {} was empty despite endpoints working at runtime.
Root cause: The wrapper method Invoke_EpN(HttpContext ctx) returned Task, which matches the RequestDelegate signature (Func<HttpContext, Task>). ASP.NET Core's MapGet silently picked the RequestDelegate overload, bypassing RequestDelegateFactory — making endpoints invisible to OpenAPI.
Three-part fix:
| Fix | What | Why |
|---|---|---|
| Typed return | Wrapper returns Task<Results<Ok<T>, ...>> instead of Task |
Breaks RequestDelegate match, forces Delegate overload |
(Delegate) cast |
Explicit cast on all MapGet/MapPost calls |
Safety net — forces Delegate overload regardless of signature |
| Explicit metadata | Always emit ProducesResponseTypeMetadata |
Full response schemas in OpenAPI even without Results<...> |
New: OpenAPI Parameter Definitions
When using AddErrorOrOpenApi(), the generated operation transformer now emits full OpenAPI parameter definitions for route, query, and header parameters — including types, formats, and required flags.
Two-tier support:
| Setup | What You Get |
|---|---|
AddOpenApi() (existing) |
Endpoint visibility + response schemas |
AddErrorOrOpenApi() |
Above + parameter definitions + XML doc summaries |
Other Changes
- Updated README examples from
int idtoGuid idwith route constraints
Upgrade
dotnet add package ErrorOrX.Generators --version 3.5.0For full OpenAPI parameter support, use AddErrorOrOpenApi() instead of AddOpenApi():
builder.Services
.AddErrorOrOpenApi() // instead of AddOpenApi()
.AddErrorOrEndpoints()
.UseJsonContext<AppJsonSerializerContext>();Full Changelog: v3.4.0...v3.5.0