Bielu.AspNetCore.ApiCatalog 2.2.0

Prefix Reserved
dotnet add package Bielu.AspNetCore.ApiCatalog --version 2.2.0
                    
NuGet\Install-Package Bielu.AspNetCore.ApiCatalog -Version 2.2.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.2.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.2.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.2.0
                    
#r "nuget: Bielu.AspNetCore.ApiCatalog, 2.2.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.2.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.2.0
                    
Install as a Cake Addin
#tool nuget:?package=Bielu.AspNetCore.ApiCatalog&version=2.2.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.  net11.0 is compatible. 
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.2.0 80 11/11/2026
2.2.0-beta.20261111063054 35 11/11/2026
2.2.0-beta.20261111062954 35 11/11/2026
2.2.0-beta.20261111061005 43 11/11/2026
2.2.0-beta.20261111060624 38 11/11/2026
2.2.0-beta.20261111060414 37 11/11/2026
2.1.1-beta.20261111052705 42 11/11/2026
2.1.1-beta.20261111052612 41 11/11/2026
2.1.0 710 11/4/2026
2.1.0-beta.20261104151236 49 11/4/2026
2.0.2 97 11/4/2026
2.0.2-beta.20261104133150 48 11/4/2026
2.0.2-beta.20261103095504 53 11/3/2026
2.0.1 223 11/3/2026
2.0.1-beta.20261103095358 51 11/3/2026
2.0.0 125 10/25/2026
2.0.0-beta.20261025083222 64 10/25/2026
2.0.0-beta.20261025073559 53 10/25/2026
2.0.0-beta.20261024233532 59 10/24/2026
2.0.0-beta.20261024230848 66 10/24/2026
Loading failed