{"id":14986497,"url":"https://github.com/ricosuter/nswag","last_synced_at":"2025-09-09T20:26:06.251Z","repository":{"id":37271508,"uuid":"41822320","full_name":"RicoSuter/NSwag","owner":"RicoSuter","description":"The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript. ","archived":false,"fork":false,"pushed_at":"2025-08-19T19:02:51.000Z","size":64786,"stargazers_count":7158,"open_issues_count":1992,"forks_count":1333,"subscribers_count":162,"default_branch":"master","last_synced_at":"2025-09-07T17:15:30.744Z","etag":null,"topics":["angular","aspnet","aspnetcore","aurelia","codegen","csharp","dotnet","nswag","openapi","swagger","typescript","webapi"],"latest_commit_sha":null,"homepage":"http://NSwag.org","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RicoSuter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"RicoSuter"}},"created_at":"2015-09-02T19:11:57.000Z","updated_at":"2025-09-04T13:42:43.000Z","dependencies_parsed_at":"2023-10-20T22:43:05.365Z","dependency_job_id":"9fcf86c0-d6e6-4028-9597-42d7a768b92c","html_url":"https://github.com/RicoSuter/NSwag","commit_stats":{"total_commits":3576,"total_committers":309,"mean_commits":"11.572815533980583","dds":"0.17925055928411637","last_synced_commit":"7d6df3af95081f3f0ed6dee04be8d27faa86f91a"},"previous_names":["nswag/nswag","rsuter/nswag"],"tags_count":430,"template":false,"template_full_name":null,"purl":"pkg:github/RicoSuter/NSwag","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RicoSuter%2FNSwag","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RicoSuter%2FNSwag/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RicoSuter%2FNSwag/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RicoSuter%2FNSwag/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RicoSuter","download_url":"https://codeload.github.com/RicoSuter/NSwag/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RicoSuter%2FNSwag/sbom","scorecard":{"id":98383,"data":{"date":"2025-08-11","repo":{"name":"github.com/RicoSuter/NSwag","commit":"4d95911f1aa1e3ab57098aa9b801785bd669a542"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.1,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":3,"reason":"Found 11/30 approved changesets -- score normalized to 3","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/pr.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":10,"reason":"30 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Binary-Artifacts","score":6,"reason":"binaries present in source code","details":["Warn: binary detected: src/NSwag.MSBuild/NuGet.exe:1","Warn: binary detected: src/NSwagStudio.Chocolatey/NuGet.exe:1","Warn: binary detected: src/libs/System.IO.dll:1","Warn: binary detected: src/libs/System.Runtime.dll:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v14.5.0 not signed: https://api.github.com/repos/RicoSuter/NSwag/releases/237092641","Warn: release artifact v14.4.0 not signed: https://api.github.com/repos/RicoSuter/NSwag/releases/215314399","Warn: release artifact v14.3.0 not signed: https://api.github.com/repos/RicoSuter/NSwag/releases/209162071","Warn: release artifact v14.2.0 not signed: https://api.github.com/repos/RicoSuter/NSwag/releases/186213791","Warn: release artifact v14.1.0 not signed: https://api.github.com/repos/RicoSuter/NSwag/releases/165874638","Warn: release artifact v14.5.0 does not have provenance: https://api.github.com/repos/RicoSuter/NSwag/releases/237092641","Warn: release artifact v14.4.0 does not have provenance: https://api.github.com/repos/RicoSuter/NSwag/releases/215314399","Warn: release artifact v14.3.0 does not have provenance: https://api.github.com/repos/RicoSuter/NSwag/releases/209162071","Warn: release artifact v14.2.0 does not have provenance: https://api.github.com/repos/RicoSuter/NSwag/releases/186213791","Warn: release artifact v14.1.0 does not have provenance: https://api.github.com/repos/RicoSuter/NSwag/releases/165874638"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:92: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:57: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:62: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:75: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:45: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:77: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/pr.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/RicoSuter/NSwag/pr.yml/master?enable=pin","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":1,"reason":"9 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-2qqx-w9hr-q5gx","Warn: Project is vulnerable to: GHSA-2vrf-hf26-jrp5","Warn: Project is vulnerable to: GHSA-4w4v-5hc9-xrr2","Warn: Project is vulnerable to: GHSA-j58c-ww9w-pwp5","Warn: Project is vulnerable to: GHSA-m2h2-264f-f486","Warn: Project is vulnerable to: GHSA-m9gf-397r-hwpg","Warn: Project is vulnerable to: GHSA-mqm9-c95h-x2p6","Warn: Project is vulnerable to: GHSA-prc3-vjfx-vhm9","Warn: Project is vulnerable to: GHSA-qwqh-hm9m-p5hr"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-15T09:35:10.456Z","repository_id":37271508,"created_at":"2025-08-15T09:35:10.456Z","updated_at":"2025-08-15T09:35:10.456Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274357608,"owners_count":25270675,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","aspnet","aspnetcore","aurelia","codegen","csharp","dotnet","nswag","openapi","swagger","typescript","webapi"],"created_at":"2024-09-24T14:12:58.203Z","updated_at":"2025-09-09T20:26:06.172Z","avatar_url":"https://github.com/RicoSuter.png","language":"C#","funding_links":["https://github.com/sponsors/RicoSuter","https://opencollective.com/nswag","https://opencollective.com/NSwag"],"categories":[],"sub_categories":[],"readme":"## NSwag: The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript\n\nNSwag | [NJsonSchema](http://njsonschema.org) | [Apimundo](https://apimundo.com) | [Namotion.Reflection](https://github.com/RicoSuter/Namotion.Reflection)\n\n[![NuGet Version](https://img.shields.io/nuget/v/NSwag.Core.svg)](https://www.nuget.org/packages?q=NSwag)\n[![npm](https://img.shields.io/npm/v/nswag.svg)](https://www.npmjs.com/package/nswag)\n[![NuGet Version Preview](https://img.shields.io/nuget/vpre/NSwag.Core.svg)](https://www.nuget.org/packages?q=NSwag)\n[![build](https://github.com/RicoSuter/NSwag/actions/workflows/build.yml/badge.svg)](https://github.com/RicoSuter/NSwag/actions/workflows/build.yml)\n[![Discord](https://img.shields.io/badge/Discord-join%20chat-1dce73.svg)](https://discord.gg/BxQNy25WF6)\n[![StackOverflow](https://img.shields.io/badge/questions-on%20StackOverflow-orange.svg?style=flat)](http://stackoverflow.com/questions/tagged/nswag)\n[![Wiki](https://img.shields.io/badge/docs-in%20wiki-orange.svg?style=flat)](https://github.com/RicoSuter/nswag/wiki)\n[![Backers on Open Collective](https://opencollective.com/NSwag/backers/badge.svg)](#backers) \n[![Sponsors on Open Collective](https://opencollective.com/NSwag/sponsors/badge.svg)](#sponsors)\n\n:point_right: [**Announcing Apimundo:** An API documentation system based on NSwag and NJsonSchema](https://github.com/RicoSuter/NSwag/issues/3077) :point_left:\n\nNSwag 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](https://github.com/OAI/OpenAPI-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. \n\nThe 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](https://github.com/NJsonSchema/NJsonSchema/wiki/Inheritance), [enum](https://github.com/NJsonSchema/NJsonSchema/wiki/Enums) and reference handling). The NSwag project heavily uses [NJsonSchema for .NET](http://njsonschema.org) for JSON Schema handling and C#/TypeScript class/interface generation. \n\n![ToolchainDiagram](assets/ToolchainDiagram.png) \n\nThe project is developed and maintained by [Rico Suter](http://rsuter.com) and other contributors.\n\n### Features\n\n- [Generate Swagger 2.0 and OpenAPI 3.0 specifications from C# ASP.NET (Core) controllers](https://github.com/RicoSuter/NSwag/wiki/Middlewares)\n- Serve the specs via ASP.NET (Core) middleware, optionally with [Swagger UI](https://github.com/swagger-api/swagger-ui) or [ReDoc](https://github.com/Rebilly/ReDoc)\n- Generate C# or TypeScript clients/proxies from these specs\n- Everything can be automated via CLI (distributed via NuGet tool or build target; or NPM)\n- CLI configured via JSON file or NSwagStudio Windows UI\n\n### Ways to use the toolchain\n\n- Simple to use Windows GUI, [NSwagStudio](https://github.com/RicoSuter/NSwag/wiki/NSwagStudio)\n- By using the [OpenAPI or OpenAPI UI OWIN and ASP.NET Core Middlewares](https://github.com/RicoSuter/NSwag/wiki/Middlewares) (also serves the [Swagger UI](https://github.com/swagger-api/swagger-ui)) (recommended)\n- Via [command line](https://github.com/RicoSuter/NSwag/wiki/CommandLine) (Windows, Mac and Linux support through [Mono](http://www.mono-project.com/) or .NET Core console binary, also via [NPM package](https://www.npmjs.com/package/nswag))\n- In your C# code, via [NuGet](https://www.nuget.org/packages?q=NSwag)\n- In your [MSBuild targets](https://github.com/RicoSuter/NSwag/wiki/NSwag.MSBuild)\n- With [ServiceProjectReference](https://github.com/RicoSuter/NSwag/wiki/ServiceProjectReference) tags in your .csproj (preview)\n- In your [Azure V2 Functions](https://github.com/Jusas/NSwag.AzureFunctionsV2) (external project, might not use latest NSwag version)\n\n### Tutorials\n\n- [Add NSwag to your ASP.NET Core app](https://github.com/RicoSuter/NSwag/wiki/AspNetCore-Middleware)\n- [Integrate the NSwag toolchain into your ASP.NET Web API project](https://blog.rsuter.com/nswag-tutorial-integrate-the-nswag-toolchain-into-your-asp-net-web-api-project/)\n- [Generate an Angular TypeScript client from an existing ASP.NET Web API web assembly](https://blog.rsuter.com/nswag-tutorial-generate-an-angular-2-typescript-client-from-an-existing-asp-net-web-api-web-assembly/)\n- [Video Tutorial: How to integrate NSwag into your ASP.NET Core Web API project (5 mins)](https://www.youtube.com/watch?v=lF9ZZ8p2Ciw)\n\n### OpenAPI/Swagger Generators\n\n- ASP.NET Web API assembly to OpenAPI (supports .NET Core)\n    - [AspNetCoreOpenApiDocumentGenerator](https://github.com/RicoSuter/NSwag/wiki/AspNetCoreOpenApiDocumentGenerator)\n    - [WebApiOpenApiDocumentGenerator](https://github.com/RicoSuter/NSwag/wiki/WebApiOpenApiDocumentGenerator)\n        - Generates an OpenAPI specification for Web API controllers\n    - [WebApiToOpenApiCommand](https://github.com/RicoSuter/NSwag/wiki/WebApiToOpenApiCommand)\n        - Generates an OpenAPI specification for controllers in an external Web API assembly\n        - [Also supports loading of .NET Core assemblies](https://github.com/RicoSuter/NSwag/wiki/Assembly-loading)\n    - [TypesToOpenApiCommand](https://github.com/RicoSuter/NSwag/wiki/TypesToOpenApiCommand)\n        - Generates an OpenAPI specification containing only types from .NET assemblies\n\n### Code Generators\n\n- **CSharp Client**\n\t- [CSharpClientGenerator](https://github.com/RicoSuter/NSwag/wiki/CSharpClientGenerator)\n\t\t- Generates C# clients from an OpenAPI specification\n\t\t- Generates POCOs or classes implementing [INotifyPropertyChanged](https://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged(v=vs.110).aspx) supporting DTOs\n\t\t- The generated clients can be used with full .NET, .NET Core, Xamarin and .NET Standard 1.4 in general\n- **CSharp Controllers** (contract first/schema first development)\n\t- [CSharpControllerGenerator](https://github.com/RicoSuter/NSwag/wiki/CSharpControllerGenerator)\n\t    - Generates Web API Controllers based on an OpenAPI specification (ASP.NET Web API and ASP.NET Core)\n- **TypeScript Client**\n\t- [TypeScriptClientGenerator](https://github.com/RicoSuter/NSwag/wiki/TypeScriptClientGenerator)\n\t\t- Generates TypeScript clients from an OpenAPI specification\n\t\t- Available templates/supported libraries: \n\t\t\t- JQuery with Callbacks, `JQueryCallbacks`\n\t\t\t- JQuery with promises `JQueryPromises`\n\t\t\t- AngularJS using $http, `AngularJS`\n\t\t\t- Angular (v2+) using the http service, `Angular`\n\t\t\t- window.fetch API and ES6 promises, `Fetch` (use this template in your React/Redux app)\n\t\t\t- Aurelia using the HttpClient from aurelia-fetch-client, `Aurelia` (based on the Fetch template)\n\t\t\t- `Axios` (preview)\n\t    \n### Downloads\n\n- [Download latest **NSwagStudio MSI installer (NSwagStudio.msi)**](https://github.com/RicoSuter/NSwag/releases) (Windows Desktop application)\n- [Download latest **NSwag command line tools** and NSwagStudio (NSwag.zip)](https://github.com/RicoSuter/NSwag/releases)\n\n### NPM Packages\n\n- [NSwag](https://www.npmjs.com/package/nswag): Command line tools (.NET and .NET Core) distributed as NPM package\n\n### NuGet Packages\n\n#### Specification\n\n- **[NSwag.Core](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Core/versions/latest)**\n    - The OpenAPI/Swagger reader and writer classes, see [OpenApiDocument](https://github.com/RicoSuter/NSwag/wiki/OpenApiDocument) (.NET Standard 1.0 / 2.0 and .NET 4.5)\n- **[NSwag.Core.Yaml](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Core.Yaml/versions/latest)** (.NET Standard 1.3 / 2.0 and .NET 4.5)\n    - Extensions to read and write YAML OpenAPI specifications\n- **[NSwag.Annotations](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Annotations/versions/latest)** (.NET Standard 1.0 / 2.0 and .NET 4.5)\n    - Attributes to decorate Web API controllers to control the OpenAPI generation\n\n#### OpenAPI generation\n\n- **[NSwag.Generation](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Generation/versions/latest/)** (.NET Standard 1.0 / 2.0 and .NET 4.5)\n    - Classes to generate OpenAPI specifications\n- **[NSwag.Generation.WebApi](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Generation.WebApi/versions/latest)** (.NET Standard 1.0 / 2.0 and .NET 4.5)\n    - Classes to generate OpenAPI specifications from Web API controllers, see [WebApiOpenApiDocumentGenerator](https://github.com/RicoSuter/NSwag/wiki/WebApiOpenApiDocumentGenerator)\n- **[NSwag.Generation.AspNetCore](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Generation.AspNetCore/versions/latest)** (.NET Standard 1.6 / 2.0 and .NET 4.5.1)\n    - (Experimental) Classes to generate OpenAPI specifications from ASP.NET Core MVC controllers using the ApiExplorer\n\n#### Code generation\n\n- **[NSwag.CodeGeneration](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.CodeGeneration/versions/latest)** (.NET Standard 1.3 / 2.0 / .NET 4.5.1)\n    - Base classes to generate clients from OpenAPI specifications\n- **[NSwag.CodeGeneration.CSharp](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.CodeGeneration.CSharp/versions/latest)** (.NET Standard 1.3 and .NET 4.5.1)\n    - Classes to generate C# clients from OpenAPI specifications, see [CSharpClientGenerator](https://github.com/RicoSuter/NSwag/wiki/CSharpClientGenerator) and [CSharpControllerGenerator](https://github.com/RicoSuter/NSwag/wiki/CSharpControllerGenerator)\n- **[NSwag.CodeGeneration.TypeScript](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.CodeGeneration.TypeScript/versions/latest)** (.NET Standard 1.3 and .NET 4.5.1)\n    - Classes to generate TypeScript clients from OpenAPI specifications, see [TypeScriptClientGenerator](https://github.com/RicoSuter/NSwag/wiki/TypeScriptClientGenerator)\n\n#### ASP.NET and ASP.NET Core\n\n- **[NSwag.AspNetCore](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.AspNetCore/versions/latest)** (.NET Standard 1.6 / 2.0 and .NET 4.5.1+)\n- **[NSwag.AspNet.Owin](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.AspNet.Owin/versions/latest)** (.NET 4.5+)\n    - [ASP.NET Core/OWIN middlewares](https://github.com/RicoSuter/NSwag/wiki/Middlewares) for serving OpenAPI specifications and Swagger UI\n- **[NSwag.AspNet.WebApi](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.AspNet.WebApi/versions/latest)** (.NET 4.5+)\n    - ASP.NET Web API filter which serializes exceptions ([JsonExceptionFilterAttribute](https://github.com/RicoSuter/NSwag/wiki/JsonExceptionFilterAttribute))\n\n#### Frontends\n\n- **[NSwag.AssemblyLoader](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.AssemblyLoader/versions/latest)** (.NET Standard 1.6 / 2.0 and .NET 4.5.1): \n    - Classes to load assemblies in an isolated AppDomain and generate OpenAPI specs from Web API controllers\n- **[NSwag.Commands](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.Commands/versions/latest)** (.NET Standard 1.6 / 2.0 and .NET 4.5.1+): \n    - Commands for the command line tool implementations and UI\n- **[NSwag.MSBuild](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.MSBuild/versions/latest)** (MSBuild .targets): \n    - 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](https://github.com/RicoSuter/NSwag/wiki/MSBuild)\n- **[NSwag.ConsoleCore](https://apimundo.com/organizations/nuget-org/nuget-feeds/public/packages/NSwag.ConsoleCore/versions/latest)** (.NET Core 1.0, 1.1, 2.0, 2.1 and 2.2): \n    - Command line tool for .NET Core (`dotnet nswag`)\n    - `\u003cDotNetCliToolReference Include=\"NSwag.ConsoleCore\" Version=\"...\" /\u003e`\n- **[NSwagStudio](https://chocolatey.org/packages/nswagstudio)** (Chocolatey, Windows): \n    - Package to install the NSwagStudio and command line tools via Chocolatey\n\n#### CI NuGet Feed\n\nhttps://www.myget.org/F/nswag/api/v3/index.json\n\nThe NuGet packages may require the **Microsoft.NETCore.Portable.Compatibility** package on .NET Core/UWP targets (if mscorlib is missing). \n\n![LayerDiagram](assets/LayerDiagram.png)\n\n### Usage in C\u0026#35;\n\nTo register the [middlewares](https://github.com/RicoSuter/NSwag/wiki/AspNetCore-Middleware) to generate an OpenAPI spec and render the UI, register NSwag in `Startup.cs`: \n\n```csharp\npublic class Startup\n{\n    ...\n\n    public void ConfigureServices(IServiceCollection services)\n    {\n        services.AddOpenApiDocument(); // add OpenAPI v3 document\n//      services.AddSwaggerDocument(); // add Swagger v2 document\n    }\n\n    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)\n    {\n        ...\n\n        app.UseOpenApi(); // serve OpenAPI/Swagger documents\n        app.UseSwaggerUi(); // serve Swagger UI\n        app.UseReDoc(); // serve ReDoc UI\n    }\n}\n```\n\nThe following code shows how to read an OpenAPI/Swagger specification and generate C# client classes to call the described web services: \n\t\n```cs\nvar document = await OpenApiDocument.FromFileAsync(\"openapi.json\");\nvar clientSettings = new CSharpClientGeneratorSettings \n{\n    ClassName = \"MyClass\",\n    CSharpGeneratorSettings = \n    {\n        Namespace = \"MyNamespace\"\n    }\n};\n\nvar clientGenerator = new CSharpClientGenerator(document, clientSettings);\nvar code = clientGenerator.GenerateFile();\n```\n\nCheck out the [project Wiki](https://github.com/RicoSuter/NSwag/wiki) for more information.\n\n### NSwagStudio\n\nThe generators can be used in a comfortable and simple Windows GUI called [NSwagStudio](https://github.com/RicoSuter/NSwag/wiki/NSwagStudio): \n\n[![](https://raw.githubusercontent.com/RicoSuter/NSwag/master/assets/screenshots/03_WebAPI_CSharp.png)](https://raw.githubusercontent.com/RicoSuter/NSwag/master/assets/screenshots/03_WebAPI_CSharp.png)\n\n## Sponsors, support and consulting\n\nCompanies 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:\n\n- [Sponsor main contributor Rico Suter via GitHub](https://github.com/sponsors/RicoSuter)\n- [Sponsor project via Open Collective for NSwag](https://opencollective.com/nswag)\n\nPlease contact [Rico Suter](https://rsuter.com) for paid consulting and support. \n\n## Contributors\n\nThis project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].\n\u003ca href=\"https://github.com/RicoSuter/NSwag/graphs/contributors\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/contributors.svg?width=890\u0026button=false\" /\u003e\u003c/a\u003e\n\n## Sponsors\n\nSupport this project by becoming a sponsor. Your logo will show up here with a link to your website. \n\n**Top sponsors:**\n\n[![](https://images.gotowebinar.com/30dcc42d33945684be9cf66852300d1a)](https://picturepark.com)\n\n**Sponsors:**\n\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/0/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/0/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/1/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/1/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/2/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/2/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/3/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/3/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/4/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/4/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/5/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/5/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/6/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/6/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/7/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/7/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/8/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/8/avatar.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://opencollective.com/NSwag/sponsor/9/website\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/sponsor/9/avatar.svg\"\u003e\u003c/a\u003e\n\n## Backers\n\nThank you to all our backers!\n\n\u003ca href=\"https://opencollective.com/NSwag#backers\" target=\"_blank\"\u003e\u003cimg src=\"https://opencollective.com/NSwag/backers.svg?width=890\"\u003e\u003c/a\u003e\n \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricosuter%2Fnswag","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricosuter%2Fnswag","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricosuter%2Fnswag/lists"}