From f7570df5c37088db84a9a92a486a9e226cc054a6 Mon Sep 17 00:00:00 2001
From: William Cheng <wing328hk@gmail.com>
Date: Tue, 29 Sep 2020 20:46:12 +0800
Subject: [PATCH] [Aspnetcore] use the term `openapi` (#7540)

* use openapi in aspnetcore

* move back to other

* add back file
---
 bin/configs/other/aspnetcore-3.1.yaml         |  1 +
 .../3.0/Filters/BasePathFilter.mustache       | 18 ++++++------
 ...eneratePathParamsValidationFilter.mustache | 16 +++++-----
 .../3.0/Properties/launchSettings.json        |  8 ++---
 .../resources/aspnetcore/3.0/Startup.mustache | 14 +++++----
 .../aspnetcore/3.0/wwwroot/index.html         |  2 +-
 .../aspnetcore-3.0/.openapi-generator/FILES   | 29 +++++++++++++++++++
 .../Filters/BasePathFilter.cs                 | 18 ++++++------
 .../GeneratePathParamsValidationFilter.cs     | 16 +++++-----
 .../Org.OpenAPITools/Org.OpenAPITools.csproj  |  2 +-
 .../Properties/launchSettings.json            |  8 ++---
 .../src/Org.OpenAPITools/Startup.cs           | 14 +++++----
 .../src/Org.OpenAPITools/wwwroot/index.html   |  2 +-
 .../aspnetcore-3.1/.openapi-generator/FILES   | 29 +++++++++++++++++++
 .../Filters/BasePathFilter.cs                 | 18 ++++++------
 .../GeneratePathParamsValidationFilter.cs     | 16 +++++-----
 .../Org.OpenAPITools/Org.OpenAPITools.csproj  |  2 +-
 .../Properties/launchSettings.json            |  8 ++---
 .../src/Org.OpenAPITools/Startup.cs           | 14 +++++----
 .../src/Org.OpenAPITools/wwwroot/index.html   |  2 +-
 .../aspnetcore/.openapi-generator/FILES       | 28 ++++++++++++++++++
 21 files changed, 179 insertions(+), 86 deletions(-)
 create mode 100644 samples/server/petstore/aspnetcore-3.0/.openapi-generator/FILES
 create mode 100644 samples/server/petstore/aspnetcore-3.1/.openapi-generator/FILES
 create mode 100644 samples/server/petstore/aspnetcore/.openapi-generator/FILES

diff --git a/bin/configs/other/aspnetcore-3.1.yaml b/bin/configs/other/aspnetcore-3.1.yaml
index 0986677882a8..5b185f278e4f 100644
--- a/bin/configs/other/aspnetcore-3.1.yaml
+++ b/bin/configs/other/aspnetcore-3.1.yaml
@@ -5,3 +5,4 @@ templateDir: modules/openapi-generator/src/main/resources/aspnetcore/3.0
 additionalProperties:
   packageGuid: '{3C799344-F285-4669-8FD5-7ED9B795D5C5}'
   aspnetCoreVersion: "3.1"
+  userSecretsGuid: "76e9e993-9159-441c-9c5b-fe95e7f4f020"
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/BasePathFilter.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/BasePathFilter.mustache
index b05e282c2684..5ddb04defc1a 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/BasePathFilter.mustache
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/BasePathFilter.mustache
@@ -6,7 +6,7 @@ using Swashbuckle.AspNetCore.SwaggerGen;
 namespace {{packageName}}.Filters
 {
     /// <summary>
-    /// BasePath Document Filter sets BasePath property of Swagger and removes it from the individual URL paths
+    /// BasePath Document Filter sets BasePath property of OpenAPI and removes it from the individual URL paths
     /// </summary>
     public class BasePathFilter : IDocumentFilter
     {
@@ -20,29 +20,29 @@ namespace {{packageName}}.Filters
         }
 
         /// <summary>
-        /// Gets the BasePath of the Swagger Doc
+        /// Gets the BasePath of the OpenAPI Doc
         /// </summary>
-        /// <returns>The BasePath of the Swagger Doc</returns>
+        /// <returns>The BasePath of the OpenAPI Doc</returns>
         public string BasePath { get; }
 
         /// <summary>
         /// Apply the filter
         /// </summary>
-        /// <param name="swaggerDoc">OpenApiDocument</param>
+        /// <param name="openapiDoc">OpenApiDocument</param>
         /// <param name="context">FilterContext</param>
-        public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
+        public void Apply(OpenApiDocument openapiDoc, DocumentFilterContext context)
         {
-            //swaggerDoc.BasePath = BasePath;
+            //openapiDoc.BasePath = BasePath;
 
-            var pathsToModify = swaggerDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
+            var pathsToModify = openapiDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
 
             foreach (var (key, value) in pathsToModify)
             {
                 if (key.StartsWith(BasePath))
                 {
                     var newKey = Regex.Replace(key, $"^{BasePath}", string.Empty);
-                    swaggerDoc.Paths.Remove(key);
-                    swaggerDoc.Paths.Add(newKey, value);
+                    openapiDoc.Paths.Remove(key);
+                    openapiDoc.Paths.Add(newKey, value);
                 }
             }
         }
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/GeneratePathParamsValidationFilter.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/GeneratePathParamsValidationFilter.mustache
index 88861304c394..f86af9fdd424 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/GeneratePathParamsValidationFilter.mustache
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Filters/GeneratePathParamsValidationFilter.mustache
@@ -22,20 +22,20 @@ namespace {{packageName}}.Filters
 
             foreach (var par in pars)
             {
-                var swaggerParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
+                var openapiParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
 
                 var attributes = ((ControllerParameterDescriptor)par.ParameterDescriptor).ParameterInfo.CustomAttributes.ToList();
 
                 // See https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1147
                 // and https://mikeralphson.github.io/openapi/2017/03/15/openapi3.0.0-rc0
                 // Basically OpenAPI v3 body parameters are split out into RequestBody and the properties have moved to schema
-                if (attributes.Any() && swaggerParam != null)
+                if (attributes.Any() && openapiParam != null)
                 {
                     // Required - [Required]
                     var requiredAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RequiredAttribute));
                     if (requiredAttr != null)
                     {
-                        swaggerParam.Required = true;
+                        openapiParam.Required = true;
                     }
 
                     // Regex Pattern [RegularExpression]
@@ -43,7 +43,7 @@ namespace {{packageName}}.Filters
                     if (regexAttr != null)
                     {
                         var regex = (string)regexAttr.ConstructorArguments[0].Value;
-                        swaggerParam.Schema.Pattern = regex;
+                        openapiParam.Schema.Pattern = regex;
                     }
 
                     // String Length [StringLength]
@@ -72,12 +72,12 @@ namespace {{packageName}}.Filters
 
                     if (minLength != null)
                     {
-                        swaggerParam.Schema.MinLength = minLength;
+                        openapiParam.Schema.MinLength = minLength;
                     }
 
                     if (maxLength != null)
                     {
-                        swaggerParam.Schema.MaxLength = maxLength;
+                        openapiParam.Schema.MaxLength = maxLength;
                     }
 
                     // Range [Range]
@@ -87,8 +87,8 @@ namespace {{packageName}}.Filters
                         var rangeMin = (int)rangeAttr.ConstructorArguments[0].Value;
                         var rangeMax = (int)rangeAttr.ConstructorArguments[1].Value;
 
-                        swaggerParam.Schema.MinLength = rangeMin;
-                        swaggerParam.Schema.MaxLength = rangeMax;
+                        openapiParam.Schema.MinLength = rangeMin;
+                        openapiParam.Schema.MaxLength = rangeMax;
                     }
                 }
             }
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Properties/launchSettings.json b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Properties/launchSettings.json
index 57b03cc43aa3..99cfeea4b919 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Properties/launchSettings.json
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Properties/launchSettings.json
@@ -12,7 +12,7 @@
     "IIS Express": {
       "commandName": "IISExpress",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
@@ -20,7 +20,7 @@
     "OpenAPI": {
       "commandName": "Project",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
@@ -29,9 +29,9 @@
     "Docker": {
       "commandName": "Docker",
       "launchBrowser": true,
-      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
+      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/openapi",
       "publishAllPorts": true,
       "useSSL": true
     }
   }
-}
\ No newline at end of file
+}
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
index 3c72ca2d7040..88f753500982 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
@@ -104,11 +104,11 @@ namespace {{packageName}}
                     c.CustomSchemaIds(type => type.FriendlyId(true));
                     c.IncludeXmlComments($"{AppContext.BaseDirectory}{Path.DirectorySeparatorChar}{Assembly.GetEntryAssembly().GetName().Name}.xml");
                     {{#basePathWithoutHost}}
-                    // Sets the basePath property in the Swagger document generated
+                    // Sets the basePath property in the OpenAPI document generated
                     c.DocumentFilter<BasePathFilter>("{{{basePathWithoutHost}}}");
                     {{/basePathWithoutHost}}
 
-                    // Include DataAnnotation attributes on Controller Action parameters as Swagger validation rules (e.g required, pattern, ..)
+                    // Include DataAnnotation attributes on Controller Action parameters as OpenAPI validation rules (e.g required, pattern, ..)
                     // Use [ValidateModelState] on Actions to actually validate it in C# as well!
                     c.OperationFilter<GeneratePathParamsValidationFilter>();
                 });
@@ -141,14 +141,16 @@ namespace {{packageName}}
 {{#useSwashbuckle}}
             app.UseSwagger(c =>
                 {
-                    c.RouteTemplate = "swagger/{documentName}/openapi.json";
+                    c.RouteTemplate = "openapi/{documentName}/openapi.json";
                 })
                 .UseSwaggerUI(c =>
                 {
-                    //TODO: Either use the SwaggerGen generated Swagger contract (generated from C# classes)
-                    c.SwaggerEndpoint("/swagger/{{#version}}{{{version}}}{{/version}}{{^version}}v1{{/version}}/openapi.json", "{{#appName}}{{{appName}}}{{/appName}}{{^appName}}{{packageName}}{{/appName}}");
+                    // set route prefix to openapi, e.g. http://localhost:8080/openapi/index.html
+                    c.RoutePrefix = "openapi";
+                    //TODO: Either use the SwaggerGen generated OpenAPI contract (generated from C# classes)
+                    c.SwaggerEndpoint("/openapi/{{#version}}{{{version}}}{{/version}}{{^version}}v1{{/version}}/openapi.json", "{{#appName}}{{{appName}}}{{/appName}}{{^appName}}{{packageName}}{{/appName}}");
 
-                    //TODO: Or alternatively use the original Swagger contract that's included in the static files
+                    //TODO: Or alternatively use the original OpenAPI contract that's included in the static files
                     // c.SwaggerEndpoint("/openapi-original.json", "{{#appName}}{{{appName}}}{{/appName}}{{^appName}}{{packageName}}{{/appName}} Original");
                 }){{/useSwashbuckle}};
             app.UseRouting();
diff --git a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/wwwroot/index.html b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/wwwroot/index.html
index cde1f2f90b92..f3318bc90a11 100644
--- a/modules/openapi-generator/src/main/resources/aspnetcore/3.0/wwwroot/index.html
+++ b/modules/openapi-generator/src/main/resources/aspnetcore/3.0/wwwroot/index.html
@@ -1 +1 @@
-<meta http-equiv="refresh" content="0;URL='./swagger/'" />
\ No newline at end of file
+<meta http-equiv="refresh" content="0;URL='./openapi/'" />
diff --git a/samples/server/petstore/aspnetcore-3.0/.openapi-generator/FILES b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/FILES
new file mode 100644
index 000000000000..4de0e6417904
--- /dev/null
+++ b/samples/server/petstore/aspnetcore-3.0/.openapi-generator/FILES
@@ -0,0 +1,29 @@
+Org.OpenAPITools.sln
+README.md
+build.bat
+build.sh
+src/Org.OpenAPITools/.gitignore
+src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs
+src/Org.OpenAPITools/Authentication/ApiAuthentication.cs
+src/Org.OpenAPITools/Controllers/PetApi.cs
+src/Org.OpenAPITools/Controllers/StoreApi.cs
+src/Org.OpenAPITools/Controllers/UserApi.cs
+src/Org.OpenAPITools/Converters/CustomEnumConverter.cs
+src/Org.OpenAPITools/Dockerfile
+src/Org.OpenAPITools/Filters/BasePathFilter.cs
+src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
+src/Org.OpenAPITools/Models/ApiResponse.cs
+src/Org.OpenAPITools/Models/Category.cs
+src/Org.OpenAPITools/Models/Order.cs
+src/Org.OpenAPITools/Models/Pet.cs
+src/Org.OpenAPITools/Models/Tag.cs
+src/Org.OpenAPITools/Models/User.cs
+src/Org.OpenAPITools/OpenApi/TypeExtensions.cs
+src/Org.OpenAPITools/Org.OpenAPITools.csproj
+src/Org.OpenAPITools/Program.cs
+src/Org.OpenAPITools/Properties/launchSettings.json
+src/Org.OpenAPITools/Startup.cs
+src/Org.OpenAPITools/appsettings.json
+src/Org.OpenAPITools/wwwroot/README.md
+src/Org.OpenAPITools/wwwroot/index.html
+src/Org.OpenAPITools/wwwroot/openapi-original.json
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs
index 7b39888d460c..a23854510764 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/BasePathFilter.cs
@@ -6,7 +6,7 @@
 namespace Org.OpenAPITools.Filters
 {
     /// <summary>
-    /// BasePath Document Filter sets BasePath property of Swagger and removes it from the individual URL paths
+    /// BasePath Document Filter sets BasePath property of OpenAPI and removes it from the individual URL paths
     /// </summary>
     public class BasePathFilter : IDocumentFilter
     {
@@ -20,29 +20,29 @@ public BasePathFilter(string basePath)
         }
 
         /// <summary>
-        /// Gets the BasePath of the Swagger Doc
+        /// Gets the BasePath of the OpenAPI Doc
         /// </summary>
-        /// <returns>The BasePath of the Swagger Doc</returns>
+        /// <returns>The BasePath of the OpenAPI Doc</returns>
         public string BasePath { get; }
 
         /// <summary>
         /// Apply the filter
         /// </summary>
-        /// <param name="swaggerDoc">OpenApiDocument</param>
+        /// <param name="openapiDoc">OpenApiDocument</param>
         /// <param name="context">FilterContext</param>
-        public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
+        public void Apply(OpenApiDocument openapiDoc, DocumentFilterContext context)
         {
-            //swaggerDoc.BasePath = BasePath;
+            //openapiDoc.BasePath = BasePath;
 
-            var pathsToModify = swaggerDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
+            var pathsToModify = openapiDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
 
             foreach (var (key, value) in pathsToModify)
             {
                 if (key.StartsWith(BasePath))
                 {
                     var newKey = Regex.Replace(key, $"^{BasePath}", string.Empty);
-                    swaggerDoc.Paths.Remove(key);
-                    swaggerDoc.Paths.Add(newKey, value);
+                    openapiDoc.Paths.Remove(key);
+                    openapiDoc.Paths.Add(newKey, value);
                 }
             }
         }
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
index 823aa34de41f..5c43aa69751d 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
@@ -22,20 +22,20 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
 
             foreach (var par in pars)
             {
-                var swaggerParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
+                var openapiParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
 
                 var attributes = ((ControllerParameterDescriptor)par.ParameterDescriptor).ParameterInfo.CustomAttributes.ToList();
 
                 // See https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1147
                 // and https://mikeralphson.github.io/openapi/2017/03/15/openapi3.0.0-rc0
                 // Basically OpenAPI v3 body parameters are split out into RequestBody and the properties have moved to schema
-                if (attributes.Any() && swaggerParam != null)
+                if (attributes.Any() && openapiParam != null)
                 {
                     // Required - [Required]
                     var requiredAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RequiredAttribute));
                     if (requiredAttr != null)
                     {
-                        swaggerParam.Required = true;
+                        openapiParam.Required = true;
                     }
 
                     // Regex Pattern [RegularExpression]
@@ -43,7 +43,7 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
                     if (regexAttr != null)
                     {
                         var regex = (string)regexAttr.ConstructorArguments[0].Value;
-                        swaggerParam.Schema.Pattern = regex;
+                        openapiParam.Schema.Pattern = regex;
                     }
 
                     // String Length [StringLength]
@@ -72,12 +72,12 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
 
                     if (minLength != null)
                     {
-                        swaggerParam.Schema.MinLength = minLength;
+                        openapiParam.Schema.MinLength = minLength;
                     }
 
                     if (maxLength != null)
                     {
-                        swaggerParam.Schema.MaxLength = maxLength;
+                        openapiParam.Schema.MaxLength = maxLength;
                     }
 
                     // Range [Range]
@@ -87,8 +87,8 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
                         var rangeMin = (int)rangeAttr.ConstructorArguments[0].Value;
                         var rangeMax = (int)rangeAttr.ConstructorArguments[1].Value;
 
-                        swaggerParam.Schema.MinLength = rangeMin;
-                        swaggerParam.Schema.MaxLength = rangeMax;
+                        openapiParam.Schema.MinLength = rangeMin;
+                        openapiParam.Schema.MaxLength = rangeMax;
                     }
                 }
             }
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj
index ca9ab04cd5bd..24b429c96dc0 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Org.OpenAPITools.csproj
@@ -7,7 +7,7 @@
     <PreserveCompilationContext>true</PreserveCompilationContext>
     <AssemblyName>Org.OpenAPITools</AssemblyName>
     <PackageId>Org.OpenAPITools</PackageId>
-    <UserSecretsId>5437bedb-0880-4b79-b60e-a06e28fd9ff2</UserSecretsId>
+    <UserSecretsId>76e9e993-9159-441c-9c5b-fe95e7f4f020</UserSecretsId>
     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
     <DockerfileContext>..\..</DockerfileContext>
   </PropertyGroup>
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Properties/launchSettings.json b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Properties/launchSettings.json
index 57b03cc43aa3..99cfeea4b919 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Properties/launchSettings.json
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Properties/launchSettings.json
@@ -12,7 +12,7 @@
     "IIS Express": {
       "commandName": "IISExpress",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
@@ -20,7 +20,7 @@
     "OpenAPI": {
       "commandName": "Project",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
@@ -29,9 +29,9 @@
     "Docker": {
       "commandName": "Docker",
       "launchBrowser": true,
-      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
+      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/openapi",
       "publishAllPorts": true,
       "useSSL": true
     }
   }
-}
\ No newline at end of file
+}
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
index d985c7d38758..a6c96e4a2f93 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/Startup.cs
@@ -97,10 +97,10 @@ public void ConfigureServices(IServiceCollection services)
                     });
                     c.CustomSchemaIds(type => type.FriendlyId(true));
                     c.IncludeXmlComments($"{AppContext.BaseDirectory}{Path.DirectorySeparatorChar}{Assembly.GetEntryAssembly().GetName().Name}.xml");
-                    // Sets the basePath property in the Swagger document generated
+                    // Sets the basePath property in the OpenAPI document generated
                     c.DocumentFilter<BasePathFilter>("/v2");
 
-                    // Include DataAnnotation attributes on Controller Action parameters as Swagger validation rules (e.g required, pattern, ..)
+                    // Include DataAnnotation attributes on Controller Action parameters as OpenAPI validation rules (e.g required, pattern, ..)
                     // Use [ValidateModelState] on Actions to actually validate it in C# as well!
                     c.OperationFilter<GeneratePathParamsValidationFilter>();
                 });
@@ -129,14 +129,16 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
             app.UseStaticFiles();
             app.UseSwagger(c =>
                 {
-                    c.RouteTemplate = "swagger/{documentName}/openapi.json";
+                    c.RouteTemplate = "openapi/{documentName}/openapi.json";
                 })
                 .UseSwaggerUI(c =>
                 {
-                    //TODO: Either use the SwaggerGen generated Swagger contract (generated from C# classes)
-                    c.SwaggerEndpoint("/swagger/1.0.0/openapi.json", "OpenAPI Petstore");
+                    // set route prefix to openapi, e.g. http://localhost:8080/openapi/index.html
+                    c.RoutePrefix = "openapi";
+                    //TODO: Either use the SwaggerGen generated OpenAPI contract (generated from C# classes)
+                    c.SwaggerEndpoint("/openapi/1.0.0/openapi.json", "OpenAPI Petstore");
 
-                    //TODO: Or alternatively use the original Swagger contract that's included in the static files
+                    //TODO: Or alternatively use the original OpenAPI contract that's included in the static files
                     // c.SwaggerEndpoint("/openapi-original.json", "OpenAPI Petstore Original");
                 });
             app.UseRouting();
diff --git a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/wwwroot/index.html b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/wwwroot/index.html
index cde1f2f90b92..f3318bc90a11 100644
--- a/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/wwwroot/index.html
+++ b/samples/server/petstore/aspnetcore-3.0/src/Org.OpenAPITools/wwwroot/index.html
@@ -1 +1 @@
-<meta http-equiv="refresh" content="0;URL='./swagger/'" />
\ No newline at end of file
+<meta http-equiv="refresh" content="0;URL='./openapi/'" />
diff --git a/samples/server/petstore/aspnetcore-3.1/.openapi-generator/FILES b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/FILES
new file mode 100644
index 000000000000..4de0e6417904
--- /dev/null
+++ b/samples/server/petstore/aspnetcore-3.1/.openapi-generator/FILES
@@ -0,0 +1,29 @@
+Org.OpenAPITools.sln
+README.md
+build.bat
+build.sh
+src/Org.OpenAPITools/.gitignore
+src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs
+src/Org.OpenAPITools/Authentication/ApiAuthentication.cs
+src/Org.OpenAPITools/Controllers/PetApi.cs
+src/Org.OpenAPITools/Controllers/StoreApi.cs
+src/Org.OpenAPITools/Controllers/UserApi.cs
+src/Org.OpenAPITools/Converters/CustomEnumConverter.cs
+src/Org.OpenAPITools/Dockerfile
+src/Org.OpenAPITools/Filters/BasePathFilter.cs
+src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
+src/Org.OpenAPITools/Models/ApiResponse.cs
+src/Org.OpenAPITools/Models/Category.cs
+src/Org.OpenAPITools/Models/Order.cs
+src/Org.OpenAPITools/Models/Pet.cs
+src/Org.OpenAPITools/Models/Tag.cs
+src/Org.OpenAPITools/Models/User.cs
+src/Org.OpenAPITools/OpenApi/TypeExtensions.cs
+src/Org.OpenAPITools/Org.OpenAPITools.csproj
+src/Org.OpenAPITools/Program.cs
+src/Org.OpenAPITools/Properties/launchSettings.json
+src/Org.OpenAPITools/Startup.cs
+src/Org.OpenAPITools/appsettings.json
+src/Org.OpenAPITools/wwwroot/README.md
+src/Org.OpenAPITools/wwwroot/index.html
+src/Org.OpenAPITools/wwwroot/openapi-original.json
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/BasePathFilter.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/BasePathFilter.cs
index 7b39888d460c..a23854510764 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/BasePathFilter.cs
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/BasePathFilter.cs
@@ -6,7 +6,7 @@
 namespace Org.OpenAPITools.Filters
 {
     /// <summary>
-    /// BasePath Document Filter sets BasePath property of Swagger and removes it from the individual URL paths
+    /// BasePath Document Filter sets BasePath property of OpenAPI and removes it from the individual URL paths
     /// </summary>
     public class BasePathFilter : IDocumentFilter
     {
@@ -20,29 +20,29 @@ public BasePathFilter(string basePath)
         }
 
         /// <summary>
-        /// Gets the BasePath of the Swagger Doc
+        /// Gets the BasePath of the OpenAPI Doc
         /// </summary>
-        /// <returns>The BasePath of the Swagger Doc</returns>
+        /// <returns>The BasePath of the OpenAPI Doc</returns>
         public string BasePath { get; }
 
         /// <summary>
         /// Apply the filter
         /// </summary>
-        /// <param name="swaggerDoc">OpenApiDocument</param>
+        /// <param name="openapiDoc">OpenApiDocument</param>
         /// <param name="context">FilterContext</param>
-        public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context)
+        public void Apply(OpenApiDocument openapiDoc, DocumentFilterContext context)
         {
-            //swaggerDoc.BasePath = BasePath;
+            //openapiDoc.BasePath = BasePath;
 
-            var pathsToModify = swaggerDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
+            var pathsToModify = openapiDoc.Paths.Where(p => p.Key.StartsWith(BasePath)).ToList();
 
             foreach (var (key, value) in pathsToModify)
             {
                 if (key.StartsWith(BasePath))
                 {
                     var newKey = Regex.Replace(key, $"^{BasePath}", string.Empty);
-                    swaggerDoc.Paths.Remove(key);
-                    swaggerDoc.Paths.Add(newKey, value);
+                    openapiDoc.Paths.Remove(key);
+                    openapiDoc.Paths.Add(newKey, value);
                 }
             }
         }
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
index 823aa34de41f..5c43aa69751d 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
@@ -22,20 +22,20 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
 
             foreach (var par in pars)
             {
-                var swaggerParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
+                var openapiParam = operation.Parameters.SingleOrDefault(p => p.Name == par.Name);
 
                 var attributes = ((ControllerParameterDescriptor)par.ParameterDescriptor).ParameterInfo.CustomAttributes.ToList();
 
                 // See https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/1147
                 // and https://mikeralphson.github.io/openapi/2017/03/15/openapi3.0.0-rc0
                 // Basically OpenAPI v3 body parameters are split out into RequestBody and the properties have moved to schema
-                if (attributes.Any() && swaggerParam != null)
+                if (attributes.Any() && openapiParam != null)
                 {
                     // Required - [Required]
                     var requiredAttr = attributes.FirstOrDefault(p => p.AttributeType == typeof(RequiredAttribute));
                     if (requiredAttr != null)
                     {
-                        swaggerParam.Required = true;
+                        openapiParam.Required = true;
                     }
 
                     // Regex Pattern [RegularExpression]
@@ -43,7 +43,7 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
                     if (regexAttr != null)
                     {
                         var regex = (string)regexAttr.ConstructorArguments[0].Value;
-                        swaggerParam.Schema.Pattern = regex;
+                        openapiParam.Schema.Pattern = regex;
                     }
 
                     // String Length [StringLength]
@@ -72,12 +72,12 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
 
                     if (minLength != null)
                     {
-                        swaggerParam.Schema.MinLength = minLength;
+                        openapiParam.Schema.MinLength = minLength;
                     }
 
                     if (maxLength != null)
                     {
-                        swaggerParam.Schema.MaxLength = maxLength;
+                        openapiParam.Schema.MaxLength = maxLength;
                     }
 
                     // Range [Range]
@@ -87,8 +87,8 @@ public void Apply(OpenApiOperation operation, OperationFilterContext context)
                         var rangeMin = (int)rangeAttr.ConstructorArguments[0].Value;
                         var rangeMax = (int)rangeAttr.ConstructorArguments[1].Value;
 
-                        swaggerParam.Schema.MinLength = rangeMin;
-                        swaggerParam.Schema.MaxLength = rangeMax;
+                        openapiParam.Schema.MinLength = rangeMin;
+                        openapiParam.Schema.MaxLength = rangeMax;
                     }
                 }
             }
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Org.OpenAPITools.csproj b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Org.OpenAPITools.csproj
index 913f389801c2..54f4db079bc1 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Org.OpenAPITools.csproj
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Org.OpenAPITools.csproj
@@ -7,7 +7,7 @@
     <PreserveCompilationContext>true</PreserveCompilationContext>
     <AssemblyName>Org.OpenAPITools</AssemblyName>
     <PackageId>Org.OpenAPITools</PackageId>
-    <UserSecretsId>341adb46-9edd-4976-b953-4419c5134443</UserSecretsId>
+    <UserSecretsId>882e6cf9-cad5-47f4-9df2-2874b758611f</UserSecretsId>
     <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
     <DockerfileContext>..\..</DockerfileContext>
   </PropertyGroup>
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Properties/launchSettings.json b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Properties/launchSettings.json
index 57b03cc43aa3..99cfeea4b919 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Properties/launchSettings.json
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Properties/launchSettings.json
@@ -12,7 +12,7 @@
     "IIS Express": {
       "commandName": "IISExpress",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
       }
@@ -20,7 +20,7 @@
     "OpenAPI": {
       "commandName": "Project",
       "launchBrowser": true,
-      "launchUrl": "swagger",
+      "launchUrl": "openapi",
       "applicationUrl": "https://localhost:5001;http://localhost:5000",
       "environmentVariables": {
         "ASPNETCORE_ENVIRONMENT": "Development"
@@ -29,9 +29,9 @@
     "Docker": {
       "commandName": "Docker",
       "launchBrowser": true,
-      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger",
+      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/openapi",
       "publishAllPorts": true,
       "useSSL": true
     }
   }
-}
\ No newline at end of file
+}
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
index 8ec6617ac151..dea163f26018 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/Startup.cs
@@ -97,10 +97,10 @@ public void ConfigureServices(IServiceCollection services)
                     });
                     c.CustomSchemaIds(type => type.FriendlyId(true));
                     c.IncludeXmlComments($"{AppContext.BaseDirectory}{Path.DirectorySeparatorChar}{Assembly.GetEntryAssembly().GetName().Name}.xml");
-                    // Sets the basePath property in the Swagger document generated
+                    // Sets the basePath property in the OpenAPI document generated
                     c.DocumentFilter<BasePathFilter>("/v2");
 
-                    // Include DataAnnotation attributes on Controller Action parameters as Swagger validation rules (e.g required, pattern, ..)
+                    // Include DataAnnotation attributes on Controller Action parameters as OpenAPI validation rules (e.g required, pattern, ..)
                     // Use [ValidateModelState] on Actions to actually validate it in C# as well!
                     c.OperationFilter<GeneratePathParamsValidationFilter>();
                 });
@@ -129,14 +129,16 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
             app.UseStaticFiles();
             app.UseSwagger(c =>
                 {
-                    c.RouteTemplate = "swagger/{documentName}/openapi.json";
+                    c.RouteTemplate = "openapi/{documentName}/openapi.json";
                 })
                 .UseSwaggerUI(c =>
                 {
-                    //TODO: Either use the SwaggerGen generated Swagger contract (generated from C# classes)
-                    c.SwaggerEndpoint("/swagger/1.0.0/openapi.json", "OpenAPI Petstore");
+                    // set route prefix to openapi, e.g. http://localhost:8080/openapi/index.html
+                    c.RoutePrefix = "openapi";
+                    //TODO: Either use the SwaggerGen generated OpenAPI contract (generated from C# classes)
+                    c.SwaggerEndpoint("/openapi/1.0.0/openapi.json", "OpenAPI Petstore");
 
-                    //TODO: Or alternatively use the original Swagger contract that's included in the static files
+                    //TODO: Or alternatively use the original OpenAPI contract that's included in the static files
                     // c.SwaggerEndpoint("/openapi-original.json", "OpenAPI Petstore Original");
                 });
             app.UseRouting();
diff --git a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/wwwroot/index.html b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/wwwroot/index.html
index cde1f2f90b92..f3318bc90a11 100644
--- a/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/wwwroot/index.html
+++ b/samples/server/petstore/aspnetcore-3.1/src/Org.OpenAPITools/wwwroot/index.html
@@ -1 +1 @@
-<meta http-equiv="refresh" content="0;URL='./swagger/'" />
\ No newline at end of file
+<meta http-equiv="refresh" content="0;URL='./openapi/'" />
diff --git a/samples/server/petstore/aspnetcore/.openapi-generator/FILES b/samples/server/petstore/aspnetcore/.openapi-generator/FILES
new file mode 100644
index 000000000000..81b978877b1d
--- /dev/null
+++ b/samples/server/petstore/aspnetcore/.openapi-generator/FILES
@@ -0,0 +1,28 @@
+Org.OpenAPITools.sln
+README.md
+build.bat
+build.sh
+src/Org.OpenAPITools/.gitignore
+src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs
+src/Org.OpenAPITools/Authentication/ApiAuthentication.cs
+src/Org.OpenAPITools/Controllers/PetApi.cs
+src/Org.OpenAPITools/Controllers/StoreApi.cs
+src/Org.OpenAPITools/Controllers/UserApi.cs
+src/Org.OpenAPITools/Converters/CustomEnumConverter.cs
+src/Org.OpenAPITools/Dockerfile
+src/Org.OpenAPITools/Filters/BasePathFilter.cs
+src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
+src/Org.OpenAPITools/Models/ApiResponse.cs
+src/Org.OpenAPITools/Models/Category.cs
+src/Org.OpenAPITools/Models/Order.cs
+src/Org.OpenAPITools/Models/Pet.cs
+src/Org.OpenAPITools/Models/Tag.cs
+src/Org.OpenAPITools/Models/User.cs
+src/Org.OpenAPITools/Org.OpenAPITools.csproj
+src/Org.OpenAPITools/Program.cs
+src/Org.OpenAPITools/Properties/launchSettings.json
+src/Org.OpenAPITools/Startup.cs
+src/Org.OpenAPITools/appsettings.json
+src/Org.OpenAPITools/wwwroot/README.md
+src/Org.OpenAPITools/wwwroot/index.html
+src/Org.OpenAPITools/wwwroot/openapi-original.json