The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript.
Alternatives To Nswag
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Nswag6,3501013019 days ago269September 26, 20231,810mitC#
The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript.
Openapi Typescript Codegen2,448306a day ago104July 05, 2023247mitTypeScript
NodeJS library that generates Typescript or Javascript clients based on the OpenAPI specification
Orval2,090362 days ago213December 06, 2023102mitTypeScript
orval is able to generate client with appropriate type-signatures (TypeScript) from any valid OpenAPI v3 or Swagger v2 specification, either in yaml or json formats. 🍺
Apicurio Studio905322 days ago47March 24, 2022348apache-2.0TypeScript
Open Source API Design
Angular Springboot Rest Jwt728
2 months ago6mitJavaScript
Springboot, Angular and JWT security - Example Project based on Northwind Order Processing
Full Stack509
a year agomitPython
Full stack, modern web application generator. Using Flask, PostgreSQL DB, Docker, Swagger, automatic HTTPS and more.
Ng Openapi Gen352210a month ago62November 17, 202335mitTypeScript
An OpenAPI 3.0 codegen for Angular
2 years ago4TypeScript
Ng Swagger Gen20820102 years ago60February 26, 202120mitJavaScript
A Swagger 2.0 codegen for Angular
Angular Swagger Ui131523 years ago13October 05, 20206otherJavaScript
An angularJS implementation of Swagger UI
Alternatives To Nswag
Select To Compare

Alternative Project Comparisons

NSwag: The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript

NSwag | NJsonSchema | Apimundo | Namotion.Reflection

NuGet Version npm NuGet Version Preview build Discord StackOverflow Wiki Backers on Open Collective Sponsors on Open Collective

👉 Announcing Apimundo: An API documentation system based on NSwag and NJsonSchema 👈

NSwag is a Swagger/OpenAPI 2.0 and 3.0 toolchain for .NET, .NET Core, Web API, ASP.NET Core, TypeScript (jQuery, AngularJS, Angular 2+, Aurelia, KnockoutJS and more) and other platforms, written in C#. The OpenAPI/Swagger specification uses JSON and JSON Schema to describe a RESTful web API. The NSwag project provides tools to generate OpenAPI specifications from existing ASP.NET Web API controllers and client code from these OpenAPI specifications.

The project combines the functionality of Swashbuckle (OpenAPI/Swagger generation) and AutoRest (client generation) in one toolchain (these two libs are not needed). This way a lot of incompatibilites can be avoided and features which are not well described by the OpenAPI specification or JSON Schema are better supported (e.g. inheritance, enum and reference handling). The NSwag project heavily uses NJsonSchema for .NET for JSON Schema handling and C#/TypeScript class/interface generation.


The project is developed and maintained by Rico Suter and other contributors.


Ways to use the toolchain:


OpenAPI/Swagger Generators:

Code Generators:

  • CSharp Client
    • CSharpClientGenerator
      • Generates C# clients from an OpenAPI specification
      • Generates POCOs or classes implementing INotifyPropertyChanged supporting DTOs
      • The generated clients can be used with full .NET, .NET Core, Xamarin and .NET Standard 1.4 in general
  • CSharp Controllers (contract first/schema first development)
    • CSharpControllerGenerator
      • Generates Web API Controllers based on a OpenAPI specification (ASP.NET Web API and ASP.NET Core)
  • TypeScript Client
    • TypeScriptClientGenerator
      • Generates TypeScript clients from a OpenAPI specification
      • Available templates/supported libraries:
        • JQuery with Callbacks, JQueryCallbacks
        • JQuery with promises JQueryPromises
        • AngularJS using $http, AngularJS
        • Angular (v2+) using the http service, Angular
        • window.fetch API and ES6 promises, Fetch (use this template in your React/Redux app)
        • Aurelia using the HttpClient from aurelia-fetch-client, Aurelia (based on the Fetch template)
        • Axios (preview)


NPM Packages

  • NSwag: Command line tools (.NET and .NET Core) distributed as NPM package

NuGet Packages


  • NSwag.Core
    • The OpenAPI/Swagger reader and writer classes, see OpenApiDocument (.NET Standard 1.0 / 2.0 and .NET 4.5)
  • NSwag.Core.Yaml (.NET Standard 1.3 / 2.0 and .NET 4.5)
    • Extensions to read and write YAML OpenAPI specifications
  • NSwag.Annotations (.NET Standard 1.0 / 2.0 and .NET 4.5)
    • Attributes to decorate Web API controllers to control the OpenAPI generation

OpenAPI generation:

Code generation:



  • NSwag.AssemblyLoader (.NET Standard 1.6 / 2.0 and .NET 4.5.1):
    • Classes to load assemblies in an isolated AppDomain and generate OpenAPI specs from Web API controllers
  • NSwag.Commands (.NET Standard 1.6 / 2.0 and .NET 4.5.1+):
    • Commands for the command line tool implementations and UI
  • NSwag.MSBuild (MSBuild .targets):
    • Adds a .targets file to your Visual Studio project, so that you can run the NSwag command line tool in an MSBuild target, see MSBuild
  • NSwag.ConsoleCore (.NET Core 1.0, 1.1, 2.0, 2.1 and 2.2):
    • Command line tool for .NET Core (dotnet nswag)
    • <DotNetCliToolReference Include="NSwag.ConsoleCore" Version="..." />
  • NSwagStudio (Chocolatey, Windows):
    • Package to install the NSwagStudio and command line tools via Chocolatey

CI NuGet Feed: https://www.myget.org/F/nswag/api/v3/index.json

The NuGet packages may require the Microsoft.NETCore.Portable.Compatibility package on .NET Core/UWP targets (if mscorlib is missing).


Usage in C#

To register the middlewares to generate a OpenAPI spec and render the UI, register NSwag in Startup.cs:

public class Startup

    public void ConfigureServices(IServiceCollection services)
        services.AddOpenApiDocument(); // add OpenAPI v3 document
//      services.AddSwaggerDocument(); // add Swagger v2 document

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)

        app.UseOpenApi(); // serve OpenAPI/Swagger documents
        app.UseSwaggerUi(); // serve Swagger UI
        app.UseReDoc(); // serve ReDoc UI

The following code shows how to read an OpenAPI/Swagger specification and generate C# client classes to call the described web services:

var document = await OpenApiDocument.FromFileAsync("openapi.json");
var clientSettings = new CSharpClientGeneratorSettings 
    ClassName = "MyClass",
    CSharpGeneratorSettings = 
        Namespace = "MyNamespace"

var clientGenerator = new CSharpClientGenerator(document, clientSettings);
var code = clientGenerator.GenerateFile();

Check out the project Wiki for more information.


The generators can be used in a comfortable and simple Windows GUI called NSwagStudio:

Sponsors, support and consulting

Companies or individuals which paid a substantial amount for implementing, fixing issues, support or sponsoring are listed below. Thank you for supporting this project! You can also become a financial contributor:

Please contact Rico Suter for paid consulting and support.


This project exists thanks to all the people who contribute. [Contribute].


Support this project by becoming a sponsor. Your logo will show up here with a link to your website.

Top sponsors:



Thank you to all our backers!

Popular Angular Projects
Popular Swagger Projects
Popular Web User Interface Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
C Sharp
Asp Net Core
Asp Net