Franz.Common.Http.Documentation
2.2.12
See the version list below for details.
dotnet add package Franz.Common.Http.Documentation --version 2.2.12
NuGet\Install-Package Franz.Common.Http.Documentation -Version 2.2.12
<PackageReference Include="Franz.Common.Http.Documentation" Version="2.2.12" />
<PackageVersion Include="Franz.Common.Http.Documentation" Version="2.2.12" />
<PackageReference Include="Franz.Common.Http.Documentation" />
paket add Franz.Common.Http.Documentation --version 2.2.12
#r "nuget: Franz.Common.Http.Documentation, 2.2.12"
#:package Franz.Common.Http.Documentation@2.2.12
#addin nuget:?package=Franz.Common.Http.Documentation&version=2.2.12
#tool nuget:?package=Franz.Common.Http.Documentation&version=2.2.12
Franz.Common.Http.Documentation
A robust library within the Franz Framework designed to simplify and enhance API documentation for ASP.NET Core applications. This package provides seamless integration with native .NET OpenAPI, API versioning, Scalar UI, and route conventions — enabling clear, versioned, and comprehensive API documentation with zero third-party documentation dependencies.
Features
Native OpenAPI Integration (since 2.2.12):
- Uses
Microsoft.AspNetCore.OpenApi— the official .NET 10 OpenAPI pipeline. - No Swashbuckle dependency — eliminates
Microsoft.OpenApiversion conflict hell permanently. - One OpenAPI document per API version, served at
/openapi/{version}/openapi.json.
- Uses
Scalar UI (since 2.2.12):
- Replaces Swagger UI with
Scalar.AspNetCore— cleaner interface, better auth support, multi-version switcher. - Available at
/scalar/{documentName}(e.g./scalar/v1).
- Replaces Swagger UI with
API Versioning:
- Built-in support via
Asp.Versioning.Mvc.ApiExplorer— the officially maintained successor to the legacyMicrosoft.AspNetCore.Mvc.Versioningpackage. - Fluent
.AddApiExplorer()chained onAddApiVersioning()replaces the oldAddVersionedApiExplorer()pattern.
- Built-in support via
Route Customization:
RoutePrefixConventionfor consistent routing across controllers.- Default route prefix:
api/v{version:apiVersion}.
EnumerationClass Schema Support:
OpenApiSchemaExtensions.ConvertEnumeration()mapsEnumerationClasstypes from Contracts assemblies to correct OpenAPI scalar types via document transformers.
Dependency Injection:
FranzDocumentationBuilderfluent builder for composing documentation pipeline.AddFranzDocumentation()→ConfigureApiVersioning()→ConfigureOpenApi().
Version Information
Current Version: v2.2.12
- Part of the private Franz Framework ecosystem.
Dependencies
| Package | Version |
|---|---|
Asp.Versioning.Mvc.ApiExplorer |
10.0.0 |
Microsoft.AspNetCore.OpenApi |
10.0.9 |
Microsoft.Extensions.DependencyInjection.Abstractions |
10.0.9 |
Scalar.AspNetCore |
2.16.6 |
Franz.Common.Business |
2.2.12 |
Franz.Common.Reflection |
2.2.12 |
Removed since v2.2.12:
Swashbuckle.AspNetCore.SwaggerGen,Swashbuckle.AspNetCore.SwaggerUI,Microsoft.AspNetCore.Mvc.Versioning.ApiExplorer,Microsoft.OpenApi(explicit pin no longer needed).
Installation
From Private Azure Feed
dotnet nuget add source "https://your-private-feed-url" \
--name "AzurePrivateFeed" \
--username "YourAzureUsername" \
--password "YourAzurePassword" \
--store-password-in-clear-text
Install the package:
dotnet add package Franz.Common.Http.Documentation
Usage
1. Register Documentation Pipeline
Called automatically by AddHttpArchitecture. For manual registration:
services
.AddFranzDocumentation()
.ConfigureApiVersioning()
.ConfigureOpenApi();
2. API Versioning
Every controller must declare [ApiVersion] for version discovery:
[ApiVersion("1.0")]
[ApiController]
[Route("api/v{version:apiVersion}/heroes")]
public sealed class HeroController : ControllerBase { }
Default versioning behaviour:
- Default version:
1.0 - Assumes default version when unspecified:
true - Readers: URL segment,
x-api-versionheader,x-api-versionmedia type
3. OpenAPI Documents
One document registered per discovered API version:
GET /openapi/v1/openapi.json → OpenAPI spec for v1
GET /openapi/v2/openapi.json → OpenAPI spec for v2
4. Scalar UI
GET /scalar/v1 → Scalar API reference for v1
GET /scalar/v2 → Scalar API reference for v2
5. Route Prefix Customization
using Franz.Common.Http.Documentation.Routing;
services.AddMvc(options =>
{
options.Conventions.Add(new RoutePrefixConvention("api/v{version:apiVersion}"));
});
6. EnumerationClass Schema Mapping
Applied automatically via ConfigureOpenApi(). To apply manually:
services.AddOpenApi(options =>
{
options.ConvertEnumeration();
});
Middleware
UseDocumentation() is called automatically by UseHttpArchitecture().
For manual registration:
if (app.Environment.IsDevelopment())
{
app.UseDocumentation();
}
This registers:
MapOpenApi()per version →/openapi/{groupName}/openapi.jsonMapScalarApiReference()→/scalar/{documentName}
Migration from v2.2.9 → v2.2.12
| Before (Swashbuckle) | After (Native OpenAPI) |
|---|---|
ConfigureSwagger() |
ConfigureOpenApi() |
ConfigureSwaggerOptions |
ConfigureVersionedOpenApiOptions |
SwaggerGenOptionsExtensions.ConvertEnumeration |
OpenApiSchemaExtensions.ConvertEnumeration |
UseSwagger() + UseSwaggerUI() |
MapOpenApi() + MapScalarApiReference() |
/swagger/index.html |
/scalar/v1 |
/swagger/v1/swagger.json |
/openapi/v1/openapi.json |
AddVersionedApiExplorer() |
.AddApiExplorer() chained on AddApiVersioning() |
Microsoft.AspNetCore.Mvc.Versioning |
Asp.Versioning.Mvc |
Integration with Franz Framework
The Franz.Common.Http.Documentation package integrates seamlessly with:
- Franz.Common.Http.Bootstrap —
AddHttpArchitectureandUseHttpArchitecturewire it automatically. - Franz.Common.Business — provides
EnumerationClassutilities consumed by schema mapping. - Franz.Common.Reflection — reflection utilities for dynamic configuration.
Contributing
This package is part of a private framework. Contributions are limited to the internal development team.
- Clone the repository at https://github.com/bestacio89/Franz.Common/
- Create a feature branch.
- Submit a pull request for review. All PRs must comply with Franz Tribunal architecture rules.
License
MIT License. See the LICENSE file for more details.
Changelog
v2.2.12 — Native OpenAPI + Scalar Migration
Breaking changes:
ConfigureSwagger()renamed toConfigureOpenApi()— update all call sites.ConfigureSwaggerOptionsremoved — replaced byConfigureVersionedOpenApiOptions.SwaggerGenOptionsExtensionsremoved — replaced byOpenApiSchemaExtensions.UseSwagger()/UseSwaggerUI()removed fromUseDocumentation().- Swagger UI at
/swagger/index.htmlreplaced by Scalar UI at/scalar/v1. - OpenAPI spec moved from
/swagger/v1/swagger.jsonto/openapi/v1/openapi.json.
Added:
Microsoft.AspNetCore.OpenApinative pipeline — one document per API version.Scalar.AspNetCore— replaces Swagger UI entirely.ConfigureVersionedOpenApiOptions—IConfigureOptions<OpenApiOptions>document transformer replacingIConfigureNamedOptions<SwaggerGenOptions>.OpenApiSchemaExtensions.ConvertEnumeration()— document transformer replacingSwaggerGenOptions.MapType()overrides.OpenApiSchema.Typenow usesJsonSchemaTypeenum (aligned withMicrosoft.OpenApi 2.x).
Removed:
Swashbuckle.AspNetCore.SwaggerGenSwashbuckle.AspNetCore.SwaggerUIMicrosoft.AspNetCore.Mvc.Versioning.ApiExplorer(legacy, unmaintained)Microsoft.OpenApiexplicit version pin (no longer needed — SDK manages it)
Root cause resolved:
Microsoft.OpenApi 3.x breaks IOpenApiRequestBody.Content which Swashbuckle 10.x
depends on, causing MissingMethodException at /swagger/v1/swagger.json generation.
Native OpenAPI eliminates this entire class of version conflict permanently.
v2.0.1 — Internal Modernization
- Messaging and infrastructure refactored for async, thread-safety, and modern .NET 10 patterns.
- All APIs remain fully backward compatible.
- Tests, listeners, and pipeline components modernized.
v1.3 — .NET 9 Upgrade
- Upgraded to .NET 9.0.8.
- Separated business concepts from mediator concepts.
- Now compatible with both the in-house Franz mediator and MediatR.
v1.2.65 — Initial .NET 9 Migration
- Upgraded to .NET 9.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Asp.Versioning.Mvc.ApiExplorer (>= 10.0.0)
- Franz.Common.Business (>= 2.2.12)
- Franz.Common.Reflection (>= 2.2.12)
- Microsoft.AspNetCore.OpenApi (>= 10.0.9)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.9)
- Scalar.AspNetCore (>= 2.16.6)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Franz.Common.Http.Documentation:
| Package | Downloads |
|---|---|
|
Franz.Common.Http.Bootstrap
Shared utility library for the Franz Framework. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.2.15 | 0 | 6/29/2026 |
| 2.2.14 | 0 | 6/29/2026 |
| 2.2.13 | 5 | 6/29/2026 |
| 2.2.12 | 38 | 6/28/2026 |
| 2.2.11 | 37 | 6/28/2026 |
| 2.2.10 | 46 | 6/28/2026 |
| 2.2.9 | 46 | 6/28/2026 |
| 2.2.8 | 43 | 6/28/2026 |
| 2.2.7 | 107 | 6/7/2026 |
| 2.2.6 | 118 | 6/6/2026 |
| 2.2.5 | 117 | 6/4/2026 |
| 2.2.4 | 105 | 6/3/2026 |
| 2.2.3 | 111 | 6/2/2026 |
| 2.2.2 | 119 | 6/2/2026 |
| 2.2.1 | 110 | 5/24/2026 |
| 2.1.4 | 116 | 4/27/2026 |
| 2.1.3 | 109 | 4/26/2026 |
| 2.1.2 | 107 | 4/26/2026 |
| 2.1.1 | 113 | 4/22/2026 |
| 2.0.2 | 125 | 3/30/2026 |