.NET › API Versioning

How do you version an API's OpenAPI/Swagger documentation to show separate docs per version?

Intermediate

Answer

Using Swashbuckle or NSwag together with the versioning library's IApiVersionDescriptionProvider, you can generate a separate OpenAPI document per registered API version, configuring Swagger UI to expose a dropdown letting consumers switch between documented versions (e.g., /swagger/v1/swagger.json and /swagger/v2/swagger.json).
builder.Services.AddSwaggerGen();
builder.Services.ConfigureOptions<ConfigureSwaggerOptions>();

app.UseSwaggerUI(options => {
    foreach (var description in provider.ApiVersionDescriptions)
        options.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
});
Real-world example An API's public developer portal shows a version dropdown in Swagger UI, letting third-party integrators explore both the current v2 and the still-supported legacy v1 documentation side by side.

Common follow-ups: How does ConfigureSwaggerOptions discover registered API versions automatically?;What happens to Swagger docs when a version is removed?