diff --git a/.github/workflows/samples-jdk17.yaml b/.github/workflows/samples-jdk17.yaml
index e96bfc1ca29..0a550c28f96 100644
--- a/.github/workflows/samples-jdk17.yaml
+++ b/.github/workflows/samples-jdk17.yaml
@@ -8,6 +8,8 @@ on:
- samples/client/petstore/java-helidon-client/v3/se/**
- samples/client/petstore/spring-http-interface-reactive/**
- samples/client/petstore/spring-http-interface/**
+ - samples/client/petstore/spring-http-interface-reactive-noResponseEntity/**
+ - samples/client/petstore/spring-http-interface-noResponseEntity/**
- samples/client/petstore/java/webclient-jakarta/**
- samples/client/petstore/java/microprofile-rest-client-outer-enum/**
# servers
@@ -23,6 +25,8 @@ on:
- samples/client/petstore/java-helidon-client/v3/se/**
- samples/client/petstore/spring-http-interface-reactive/**
- samples/client/petstore/spring-http-interface/**
+ - samples/client/petstore/spring-http-interface-reactive-noResponseEntity/**
+ - samples/client/petstore/spring-http-interface-noResponseEntity/**
- samples/client/petstore/java/webclient-jakarta/**
- samples/client/petstore/java/microprofile-rest-client-outer-enum/**
# servers
@@ -44,6 +48,8 @@ jobs:
- samples/client/petstore/java-helidon-client/v3/se
- samples/client/petstore/spring-http-interface-reactive
- samples/client/petstore/spring-http-interface
+ - samples/client/petstore/spring-http-interface-reactive-noResponseEntity
+ - samples/client/petstore/spring-http-interface-noResponseEntity
- samples/client/petstore/java/webclient-jakarta
- samples/client/petstore/java/microprofile-rest-client-outer-enum
# servers
@@ -51,8 +57,6 @@ jobs:
- samples/server/petstore/java-camel/
- samples/server/petstore/java-helidon-server/v3/mp/
- samples/server/petstore/java-helidon-server/v3/se
- - samples/client/petstore/spring-http-interface-reactive
- - samples/client/petstore/spring-http-interface
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
diff --git a/bin/configs/spring-http-interface-noResponseEntity.yaml b/bin/configs/spring-http-interface-noResponseEntity.yaml
new file mode 100644
index 00000000000..86da41551bf
--- /dev/null
+++ b/bin/configs/spring-http-interface-noResponseEntity.yaml
@@ -0,0 +1,19 @@
+generatorName: spring
+library: spring-http-interface
+outputDir: samples/client/petstore/spring-http-interface-noResponseEntity
+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-noResponseEntity
+ snapshotVersion: "true"
+ hideGenerationTimestamp: "true"
+ modelNameSuffix: 'Dto'
+ generatedConstructorWithRequiredArgs: "false"
+ # documentation provider should be ignored
+ documentationProvider: "springdoc"
+ # annotation provider should be ignored
+ annotationLibrary: "swagger2"
+ # validation should be ignored
+ useBeanValidation: "true"
+ performBeanValidation: "true"
+ useResponseEntity: "false"
diff --git a/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml b/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml
new file mode 100644
index 00000000000..f7933733e89
--- /dev/null
+++ b/bin/configs/spring-http-interface-reactive-noResponseEntity.yaml
@@ -0,0 +1,19 @@
+generatorName: spring
+library: spring-http-interface
+outputDir: samples/client/petstore/spring-http-interface-reactive-noResponseEntity
+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-reactive-noResponseEntity
+ snapshotVersion: "true"
+ hideGenerationTimestamp: "true"
+ reactive: "true"
+ # documentation provider should be ignored
+ documentationProvider: "springfox"
+ # annotation provider should be ignored
+ annotationLibrary: "swagger1"
+ # validation should be ignored
+ useBeanValidation: "true"
+ performBeanValidation: "true"
+ useResponseEntity: "false"
+
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 da85695b028..f933b433c37 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
@@ -7,7 +7,12 @@ package {{package}};
{{#imports}}import {{import}};
{{/imports}}
+{{^useResponseEntity}}
+import org.springframework.http.HttpStatus;
+{{/useResponseEntity}}
+{{#useResponseEntity}}
import org.springframework.http.ResponseEntity;
+{{/useResponseEntity}}
import org.springframework.web.bind.annotation.*;
import org.springframework.web.service.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -51,6 +56,9 @@ public interface {{classname}} {
{{#isDeprecated}}
@Deprecated
{{/isDeprecated}}
+ {{^useResponseEntity}}
+ @ResponseStatus({{#springHttpStatus}}{{#responses.0}}{{{code}}}{{/responses.0}}{{/springHttpStatus}})
+ {{/useResponseEntity}}
@HttpExchange(
method = "{{{httpMethod}}}",
value = "{{{path}}}",
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator-ignore b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator-ignore
new file mode 100644
index 00000000000..7484ee590a3
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# 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
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/FILES
new file mode 100644
index 00000000000..69906eac967
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/.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-noResponseEntity/.openapi-generator/VERSION b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/VERSION
new file mode 100644
index 00000000000..6935482704c
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.10.0-SNAPSHOT
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/README.md b/samples/client/petstore/spring-http-interface-noResponseEntity/README.md
new file mode 100644
index 00000000000..d947e03a248
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/README.md
@@ -0,0 +1,21 @@
+# OpenAPI generated API stub
+
+[Spring Framework 6 HTTP Interface](https://docs.spring.io/spring-framework/docs/6.0.0/reference/html/integration.html#rest-http-interface)
+
+
+## Overview
+This code was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.
+By using the [OpenAPI-Spec](https://openapis.org), you can easily generate an API stub.
+This is an example of building API stub interfaces in Java using the Spring framework.
+
+The stubs generated can be used in your existing Spring application for HTTP integration with other REST services
+To use auto-generated interfaces you have to create your own configuration which extends default abstract configurator & provide `WebClient` instance via constructor
+```java
+@Configuration
+public class MyConfiguration extends org.openapitools.configuration.HttpInterfacesAbstractConfigurator {
+
+ public MyConfiguration(WebClient myWebClient) { // separately created WebClient instance
+ super(myWebClient);
+ }
+}
+```
\ No newline at end of file
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/pom.xml b/samples/client/petstore/spring-http-interface-noResponseEntity/pom.xml
new file mode 100644
index 00000000000..7fe12b885cc
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/pom.xml
@@ -0,0 +1,76 @@
+
+ 4.0.0
+ org.openapitools
+ spring-http-interface-noResponseEntity
+ jar
+ spring-http-interface-noResponseEntity
+ 1.0.0-SNAPSHOT
+
+ 17
+ UTF-8
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.1.3
+
+
+
+
+
+
+ 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.6
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/AnotherFakeApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/AnotherFakeApi.java
new file mode 100644
index 00000000000..0ae4248268c
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/AnotherFakeApi.java
@@ -0,0 +1,41 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.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.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PATCH",
+ value = "/another-fake/dummy",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ClientDto call123testSpecialTags(
+ @RequestBody ClientDto clientDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java
new file mode 100644
index 00000000000..85c29986d81
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeApi.java
@@ -0,0 +1,393 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.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 java.time.OffsetDateTime;
+import org.openapitools.model.OuterCompositeDto;
+import org.openapitools.model.UserDto;
+import org.openapitools.model.XmlItemDto;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/create_xml_item",
+ accept = { "application/json" },
+ contentType = "application/xml"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/boolean",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ Boolean fakeOuterBooleanSerialize(
+ @RequestBody(required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/composite",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ OuterCompositeDto fakeOuterCompositeSerialize(
+ @RequestBody(required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/number",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ BigDecimal fakeOuterNumberSerialize(
+ @RequestBody(required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/outer/string",
+ accept = { "*/*" },
+ contentType = "application/json"
+ )
+ String fakeOuterStringSerialize(
+ @RequestBody(required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/body-with-file-schema",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void testBodyWithFileSchema(
+ @RequestBody FileSchemaTestClassDto fileSchemaTestClassDto
+ );
+
+
+ /**
+ * PUT /fake/body-with-query-params
+ *
+ * @param query (required)
+ * @param userDto (required)
+ * @return Success (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/body-with-query-params",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PATCH",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ClientDto 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)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "GET",
+ value = "/fake",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ void testEnumParameters(
+ @RequestHeader(value = "enum_header_string_array", required = false) List enumHeaderStringArray,
+ @RequestHeader(value = "enum_header_string", required = false, defaultValue = "-efg") String enumHeaderString,
+ @RequestParam(value = "enum_query_string_array", required = false) List enumQueryStringArray,
+ @RequestParam(value = "enum_query_string", required = false, defaultValue = "-efg") String enumQueryString,
+ @RequestParam(value = "enum_query_integer", required = false) Integer enumQueryInteger,
+ @RequestParam(value = "enum_query_double", required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "DELETE",
+ value = "/fake",
+ accept = { "application/json" }
+ )
+ void 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) Integer stringGroup,
+ @RequestHeader(value = "boolean_group", required = false) Boolean booleanGroup,
+ @RequestParam(value = "int64_group", required = false) Long int64Group
+ );
+
+
+ /**
+ * POST /fake/inline-additionalProperties : test inline additionalProperties
+ *
+ *
+ * @param requestBody request body (required)
+ * @return successful operation (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/inline-additionalProperties",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/jsonFormData",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/nullable",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PUT",
+ value = "/fake/test-query-parameters",
+ accept = { "application/json" }
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/response-with-example",
+ accept = { "application/json" }
+ )
+ Integer testWithResultExample(
+
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
new file mode 100644
index 00000000000..60710b1f4b0
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/FakeClassnameTags123Api.java
@@ -0,0 +1,41 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.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.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PATCH",
+ value = "/fake_classname_test",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ ClientDto testClassname(
+ @RequestBody ClientDto clientDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java
new file mode 100644
index 00000000000..3b25f04fca0
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/PetApi.java
@@ -0,0 +1,234 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import org.openapitools.model.ApiResponseDto;
+import org.openapitools.model.PetDto;
+import org.openapitools.model.ResponseObjectWithDifferentFieldNamesDto;
+import java.util.Set;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/pet",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "DELETE",
+ value = "/pet/{petId}",
+ accept = { "application/json" }
+ )
+ void deletePet(
+ @PathVariable("petId") Long petId,
+ @RequestHeader(value = "api_key", required = false) 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/findByStatus",
+ accept = { "application/json", "application/xml" }
+ )
+ List 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
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/findByTags",
+ accept = { "application/json", "application/xml" }
+ )
+ Set 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/pet/{petId}",
+ accept = { "application/json", "application/xml" }
+ )
+ PetDto 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/fake/{petId}/response-object-different-names",
+ accept = { "application/json" }
+ )
+ ResponseObjectWithDifferentFieldNamesDto 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "PUT",
+ value = "/pet",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.METHOD_NOT_ALLOWED)
+ @HttpExchange(
+ method = "POST",
+ value = "/pet/{petId}",
+ accept = { "application/json" },
+ contentType = "application/x-www-form-urlencoded"
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/pet/{petId}/uploadImage",
+ accept = { "application/json" },
+ contentType = "multipart/form-data"
+ )
+ ApiResponseDto 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/fake/{petId}/uploadImageWithRequiredFile",
+ accept = { "application/json" },
+ contentType = "multipart/form-data"
+ )
+ ApiResponseDto 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-noResponseEntity/src/main/java/org/openapitools/api/StoreApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/StoreApi.java
new file mode 100644
index 00000000000..4a703838603
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/StoreApi.java
@@ -0,0 +1,99 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.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.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+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)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "DELETE",
+ value = "/store/order/{order_id}",
+ accept = { "application/json" }
+ )
+ void 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)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/store/inventory",
+ accept = { "application/json" }
+ )
+ Map getInventory(
+
+ );
+
+
+ /**
+ * GET /store/order/{order_id} : Find purchase order by ID
+ * For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
+ *
+ * @param orderId ID of pet that needs to be fetched (required)
+ * @return successful operation (status code 200)
+ * or Invalid ID supplied (status code 400)
+ * or Order not found (status code 404)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/store/order/{order_id}",
+ accept = { "application/json", "application/xml" }
+ )
+ OrderDto getOrderById(
+ @PathVariable("order_id") Long orderId
+ );
+
+
+ /**
+ * POST /store/order : Place an order for a pet
+ *
+ *
+ * @param orderDto order placed for purchasing the pet (required)
+ * @return successful operation (status code 200)
+ * or Invalid Order (status code 400)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/store/order",
+ accept = { "application/json", "application/xml" },
+ contentType = "application/json"
+ )
+ OrderDto placeOrder(
+ @RequestBody OrderDto orderDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/UserApi.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/UserApi.java
new file mode 100644
index 00000000000..e4f8fb13d2d
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/api/UserApi.java
@@ -0,0 +1,179 @@
+/**
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.0-SNAPSHOT).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+package org.openapitools.api;
+
+import java.time.OffsetDateTime;
+import org.openapitools.model.UserDto;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.service.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+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.10.0-SNAPSHOT")
+public interface UserApi {
+
+ /**
+ * POST /user : Create user
+ * This can only be done by the logged in user.
+ *
+ * @param userDto Created user object (required)
+ * @return successful operation (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/user",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void createUser(
+ @RequestBody UserDto userDto
+ );
+
+
+ /**
+ * POST /user/createWithArray : Creates list of users with given input array
+ *
+ *
+ * @param userDto List of user object (required)
+ * @return successful operation (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/user/createWithArray",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void createUsersWithArrayInput(
+ @RequestBody List userDto
+ );
+
+
+ /**
+ * POST /user/createWithList : Creates list of users with given input array
+ *
+ *
+ * @param userDto List of user object (required)
+ * @return successful operation (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "POST",
+ value = "/user/createWithList",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void createUsersWithListInput(
+ @RequestBody List userDto
+ );
+
+
+ /**
+ * DELETE /user/{username} : Delete user
+ * This can only be done by the logged in user.
+ *
+ * @param username The name that needs to be deleted (required)
+ * @return Invalid username supplied (status code 400)
+ * or User not found (status code 404)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "DELETE",
+ value = "/user/{username}",
+ accept = { "application/json" }
+ )
+ void deleteUser(
+ @PathVariable("username") String username
+ );
+
+
+ /**
+ * GET /user/{username} : Get user by user name
+ *
+ *
+ * @param username The name that needs to be fetched. Use user1 for testing. (required)
+ * @return successful operation (status code 200)
+ * or Invalid username supplied (status code 400)
+ * or User not found (status code 404)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/user/{username}",
+ accept = { "application/json", "application/xml" }
+ )
+ UserDto getUserByName(
+ @PathVariable("username") String username
+ );
+
+
+ /**
+ * GET /user/login : Logs user into the system
+ *
+ *
+ * @param username The user name for login (required)
+ * @param password The password for login in clear text (required)
+ * @return successful operation (status code 200)
+ * or Invalid username/password supplied (status code 400)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/user/login",
+ accept = { "application/json", "application/xml" }
+ )
+ String loginUser(
+ @RequestParam(value = "username", required = true) String username,
+ @RequestParam(value = "password", required = true) String password
+ );
+
+
+ /**
+ * GET /user/logout : Logs out current logged in user session
+ *
+ *
+ * @return successful operation (status code 200)
+ */
+ @ResponseStatus(HttpStatus.OK)
+ @HttpExchange(
+ method = "GET",
+ value = "/user/logout",
+ accept = { "application/json" }
+ )
+ void logoutUser(
+
+ );
+
+
+ /**
+ * PUT /user/{username} : Updated user
+ * This can only be done by the logged in user.
+ *
+ * @param username name that need to be deleted (required)
+ * @param userDto Updated user object (required)
+ * @return Invalid user supplied (status code 400)
+ * or User not found (status code 404)
+ */
+ @ResponseStatus(HttpStatus.BAD_REQUEST)
+ @HttpExchange(
+ method = "PUT",
+ value = "/user/{username}",
+ accept = { "application/json" },
+ contentType = "application/json"
+ )
+ void updateUser(
+ @PathVariable("username") String username,
+ @RequestBody UserDto userDto
+ );
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java
new file mode 100644
index 00000000000..0b4b212d867
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/configuration/HttpInterfacesAbstractConfigurator.java
@@ -0,0 +1,65 @@
+/**
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech) (7.10.0-SNAPSHOT).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.configuration;
+
+import org.openapitools.api.AnotherFakeApi;
+import org.openapitools.api.FakeApi;
+import org.openapitools.api.FakeClassnameTags123Api;
+import org.openapitools.api.PetApi;
+import org.openapitools.api.StoreApi;
+import org.openapitools.api.UserApi;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.reactive.function.client.WebClient;
+import org.springframework.web.reactive.function.client.support.WebClientAdapter;
+import org.springframework.web.service.invoker.HttpServiceProxyFactory;
+
+public abstract class HttpInterfacesAbstractConfigurator {
+
+ private final WebClient webClient;
+
+ public HttpInterfacesAbstractConfigurator(final WebClient webClient) {
+ this.webClient = webClient;
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.anotherFake")
+ AnotherFakeApi anotherFakeHttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(AnotherFakeApi.class);
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fake")
+ FakeApi fakeHttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(FakeApi.class);
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.fakeClassnameTags123")
+ FakeClassnameTags123Api fakeClassnameTags123HttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(FakeClassnameTags123Api.class);
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.pet")
+ PetApi petHttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(PetApi.class);
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.store")
+ StoreApi storeHttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(StoreApi.class);
+ }
+
+ @Bean(name = "org.openapitools.configuration.HttpInterfacesAbstractConfigurator.user")
+ UserApi userHttpProxy() {
+ HttpServiceProxyFactory factory = HttpServiceProxyFactory.builder(WebClientAdapter.forClient(webClient)).build();
+ return factory.createClient(UserApi.class);
+ }
+
+
+}
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesAnyTypeDto.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesAnyTypeDto.java
new file mode 100644
index 00000000000..2e0ab2b71f9
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesAnyTypeDto.java
@@ -0,0 +1,126 @@
+package org.openapitools.model;
+
+import java.net.URI;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.time.OffsetDateTime;
+import jakarta.validation.constraints.NotNull;
+
+
+import java.util.*;
+import jakarta.annotation.Generated;
+
+import java.util.Map;
+import java.util.HashMap;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+/**
+ * AdditionalPropertiesAnyTypeDto
+ */
+
+@JsonTypeName("AdditionalPropertiesAnyType")
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
+public class AdditionalPropertiesAnyTypeDto {
+
+ private String name;
+
+ public AdditionalPropertiesAnyTypeDto name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ */
+ @JsonAnySetter
+ public AdditionalPropertiesAnyTypeDto putAdditionalProperty(String key, Object value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ */
+ public Object getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AdditionalPropertiesAnyTypeDto additionalPropertiesAnyType = (AdditionalPropertiesAnyTypeDto) o;
+ return Objects.equals(this.name, additionalPropertiesAnyType.name) &&
+ Objects.equals(this.additionalProperties, additionalPropertiesAnyType.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AdditionalPropertiesAnyTypeDto {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesArrayDto.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesArrayDto.java
new file mode 100644
index 00000000000..8b80ba556b4
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesArrayDto.java
@@ -0,0 +1,127 @@
+package org.openapitools.model;
+
+import java.net.URI;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import java.util.List;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.time.OffsetDateTime;
+import jakarta.validation.constraints.NotNull;
+
+
+import java.util.*;
+import jakarta.annotation.Generated;
+
+import java.util.Map;
+import java.util.HashMap;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+/**
+ * AdditionalPropertiesArrayDto
+ */
+
+@JsonTypeName("AdditionalPropertiesArray")
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
+public class AdditionalPropertiesArrayDto {
+
+ private String name;
+
+ public AdditionalPropertiesArrayDto name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ */
+ @JsonAnySetter
+ public AdditionalPropertiesArrayDto putAdditionalProperty(String key, List value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ */
+ public List getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AdditionalPropertiesArrayDto additionalPropertiesArray = (AdditionalPropertiesArrayDto) o;
+ return Objects.equals(this.name, additionalPropertiesArray.name) &&
+ Objects.equals(this.additionalProperties, additionalPropertiesArray.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AdditionalPropertiesArrayDto {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesBooleanDto.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesBooleanDto.java
new file mode 100644
index 00000000000..9c9e6fcc79d
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesBooleanDto.java
@@ -0,0 +1,126 @@
+package org.openapitools.model;
+
+import java.net.URI;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.time.OffsetDateTime;
+import jakarta.validation.constraints.NotNull;
+
+
+import java.util.*;
+import jakarta.annotation.Generated;
+
+import java.util.Map;
+import java.util.HashMap;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+/**
+ * AdditionalPropertiesBooleanDto
+ */
+
+@JsonTypeName("AdditionalPropertiesBoolean")
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
+public class AdditionalPropertiesBooleanDto {
+
+ private String name;
+
+ public AdditionalPropertiesBooleanDto name(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get name
+ * @return name
+ */
+
+ @JsonProperty("name")
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ /**
+ * A container for additional, undeclared properties.
+ * This is a holder for any undeclared properties as specified with
+ * the 'additionalProperties' keyword in the OAS document.
+ */
+ private Map additionalProperties;
+
+ /**
+ * Set the additional (undeclared) property with the specified name and value.
+ * If the property does not already exist, create it otherwise replace it.
+ */
+ @JsonAnySetter
+ public AdditionalPropertiesBooleanDto putAdditionalProperty(String key, Boolean value) {
+ if (this.additionalProperties == null) {
+ this.additionalProperties = new HashMap();
+ }
+ this.additionalProperties.put(key, value);
+ return this;
+ }
+
+ /**
+ * Return the additional (undeclared) property.
+ */
+ @JsonAnyGetter
+ public Map getAdditionalProperties() {
+ return additionalProperties;
+ }
+
+ /**
+ * Return the additional (undeclared) property with the specified name.
+ */
+ public Boolean getAdditionalProperty(String key) {
+ if (this.additionalProperties == null) {
+ return null;
+ }
+ return this.additionalProperties.get(key);
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+ AdditionalPropertiesBooleanDto additionalPropertiesBoolean = (AdditionalPropertiesBooleanDto) o;
+ return Objects.equals(this.name, additionalPropertiesBoolean.name) &&
+ Objects.equals(this.additionalProperties, additionalPropertiesBoolean.additionalProperties);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, additionalProperties);
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append("class AdditionalPropertiesBooleanDto {\n");
+ sb.append(" name: ").append(toIndentedString(name)).append("\n");
+
+ sb.append(" additionalProperties: ").append(toIndentedString(additionalProperties)).append("\n");
+ sb.append("}");
+ return sb.toString();
+ }
+
+ /**
+ * Convert the given object to string with each line indented by 4 spaces
+ * (except the first line).
+ */
+ private String toIndentedString(Object o) {
+ if (o == null) {
+ return "null";
+ }
+ return o.toString().replace("\n", "\n ");
+ }
+}
+
diff --git a/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesClassDto.java b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesClassDto.java
new file mode 100644
index 00000000000..44b38195aa4
--- /dev/null
+++ b/samples/client/petstore/spring-http-interface-noResponseEntity/src/main/java/org/openapitools/model/AdditionalPropertiesClassDto.java
@@ -0,0 +1,402 @@
+package org.openapitools.model;
+
+import java.net.URI;
+import java.util.Objects;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import java.math.BigDecimal;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.util.NoSuchElementException;
+import org.openapitools.jackson.nullable.JsonNullable;
+import java.time.OffsetDateTime;
+import jakarta.validation.constraints.NotNull;
+
+
+import java.util.*;
+import jakarta.annotation.Generated;
+
+/**
+ * AdditionalPropertiesClassDto
+ */
+
+@JsonTypeName("AdditionalPropertiesClass")
+@Generated(value = "org.openapitools.codegen.languages.SpringCodegen", comments = "Generator version: 7.10.0-SNAPSHOT")
+public class AdditionalPropertiesClassDto {
+
+
+ private Map mapString = new HashMap<>();
+
+
+ private Map mapNumber = new HashMap<>();
+
+
+ private Map mapInteger = new HashMap<>();
+
+
+ private Map mapBoolean = new HashMap<>();
+
+
+ private Map> mapArrayInteger = new HashMap<>();
+
+
+ private Map> mapArrayAnytype = new HashMap<>();
+
+
+ private Map> mapMapString = new HashMap<>();
+
+
+ private Map> mapMapAnytype = new HashMap<>();
+
+ private Object anytype1;
+
+ private JsonNullable