MagnusOpera.OpenApiGen 0.13.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global MagnusOpera.OpenApiGen --version 0.13.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local MagnusOpera.OpenApiGen --version 0.13.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=MagnusOpera.OpenApiGen&version=0.13.0
                    
nuke :add-package MagnusOpera.OpenApiGen --version 0.13.0
                    

OpenApiGen

OpenApiGen is a .NET tool that generates simple, type-safe TypeScript clients from OpenAPI definitions. The generated clients are designed for easy integration with Axios and React Query.

Usage

Run the tool with:

openapigen <configuration-file> <openapi-file> <output-dir>
  • <configuration-file>: Path to the configuration JSON file
  • <openapi-file>: Path to the OpenAPI definition JSON file
  • <output-dir>: Output directory for the generated TypeScript client (will be purged)

For help:

openapigen --help

Note on Any Types

This tool implements a workaround for a bug in Microsoft.Extensions.ApiDescription.Server 9.0.8, where nullable types are incorrectly emitted as type "any" in the OpenAPI definition. The generator heuristically locates an equivalent non-nullable schema and applies the intended nullability. This assumes the base, non-nullable schema is emitted correctly.

Example Output

Sample TypeScript code generated for a PATCH operation on /User/{id}:

// === patch /User/{id} ===
export type UserIdPatchRequest = {
		firstName: null | string;
		lastName: null | string;
};
export type UserIdPatchResponse = {
		firstName: string;
		lastName: string;
};
export type UserIdPatch400Response = ProblemDetails;
export type UserIdPatch404Response = ProblemDetails;
export async function patchUserId(
	axios: AxiosInstance,
	id: string,
	request: UserIdPatchRequest
): Promise<UserIdPatchResponse> {
	return (await axios.patch<UserIdPatchResponse>(`/User/${id}`, request)).data;

## Features

- Generates TypeScript clients from OpenAPI definitions
- Designed for easy integration with Axios and React Query
- Inlines types for clarity and simplicity
- Minimal dependencies, no runtime bloat

## Note on Nullable Types

This tool implements a workaround for a bug in Microsoft.Extensions.ApiDescription.Server 9.0.8, where nullable types are incorrectly emitted as type "any" in the OpenAPI definition. The generator heuristically locates an equivalent non-nullable schema (with the same required members) and applies the intended nullability. This assumes the base, non-nullable schema is emitted correctly.
Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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.

This package has no dependencies.

Version Downloads Last Updated
0.32.0 151 9/13/2025
0.31.0 56 9/13/2025
0.30.0 144 9/7/2025
0.29.0 231 9/7/2025
0.28.0 133 9/5/2025
0.27.0 286 8/26/2025
0.26.0 176 8/26/2025
0.25.0 168 8/25/2025
0.24.0 147 8/25/2025
0.23.0 117 8/25/2025
0.22.0 201 8/21/2025
0.21.0 138 8/21/2025
0.20.0 123 8/21/2025
0.18.0 126 8/21/2025
0.17.0 125 8/21/2025
0.16.0 76 8/15/2025
0.15.0 76 8/15/2025
0.14.0 136 8/15/2025
0.13.0 113 8/15/2025
0.12.0 138 8/14/2025
0.11.0 132 8/14/2025
0.10.0 132 8/14/2025
0.9.0 181 8/13/2025
0.8.0 166 8/11/2025
0.7.1 127 8/11/2025
0.7.0 136 8/10/2025
0.6.0 130 8/10/2025
0.5.0 118 8/9/2025
0.4.0 125 8/9/2025
0.3.0 129 8/9/2025
0.2.0 106 8/9/2025
0.1.0 106 8/9/2025
0.0.6 235 8/7/2025
0.0.5 206 8/7/2025
0.0.4 210 8/7/2025
0.0.3 206 8/7/2025
0.0.2 204 8/7/2025
0.0.1 212 8/7/2025