{"id":23523986,"url":"https://github.com/ctyar/swaggerui.openapi","last_synced_at":"2025-10-19T06:48:58.277Z","repository":{"id":239424803,"uuid":"799489721","full_name":"ctyar/SwaggerUI.OpenApi","owner":"ctyar","description":"A package to simplify adding Swagger UI to .NET 9's Microsoft.AspNetCore.OpenApi","archived":false,"fork":false,"pushed_at":"2025-04-07T07:32:17.000Z","size":191,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T08:29:37.560Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","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/ctyar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-05-12T10:01:58.000Z","updated_at":"2025-04-07T07:32:14.000Z","dependencies_parsed_at":"2025-04-07T08:36:15.455Z","dependency_job_id":null,"html_url":"https://github.com/ctyar/SwaggerUI.OpenApi","commit_stats":null,"previous_names":["ctyar/openapi.swaggerui"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctyar%2FSwaggerUI.OpenApi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctyar%2FSwaggerUI.OpenApi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctyar%2FSwaggerUI.OpenApi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctyar%2FSwaggerUI.OpenApi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctyar","download_url":"https://codeload.github.com/ctyar/SwaggerUI.OpenApi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249824537,"owners_count":21330334,"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","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":[],"created_at":"2024-12-25T18:13:15.423Z","updated_at":"2025-10-19T06:48:58.260Z","avatar_url":"https://github.com/ctyar.png","language":"C#","readme":"﻿# SwaggerUI.OpenApi\r\n\r\n[![Build Status](https://ctyar.visualstudio.com/SwaggerUI.OpenApi/_apis/build/status%2Fctyar.SwaggerUI.OpenApi?branchName=main)](https://ctyar.visualstudio.com/SwaggerUI.OpenApi/_build/latest?definitionId=13\u0026branchName=main)\r\n[![SwaggerUI.OpenApi](https://img.shields.io/nuget/v/SwaggerUI.OpenApi.svg)](https://www.nuget.org/packages/SwaggerUI.OpenApi/)\r\n\r\nA package to simplify adding Swagger UI to .NET 9's Microsoft.AspNetCore.OpenApi.\r\n\r\n\r\n## Usage\r\n\r\n1. In your `Program.cs` file Add `app.AddSwaggerUI()` and `app.MapSwaggerUI()`:\r\n\r\n    ```diff\r\n      builder.Services.AddOpenApi();\r\n    + builder.Services.AddSwaggerUI();\r\n\r\n      var app = builder.Build();\r\n\r\n      app.MapOpenApi();\r\n    + app.MapSwaggerUI();\r\n    ```\r\n\r\n2. (Optional) Modify your `launchSettings.json` file to open Swagger automatically:\r\n    ```diff\r\n    -  \"launchBrowser\": false,\r\n    +  \"launchBrowser\": true,\r\n      \"applicationUrl\": \"http://localhost:5150\",\r\n    +  \"launchUrl\": \"swagger\",\r\n    ```\r\n\r\nPlease note that for .NET 10 and later, the library sets the `JsonSerializerOptions.NumberHandling` to `Strict` for better\r\nSwagger experience.\r\n\r\nIf this is not desired, you can set it to `AllowReadingFromString` in your `Program.cs` file.\r\n```csharp\r\nbuilder.Services.AddSwaggerUI();\r\n\r\nbuilder.Services.ConfigureHttpJsonOptions(options =\u003e\r\n{\r\n    options.SerializerOptions.NumberHandling = JsonNumberHandling.AllowReadingFromString;\r\n});\r\n```\r\n\r\n## Features\r\n### Authentication\r\nIf you want to add authentication to your Swagger you can use the following helper methods:\r\n```csharp\r\nbuilder.Services.AddOpenApi(\"v1\", o =\u003e\r\n{\r\n    o.AddOAuth2(authorizationUrl, tokenUrl, scopes);\r\n});\r\n\r\nbuilder.Services.AddSwaggerUI(\"v1\", o =\u003e\r\n{\r\n    o.AddOAuth2(clientId, scopes);\r\n});\r\n```\r\nThere are other helper methods for Duende Identity Server `AddIdentityServer()` and Auth0 `AddAuth0()`.\r\n\r\nYou can check the [samples](/src/samples) directory for complete working examples.\r\n\r\n### More snippet\r\nAdds PowerShell and CMD cURL to the request snippet by default\r\n![Request snippet](https://raw.githubusercontent.com/ctyar/SwaggerUI.OpenApi/refs/heads/main/doc/images/snippet.png)\r\n\r\n### Styles\r\nEasily change syntax highlighting style\r\n```csharp\r\nbuilder.Services.AddSwaggerUI(o =\u003e\r\n{\r\n    o.SyntaxHighlight = new SyntaxHighlightOptions\r\n    {\r\n        Theme = SyntaxHighlightThemeType.Arta\r\n    };\r\n});\r\n```\r\n![Agate](https://raw.githubusercontent.com/ctyar/SwaggerUI.OpenApi/refs/heads/main/doc/images/agate.png)\r\n![Arta](https://raw.githubusercontent.com/ctyar/SwaggerUI.OpenApi/refs/heads/main/doc/images/arta.png)\r\n![Obsidian](https://raw.githubusercontent.com/ctyar/SwaggerUI.OpenApi/refs/heads/main/doc/images/obsidian.png)\r\n\r\n### Parameter validation\r\nDisplays the common validations in the parameters form by default\r\n```csharp\r\napp.MapGet(\"/products\",\r\n    ([Range(0, 10000)] int id,\r\n    [MinLength(3)][MaxLength(50)] string name,\r\n    [RegularExpression(\"\\\\d\\\\d-\\\\d\\\\d\")] string code) =\u003e id)\r\n```\r\n![Validation](https://raw.githubusercontent.com/ctyar/SwaggerUI.OpenApi/refs/heads/main/doc/images/validation.png)\r\n\r\n### Authorization persistence\r\nPersists authorization data by default and it would not be lost on browser close or refresh so you don't have to authenticate everytime.\r\n\r\n## Roadmap\r\n\r\n✅ Basic UI\r\n\r\n✅ Authentication\r\n\r\n✅ Enable all the documents\r\n\r\n✅ Implement all Swagger UI options\r\n\r\n✅ Improve test coverage\r\n\r\n✅ Full data type support (TimeOnly, TimeSpan, Email)\r\n\r\n✅ .NET 10 and OpenAPI v3.1.1\r\n\r\n⏳ Support for Asp.Versioning.Http package\r\n\r\n## Acknowledgement\r\n\r\nThis project is based on [Swashbuckle.AspNetCore.SwaggerUI](https://github.com/domaindrivendev/Swashbuckle.AspNetCore). Thanks for their awesome work.\r\n\r\n\r\n## Pre-release builds\r\n\r\nGet the package from [here](https://github.com/ctyar/SwaggerUI.OpenApi/pkgs/nuget/SwaggerUI.OpenApi).\r\n\r\n\r\n## Build\r\n\r\n[Install](https://get.dot.net) the [required](global.json) .NET SDK and run:\r\n```\r\n$ dotnet build\r\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctyar%2Fswaggerui.openapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctyar%2Fswaggerui.openapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctyar%2Fswaggerui.openapi/lists"}