Bielu.AspNetCore.ApiCatalog 2.0.0

Prefix Reserved
dotnet add package Bielu.AspNetCore.ApiCatalog --version 2.0.0
                    
NuGet\Install-Package Bielu.AspNetCore.ApiCatalog -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bielu.AspNetCore.ApiCatalog" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bielu.AspNetCore.ApiCatalog" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Bielu.AspNetCore.ApiCatalog" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bielu.AspNetCore.ApiCatalog --version 2.0.0
                    
#r "nuget: Bielu.AspNetCore.ApiCatalog, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bielu.AspNetCore.ApiCatalog@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bielu.AspNetCore.ApiCatalog&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Bielu.AspNetCore.ApiCatalog&version=2.0.0
                    
Install as a Cake Tool

Bielu.AspNetCore.ApiCatalog

Serves an RFC 9727 API catalog at /.well-known/api-catalog: one well-known URL listing every API description your app serves, so a client, gateway or crawler can find them without knowing their URLs in advance.

The catalog is an RFC 9264 Linkset. Each document is a service-desc link with its media type, discovered from the app's own endpoints:

  • every document of MapAsyncApi() (application/vnd.aai.asyncapi+json)
  • every document of MapArazzo() (application/vnd.oai.workflows+json)
  • every document of MapOpenApi() (application/vnd.oai.openapi+json)

Installation

dotnet add package Bielu.AspNetCore.ApiCatalog

Usage

builder.Services.AddOpenApi();
builder.Services.AddAsyncApi();
builder.Services.AddApiCatalog(options => options
    .AddServiceDoc("/scalar", "API reference")                       // service-doc link
    .AddItem("https://payments.example.com/.well-known/api-catalog")); // another API or catalog

var app = builder.Build();
app.MapOpenApi();
app.MapAsyncApi();
app.MapApiCatalog(); // GET and HEAD /.well-known/api-catalog
{
  "linkset": [
    {
      "anchor": "https://localhost:5001/.well-known/api-catalog",
      "item": [ { "href": "https://localhost:5001/" } ]
    },
    {
      "anchor": "https://localhost:5001/",
      "service-desc": [
        { "href": "https://localhost:5001/openapi/v1.json", "type": "application/vnd.oai.openapi+json", "title": "OpenAPI document 'v1'" },
        { "href": "https://localhost:5001/asyncapi/v1.json", "type": "application/vnd.aai.asyncapi+json", "title": "AsyncAPI document 'v1'" }
      ]
    }
  ]
}

AddApiCatalog() is optional; call it only to change the defaults. If MapOpenApi() uses a non-default route, set OpenApiRoutePattern to it, because OpenAPI's endpoint is recognized by its route.

An API served from an endpoint rather than a document, such as an MCP server, is listed as an item with WithApiCatalogItem(): app.MapMcp("/mcp").WithApiCatalogItem("MCP server");.

Documentation

Feedback & Contributing

Copyright (c) 2025 Arkadiusz Biel. Released under the MIT license. Bug reports and contributions are welcome at the GitHub repository.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 65 10/25/2026
2.0.0-beta.20261025083222 53 10/25/2026
2.0.0-beta.20261025073559 47 10/25/2026
2.0.0-beta.20261024233532 50 10/24/2026
2.0.0-beta.20261024230848 60 10/24/2026
2.0.0-beta.20261024191358 57 10/24/2026
2.0.0-beta.20261024185247 53 10/24/2026
2.0.0-beta.20261024184446 54 10/24/2026
2.0.0-beta.20261024163851 58 10/24/2026
2.0.0-beta.20261024153849 58 10/24/2026
2.0.0-beta.20261024142609 52 10/24/2026