From 42469314aff5de0028b601189f8ff10a31a25e0b Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 20:21:58 +0200 Subject: [PATCH 1/6] Delete aspnetcore/grpc/json-transcoding-openapi.md --- aspnetcore/grpc/json-transcoding-openapi.md | 73 --------------------- 1 file changed, 73 deletions(-) delete mode 100644 aspnetcore/grpc/json-transcoding-openapi.md diff --git a/aspnetcore/grpc/json-transcoding-openapi.md b/aspnetcore/grpc/json-transcoding-openapi.md deleted file mode 100644 index deea09f3930e..000000000000 --- a/aspnetcore/grpc/json-transcoding-openapi.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Use OpenAPI with gRPC JSON transcoding ASP.NET Core apps -author: jamesnk -description: Learn how to configure gRPC JSON transcoding to generate OpenAPI. -monikerRange: '>= aspnetcore-7.0' -ms.author: wpickett -ms.date: 02/19/2025 -uid: grpc/json-transcoding-openapi ---- -# gRPC JSON transcoding documentation with Swagger / OpenAPI - -[!INCLUDE[](~/includes/not-latest-version.md)] - -By [James Newton-King](https://twitter.com/jamesnk) - -[OpenAPI (Swagger)](https://swagger.io/specification/) is a language-agnostic specification for describing REST APIs. gRPC JSON transcoding supports generating OpenAPI from transcoded RESTful APIs. The [`Microsoft.AspNetCore.Grpc.Swagger`](https://www.nuget.org/packages/Microsoft.AspNetCore.Grpc.Swagger) package: - -* Integrates gRPC JSON transcoding with [Swashbuckle](xref:tutorials/get-started-with-swashbuckle). -* Is experimental in .NET 7 to allow us to explore the best way to provide OpenAPI support. - -## Get started - -To enable OpenAPI with gRPC JSON transcoding: - -1. Setup gRPC JSON transcoding by following the [getting started instructions](xref:grpc/json-transcoding#usage). -2. Add a package reference to [`Microsoft.AspNetCore.Grpc.Swagger`](https://www.nuget.org/packages/Microsoft.AspNetCore.Grpc.Swagger). The version must be 0.3.0-xxx or later. -3. Configure Swashbuckle in startup. The `AddGrpcSwagger` method configures Swashbuckle to include gRPC endpoints. - -[!code-csharp[](~/grpc/json-transcoding-openapi/Program.cs?name=snippet_1&highlight=3-8,11-16)] - -[!INCLUDE[](~/includes/package-reference.md)] - -## Add OpenAPI descriptions from `.proto` comments - -Generate OpenAPI descriptions from comments in the `.proto` contract, as in the following example: - -```protobuf -// My amazing greeter service. -service Greeter { - // Sends a greeting. - rpc SayHello (HelloRequest) returns (HelloReply) { - option (google.api.http) = { - get: "/v1/greeter/{name}" - }; - } -} - -message HelloRequest { - // Name to say hello to. - string name = 1; -} -message HelloReply { - // Hello reply message. - string message = 1; -} -``` - -To enable gRPC OpenAPI comments: - -1. Enable the XML documentation file in the server project with `true`. -2. Configure `AddSwaggerGen` to read the generated XML file. Pass the XML file path to `IncludeXmlComments` and `IncludeGrpcXmlComments`, as in the following example: - -[!code-csharp[](~/grpc/json-transcoding-openapi/Program2.cs?name=snippet_1&highlight=6-8)] - -To confirm that Swashbuckle is generating OpenAPI with descriptions for the RESTful gRPC services, start the app and navigate to the Swagger UI page: - -![Swagger UI](~/grpc/json-transcoding-openapi/static/swaggerui.png) - -## Additional resources - -* -* [OpenAPI homepage](https://www.openapis.org/) -* [`Swashbuckle.AspNetCore` GitHub repository](https://github.com/domaindrivendev/Swashbuckle.AspNetCore) From 7a21af4933f7e78a3a4cc4304e6e9d2834b84083 Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 21:20:36 +0200 Subject: [PATCH 2/6] Delete aspnetcore/grpc/json-transcoding-openapi directory --- .../grpc/json-transcoding-openapi/Program.cs | 23 --------------- .../grpc/json-transcoding-openapi/Program2.cs | 27 ------------------ .../static/swaggerui.png | Bin 57578 -> 0 bytes 3 files changed, 50 deletions(-) delete mode 100644 aspnetcore/grpc/json-transcoding-openapi/Program.cs delete mode 100644 aspnetcore/grpc/json-transcoding-openapi/Program2.cs delete mode 100644 aspnetcore/grpc/json-transcoding-openapi/static/swaggerui.png diff --git a/aspnetcore/grpc/json-transcoding-openapi/Program.cs b/aspnetcore/grpc/json-transcoding-openapi/Program.cs deleted file mode 100644 index 504cad51721b..000000000000 --- a/aspnetcore/grpc/json-transcoding-openapi/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -#region snippet_1 -var builder = WebApplication.CreateBuilder(args); -builder.Services.AddGrpc().AddJsonTranscoding(); -builder.Services.AddGrpcSwagger(); -builder.Services.AddSwaggerGen(c => -{ - c.SwaggerDoc("v1", - new OpenApiInfo { Title = "gRPC transcoding", Version = "v1" }); -}); - -var app = builder.Build(); -app.UseSwagger(); -if (app.Environment.IsDevelopment()) -{ - app.UseSwaggerUI(c => - { - c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); - }); -} -app.MapGrpcService(); - -app.Run(); -#endregion diff --git a/aspnetcore/grpc/json-transcoding-openapi/Program2.cs b/aspnetcore/grpc/json-transcoding-openapi/Program2.cs deleted file mode 100644 index b41abc57b44f..000000000000 --- a/aspnetcore/grpc/json-transcoding-openapi/Program2.cs +++ /dev/null @@ -1,27 +0,0 @@ -var builder = WebApplication.CreateBuilder(args); -builder.Services.AddGrpc().AddJsonTranscoding(); -builder.Services.AddGrpcSwagger(); -#region snippet_1 -builder.Services.AddSwaggerGen(c => -{ - c.SwaggerDoc("v1", - new OpenApiInfo { Title = "gRPC transcoding", Version = "v1" }); - - var filePath = Path.Combine(System.AppContext.BaseDirectory, "Server.xml"); - c.IncludeXmlComments(filePath); - c.IncludeGrpcXmlComments(filePath, includeControllerXmlComments: true); -}); -#endregion - -var app = builder.Build(); -app.UseSwagger(); -if (app.Environment.IsDevelopment()) -{ - app.UseSwaggerUI(c => - { - c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); - }); -} -app.MapGrpcService(); - -app.Run(); diff --git a/aspnetcore/grpc/json-transcoding-openapi/static/swaggerui.png b/aspnetcore/grpc/json-transcoding-openapi/static/swaggerui.png deleted file mode 100644 index 83e3ca17a6e547ac7ecd2e4ed155ad70c8596534..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57578 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 WN46jHZd&8C^i_oEl~R4@@IL|BS2`B} From 7b8599bdcb6c09240cf8f56f20ede70b8ab9c18b Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 21:21:03 +0200 Subject: [PATCH 3/6] Update json-transcoding.md --- aspnetcore/grpc/json-transcoding.md | 1 - 1 file changed, 1 deletion(-) diff --git a/aspnetcore/grpc/json-transcoding.md b/aspnetcore/grpc/json-transcoding.md index 7d46c00b986a..1bfacb5883cd 100644 --- a/aspnetcore/grpc/json-transcoding.md +++ b/aspnetcore/grpc/json-transcoding.md @@ -169,7 +169,6 @@ For installation and usage of grpc-gateway, see the [grpc-gateway README](https: ## Additional resources * -* * * From b0b221db6853e0b428257fde7b647ff8c531ad7e Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 21:21:54 +0200 Subject: [PATCH 4/6] Update aspnetcore-7.0.md --- aspnetcore/release-notes/aspnetcore-7.0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aspnetcore/release-notes/aspnetcore-7.0.md b/aspnetcore/release-notes/aspnetcore-7.0.md index bdfc4ec347f6..d7dd7281d460 100644 --- a/aspnetcore/release-notes/aspnetcore-7.0.md +++ b/aspnetcore/release-notes/aspnetcore-7.0.md @@ -210,7 +210,7 @@ gRPC JSON transcoding is an extension for ASP.NET Core that creates RESTful JSON * ASP.NET Core gRPC apps to support both gRPC and RESTful JSON APIs without replicating functionality. * Experimental support for generating OpenAPI from transcoded RESTful APIs by integrating with [Swashbuckle](xref:tutorials/get-started-with-swashbuckle). -For more information, see [gRPC JSON transcoding in ASP.NET Core gRPC apps](xref:grpc/json-transcoding?view=aspnetcore-7.0) and . +For more information, see [gRPC JSON transcoding in ASP.NET Core gRPC apps](xref:grpc/json-transcoding?view=aspnetcore-7.0). ### gRPC health checks in ASP.NET Core From bdf0f884155c100a6f47d97653725a478153c2b0 Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 21:22:40 +0200 Subject: [PATCH 5/6] Update toc.yml --- aspnetcore/toc.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/aspnetcore/toc.yml b/aspnetcore/toc.yml index 7791d06df57e..2388f94c8ddc 100644 --- a/aspnetcore/toc.yml +++ b/aspnetcore/toc.yml @@ -1407,8 +1407,6 @@ items: uid: grpc/json-transcoding - name: HTTP rules and JSON uid: grpc/json-transcoding-binding - - name: Swagger / OpenAPI - uid: grpc/json-transcoding-openapi - name: Configuration uid: grpc/configuration - name: Authentication and authorization From 112023fbc037a77ba60d01bfbad04377f05922c7 Mon Sep 17 00:00:00 2001 From: Youssef Fahmy Date: Fri, 7 Aug 2026 21:22:59 +0200 Subject: [PATCH 6/6] Update json-transcoding7.md --- aspnetcore/grpc/json-transcoding/includes/json-transcoding7.md | 1 - 1 file changed, 1 deletion(-) diff --git a/aspnetcore/grpc/json-transcoding/includes/json-transcoding7.md b/aspnetcore/grpc/json-transcoding/includes/json-transcoding7.md index 88ae90facb99..7f58a1a57ae2 100644 --- a/aspnetcore/grpc/json-transcoding/includes/json-transcoding7.md +++ b/aspnetcore/grpc/json-transcoding/includes/json-transcoding7.md @@ -152,7 +152,6 @@ For installation and usage of grpc-gateway, see the [grpc-gateway README](https: ## Additional resources * -* * *