diff --git a/bin/configs/spring-http-interface-oauth.yaml b/bin/configs/spring-http-interface-oauth.yaml
new file mode 100644
index 000000000000..9b8960fa77e1
--- /dev/null
+++ b/bin/configs/spring-http-interface-oauth.yaml
@@ -0,0 +1,15 @@
+generatorName: spring
+library: spring-http-interface
+outputDir: samples/client/petstore/spring-http-interface-oauth
+inputSpec: modules/openapi-generator/src/test/resources/3_0/spring/petstore-with-fake-endpoints-models-for-testing.yaml
+templateDir: modules/openapi-generator/src/main/resources/JavaSpring
+additionalProperties:
+ artifactId: spring-http-interface-oauth
+ snapshotVersion: "true"
+ hideGenerationTimestamp: "true"
+ modelNameSuffix: 'Dto'
+ generatedConstructorWithRequiredArgs: "false"
+ clientRegistrationId: "petstore-oauth"
+ parentGroupId: "org.springframework.boot"
+ parentArtifactId: "spring-boot-starter-parent"
+ parentVersion: "3.5.0"
diff --git a/docs/generators/groovy.md b/docs/generators/groovy.md
index 07098bff33e1..e2f1314c4bb1 100644
--- a/docs/generators/groovy.md
+++ b/docs/generators/groovy.md
@@ -34,7 +34,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-camel.md b/docs/generators/java-camel.md
index 1ad4a1fcd311..0b09165e9916 100644
--- a/docs/generators/java-camel.md
+++ b/docs/generators/java-camel.md
@@ -41,6 +41,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|camelSecurityDefinitions|generate camel security definitions| |true|
|camelUseDefaultValidationErrorProcessor|generate default validation error processor| |true|
|camelValidationErrorProcessor|validation error processor bean name| |validationErrorProcessor|
+|clientRegistrationId|Client registration ID for OAuth2 in Spring HTTP Interface (@ClientRegistrationId annotation).| |null|
|configPackage|configuration package for generated code| |org.openapitools.configuration|
|containerDefaultToNull|Set containers (array, set, map) default to null| |false|
|dateLibrary|Option. Date library to use|
**joda**
Joda (for legacy app only)
**legacy**
Legacy java.util.Date
**java8-localdatetime**
Java 8 using LocalDateTime (for legacy app only)
**java8**
Java 8 native JSR310 (preferred for jdk 1.8+)
|java8|
@@ -49,7 +50,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-dubbo.md b/docs/generators/java-dubbo.md
index c4d25eab0357..fa64f3d35955 100644
--- a/docs/generators/java-dubbo.md
+++ b/docs/generators/java-dubbo.md
@@ -38,7 +38,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-helidon-client.md b/docs/generators/java-helidon-client.md
index a14df9cf9af9..5f309c81ce6b 100644
--- a/docs/generators/java-helidon-client.md
+++ b/docs/generators/java-helidon-client.md
@@ -33,7 +33,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|configKey|Config key in @RegisterRestClient. Default to none.| |null|
|containerDefaultToNull|Set containers (array, set, map) default to null| |false|
|dateLibrary|Option. Date library to use|
**joda**
Joda (for legacy app only)
**legacy**
Legacy java.util.Date
**java8-localdatetime**
Java 8 using LocalDateTime (for legacy app only)
**java8**
Java 8 native JSR310 (preferred for jdk 1.8+)
|java8|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
diff --git a/docs/generators/java-helidon-server.md b/docs/generators/java-helidon-server.md
index bb6968032c03..b4d8db132743 100644
--- a/docs/generators/java-helidon-server.md
+++ b/docs/generators/java-helidon-server.md
@@ -32,7 +32,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|camelCaseDollarSign|Fix camelCase when starting with $ sign. when true : $Value when false : $value| |false|
|containerDefaultToNull|Set containers (array, set, map) default to null| |false|
|dateLibrary|Option. Date library to use|
**joda**
Joda (for legacy app only)
**legacy**
Legacy java.util.Date
**java8-localdatetime**
Java 8 using LocalDateTime (for legacy app only)
**java8**
Java 8 native JSR310 (preferred for jdk 1.8+)
|java8|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
diff --git a/docs/generators/java-inflector.md b/docs/generators/java-inflector.md
index 67628887f973..3adfffad38df 100644
--- a/docs/generators/java-inflector.md
+++ b/docs/generators/java-inflector.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-micronaut-client.md b/docs/generators/java-micronaut-client.md
index e4fdad3d02c5..37a2d8907ee1 100644
--- a/docs/generators/java-micronaut-client.md
+++ b/docs/generators/java-micronaut-client.md
@@ -45,7 +45,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-micronaut-server.md b/docs/generators/java-micronaut-server.md
index 7191a7d93888..4a21268afbd5 100644
--- a/docs/generators/java-micronaut-server.md
+++ b/docs/generators/java-micronaut-server.md
@@ -40,7 +40,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md
index 816568949837..9e02b37145ef 100644
--- a/docs/generators/java-microprofile.md
+++ b/docs/generators/java-microprofile.md
@@ -41,7 +41,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-msf4j.md b/docs/generators/java-msf4j.md
index 15ef04839938..7251308c1440 100644
--- a/docs/generators/java-msf4j.md
+++ b/docs/generators/java-msf4j.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-pkmst.md b/docs/generators/java-pkmst.md
index a1bbe25f8fc4..e2299587c5f2 100644
--- a/docs/generators/java-pkmst.md
+++ b/docs/generators/java-pkmst.md
@@ -37,7 +37,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-play-framework.md b/docs/generators/java-play-framework.md
index c8f753257bc7..c5f80ab75d16 100644
--- a/docs/generators/java-play-framework.md
+++ b/docs/generators/java-play-framework.md
@@ -39,7 +39,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-undertow-server.md b/docs/generators/java-undertow-server.md
index f9ef0f43f681..c258e9aa5df4 100644
--- a/docs/generators/java-undertow-server.md
+++ b/docs/generators/java-undertow-server.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-vertx-web.md b/docs/generators/java-vertx-web.md
index d7ba4acf2d1d..473c40d1af7d 100644
--- a/docs/generators/java-vertx-web.md
+++ b/docs/generators/java-vertx-web.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-vertx.md b/docs/generators/java-vertx.md
index f321cad67afb..dd2722079b63 100644
--- a/docs/generators/java-vertx.md
+++ b/docs/generators/java-vertx.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java-wiremock.md b/docs/generators/java-wiremock.md
index 6ece8ee33bef..39b0a40d6edf 100644
--- a/docs/generators/java-wiremock.md
+++ b/docs/generators/java-wiremock.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/java.md b/docs/generators/java.md
index d0e506e147c7..b98c5386e4e5 100644
--- a/docs/generators/java.md
+++ b/docs/generators/java.md
@@ -41,7 +41,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md
index 8c2dfa57f5ec..02f6b177827e 100644
--- a/docs/generators/jaxrs-cxf-cdi.md
+++ b/docs/generators/jaxrs-cxf-cdi.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-cxf-client.md b/docs/generators/jaxrs-cxf-client.md
index 4826e1fd1e72..e735d8f0ef4b 100644
--- a/docs/generators/jaxrs-cxf-client.md
+++ b/docs/generators/jaxrs-cxf-client.md
@@ -37,7 +37,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-cxf-extended.md b/docs/generators/jaxrs-cxf-extended.md
index b075dd71f2a1..aeb82d2dce55 100644
--- a/docs/generators/jaxrs-cxf-extended.md
+++ b/docs/generators/jaxrs-cxf-extended.md
@@ -38,7 +38,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-cxf.md b/docs/generators/jaxrs-cxf.md
index f3d8f1025496..b9b120e2f8d9 100644
--- a/docs/generators/jaxrs-cxf.md
+++ b/docs/generators/jaxrs-cxf.md
@@ -38,7 +38,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-jersey.md b/docs/generators/jaxrs-jersey.md
index 320597e3c2f2..a5d3e9a3c51a 100644
--- a/docs/generators/jaxrs-jersey.md
+++ b/docs/generators/jaxrs-jersey.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-resteasy-eap.md b/docs/generators/jaxrs-resteasy-eap.md
index 92c9edd877ba..85a3ea082300 100644
--- a/docs/generators/jaxrs-resteasy-eap.md
+++ b/docs/generators/jaxrs-resteasy-eap.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-resteasy.md b/docs/generators/jaxrs-resteasy.md
index c651b54a937a..c03831051659 100644
--- a/docs/generators/jaxrs-resteasy.md
+++ b/docs/generators/jaxrs-resteasy.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md
index 3cd408b43e02..03c2d043bf78 100644
--- a/docs/generators/jaxrs-spec.md
+++ b/docs/generators/jaxrs-spec.md
@@ -36,7 +36,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/protobuf-schema.md b/docs/generators/protobuf-schema.md
index e01683760038..fc8616619336 100644
--- a/docs/generators/protobuf-schema.md
+++ b/docs/generators/protobuf-schema.md
@@ -22,7 +22,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|aggregateModelsName|Aggregated model filename. If set, all generated models will be combined into this single file.| |null|
|customOptionsApi|Custom options for the api files.| |null|
|customOptionsModel|Custom options for the model files.| |null|
-|extractEnumsToSeparateFiles|Extract enums to separate protobuf files and import them in models| |false|
|numberedFieldNumberList|Field numbers in order.| |false|
|startEnumsWithUnspecified|Introduces "UNSPECIFIED" as the first element of enumerations.| |false|
|supportMultipleResponses|Support multiple responses| |true|
diff --git a/docs/generators/python-fastapi.md b/docs/generators/python-fastapi.md
index 4e706a4c1a52..5a87a2fcee28 100644
--- a/docs/generators/python-fastapi.md
+++ b/docs/generators/python-fastapi.md
@@ -10,7 +10,7 @@ title: Documentation for the python-fastapi Generator
| generator stability | BETA | |
| generator type | SERVER | |
| generator language | Python | |
-| generator language version | 3.10 | |
+| generator language version | 3.7 | |
| generator default templating engine | mustache | |
| helpTxt | Generates a Python FastAPI server (beta). Models are defined with the pydantic library | |
diff --git a/docs/generators/spring.md b/docs/generators/spring.md
index 244aad5065cc..8c2a93bf6f20 100644
--- a/docs/generators/spring.md
+++ b/docs/generators/spring.md
@@ -34,6 +34,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false|
|booleanGetterPrefix|Set booleanGetterPrefix| |get|
|camelCaseDollarSign|Fix camelCase when starting with $ sign. when true : $Value when false : $value| |false|
+|clientRegistrationId|Client registration ID for OAuth2 in Spring HTTP Interface (@ClientRegistrationId annotation).| |null|
|configPackage|configuration package for generated code| |org.openapitools.configuration|
|containerDefaultToNull|Set containers (array, set, map) default to null| |false|
|dateLibrary|Option. Date library to use|
**joda**
Joda (for legacy app only)
**legacy**
Legacy java.util.Date
**java8-localdatetime**
Java 8 using LocalDateTime (for legacy app only)
**java8**
Java 8 native JSR310 (preferred for jdk 1.8+)
|java8|
@@ -42,7 +43,6 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapitools.org|
-|disableDiscriminatorJsonIgnoreProperties|Ignore discriminator field type for Jackson serialization| |false|
|disableHtmlEscaping|Disable HTML escaping of JSON strings when using gson (needed to avoid problems with byte[] fields)| |false|
|disallowAdditionalPropertiesIfNotPresent|If false, the 'additionalProperties' implementation (set to true by default) is compliant with the OAS and JSON schema specifications. If true (default), keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.|
**false**
The 'additionalProperties' implementation is compliant with the OAS and JSON schema specifications.
**true**
Keep the old (incorrect) behaviour that 'additionalProperties' is set to false by default.
|true|
|discriminatorCaseSensitive|Whether the discriminator value lookup should be case-sensitive or not. This option only works for Java API client| |true|
diff --git a/docs/generators/swift5.md b/docs/generators/swift5.md
index 68376d466186..9d565bf5993f 100644
--- a/docs/generators/swift5.md
+++ b/docs/generators/swift5.md
@@ -7,7 +7,7 @@ title: Documentation for the swift5 Generator
| Property | Value | Notes |
| -------- | ----- | ----- |
| generator name | swift5 | pass this to the generate command after -g |
-| generator stability | DEPRECATED | |
+| generator stability | STABLE | |
| generator type | CLIENT | |
| generator language | Swift | |
| generator default templating engine | mustache | |
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
index a2cc1bbc190d..67adb8859f4b 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java
@@ -101,6 +101,7 @@ public class SpringCodegen extends AbstractJavaCodegen
public static final String USE_SPRING_BUILT_IN_VALIDATION = "useSpringBuiltInValidation";
public static final String USE_DEDUCTION_FOR_ONE_OF_INTERFACES = "useDeductionForOneOfInterfaces";
public static final String SPRING_API_VERSION = "springApiVersion";
+ public static final String CLIENT_REGISTRATION_ID = "clientRegistrationId";
@Getter
public enum RequestMappingMode {
@@ -163,6 +164,8 @@ public enum RequestMappingMode {
protected boolean useSpringBuiltInValidation = false;
@Getter @Setter
protected boolean useDeductionForOneOfInterfaces = false;
+ @Getter @Setter
+ protected String clientRegistrationId = null;
public SpringCodegen() {
super();
@@ -288,6 +291,7 @@ public SpringCodegen() {
cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, "whether to use deduction for generated oneOf interfaces", useDeductionForOneOfInterfaces));
cliOptions.add(CliOption.newString(SPRING_API_VERSION, "Value for 'version' attribute in @RequestMapping (for Spring 7 and above)."));
+ cliOptions.add(CliOption.newString(CLIENT_REGISTRATION_ID, "Client registration ID for OAuth2 in Spring HTTP Interface (@ClientRegistrationId annotation)."));
supportedLibraries.put(SPRING_BOOT, "Spring-boot Server application.");
supportedLibraries.put(SPRING_CLOUD_LIBRARY,
"Spring-Cloud-Feign client with Spring-Boot auto-configured settings.");
@@ -456,6 +460,7 @@ public void processOpts() {
convertPropertyToBooleanAndWriteBack(OPTIONAL_ACCEPT_NULLABLE, this::setOptionalAcceptNullable);
convertPropertyToBooleanAndWriteBack(USE_SPRING_BUILT_IN_VALIDATION, this::setUseSpringBuiltInValidation);
convertPropertyToBooleanAndWriteBack(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, this::setUseDeductionForOneOfInterfaces);
+ convertPropertyToStringAndWriteBack(CLIENT_REGISTRATION_ID, this::setClientRegistrationId);
additionalProperties.put("springHttpStatus", new SpringHttpStatusLambda());
@@ -803,6 +808,11 @@ public void setIsVoid(boolean isVoid) {
// But use a sensible tag name if there is none
objs.put("tagName", "default".equals(firstTagName) ? firstOperation.baseName : firstTagName);
objs.put("tagDescription", escapeText(firstTag.getDescription()));
+
+ // Add clientRegistrationId for spring-http-interface with OAuth
+ if (SPRING_HTTP_INTERFACE.equals(library) && clientRegistrationId != null && !clientRegistrationId.isEmpty()) {
+ operations.put("clientRegistrationId", clientRegistrationId);
+ }
}
removeImport(objs, "java.util.List");
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/api.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/api.mustache
index debda4a3c8b4..2eb61e6220aa 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/api.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/api.mustache
@@ -15,7 +15,8 @@ import org.springframework.http.ResponseEntity;
{{/useResponseEntity}}
import org.springframework.web.bind.annotation.*;
import org.springframework.web.service.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.MultipartFile;{{#operations}}{{#clientRegistrationId}}
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;{{/clientRegistrationId}}{{/operations}}
{{#reactive}}
import org.springframework.http.codec.multipart.Part;
@@ -32,6 +33,9 @@ import {{javaxPackage}}.annotation.Generated;
{{>generatedAnnotation}}
{{#operations}}
+{{#clientRegistrationId}}
+@ClientRegistrationId("{{clientRegistrationId}}")
+{{/clientRegistrationId}}
public interface {{classname}} {
{{#operation}}
diff --git a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/pom.mustache b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/pom.mustache
index 9c88fd545dee..61cb0aed51e7 100644
--- a/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/pom.mustache
+++ b/modules/openapi-generator/src/main/resources/JavaSpring/libraries/spring-http-interface/pom.mustache
@@ -96,6 +96,12 @@
true
{{/lombok}}
+ {{#clientRegistrationId}}
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-client
+
+ {{/clientRegistrationId}}
org.springframework.bootspring-boot-starter-test
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
index 11ca74f3e534..588090061c3f 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java
@@ -6223,4 +6223,31 @@ public void testExtensionsOnSchema_issue9183() throws IOException {
));
}
+ @Test
+ public void testClientRegistrationIdAnnotation() throws IOException {
+ final SpringCodegen codegen = new SpringCodegen();
+ codegen.setLibrary("spring-http-interface");
+ codegen.setClientRegistrationId("my-oauth-client");
+
+ final Map files = generateFiles(codegen, "src/test/resources/3_0/petstore.yaml");
+
+ // Check that the @ClientRegistrationId annotation is generated at class level
+ JavaFileAssert.assertThat(files.get("PetApi.java"))
+ .hasImports("org.springframework.security.oauth2.client.annotation.ClientRegistrationId")
+ .assertTypeAnnotations()
+ .containsWithNameAndAttributes("ClientRegistrationId", ImmutableMap.of("value", "\"my-oauth-client\""));
+ }
+
+ @Test
+ public void testClientRegistrationIdAnnotationNotPresentWhenNotConfigured() throws IOException {
+ final SpringCodegen codegen = new SpringCodegen();
+ codegen.setLibrary("spring-http-interface");
+ // clientRegistrationId not set
+
+ final Map files = generateFiles(codegen, "src/test/resources/3_0/petstore.yaml");
+
+ // Check that the @ClientRegistrationId annotation is NOT generated
+ assertFileNotContains(files.get("PetApi.java").toPath(), "@ClientRegistrationId", "ClientRegistrationId");
+ }
+
}
diff --git a/samples/client/petstore/spring-http-interface-oauth/.openapi-generator-ignore b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator-ignore
new file mode 100644
index 000000000000..db4d525863ae
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator-ignore
@@ -0,0 +1,26 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
+
+# Preserve custom OAuth2 documentation
+README.md
diff --git a/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/FILES
new file mode 100644
index 000000000000..69906eac967c
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/FILES
@@ -0,0 +1,59 @@
+README.md
+pom.xml
+src/main/java/org/openapitools/api/AnotherFakeApi.java
+src/main/java/org/openapitools/api/FakeApi.java
+src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
+src/main/java/org/openapitools/api/PetApi.java
+src/main/java/org/openapitools/api/StoreApi.java
+src/main/java/org/openapitools/api/UserApi.java
+src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java
+src/main/java/org/openapitools/model/AdditionalPropertiesAnyTypeDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesArrayDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesBooleanDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesClassDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesIntegerDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesNumberDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesObjectDto.java
+src/main/java/org/openapitools/model/AdditionalPropertiesStringDto.java
+src/main/java/org/openapitools/model/AnimalDto.java
+src/main/java/org/openapitools/model/ApiResponseDto.java
+src/main/java/org/openapitools/model/ArrayOfArrayOfNumberOnlyDto.java
+src/main/java/org/openapitools/model/ArrayOfNumberOnlyDto.java
+src/main/java/org/openapitools/model/ArrayTestDto.java
+src/main/java/org/openapitools/model/BigCatDto.java
+src/main/java/org/openapitools/model/CapitalizationDto.java
+src/main/java/org/openapitools/model/CatDto.java
+src/main/java/org/openapitools/model/CategoryDto.java
+src/main/java/org/openapitools/model/ChildWithNullableDto.java
+src/main/java/org/openapitools/model/ClassModelDto.java
+src/main/java/org/openapitools/model/ClientDto.java
+src/main/java/org/openapitools/model/ContainerDefaultValueDto.java
+src/main/java/org/openapitools/model/DogDto.java
+src/main/java/org/openapitools/model/EnumArraysDto.java
+src/main/java/org/openapitools/model/EnumClassDto.java
+src/main/java/org/openapitools/model/EnumTestDto.java
+src/main/java/org/openapitools/model/FileDto.java
+src/main/java/org/openapitools/model/FileSchemaTestClassDto.java
+src/main/java/org/openapitools/model/FormatTestDto.java
+src/main/java/org/openapitools/model/HasOnlyReadOnlyDto.java
+src/main/java/org/openapitools/model/ListDto.java
+src/main/java/org/openapitools/model/MapTestDto.java
+src/main/java/org/openapitools/model/MixedPropertiesAndAdditionalPropertiesClassDto.java
+src/main/java/org/openapitools/model/Model200ResponseDto.java
+src/main/java/org/openapitools/model/NameDto.java
+src/main/java/org/openapitools/model/NullableMapPropertyDto.java
+src/main/java/org/openapitools/model/NumberOnlyDto.java
+src/main/java/org/openapitools/model/OrderDto.java
+src/main/java/org/openapitools/model/OuterCompositeDto.java
+src/main/java/org/openapitools/model/OuterEnumDto.java
+src/main/java/org/openapitools/model/ParentWithNullableDto.java
+src/main/java/org/openapitools/model/PetDto.java
+src/main/java/org/openapitools/model/ReadOnlyFirstDto.java
+src/main/java/org/openapitools/model/ResponseObjectWithDifferentFieldNamesDto.java
+src/main/java/org/openapitools/model/ReturnDto.java
+src/main/java/org/openapitools/model/SpecialModelNameDto.java
+src/main/java/org/openapitools/model/TagDto.java
+src/main/java/org/openapitools/model/TypeHolderDefaultDto.java
+src/main/java/org/openapitools/model/TypeHolderExampleDto.java
+src/main/java/org/openapitools/model/UserDto.java
+src/main/java/org/openapitools/model/XmlItemDto.java
diff --git a/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/VERSION b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/VERSION
new file mode 100644
index 000000000000..193a12d6e891
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.20.0-SNAPSHOT
diff --git a/samples/client/petstore/spring-http-interface-oauth/README.md b/samples/client/petstore/spring-http-interface-oauth/README.md
new file mode 100644
index 000000000000..9a52932568f5
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/README.md
@@ -0,0 +1,108 @@
+# Spring HTTP Interface with OAuth2 (@ClientRegistrationId)
+
+This sample demonstrates the use of the `@ClientRegistrationId` annotation with Spring HTTP Interface clients.
+
+## Overview
+
+This code was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
+When generating Spring HTTP Interface clients, you can specify a `clientRegistrationId` parameter to automatically add the `@ClientRegistrationId` annotation to all generated API interfaces.
+
+## Configuration
+
+Add the `clientRegistrationId` property to your generator configuration:
+
+```yaml
+generatorName: spring
+library: spring-http-interface
+additionalProperties:
+ clientRegistrationId: "petstore-oauth"
+```
+
+Or via command line:
+
+```bash
+openapi-generator-cli generate \
+ -g spring \
+ --library spring-http-interface \
+ --additional-properties clientRegistrationId=petstore-oauth \
+ -i petstore.yaml \
+ -o ./output
+```
+
+## Generated Code
+
+The generated interface will include the `@ClientRegistrationId` annotation at the class level:
+
+```java
+@ClientRegistrationId("petstore-oauth")
+public interface PetApi {
+
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/{petId}",
+ accept = { "application/json" }
+ )
+ ResponseEntity getPetById(@PathVariable("petId") Long petId);
+}
+```
+
+## Spring Security Integration
+
+This annotation is part of Spring Security's OAuth2 integration for HTTP Service Clients. It automatically associates OAuth2 tokens with HTTP requests.
+
+### Requirements
+
+- Spring Boot 3.5+
+- Spring Security 6.5+
+
+### Application Properties
+
+Configure your Spring application with the OAuth2 client registration:
+
+```yaml
+spring:
+ security:
+ oauth2:
+ client:
+ registration:
+ petstore-oauth:
+ client-id: your-client-id
+ client-secret: your-client-secret
+ authorization-grant-type: client_credentials
+ scope: read,write
+ provider:
+ petstore-oauth:
+ token-uri: https://auth.example.com/oauth/token
+```
+
+### Bean Configuration
+
+Configure your HTTP Interface beans with OAuth2 support using `RestClient` and the `OAuth2ClientHttpRequestInterceptor`:
+
+```java
+@Configuration
+public class HttpInterfaceConfig {
+
+ @Bean
+ public PetApi petApi(RestClient.Builder builder, OAuth2AuthorizedClientManager authorizedClientManager) {
+ OAuth2ClientHttpRequestInterceptor interceptor =
+ new OAuth2ClientHttpRequestInterceptor(authorizedClientManager);
+
+ RestClient restClient = builder
+ .baseUrl("https://petstore.example.com/v2")
+ .requestInterceptor(interceptor)
+ .build();
+
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory
+ .builderFor(RestClientAdapter.create(restClient))
+ .build();
+
+ return factory.createClient(PetApi.class);
+ }
+}
+```
+
+## References
+
+- [Spring Security HTTP Service Client Integration](https://docs.spring.io/spring-security/reference/servlet/oauth2/client/http-service-client.html)
+- [Spring Framework HTTP Interface](https://docs.spring.io/spring-framework/reference/integration/rest-clients.html#rest-http-interface)
diff --git a/samples/client/petstore/spring-http-interface-oauth/pom.xml b/samples/client/petstore/spring-http-interface-oauth/pom.xml
new file mode 100644
index 000000000000..5dc84eb46862
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/pom.xml
@@ -0,0 +1,79 @@
+
+ 4.0.0
+ org.openapitools
+ spring-http-interface-oauth
+ jar
+ spring-http-interface-oauth
+ 1.0.0-SNAPSHOT
+
+ 17
+ UTF-8
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.5.0
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+ ${java.version}
+ ${java.version}
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+
+ com.google.code.findbugs
+ jsr305
+ 3.0.2
+
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
+ org.openapitools
+ jackson-databind-nullable
+ 0.2.8
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-client
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
diff --git a/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/AnotherFakeApi.java
new file mode 100644
index 000000000000..7bd1a84a21d7
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/AnotherFakeApi.java
@@ -0,0 +1,42 @@
+/*
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.20.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import org.openapitools.model.ClientDto;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import jakarta.annotation.Generated;
+
+
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.20.0-SNAPSHOT")
+@ClientRegistrationId("petstore-oauth")
+public interface AnotherFakeApi {
+
+ /**
+ * PATCH /another-fake/dummy : To test special tags
+ * To test special tags and operation ID starting with number
+ *
+ * @param clientDto client model (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "PATCH",
+ value = "/another-fake/dummy",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity call123testSpecialTags(
+ @RequestBody ClientDto clientDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeApi.java
new file mode 100644
index 000000000000..d7953fbb2702
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeApi.java
@@ -0,0 +1,380 @@
+/*
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.20.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import java.math.BigDecimal;
+import org.openapitools.model.ChildWithNullableDto;
+import org.openapitools.model.ClientDto;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.openapitools.model.FileSchemaTestClassDto;
+import java.time.LocalDate;
+import java.util.Map;
+import org.springframework.lang.Nullable;
+import java.time.OffsetDateTime;
+import org.openapitools.model.OuterCompositeDto;
+import org.openapitools.model.UserDto;
+import org.openapitools.model.XmlItemDto;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import jakarta.annotation.Generated;
+
+
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.20.0-SNAPSHOT")
+@ClientRegistrationId("petstore-oauth")
+public interface FakeApi {
+
+ /**
+ * POST /fake/create_xml_item : creates an XmlItem
+ * this route creates an XmlItem
+ *
+ * @param xmlItemDto XmlItem Body (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/create_xml_item",
+ accept = { "application/json" },
+ contentType = "application/xml"
+ )
+ ResponseEntity createXmlItem(
+ @RequestBody XmlItemDto xmlItemDto
+ );
+
+
+ /**
+ * POST /fake/outer/boolean
+ * Test serialization of outer boolean types
+ *
+ * @param body Input boolean as post body (optional)
+ * @return Output boolean (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/boolean",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ ResponseEntity fakeOuterBooleanSerialize(
+ @RequestBody(required = false) @Nullable Boolean body
+ );
+
+
+ /**
+ * POST /fake/outer/composite
+ * Test serialization of object with outer number type
+ *
+ * @param outerCompositeDto Input composite as post body (optional)
+ * @return Output composite (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/composite",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ ResponseEntity fakeOuterCompositeSerialize(
+ @RequestBody(required = false) @Nullable OuterCompositeDto outerCompositeDto
+ );
+
+
+ /**
+ * POST /fake/outer/number
+ * Test serialization of outer number types
+ *
+ * @param body Input number as post body (optional)
+ * @return Output number (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/number",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ ResponseEntity fakeOuterNumberSerialize(
+ @RequestBody(required = false) @Nullable BigDecimal body
+ );
+
+
+ /**
+ * POST /fake/outer/string
+ * Test serialization of outer string types
+ *
+ * @param body Input string as post body (optional)
+ * @return Output string (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/string",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ ResponseEntity fakeOuterStringSerialize(
+ @RequestBody(required = false) @Nullable String body
+ );
+
+
+ /**
+ * PUT /fake/body-with-file-schema
+ * For this test, the body for this request much reference a schema named `File`.
+ *
+ * @param fileSchemaTestClassDto (required)
+ * @return Success (status code 200)
+ */
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/body-with-file-schema",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testBodyWithFileSchema(
+ @RequestBody FileSchemaTestClassDto fileSchemaTestClassDto
+ );
+
+
+ /**
+ * PUT /fake/body-with-query-params
+ *
+ * @param query (required)
+ * @param userDto (required)
+ * @return Success (status code 200)
+ */
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/body-with-query-params",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testBodyWithQueryParams(
+ @RequestParam(value = "query", required = true) String query,
+ @RequestBody UserDto userDto
+ );
+
+
+ /**
+ * PATCH /fake : To test \"client\" model
+ * To test \"client\" model
+ *
+ * @param clientDto client model (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "PATCH",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testClientModel(
+ @RequestBody ClientDto clientDto
+ );
+
+
+ /**
+ * POST /fake : Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ *
+ * @param number None (required)
+ * @param _double None (required)
+ * @param patternWithoutDelimiter None (required)
+ * @param _byte None (required)
+ * @param integer None (optional)
+ * @param int32 None (optional)
+ * @param int64 None (optional)
+ * @param _float None (optional)
+ * @param string None (optional)
+ * @param binary None (optional)
+ * @param date None (optional)
+ * @param dateTime None (optional)
+ * @param password None (optional)
+ * @param paramCallback None (optional)
+ * @return Invalid username supplied (status code 400)
+ * or User not found (status code 404)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ ResponseEntity testEndpointParameters(
+ @RequestParam(value = "number", required = true) BigDecimal number,
+ @RequestParam(value = "double", required = true) Double _double,
+ @RequestParam(value = "pattern_without_delimiter", required = true) String patternWithoutDelimiter,
+ @RequestParam(value = "byte", required = true) byte[] _byte,
+ @RequestParam(value = "integer", required = false) Integer integer,
+ @RequestParam(value = "int32", required = false) Integer int32,
+ @RequestParam(value = "int64", required = false) Long int64,
+ @RequestParam(value = "float", required = false) Float _float,
+ @RequestParam(value = "string", required = false) String string,
+ @RequestPart(value = "binary", required = false) MultipartFile binary,
+ @RequestParam(value = "date", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate date,
+ @RequestParam(value = "dateTime", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) OffsetDateTime dateTime,
+ @RequestParam(value = "password", required = false) String password,
+ @RequestParam(value = "callback", required = false) String paramCallback
+ );
+
+
+ /**
+ * GET /fake : To test enum parameters
+ * To test enum parameters
+ *
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional)
+ * @param enumQueryString Query parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryInteger Query parameter enum test (double) (optional)
+ * @param enumQueryDouble Query parameter enum test (double) (optional)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @return Invalid request (status code 400)
+ * or Not found (status code 404)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ ResponseEntity testEnumParameters(
+ @RequestHeader(value = "enum_header_string_array", required = false) @Nullable List enumHeaderStringArray,
+ @RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
+ @RequestParam(value = "enum_query_string_array", required = false) @Nullable List enumQueryStringArray,
+ @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
+ @RequestParam(value = "enum_query_integer", required = false) @Nullable Integer enumQueryInteger,
+ @RequestParam(value = "enum_query_double", required = false) @Nullable Double enumQueryDouble,
+ @RequestPart(value = "enum_form_string_array", required = false) List enumFormStringArray,
+ @RequestParam(value = "enum_form_string", required = false) String enumFormString
+ );
+
+
+ /**
+ * DELETE /fake : Fake endpoint to test group parameters (optional)
+ * Fake endpoint to test group parameters (optional)
+ *
+ * @param requiredStringGroup Required String in group parameters (required)
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @param requiredInt64Group Required Integer in group parameters (required)
+ * @param stringGroup String in group parameters (optional)
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @param int64Group Integer in group parameters (optional)
+ * @return Something wrong (status code 400)
+ */
+ @HttpExchange(
+ method = "DELETE",
+ value = "/fake",
+ accept = { "application/json" }
+ )
+ ResponseEntity testGroupParameters(
+ @RequestParam(value = "required_string_group", required = true) Integer requiredStringGroup,
+ @RequestHeader(value = "required_boolean_group", required = true) Boolean requiredBooleanGroup,
+ @RequestParam(value = "required_int64_group", required = true) Long requiredInt64Group,
+ @RequestParam(value = "string_group", required = false) @Nullable Integer stringGroup,
+ @RequestHeader(value = "boolean_group", required = false) @Nullable Boolean booleanGroup,
+ @RequestParam(value = "int64_group", required = false) @Nullable Long int64Group
+ );
+
+
+ /**
+ * POST /fake/inline-additionalProperties : test inline additionalProperties
+ *
+ *
+ * @param requestBody request body (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/inline-additionalProperties",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testInlineAdditionalProperties(
+ @RequestBody Map requestBody
+ );
+
+
+ /**
+ * GET /fake/jsonFormData : test json serialization of form data
+ *
+ *
+ * @param param field1 (required)
+ * @param param2 field2 (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/jsonFormData",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ ResponseEntity testJsonFormData(
+ @RequestParam(value = "param", required = true) String param,
+ @RequestParam(value = "param2", required = true) String param2
+ );
+
+
+ /**
+ * POST /fake/nullable : test nullable parent property
+ *
+ *
+ * @param childWithNullableDto request body (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/nullable",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testNullable(
+ @RequestBody ChildWithNullableDto childWithNullableDto
+ );
+
+
+ /**
+ * PUT /fake/test-query-parameters
+ * To test the collection format in query parameters
+ *
+ * @param pipe (required)
+ * @param http (required)
+ * @param url (required)
+ * @param context (required)
+ * @return Success (status code 200)
+ */
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/test-query-parameters",
+ accept = { "application/json" }
+ )
+ ResponseEntity testQueryParameterCollectionFormat(
+ @RequestParam(value = "pipe", required = true) List pipe,
+ @RequestParam(value = "http", required = true) List http,
+ @RequestParam(value = "url", required = true) List url,
+ @RequestParam(value = "context", required = true) List context
+ );
+
+
+ /**
+ * GET /fake/response-with-example
+ * This endpoint defines an example value for its response schema.
+ *
+ * @return Success (status code 200)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/response-with-example",
+ accept = { "application/json" }
+ )
+ ResponseEntity testWithResultExample(
+
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
new file mode 100644
index 000000000000..d81b77e9c7df
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
@@ -0,0 +1,42 @@
+/*
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.20.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import org.openapitools.model.ClientDto;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import jakarta.annotation.Generated;
+
+
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.20.0-SNAPSHOT")
+@ClientRegistrationId("petstore-oauth")
+public interface FakeClassnameTags123Api {
+
+ /**
+ * PATCH /fake_classname_test : To test class name in snake case
+ * To test class name in snake case
+ *
+ * @param clientDto client model (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "PATCH",
+ value = "/fake_classname_test",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity testClassname(
+ @RequestBody ClientDto clientDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/PetApi.java
new file mode 100644
index 000000000000..164a84600bd6
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/PetApi.java
@@ -0,0 +1,227 @@
+/*
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.20.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import org.openapitools.model.ApiResponseDto;
+import org.springframework.lang.Nullable;
+import org.openapitools.model.PetDto;
+import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto;
+import java.util.Set;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import jakarta.annotation.Generated;
+
+
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.20.0-SNAPSHOT")
+@ClientRegistrationId("petstore-oauth")
+public interface PetApi {
+
+ /**
+ * POST /pet : Add a new pet to the store
+ *
+ *
+ * @param petDto Pet object that needs to be added to the store (required)
+ * @return successful operation (status code 200)
+ * or Invalid input (status code 405)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/pet",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity addPet(
+ @RequestBody PetDto petDto
+ );
+
+
+ /**
+ * DELETE /pet/{petId} : Deletes a pet
+ *
+ *
+ * @param petId Pet id to delete (required)
+ * @param apiKey (optional)
+ * @return successful operation (status code 200)
+ * or Invalid pet value (status code 400)
+ */
+ @HttpExchange(
+ method = "DELETE",
+ value = "/pet/{petId}",
+ accept = { "application/json" }
+ )
+ ResponseEntity deletePet(
+ @PathVariable("petId") Long petId,
+ @RequestHeader(value = "api_key", required = false) @Nullable String apiKey
+ );
+
+
+ /**
+ * GET /pet/findByStatus : Finds Pets by status
+ * Multiple status values can be provided with comma separated strings
+ *
+ * @param status Status values that need to be considered for filter (required)
+ * @return successful operation (status code 200)
+ * or Invalid status value (status code 400)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/findByStatus",
+ accept = { "application/json", "application/xml" }
+ )
+ ResponseEntity> findPetsByStatus(
+ @RequestParam(value = "status", required = true) List status
+ );
+
+
+ /**
+ * GET /pet/findByTags : Finds Pets by tags
+ * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+ *
+ * @param tags Tags to filter by (required)
+ * @return successful operation (status code 200)
+ * or Invalid tag value (status code 400)
+ * @deprecated
+ */
+ @Deprecated
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/findByTags",
+ accept = { "application/json", "application/xml" }
+ )
+ ResponseEntity> findPetsByTags(
+ @RequestParam(value = "tags", required = true) Set tags
+ );
+
+
+ /**
+ * GET /pet/{petId} : Find pet by ID
+ * Returns a single pet
+ *
+ * @param petId ID of pet to return (required)
+ * @return successful operation (status code 200)
+ * or Invalid ID supplied (status code 400)
+ * or Pet not found (status code 404)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/{petId}",
+ accept = { "application/json", "application/xml" }
+ )
+ ResponseEntity getPetById(
+ @PathVariable("petId") Long petId
+ );
+
+
+ /**
+ * GET /fake/{petId}/response-object-different-names
+ *
+ * @param petId ID of pet to update (required)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/{petId}/response-object-different-names",
+ accept = { "application/json" }
+ )
+ ResponseEntity responseObjectDifferentNames(
+ @PathVariable("petId") Long petId
+ );
+
+
+ /**
+ * PUT /pet : Update an existing pet
+ *
+ *
+ * @param petDto Pet object that needs to be added to the store (required)
+ * @return successful operation (status code 200)
+ * or Invalid ID supplied (status code 400)
+ * or Pet not found (status code 404)
+ * or Validation exception (status code 405)
+ */
+ @HttpExchange(
+ method = "PUT",
+ value = "/pet",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ResponseEntity updatePet(
+ @RequestBody PetDto petDto
+ );
+
+
+ /**
+ * POST /pet/{petId} : Updates a pet in the store with form data
+ *
+ *
+ * @param petId ID of pet that needs to be updated (required)
+ * @param name Updated name of the pet (optional)
+ * @param status Updated status of the pet (optional)
+ * @return Invalid input (status code 405)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/pet/{petId}",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ ResponseEntity updatePetWithForm(
+ @PathVariable("petId") Long petId,
+ @RequestParam(value = "name", required = false) String name,
+ @RequestParam(value = "status", required = false) String status
+ );
+
+
+ /**
+ * POST /pet/{petId}/uploadImage : uploads an image
+ *
+ *
+ * @param petId ID of pet to update (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @param file file to upload (optional)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/pet/{petId}/uploadImage",
+ accept = { "application/json" },
+ contentType = "multipart/form-data"
+ )
+ ResponseEntity uploadFile(
+ @PathVariable("petId") Long petId,
+ @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata,
+ @RequestPart(value = "file", required = false) MultipartFile file
+ );
+
+
+ /**
+ * POST /fake/{petId}/uploadImageWithRequiredFile : uploads an image (required)
+ *
+ *
+ * @param petId ID of pet to update (required)
+ * @param requiredFile file to upload (required)
+ * @param additionalMetadata Additional data to pass to server (optional)
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/{petId}/uploadImageWithRequiredFile",
+ accept = { "application/json" },
+ contentType = "multipart/form-data"
+ )
+ ResponseEntity uploadFileWithRequiredFile(
+ @PathVariable("petId") Long petId,
+ @RequestPart(value = "requiredFile", required = true) MultipartFile requiredFile,
+ @RequestParam(value = "additionalMetadata", required = false) String additionalMetadata
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/StoreApi.java
new file mode 100644
index 000000000000..8d4aa8f39a80
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-oauth/src/main/java/org/openapitools/api/StoreApi.java
@@ -0,0 +1,97 @@
+/*
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.20.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import java.util.Map;
+import org.openapitools.model.OrderDto;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.security.oauth2.client.annotation.ClientRegistrationId;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import jakarta.annotation.Generated;
+
+
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.20.0-SNAPSHOT")
+@ClientRegistrationId("petstore-oauth")
+public interface StoreApi {
+
+ /**
+ * DELETE /store/order/{order_id} : Delete purchase order by ID
+ * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+ *
+ * @param orderId ID of the order that needs to be deleted (required)
+ * @return Invalid ID supplied (status code 400)
+ * or Order not found (status code 404)
+ */
+ @HttpExchange(
+ method = "DELETE",
+ value = "/store/order/{order_id}",
+ accept = { "application/json" }
+ )
+ ResponseEntity deleteOrder(
+ @PathVariable("order_id") String orderId
+ );
+
+
+ /**
+ * GET /store/inventory : Returns pet inventories by status
+ * Returns a map of status codes to quantities
+ *
+ * @return successful operation (status code 200)
+ */
+ @HttpExchange(
+ method = "GET",
+ value = "/store/inventory",
+ accept = { "application/json" }
+ )
+ ResponseEntity