In this post I continue my investigation of using Scalar as an alternative to Swashbuckle that I was using before to expose my OpenAPI metadata in a userfriendly way. If you have no idea what Scalar is, I would recommend to check out my introduction post first before you continue reading.
Today I want to have a look at how we can transform the OpenAPI metadata. On this specific API, it is expected that one of a set of custom headers is passed when calling the API. To simplify the experience, I originally created an IOperationFilter
for Swashbuckle to show these extra headers:
How to customize the OpenAPI metadata in .NET 9?
The generated OpenAPI document can be customized using “transformers”, which can operate on the entire document, on operations, or on schemas. Transformers are classes that implement the IOpenApiDocumentTransformer
, IOpenApiOperationTransformer
, or IOpenApiSchemaTransformer
interfaces. Each of these interfaces has a single async method that receives the document, operation, or schema to be transformed along with a context object that provides additional information.
So to achieve the same goal using the built-in OpenAPI metadata, we need to create a custom transformer implementing the IOpenApiOperationTransformer
interface:
We can now register this implementation when configuring our OpenAPI integration:
That’s it! You don’t have to do any extra work in Scalar.
Here is how the result looked like in Scalar: