Extend OpenAPI and SwaggerUI to support SignalR endpoints
$ dotnet add package NSwag4SignalRNSwag4SignalR extends the NSwag, OpenAPI/SwaggerUI toolchain to describe SignalR (real-time) endpoints alongside regular HTTP APIs. It provides document processors and helpers to include Hub endpoints and SignalR semantics in generated OpenAPI documents and the Swagger UI.
From NuGet:
dotnet add package NSwag4SignalR
In Program.cs (minimal API / .NET 10+):
using NSwag4SignalR;
var builder = WebApplication.CreateBuilder(args);
// Add SignalR and REST controllers as normal
builder.Services.AddSignalR();
builder.Services.AddControllers();
// Add Swagger services
builder.Services.AddOpenApiDocument();
// Add the NSwag4SignalR extension to generate OpenAPI schema for SignalR hubs
builder.Services.AddNSwag4SignalR();
var app = builder.Build();
app.UseOpenApi();
app.UseSwaggerUi(swaggerUiSettings => {
// Use the NSwag4SignalR extension in Swagger UI
app.UseNSwag4SignalR(swaggerUiSettings);
});
app.UseEndpoints(endpoints => {
endpoints.MapControllers();
// Redirect / to /swagger
endpoints.MapGet("/", context => {
context.Response.Redirect("/swagger");
return Task.CompletedTask;
});
// Map the hub
endpoints.MapHub<MyHub>("/hubs/myhub");
});
app.Run();
MIT — see LICENSE