-[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.5.0`):
+[Master](https://github.com/OpenAPITools/openapi-generator/tree/master) (`7.6.0`):
[![Build Status](https://api.travis-ci.com/OpenAPITools/openapi-generator.svg?branch=master&status=passed)](https://app.travis-ci.com/github/OpenAPITools/openapi-generator/builds)
[![Integration Test2](https://circleci.com/gh/OpenAPITools/openapi-generator.svg?style=shield)](https://circleci.com/gh/OpenAPITools/openapi-generator)
[![Windows Test](https://ci.appveyor.com/api/projects/status/github/openapitools/openapi-generator?branch=master&svg=true&passingText=Windows%20Test%20-%20OK&failingText=Windows%20Test%20-%20Fails)](https://ci.appveyor.com/project/WilliamCheng/openapi-generator)
@@ -126,8 +126,8 @@ The OpenAPI Specification has undergone 3 revisions since initial creation in 20
| OpenAPI Generator Version | Release Date | Notes |
| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
-| 7.5.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.5.0-SNAPSHOT/) | 12.04.2024 | Minor release with breaking changes (with fallback) |
-| [7.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.4.0) (latest stable release) | 11.03.2024 | Minor release with breaking changes (with fallback) |
+| 7.6.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.6.0-SNAPSHOT/) | 17.54.2024 | Minor release with breaking changes (with fallback) |
+| [7.5.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.5.0) (latest stable release) | 17.04.2024 | Minor release with breaking changes (with fallback) |
| [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) | 11.05.2023 | Minor release with breaking changes (with fallback) |
| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) |
| [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) |
@@ -190,16 +190,16 @@ See the different versions of the [openapi-generator-cli](https://search.maven.o
If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum):
-JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar`
+JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar`
For **Mac/Linux** users:
```sh
-wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar -O openapi-generator-cli.jar
+wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar -O openapi-generator-cli.jar
```
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
```
-Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.4.0/openapi-generator-cli-7.4.0.jar
+Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar
```
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
@@ -705,6 +705,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [REST United](https://restunited.com)
- [Robocorp](https://www.robocorp.com)
- [Robotinfra](https://www.robotinfra.com)
+- [SearchApi](https://www.searchapi.io/)
- [SmartHR](https://smarthr.co.jp/)
- [Sony Interactive Entertainment](https://www.sie.com/en/index.html)
- [Splitit](https://www.splitit.com/)
@@ -931,6 +932,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2023-12-10 - [UnityでOpenAPI Generatorを使う](https://www.youtube.com/watch?v=CbNwKVV5LRM) by [Soup Tori](https://www.youtube.com/@souptori8417)
- 2024-03-04 - [Generating TypeScript Types with OpenAPI for REST API Consumption](https://www.pullrequest.com/blog/generating-typescript-types-with-openapi-for-rest-api-consumption/) by [PullRequest](https://www.pullrequest.com/)
- 2024-03-07 - [Fully typed Web Apps with OpenAPI (Part 1)](https://medium.com/@gfox1984/fully-typed-web-apps-with-openapi-part-1-595d55766670) by [Guillaume Renard](https://medium.com/@gfox1984)
+- 2024-03-08 - [Laravel OpenAPIによる "辛くない" スキーマ駆動開発](https://fortee.jp/phperkaigi-2024/proposal/9e2e6c38-d078-4efa-99b4-83ebf9033b34) by [KentarouTakeda](https://twitter.com/KentarouTakeda)
## [6 - About Us](#table-of-contents)
diff --git a/bin/configs/java-okhttp-user-defined-templates.yaml b/bin/configs/java-okhttp-user-defined-templates.yaml
new file mode 100644
index 000000000000..495cae7bdfcf
--- /dev/null
+++ b/bin/configs/java-okhttp-user-defined-templates.yaml
@@ -0,0 +1,17 @@
+generatorName: java
+outputDir: samples/client/echo_api/java/okhttp-gson-user-defined-templates
+library: okhttp-gson
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/Java
+additionalProperties:
+ hideGenerationTimestamp: "true"
+files:
+ README.md:
+ destinationFilename: info.md
+ api_doc.mustache:
+ templateType: APIDocs
+ destinationFilename: Documentation.md
+ pojo.mustache:
+ templateType: Model
+ folder: modelCopy
+ destinationFilename: .java
diff --git a/bin/configs/jaxrs-spec-quarkus-mutiny.yaml b/bin/configs/jaxrs-spec-quarkus-mutiny.yaml
new file mode 100644
index 000000000000..5620523e027f
--- /dev/null
+++ b/bin/configs/jaxrs-spec-quarkus-mutiny.yaml
@@ -0,0 +1,15 @@
+generatorName: jaxrs-spec
+outputDir: samples/server/petstore/jaxrs-spec-quarkus-mutiny
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
+templateDir: modules/openapi-generator/src/main/resources/JavaJaxRS/spec
+additionalProperties:
+ artifactId: jaxrs-spec-petstore-server
+ serializableModel: "true"
+ hideGenerationTimestamp: "true"
+ implicitHeadersRegex: (api_key|enum_header_string)
+ generateBuilders: "true"
+ useMicroProfileOpenAPIAnnotations: "true"
+ useAsync: "true"
+ useMutiny: "true"
+ library: "quarkus"
+ dateLibrary: "java8-localdatetime"
diff --git a/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml b/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml
index 69ca39092e45..5a537e65b85c 100644
--- a/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml
+++ b/bin/configs/manual/rust-axum-petstore-with-fake-endpoints-models-for-testing.yaml
@@ -7,4 +7,6 @@ additionalProperties:
hideGenerationTimestamp: "true"
packageName: petstore-with-fake-endpoints-models-for-testing
publishRustRegistry: crates-io
-enablePostProcessFile: true
\ No newline at end of file
+globalProperties:
+ skipFormModel: false
+enablePostProcessFile: true
diff --git a/bin/configs/manual/rust-axum-petstore.yaml b/bin/configs/manual/rust-axum-petstore.yaml
index 3149c7418582..179e370639a5 100644
--- a/bin/configs/manual/rust-axum-petstore.yaml
+++ b/bin/configs/manual/rust-axum-petstore.yaml
@@ -6,4 +6,6 @@ generateAliasAsModel: true
additionalProperties:
hideGenerationTimestamp: "true"
packageName: petstore
+globalProperties:
+ skipFormModel: false
enablePostProcessFile: true
diff --git a/bin/configs/php-flight.yaml b/bin/configs/php-flight.yaml
new file mode 100644
index 000000000000..2c3dedc1911d
--- /dev/null
+++ b/bin/configs/php-flight.yaml
@@ -0,0 +1,6 @@
+generatorName: php-flight
+outputDir: samples/server/petstore/php-flight
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/php-flight
+additionalProperties:
+ hideGenerationTimestamp: "true"
diff --git a/docs/generators.md b/docs/generators.md
index 749f43f15dbf..03c75077a3ac 100644
--- a/docs/generators.md
+++ b/docs/generators.md
@@ -120,6 +120,7 @@ The following generators are available:
* [kotlin-spring](generators/kotlin-spring.md)
* [kotlin-vertx (beta)](generators/kotlin-vertx.md)
* [nodejs-express-server (beta)](generators/nodejs-express-server.md)
+* [php-flight (experimental)](generators/php-flight.md)
* [php-laravel](generators/php-laravel.md)
* [php-lumen](generators/php-lumen.md)
* [php-mezzio-ph](generators/php-mezzio-ph.md)
diff --git a/docs/generators/jaxrs-cxf-cdi.md b/docs/generators/jaxrs-cxf-cdi.md
index 82b1b863e73c..1de80c28200a 100644
--- a/docs/generators/jaxrs-cxf-cdi.md
+++ b/docs/generators/jaxrs-cxf-cdi.md
@@ -78,6 +78,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useBeanValidation|Use BeanValidation API annotations| |true|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|useMicroProfileOpenAPIAnnotations|Whether to generate Microprofile OpenAPI annotations. Only valid when library is set to quarkus.| |false|
+|useMutiny|Whether to use Smallrye Mutiny instead of CompletionStage for asynchronous computation. Only valid when library is set to quarkus.| |false|
|useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false|
|useSwaggerAnnotations|Whether to generate Swagger annotations.| |true|
|useTags|use tags for creating interface and controller classnames| |false|
diff --git a/docs/generators/jaxrs-spec.md b/docs/generators/jaxrs-spec.md
index 6572bfa72474..87563f7c6bee 100644
--- a/docs/generators/jaxrs-spec.md
+++ b/docs/generators/jaxrs-spec.md
@@ -78,6 +78,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useBeanValidation|Use BeanValidation API annotations| |true|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|useMicroProfileOpenAPIAnnotations|Whether to generate Microprofile OpenAPI annotations. Only valid when library is set to quarkus.| |false|
+|useMutiny|Whether to use Smallrye Mutiny instead of CompletionStage for asynchronous computation. Only valid when library is set to quarkus.| |false|
|useOneOfInterfaces|whether to use a java interface to describe a set of oneOf options, where each option is a class that implements the interface| |false|
|useSwaggerAnnotations|Whether to generate Swagger annotations.| |true|
|useTags|use tags for creating interface and controller classnames| |false|
diff --git a/docs/generators/php-flight.md b/docs/generators/php-flight.md
new file mode 100644
index 000000000000..8b7c90a069be
--- /dev/null
+++ b/docs/generators/php-flight.md
@@ -0,0 +1,270 @@
+---
+title: Documentation for the php-flight Generator
+---
+
+## METADATA
+
+| Property | Value | Notes |
+| -------- | ----- | ----- |
+| generator name | php-flight | pass this to the generate command after -g |
+| generator stability | EXPERIMENTAL | |
+| generator type | SERVER | |
+| generator language | PHP | |
+| generator default templating engine | mustache | |
+| helpTxt | Generates a PHP Flight Framework server library. | |
+
+## CONFIG OPTIONS
+These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
+
+| Option | Description | Values | Default |
+| ------ | ----------- | ------ | ------- |
+|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
+|apiPackage|package for generated api classes| |null|
+|artifactUrl|artifact URL in generated pom.xml| |null|
+|artifactVersion|The version to use in the composer package version field. e.g. 1.2.3| |null|
+|composerPackageName|The name to use in the composer package name field. e.g. `vendor/project` (must be lowercase and consist of words separated by `-`, `.` or `_`).| |null|
+|developerOrganization|developer organization in generated pom.xml| |null|
+|developerOrganizationUrl|developer organization URL in generated pom.xml| |null|
+|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|
+|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
+|enumUnknownDefaultCase|If the server adds new enum cases, that are unknown by an old spec/client, the client will fail to parse the network response.With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the server sends an enum case that is not known by the client/spec, they can safely fallback to this case.|
**false**
No changes to the enum's are made, this is the default option.
**true**
With this option enabled, each enum will have a new case, 'unknown_default_open_api', so that when the enum case sent by the server is not known by the client/spec, can safely be decoded to this case.
|false|
+|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
+|invokerPackage|The main namespace to use for all classes. e.g. Yay\Pets| |null|
+|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|
**true**
The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.
**false**
The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing.
|true|
+|licenseName|The name of the license| |null|
+|modelPackage|package for generated models| |null|
+|packageName|The main package name for classes. e.g. GeneratedPetstore| |null|
+|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
+|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
+|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
+|srcBasePath|The directory to serve as source root.| |null|
+|variableNamingConvention|naming convention of variable name, e.g. camelCase.| |camelCase|
+
+## IMPORT MAPPING
+
+| Type/Alias | Imports |
+| ---------- | ------- |
+
+
+## INSTANTIATION TYPES
+
+| Type/Alias | Instantiated By |
+| ---------- | --------------- |
+|array|array|
+|map|array|
+
+
+## LANGUAGE PRIMITIVES
+
+
+
\DateTime
+
\SplFileObject
+
array
+
bool
+
boolean
+
byte
+
float
+
int
+
integer
+
mixed
+
number
+
object
+
string
+
void
+
+
+## RESERVED WORDS
+
+
+
__halt_compiler
+
_header_accept
+
_tempbody
+
abstract
+
and
+
array
+
as
+
break
+
callable
+
case
+
catch
+
class
+
clone
+
const
+
continue
+
declare
+
default
+
die
+
do
+
echo
+
else
+
elseif
+
empty
+
enddeclare
+
endfor
+
endforeach
+
endif
+
endswitch
+
endwhile
+
eval
+
exit
+
extends
+
final
+
for
+
foreach
+
formparams
+
function
+
global
+
goto
+
headerparams
+
httpbody
+
if
+
implements
+
include
+
include_once
+
instanceof
+
insteadof
+
interface
+
isset
+
list
+
namespace
+
new
+
or
+
print
+
private
+
protected
+
public
+
queryparams
+
require
+
require_once
+
resourcepath
+
return
+
static
+
switch
+
throw
+
trait
+
try
+
unset
+
use
+
var
+
while
+
xor
+
+
+## FEATURE SET
+
+
+### Client Modification Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|BasePath|✗|ToolingExtension
+|Authorizations|✗|ToolingExtension
+|UserAgent|✗|ToolingExtension
+|MockServer|✗|ToolingExtension
+
+### Data Type Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|Custom|✗|OAS2,OAS3
+|Int32|✓|OAS2,OAS3
+|Int64|✓|OAS2,OAS3
+|Float|✓|OAS2,OAS3
+|Double|✓|OAS2,OAS3
+|Decimal|✓|ToolingExtension
+|String|✓|OAS2,OAS3
+|Byte|✓|OAS2,OAS3
+|Binary|✓|OAS2,OAS3
+|Boolean|✓|OAS2,OAS3
+|Date|✓|OAS2,OAS3
+|DateTime|✓|OAS2,OAS3
+|Password|✓|OAS2,OAS3
+|File|✓|OAS2
+|Uuid|✗|
+|Array|✓|OAS2,OAS3
+|Null|✗|OAS3
+|AnyType|✗|OAS2,OAS3
+|Object|✓|OAS2,OAS3
+|Maps|✓|ToolingExtension
+|CollectionFormat|✓|OAS2
+|CollectionFormatMulti|✓|OAS2
+|Enum|✓|OAS2,OAS3
+|ArrayOfEnum|✓|ToolingExtension
+|ArrayOfModel|✓|ToolingExtension
+|ArrayOfCollectionOfPrimitives|✓|ToolingExtension
+|ArrayOfCollectionOfModel|✓|ToolingExtension
+|ArrayOfCollectionOfEnum|✓|ToolingExtension
+|MapOfEnum|✗|ToolingExtension
+|MapOfModel|✗|ToolingExtension
+|MapOfCollectionOfPrimitives|✓|ToolingExtension
+|MapOfCollectionOfModel|✗|ToolingExtension
+|MapOfCollectionOfEnum|✗|ToolingExtension
+
+### Documentation Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|Readme|✓|ToolingExtension
+|Model|✓|ToolingExtension
+|Api|✓|ToolingExtension
+
+### Global Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|Host|✓|OAS2,OAS3
+|BasePath|✓|OAS2,OAS3
+|Info|✓|OAS2,OAS3
+|Schemes|✗|OAS2,OAS3
+|PartialSchemes|✓|OAS2,OAS3
+|Consumes|✓|OAS2
+|Produces|✓|OAS2
+|ExternalDocumentation|✓|OAS2,OAS3
+|Examples|✓|OAS2,OAS3
+|XMLStructureDefinitions|✗|OAS2,OAS3
+|MultiServer|✗|OAS3
+|ParameterizedServer|✗|OAS3
+|ParameterStyling|✗|OAS3
+|Callbacks|✗|OAS3
+|LinkObjects|✗|OAS3
+
+### Parameter Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|Path|✓|OAS2,OAS3
+|Query|✓|OAS2,OAS3
+|Header|✓|OAS2,OAS3
+|Body|✓|OAS2
+|FormUnencoded|✗|OAS2
+|FormMultipart|✗|OAS2
+|Cookie|✗|OAS3
+
+### Schema Support Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|Simple|✓|OAS2,OAS3
+|Composite|✓|OAS2,OAS3
+|Polymorphism|✗|OAS2,OAS3
+|Union|✗|OAS3
+|allOf|✗|OAS2,OAS3
+|anyOf|✗|OAS3
+|oneOf|✗|OAS3
+|not|✗|OAS3
+
+### Security Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|BasicAuth|✓|OAS2,OAS3
+|ApiKey|✓|OAS2,OAS3
+|OpenIDConnect|✗|OAS3
+|BearerToken|✓|OAS3
+|OAuth2_Implicit|✓|OAS2,OAS3
+|OAuth2_Password|✗|OAS2,OAS3
+|OAuth2_ClientCredentials|✗|OAS2,OAS3
+|OAuth2_AuthorizationCode|✗|OAS2,OAS3
+|SignatureAuth|✗|OAS3
+|AWSV4Signature|✗|ToolingExtension
+
+### Wire Format Feature
+| Name | Supported | Defined By |
+| ---- | --------- | ---------- |
+|JSON|✓|OAS2,OAS3
+|XML|✗|OAS2,OAS3
+|PROTOBUF|✗|ToolingExtension
+|Custom|✗|OAS2,OAS3
diff --git a/modules/openapi-generator-cli/pom.xml b/modules/openapi-generator-cli/pom.xml
index 38d6dfc8e79b..34586dfbdaf0 100644
--- a/modules/openapi-generator-cli/pom.xml
+++ b/modules/openapi-generator-cli/pom.xml
@@ -4,7 +4,7 @@
org.openapitoolsopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator-core/pom.xml b/modules/openapi-generator-core/pom.xml
index 401a1bbfac91..fd3b6ad2e98f 100644
--- a/modules/openapi-generator-core/pom.xml
+++ b/modules/openapi-generator-core/pom.xml
@@ -6,7 +6,7 @@
openapi-generator-projectorg.openapitools
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator-gradle-plugin/README.adoc b/modules/openapi-generator-gradle-plugin/README.adoc
index 00144d2daccf..fb74722df473 100644
--- a/modules/openapi-generator-gradle-plugin/README.adoc
+++ b/modules/openapi-generator-gradle-plugin/README.adoc
@@ -97,7 +97,7 @@ task validateGoodSpec(type: org.openapitools.generator.gradle.plugin.tasks.Valid
[source,group]
----
plugins {
- id "org.openapi.generator" version "7.2.0"
+ id "org.openapi.generator" version "7.5.0"
}
----
diff --git a/modules/openapi-generator-gradle-plugin/gradle.properties b/modules/openapi-generator-gradle-plugin/gradle.properties
index 058e1378b755..a85cc37ce54e 100644
--- a/modules/openapi-generator-gradle-plugin/gradle.properties
+++ b/modules/openapi-generator-gradle-plugin/gradle.properties
@@ -1,5 +1,5 @@
# RELEASE_VERSION
-openApiGeneratorVersion=7.5.0-SNAPSHOT
+openApiGeneratorVersion=7.6.0-SNAPSHOT
# /RELEASE_VERSION
# BEGIN placeholders
diff --git a/modules/openapi-generator-gradle-plugin/pom.xml b/modules/openapi-generator-gradle-plugin/pom.xml
index aaec04392fd8..3e84f3d2f731 100644
--- a/modules/openapi-generator-gradle-plugin/pom.xml
+++ b/modules/openapi-generator-gradle-plugin/pom.xml
@@ -4,7 +4,7 @@
org.openapitoolsopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties
index ac2809b7a732..7a8b3c854c6e 100644
--- a/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties
+++ b/modules/openapi-generator-gradle-plugin/samples/local-spec/gradle.properties
@@ -1,3 +1,3 @@
# RELEASE_VERSION
-openApiGeneratorVersion=7.5.0-SNAPSHOT
+openApiGeneratorVersion=7.6.0-SNAPSHOT
# /RELEASE_VERSION
diff --git a/modules/openapi-generator-maven-plugin/README.md b/modules/openapi-generator-maven-plugin/README.md
index 1700662a76e9..cc8500ceb95c 100644
--- a/modules/openapi-generator-maven-plugin/README.md
+++ b/modules/openapi-generator-maven-plugin/README.md
@@ -12,7 +12,7 @@ Add to your `build->plugins` section (default phase is `generate-sources` phase)
org.openapitoolsopenapi-generator-maven-plugin
- 7.2.0
+ 7.5.0
diff --git a/modules/openapi-generator-maven-plugin/examples/java-client.xml b/modules/openapi-generator-maven-plugin/examples/java-client.xml
index a46e69ef6c6f..1961f1d8f0d7 100644
--- a/modules/openapi-generator-maven-plugin/examples/java-client.xml
+++ b/modules/openapi-generator-maven-plugin/examples/java-client.xml
@@ -13,7 +13,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/examples/kotlin.xml b/modules/openapi-generator-maven-plugin/examples/kotlin.xml
index 3203f7500543..2b8f2891b179 100644
--- a/modules/openapi-generator-maven-plugin/examples/kotlin.xml
+++ b/modules/openapi-generator-maven-plugin/examples/kotlin.xml
@@ -15,7 +15,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml
index 680e90d82a98..f1aeef072f2f 100644
--- a/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml
+++ b/modules/openapi-generator-maven-plugin/examples/multi-module/java-client/pom.xml
@@ -19,7 +19,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml
index 617d2f66938f..7e22c0c81de3 100644
--- a/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml
+++ b/modules/openapi-generator-maven-plugin/examples/non-java-invalid-spec.xml
@@ -13,7 +13,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/examples/non-java.xml b/modules/openapi-generator-maven-plugin/examples/non-java.xml
index 8aba10c00e5d..bcab0c62aeac 100644
--- a/modules/openapi-generator-maven-plugin/examples/non-java.xml
+++ b/modules/openapi-generator-maven-plugin/examples/non-java.xml
@@ -13,7 +13,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/examples/spring.xml b/modules/openapi-generator-maven-plugin/examples/spring.xml
index e16c4615be2a..a5bcbc35d488 100644
--- a/modules/openapi-generator-maven-plugin/examples/spring.xml
+++ b/modules/openapi-generator-maven-plugin/examples/spring.xml
@@ -20,7 +20,7 @@
org.openapitoolsopenapi-generator-maven-plugin
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT
diff --git a/modules/openapi-generator-maven-plugin/pom.xml b/modules/openapi-generator-maven-plugin/pom.xml
index 930eb55e6df8..29d1eb27ccd6 100644
--- a/modules/openapi-generator-maven-plugin/pom.xml
+++ b/modules/openapi-generator-maven-plugin/pom.xml
@@ -5,7 +5,7 @@
org.openapitoolsopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator-online/README.md b/modules/openapi-generator-online/README.md
index 2c77fa3c69c3..6d731ceffa9c 100644
--- a/modules/openapi-generator-online/README.md
+++ b/modules/openapi-generator-online/README.md
@@ -54,4 +54,4 @@ The `GENERATOR_HOST` variable is used here to ensure download links generated by
## Environment
`GENERATOR_HOST` can be set to force the scheme/host/port used for download link generation. In most cases, this environment variable is not
-necessary to be set and the download link will be generated to match the originating request. The variable is provided simply as a fallback.
\ No newline at end of file
+necessary to be set and the download link will be generated to match the originating request. The variable is provided simply as a fallback.
diff --git a/modules/openapi-generator-online/pom.xml b/modules/openapi-generator-online/pom.xml
index 1c92546162d0..fee18406f0f7 100644
--- a/modules/openapi-generator-online/pom.xml
+++ b/modules/openapi-generator-online/pom.xml
@@ -4,7 +4,7 @@
org.openapitoolsopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator/pom.xml b/modules/openapi-generator/pom.xml
index 7b0bdad0ea81..dbb884301b74 100644
--- a/modules/openapi-generator/pom.xml
+++ b/modules/openapi-generator/pom.xml
@@ -4,7 +4,7 @@
org.openapitoolsopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOT../..
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
index 77b8134762fe..a90dc165cb68 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
@@ -52,6 +52,7 @@
import org.openapitools.codegen.config.GlobalSettings;
import org.openapitools.codegen.examples.ExampleGenerator;
import org.openapitools.codegen.languages.PhpNextgenClientCodegen;
+import org.openapitools.codegen.languages.RustAxumServerCodegen;
import org.openapitools.codegen.languages.RustServerCodegen;
import org.openapitools.codegen.meta.FeatureSet;
import org.openapitools.codegen.meta.GeneratorMetadata;
@@ -3619,9 +3620,9 @@ protected List getAllOfDescendants(String thisSchemaName) {
Map vendorExtensions = cs.getExtensions();
String mappingName =
Optional.ofNullable(vendorExtensions)
- .map(ve -> ve.get("x-discriminator-value"))
- .map(discriminatorValue -> (String) discriminatorValue)
- .orElse(currentSchemaName);
+ .map(ve -> ve.get("x-discriminator-value"))
+ .map(discriminatorValue -> (String) discriminatorValue)
+ .orElse(currentSchemaName);
MappedModel mm = new MappedModel(mappingName, toModelName(currentSchemaName), !mappingName.equals(currentSchemaName));
descendentSchemas.add(mm);
}
@@ -3648,11 +3649,11 @@ protected CodegenDiscriminator createDiscriminator(String schemaName, Schema sch
// the future..
String propertyType =
Optional.ofNullable(schema.getProperties())
- .map(p -> (Schema>) p.get(discriminatorPropertyName))
- .map(Schema::get$ref)
- .map(ModelUtils::getSimpleRef)
- .map(this::toModelName)
- .orElseGet(() -> typeMapping.get("string"));
+ .map(p -> (Schema>) p.get(discriminatorPropertyName))
+ .map(Schema::get$ref)
+ .map(ModelUtils::getSimpleRef)
+ .map(this::toModelName)
+ .orElseGet(() -> typeMapping.get("string"));
discriminator.setPropertyType(propertyType);
// check to see if the discriminator property is an enum string
@@ -4742,7 +4743,7 @@ public CodegenOperation fromOperation(String path,
contentType = contentType.toLowerCase(Locale.ROOT);
}
if (contentType != null &&
- (contentType.startsWith("application/x-www-form-urlencoded") ||
+ ((!(this instanceof RustAxumServerCodegen) && contentType.startsWith("application/x-www-form-urlencoded")) ||
contentType.startsWith("multipart"))) {
// process form parameters
formParams = fromRequestBodyToFormParameters(requestBody, imports);
@@ -6794,12 +6795,12 @@ protected List
{{/useSwaggerAnnotations}}
+{{#useMutiny}}
+
+ io.smallrye
+ smallrye-rest-client
+ ${smallrye.rest.client.version}
+ test
+
+{{/useMutiny}}
diff --git a/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache
new file mode 100644
index 000000000000..93f1098e48da
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/JavaJaxRS/spec/libraries/quarkus/returnAsyncTypeInterface.mustache
@@ -0,0 +1 @@
+{{#useMutiny}}Uni{{/useMutiny}}{{^useMutiny}}CompletionStage{{/useMutiny}}<{{#returnResponse}}Response{{/returnResponse}}{{^returnResponse}}{{#returnContainer}}{{#isMap}}Map{{/isMap}}{{#isArray}}{{{returnContainer}}}<{{{returnBaseType}}}>{{/isArray}}{{/returnContainer}}{{^returnContainer}}{{{returnBaseType}}}{{/returnContainer}}{{/returnResponse}}>
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
index 9849aa702f36..3521954fc48b 100644
--- a/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
+++ b/modules/openapi-generator/src/main/resources/META-INF/services/org.openapitools.codegen.CodegenConfig
@@ -91,6 +91,7 @@ org.openapitools.codegen.languages.OpenAPIYamlGenerator
org.openapitools.codegen.languages.PlantumlDocumentationCodegen
org.openapitools.codegen.languages.PerlClientCodegen
org.openapitools.codegen.languages.PhpClientCodegen
+org.openapitools.codegen.languages.PhpFlightServerCodegen
org.openapitools.codegen.languages.PhpNextgenClientCodegen
org.openapitools.codegen.languages.PhpLaravelServerCodegen
org.openapitools.codegen.languages.PhpLumenServerCodegen
diff --git a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache
index 9d1dd4b7ba62..067a6f9b64ca 100644
--- a/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache
+++ b/modules/openapi-generator/src/main/resources/csharp/libraries/generichost/JsonConverter.mustache
@@ -300,14 +300,14 @@
{{/-last}}
{{/required}}
- return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{^isNullable}}{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/allVars}}{{/lambda.joinWithComma}});
+ return new {{classname}}({{#lambda.joinWithComma}}{{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}ParsedValue{{#required}}.Value{{#vendorExtensions.x-is-value-type}}{{nrt!}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/required}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}.Value{{nrt!}}{{^isNullable}}{{#vendorExtensions.x-is-value-type}}.Value{{nrt!}}{{/vendorExtensions.x-is-value-type}}{{/isNullable}}{{/required}} {{/allVars}}{{/lambda.joinWithComma}});
{{/composedSchemas.oneOf}}
{{^model.discriminator}}
{{#composedSchemas}}
{{#oneOf}}
{{^vendorExtensions.x-duplicated-data-type}}
if ({{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}} != null)
- return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/allVars}}{{/lambda.joinWithComma}});
+ return new {{classname}}({{#lambda.joinWithComma}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}.Value{{/vendorExtensions.x-is-value-type}} {{#model.composedSchemas.anyOf}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#vendorExtensions.x-is-value-type}}{{^isNullable}}.Value{{/isNullable}}{{/vendorExtensions.x-is-value-type}} {{/model.composedSchemas.anyOf}}{{#allVars}}{{#lambda.camelcase_sanitize_param}}{{name}}{{/lambda.camelcase_sanitize_param}}{{#required}}ParsedValue{{/required}} {{/allVars}}{{/lambda.joinWithComma}});
{{/vendorExtensions.x-duplicated-data-type}}
{{#-last}}
diff --git a/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache
index 1b225bbafefa..640f93d74485 100644
--- a/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache
+++ b/modules/openapi-generator/src/main/resources/go-gin-server/go.mod.mustache
@@ -24,7 +24,7 @@ require (
github.com/ugorji/go/codec v1.2.11 // indirect
golang.org/x/arch v0.3.0 // indirect
golang.org/x/crypto v0.9.0 // indirect
- golang.org/x/net v0.10.0 // indirect
+ golang.org/x/net v0.23.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
diff --git a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache
index c0cfd07749b1..77db3bd6efa0 100644
--- a/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache
+++ b/modules/openapi-generator/src/main/resources/java-undertow-server/pom.mustache
@@ -29,7 +29,7 @@
1.4.134.13.22.1.0-beta.124
- 2.3.5.Final
+ 2.3.12.Final2.2.04.5.134.1.2
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache
index 8576bee5b430..d99122333d66 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-retrofit2/api.mustache
@@ -59,10 +59,10 @@ import kotlinx.serialization.*
{{/imports}}
{{#operations}}
-{{#x-koltin-import-models}}
-import {{{packageName}}}.models.*
+{{#x-kotlin-import-models}}
+import {{{modelPackage}}}.*
-{{/x-koltin-import-models}}
+{{/x-kotlin-import-models}}
{{#x-kotlin-multipart-import}}
{{^isMultipart}}
import okhttp3.MultipartBody
diff --git a/modules/openapi-generator/src/main/resources/php-flight/README.mustache b/modules/openapi-generator/src/main/resources/php-flight/README.mustache
new file mode 100644
index 000000000000..d510c3a55354
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/README.mustache
@@ -0,0 +1,10 @@
+## Requirements
+
+PHP 8.1 and later
+
+## Installation & Usage
+
+1. Set up flight as usual - see [Flight documentation](https://docs.flightphp.com/install)
+2. Generate using the OpenAPI generator
+3. Subclass some/all generated `Abstract*Api` and overwrite the methods you'd like handled. When implementing the `*Stream` methods, make sure to stream the response and not implement the non-stream method.
+4. Register routes for your subclassed apis: `RegisterRoutes::registerRoutes(new MyApiHandler());`
diff --git a/modules/openapi-generator/src/main/resources/php-flight/api.mustache b/modules/openapi-generator/src/main/resources/php-flight/api.mustache
new file mode 100644
index 000000000000..a0b146bd07dc
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/api.mustache
@@ -0,0 +1,57 @@
+licenseInfo}}
+
+namespace {{apiPackage}};
+
+
+{{#operations}}abstract class {{classname}}
+{
+
+ {{#operation}}
+ /**
+ * Operation {{{operationId}}}
+ * Path: {{{path}}}
+ *
+ {{#summary}}
+ * {{{summary}}}
+ *
+ {{/summary}}
+ {{#vendorExtensions.x-nonFormParams}}
+ * @param {{vendorExtensions.x-parameter-type}} ${{paramName}} {{description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}
+ {{/vendorExtensions.x-nonFormParams}}
+ *
+ * @return {{vendorExtensions.x-return-type-comment}}
+ {{#isDeprecated}}
+ * @deprecated
+ {{/isDeprecated}}
+ */
+ public function {{operationId}}({{#vendorExtensions.x-nonFormParams}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-nonFormParams}}): {{vendorExtensions.x-return-type}}
+ {
+ throw new \Exception('Not implemented');
+ }
+
+ {{#returnContainer}}
+ /**
+ * Operation {{{operationId}}} (stream)
+ *
+ {{#summary}}
+ * {{{summary}}}
+ *
+ {{/summary}}
+ {{#vendorExtensions.x-nonFormParams}}
+ * @param {{vendorExtensions.x-parameter-type}} ${{paramName}} {{description}} {{#required}}(required){{/required}}{{^required}}(optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#isDeprecated}} (deprecated){{/isDeprecated}}
+{{/vendorExtensions.x-nonFormParams}}
+ *
+ {{#isDeprecated}}
+ * @deprecated
+ {{/isDeprecated}}
+ */
+ public function {{operationId}}Stream({{#vendorExtensions.x-nonFormParams}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/vendorExtensions.x-nonFormParams}}): void
+ {
+ throw new \Exception('Not implemented');
+ }
+ {{/returnContainer}}
+{{/operation}}
+}
+{{/operations}}
diff --git a/modules/openapi-generator/src/main/resources/php-flight/composer.mustache b/modules/openapi-generator/src/main/resources/php-flight/composer.mustache
new file mode 100644
index 000000000000..d922daab923e
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/composer.mustache
@@ -0,0 +1,39 @@
+{
+ {{#composerPackageName}}
+ "name": "{{{.}}}",
+ {{/composerPackageName}}
+ "description": "{{appDescription}}.",
+ "keywords": ["openapi", "php", "framework", "flightphp"],
+ {{#artifactVersion}}
+ "version": "{{.}}",
+ {{/artifactVersion}}
+ "homepage": "{{{artifactUrl}}}",
+ "license": "{{{licenseName}}}",
+ "authors": [
+ {
+ "name": "{{{developerOrganization}}}",
+ "homepage": "{{{developerOrganizationUrl}}}"
+ }
+ ],
+ "type": "library",
+ "require": {
+ "php": "^8.1.0",
+ "flightphp/core": "^3.5.1",
+ "ext-json": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "config": {
+ "optimize-autoloader": true,
+ "preferred-install": "dist",
+ "sort-packages": true
+ },
+ "autoload": {
+ "psr-4": {
+ "{{escapedInvokerPackage}}\\": ""
+ }
+ },
+ "minimum-stability": "dev",
+ "prefer-stable": true
+}
diff --git a/modules/openapi-generator/src/main/resources/php-flight/gitignore b/modules/openapi-generator/src/main/resources/php-flight/gitignore
new file mode 100644
index 000000000000..931a98c71bd1
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/gitignore
@@ -0,0 +1,28 @@
+# ref: https://github.com/github/gitignore/blob/master/Composer.gitignore
+
+composer.phar
+/vendor/
+
+# Commit your application's lock file https://getcomposer.org/doc/01-basic-usage.md#commit-your-composer-lock-file-to-version-control
+# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file
+# composer.lock
+
+# phplint tool creates cache file which is not necessary in a codebase
+/.phplint-cache
+
+# Do not commit local PHPUnit config
+/phpunit.xml
+/.phpunit.result.cache
+
+# Do not commit local PHP_CodeSniffer config
+/phpcs.xml
+
+# Application config may contain sensitive data
+/config/**/*.*
+!/config/.htaccess
+!/config/dev/default.inc.php
+!/config/prod/default.inc.php
+
+# Logs folder
+/logs/**/*.*
+!/logs/.htaccess
diff --git a/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache b/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache
new file mode 100644
index 000000000000..c10b59eaab8a
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/licenseInfo.mustache
@@ -0,0 +1,23 @@
+/**
+ {{#appName}}
+ * {{{.}}}
+ {{/appName}}
+ * PHP version 8.x
+ *
+ * @package {{invokerPackage}}
+ * @author OpenAPI Generator team
+ * @link https://github.com/openapitools/openapi-generator
+ */
+
+/**
+ {{#appDescription}}
+ * {{{.}}}
+ {{/appDescription}}
+ {{#version}}
+ * The version of the OpenAPI document: {{{.}}}
+ {{/version}}
+ {{#infoEmail}}
+ * Contact: {{{.}}}
+ {{/infoEmail}}
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ */
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/php-flight/model.mustache b/modules/openapi-generator/src/main/resources/php-flight/model.mustache
new file mode 100644
index 000000000000..c0fd08c25c56
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/model.mustache
@@ -0,0 +1,31 @@
+partial_header}}
+
+namespace {{modelPackage}};
+
+/**
+ * Class representing the {{classname}} model.
+ *
+{{#description}}
+ * {{.}}
+ *
+{{/description}}
+ * @package {{modelPackage}}
+ * @author OpenAPI Generator team
+ */
+{{#isEnum}}{{>model_enum}}{{/isEnum}}
+{{^isEnum}}{{>model_generic}}{{/isEnum}}
+{{/model}}{{/models}}
diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache
new file mode 100644
index 000000000000..b12428b10e2d
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/model_enum.mustache
@@ -0,0 +1,8 @@
+enum {{classname}}: {{dataType}}
+{
+{{#allowableValues}}
+ {{#enumVars}}
+ case {{{name}}} = {{{value}}};
+ {{/enumVars}}
+{{/allowableValues}}
+}
diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache
new file mode 100644
index 000000000000..9748119501dc
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/model_generic.mustache
@@ -0,0 +1,90 @@
+class {{classname}} {{#parentSchema}}extends {{{parent}}} {{/parentSchema}} implements \JsonSerializable
+{
+ {{#vars}}{{>model_variables}}
+ {{/vars}}
+ /**
+ * Constructor
+ *
+{{#vars}}
+ * @param {{vendorExtensions.x-comment-type}} ${{name}}
+{{/vars}}
+ */
+ public function __construct({{#vars}}{{vendorExtensions.x-parameter-type}} ${{name}}{{^-last}}, {{/-last}}{{/vars}})
+ {
+ {{#vars}}
+ $this->{{name}} = ${{name}};
+ {{/vars}}
+ }
+
+ public static function fromArray(array $data): self
+ {
+ return new self(
+ {{#vars}}
+ {{#isDateTime}}
+ isset($data['{{baseName}}']) ? new \DateTime($data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/isDateTime}}
+ {{#isEnum}}
+ isset($data['{{baseName}}']) ? {{enumName}}::tryFrom($data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/isEnum}}
+ {{#isEnumRef}}
+ isset($data['{{baseName}}']) ? {{complexType}}::tryFrom($data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/isEnumRef}}
+ {{#isModel}}
+ isset($data['{{baseName}}']) ? {{complexType}}::fromArray($data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/isModel}}
+ {{#isArray}}
+ {{#items.isEnumRef}}
+ isset($data['{{baseName}}']) ? array_map(fn($item) => {{items.complexType}}::tryFrom($item), $data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/items.isEnumRef}}
+ {{#items.isModel}}
+ isset($data['{{baseName}}']) ? array_map(fn($item) => {{items.complexType}}::fromArray($item), $data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/items.isModel}}
+ {{#items.isDateTime}}
+ isset($data['{{baseName}}']) ? array_map(fn($item) => new \DateTime($item), $data['{{baseName}}']) : null{{^last}}, {{/last}}
+ {{/items.isDateTime}}
+ {{^items.isEnumRef}}
+ {{^items.isModel}}
+ {{^items.isDateTime}}
+ $data['{{baseName}}'] ?? null{{^last}}, {{/last}}
+ {{/items.isDateTime}}
+ {{/items.isModel}}
+ {{/items.isEnumRef}}
+ {{/isArray}}
+ {{^isEnumRef}}
+ {{^isEnum}}
+ {{^isModel}}
+ {{^isArray}}
+ {{^isDateTime}}
+ $data['{{baseName}}'] ?? null{{^last}}, {{/last}}
+ {{/isDateTime}}
+ {{/isArray}}
+ {{/isModel}}
+ {{/isEnum}}
+ {{/isEnumRef}}
+ {{/vars}}
+ );
+ }
+
+ public function jsonSerialize(): mixed {
+ return [
+ {{#vars}}
+ {{#isDateTime}}
+ '{{baseName}}' => $this->{{name}}?->format('c'){{^last}}, {{/last}}
+ {{/isDateTime}}
+ {{#isArray}}
+ {{#items.isDateTime}}
+ '{{baseName}}' => $this->{{name}} ? array_map(fn($item) => $item->format('c'), $this->{{name}}) : null{{^last}}, {{/last}}
+ {{/items.isDateTime}}
+ {{^items.isDateTime}}
+ '{{baseName}}' => $this->{{name}}{{^last}}, {{/last}}
+ {{/items.isDateTime}}
+ {{/isArray}}
+ {{^isDateTime}}
+ {{^isArray}}
+ '{{baseName}}' => $this->{{name}}{{^last}}, {{/last}}
+ {{/isArray}}
+ {{/isDateTime}}
+ {{/vars}}
+ ];
+ }
+}
diff --git a/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache b/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache
new file mode 100644
index 000000000000..259ce295ea70
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/model_variables.mustache
@@ -0,0 +1,113 @@
+ /**
+ {{#description}}
+ * {{.}}
+ *
+ {{/description}}
+ * @var {{{vendorExtensions.x-comment-type}}}
+ * @SerializedName("{{baseName}}")
+{{#required}}
+ * @Assert\NotNull()
+ {{^isPrimitiveType}}
+ * @Assert\Valid()
+ {{/isPrimitiveType}}
+{{/required}}
+{{#isEnum}}
+ {{#isContainer}}
+ * @Assert\All({
+ {{#items}}
+ * @Assert\Choice({ {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} })
+ {{/items}}
+ * })
+ {{/isContainer}}
+ {{^isContainer}}
+ * @Assert\Choice({ {{#allowableValues}}{{#enumVars}}{{{value}}}{{^-last}}, {{/-last}}{{/enumVars}}{{/allowableValues}} })
+ {{/isContainer}}
+{{/isEnum}}
+{{#isContainer}}
+ * @Assert\All({
+ {{#items}}
+ * @Assert\Type("{{dataType}}")
+ {{/items}}
+ * })
+ {{#isMap}}
+ {{#items}}
+ * @Type("array")
+ {{/items}}
+ {{/isMap}}
+ {{^isMap}}
+ {{#items}}
+ {{#isEnumRef}}
+ * @Accessor(getter="getSerialized{{nameInPascalCase}}")
+ * @Type("array")
+ {{/isEnumRef}}
+ {{^isEnumRef}}
+ * @Type("array<{{dataType}}>")
+ {{/isEnumRef}}
+ {{/items}}
+ {{/isMap}}
+{{/isContainer}}
+{{^isContainer}}
+ {{#isDate}}
+ * @Assert\Type("\Date")
+ * @Type("DateTime<'Y-m-d'>")
+ {{/isDate}}
+ {{#isDateTime}}
+ * @Assert\Type("\DateTime"))
+ * @Type("DateTime")
+ {{/isDateTime}}
+ {{#isEnumRef}}
+ * @Accessor(getter="getSerialized{{nameInPascalCase}}")
+ * @Type("string")
+ {{/isEnumRef}}
+ {{^isDate}}
+ {{^isDateTime}}
+ {{^isEnumRef}}
+ * @Assert\Type("{{dataType}}")
+ * @Type("{{dataType}}")
+ {{/isEnumRef}}
+ {{/isDateTime}}
+ {{/isDate}}
+{{/isContainer}}
+{{#hasValidation}}
+ {{#maxLength}}
+ * @Assert\Length(
+ * max = {{.}}
+ * )
+ {{/maxLength}}
+ {{#minLength}}
+ * @Assert\Length(
+ * min = {{.}}
+ * )
+ {{/minLength}}
+ {{#minimum}}
+ {{#exclusiveMinimum}}
+ * @Assert\GreaterThan({{minimum}})
+ {{/exclusiveMinimum}}
+ {{^exclusiveMinimum}}
+ * @Assert\GreaterThanOrEqual({{minimum}})
+ {{/exclusiveMinimum}}
+ {{/minimum}}
+ {{#maximum}}
+ {{#exclusiveMaximum}}
+ * @Assert\LessThan({{maximum}})
+ {{/exclusiveMaximum}}
+ {{^exclusiveMaximum}}
+ * @Assert\LessThanOrEqual({{maximum}})
+ {{/exclusiveMaximum}}
+ {{/maximum}}
+ {{#pattern}}
+ * @Assert\Regex("/{{.}}/")
+ {{/pattern}}
+ {{#maxItems}}
+ * @Assert\Count(
+ * max = {{.}}
+ * )
+ {{/maxItems}}
+ {{#minItems}}
+ * @Assert\Count(
+ * min = {{.}}
+ * )
+ {{/minItems}}
+{{/hasValidation}}
+ */
+ public {{{vendorExtensions.x-parameter-type}}} ${{name}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}};
diff --git a/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache b/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache
new file mode 100644
index 000000000000..01bb4a845c99
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/partial_header.mustache
@@ -0,0 +1,14 @@
+/**
+ {{#appName}}
+ * {{{.}}}
+ *
+ {{/appName}}
+ {{#appDescription}}
+ * {{{.}}}
+ *
+ {{/appDescription}}
+ * {{#version}}The version of the OpenAPI document: {{{.}}}{{/version}}
+ * {{#infoEmail}}Contact: {{{.}}}{{/infoEmail}}
+ * Generated by: https://github.com/openapitools/openapi-generator.git
+ *
+ */
diff --git a/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache b/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache
new file mode 100644
index 000000000000..f7df0c08377d
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/phpunit.mustache
@@ -0,0 +1,28 @@
+
+
+
+
+ {{#lambda.forwardslash}}{{apiSrcPath}}{{/lambda.forwardslash}}
+ {{#lambda.forwardslash}}{{modelSrcPath}}{{/lambda.forwardslash}}
+ .
+
+
+ {{#lambda.forwardslash}}{{testSrcPath}}{{/lambda.forwardslash}}
+
+
+
+
+ {{#lambda.forwardslash}}{{testSrcPath}}{{/lambda.forwardslash}}
+
+
+
+
+
+
diff --git a/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache b/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache
new file mode 100644
index 000000000000..c66e90b42b98
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/register_routes.mustache
@@ -0,0 +1,85 @@
+licenseInfo}}
+
+namespace {{invokerPackage}};
+{{#apiInfo}}
+
+class RegisterRoutes {
+
+ static public function registerRoutes({{#apis}}\{{apiPackage}}\{{classname}}{{^-last}}|{{/-last}}{{/apis}} $handler): void
+ {
+ $reflectionClass = new \ReflectionClass($handler);
+
+ {{#apis}}
+ {{#operations}}
+ {{#operation}}
+ if (declaresMethod($reflectionClass, '{{operationId}}') && declaresMethod($reflectionClass, '{{operationId}}Stream')) {
+ throw new \Exception('Operation {{operationId}} cannot be both streaming and non-streaming');
+ }
+ if (declaresMethod($reflectionClass, '{{operationId}}')) {
+ \Flight::route('{{httpMethod}} {{vendorExtensions.x-path}}', function ({{#pathParams}}string ${{paramName}}{{^-last}}, {{/-last}}{{/pathParams}}) use ($handler) {
+ $r = \Flight::request();
+ {{^vendorExtensions.x-return-type-is-void}}$result = {{/vendorExtensions.x-return-type-is-void}}$handler->{{operationId}}(
+ {{#vendorExtensions.x-nonFormParams}}
+ parseParam({{#isBodyParam}}json_decode($r->getBody(), true){{/isBodyParam}}{{#isQueryParam}}$r->query['{{baseName}}'] ?? null{{/isQueryParam}}{{#isPathParam}}${{paramName}}{{/isPathParam}}{{#isHeaderParam}}$r->getHeader('{{baseName}}'){{/isHeaderParam}}, '{{vendorExtensions.x-comment-type-escaped}}'){{^-last}}, {{/-last}}
+ {{/vendorExtensions.x-nonFormParams}}
+ );
+ {{^vendorExtensions.x-return-type-is-void}}
+ if ($result === null) {
+ \Flight::halt(204);
+ } else {
+ \Flight::json($result);
+ }
+ {{/vendorExtensions.x-return-type-is-void}}
+ {{#vendorExtensions.x-return-type-is-void}}
+ \Flight::halt(204);
+ {{/vendorExtensions.x-return-type-is-void}}
+ });
+ }
+ {{#returnContainer}}
+ if (declaresMethod($reflectionClass, '{{operationId}}Stream')) {
+ \Flight::route('{{httpMethod}} {{vendorExtensions.x-path}}', function ({{#pathParams}}string ${{paramName}}{{^-last}}, {{/-last}}{{/pathParams}}) use ($handler) {
+ $r = \Flight::request();
+ $handler->{{operationId}}Stream(
+ {{#vendorExtensions.x-nonFormParams}}
+ parseParam({{#isBodyParam}}json_decode($r->getBody(), true){{/isBodyParam}}{{#isQueryParam}}$r->query['{{baseName}}'] ?? null{{/isQueryParam}}{{#isPathParam}}${{paramName}}{{/isPathParam}}{{#isHeaderParam}}$r->getHeader('{{baseName}}'){{/isHeaderParam}}, '{{vendorExtensions.x-comment-type-escaped}}'){{^-last}}, {{/-last}}
+ {{/vendorExtensions.x-nonFormParams}}
+ );
+ // ignore return value: streaming expected
+ })->streamWithHeaders(['Content-Type' => 'application/json']);
+ }
+ {{/returnContainer}}
+
+ {{/operation}}
+ {{/operations}}
+ {{/apis}}
+ }
+}
+
+{{/apiInfo}}
+
+function parseParam(mixed $param, string $type)
+{
+ $nonNullType = str_replace('?', '', $type);
+ if ($param === null) {
+ return null;
+ } elseif ($nonNullType === 'int') {
+ return intval($param);
+ } elseif ($nonNullType === 'float') {
+ return floatval($param);
+ } elseif ($nonNullType === 'bool') {
+ return filter_var($param, FILTER_VALIDATE_BOOLEAN);
+ } elseif (str_ends_with($type, '[]')) {
+ return array_map(fn($el) => parseParam($el, substr($type, 0, -2)), $param);
+ } elseif (str_starts_with($nonNullType, '\\{{escapedModelPackage}}')) {
+ return new $nonNullType($param);
+ } else {
+ return $param;
+ }
+}
+
+function declaresMethod(\ReflectionClass $reflectionClass, string $methodName): bool
+{
+ return $reflectionClass->hasMethod($methodName) && $reflectionClass->getMethod($methodName)->getDeclaringClass()->getName() === $reflectionClass->getName();
+}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache b/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache
new file mode 100644
index 000000000000..c50fbade9c5b
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/php-flight/register_routes_test.mustache
@@ -0,0 +1,31 @@
+licenseInfo}}
+
+{{#apiInfo}}
+namespace {{testPackage}};
+
+class RegisterRoutesTest extends \PHPUnit\Framework\TestCase {
+{{#apis}}
+ public function testRegisterRoutes{{classname}}(): void
+ {
+ $handler = new class extends \{{apiPackage}}\{{classname}} {
+ {{#operations}}
+ {{#operation}}
+ {{#-first}}
+ public function {{operationId}}({{#vendorExtensions.x-nonFormParams}}{{^isFormParam}}{{vendorExtensions.x-parameter-type}} ${{paramName}}{{^-last}}, {{/-last}}{{/isFormParam}}{{/vendorExtensions.x-nonFormParams}}): {{vendorExtensions.x-return-type}}
+ {
+ {{^vendorExtensions.x-return-type-is-void}}
+ return null;
+ {{/vendorExtensions.x-return-type-is-void}}
+ }
+ {{/-first}}
+ {{/operation}}
+ {{/operations}}
+ };
+ \{{invokerPackage}}\RegisterRoutes::registerRoutes($handler);
+ $this->assertTrue(true);
+ }
+{{/apis}}
+}
+{{/apiInfo}}
diff --git a/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache b/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache
index ae0a5ae12e54..4af110c5e634 100644
--- a/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache
+++ b/modules/openapi-generator/src/main/resources/scala-cask/build.sbt.mustache
@@ -1,23 +1,45 @@
-name := "{{artifactId}}"
-organization:="{{groupId}}"
-version := "0.0.1-SNAPSHOT"
-scalaVersion := "3.3.1"
-scalafmtOnCompile := true
-libraryDependencies ++= Seq(
- "com.lihaoyi" %% "cask" % "0.9.2" ,
- "com.lihaoyi" %% "upickle" % "3.2.0",
- "org.scalatest" %% "scalatest" % "3.2.18" % Test
+ThisBuild / name := "{{artifactId}}"
+ThisBuild / organization := "{{groupId}}"
+ThisBuild / version := "0.0.1-SNAPSHOT"
+ThisBuild / scalaVersion := "3.4.1"
+ThisBuild / scalafmtOnCompile := true
+
+// Common settings
+lazy val commonSettings = Seq(
+ libraryDependencies ++= Seq(
+ "com.lihaoyi" %%% "upickle" % "3.2.0",
+ "org.scalatest" %%% "scalatest" % "3.2.18" % Test
+ )
)
-publishMavenStyle := true
+
+lazy val app = crossProject(JSPlatform, JVMPlatform).in(file(".")).
+ settings(commonSettings).
+ jvmSettings(
+ libraryDependencies += "com.lihaoyi" %% "cask" % "0.9.2"
+ ).
+ jsSettings(
+ scalaJSUseMainModuleInitializer := true,
+ )
+
+
+lazy val root = project.in(file(".")).
+ aggregate(app.js, app.jvm).
+ settings(
+ publish := {},
+ publishLocal := {},
+ )
+
+
+ThisBuild / publishMavenStyle := true
val githubUser = "{{{gitUserId}}}"
val githubRepo = "{{{gitRepoId}}}"
-publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
+ThisBuild / publishTo := Some("GitHub Package Registry" at s"https://maven.pkg.github.com/$githubUser/$githubRepo")
sys.env.get("GITHUB_TOKEN") match {
case Some(token) if !token.isEmpty =>
- credentials += Credentials(
+ ThisBuild / credentials += Credentials(
"GitHub Package Registry",
"maven.pkg.github.com",
githubUser,
diff --git a/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache b/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache
index a31414db150c..86f838c35377 100644
--- a/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache
+++ b/modules/openapi-generator/src/main/resources/scala-cask/build.sc.mustache
@@ -28,8 +28,8 @@ object {{artifactId}} extends SbtModule with ScalafmtModule with PublishModule {
ivy"com.lihaoyi::upickle:3.2.0"
)
- override def sources = T.sources(millSourcePath / os.up / "src" / "main" / "scala")
- override def resources = T.sources(millSourcePath / os.up / "src" / "main" / "resources")
+ override def sources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "scala")
+ override def resources = T.sources(millSourcePath / os.up / "shared" / "src" / "main" / "resources")
object test extends SbtModuleTests {
def ivyDeps = Agg(
diff --git a/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache b/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache
new file mode 100644
index 000000000000..1df721e73653
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/scala-cask/buildAndPublish.yml.mustache
@@ -0,0 +1,38 @@
+name: Scala CI with sbt
+
+on:
+ push:
+ branches: [ main, master ]
+ pull_request:
+ branches: [ main, master ]
+
+jobs:
+ build-and-publish:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Set up JDK 11
+ uses: actions/setup-java@v1
+ with:
+ java-version: 11
+
+ - name: Cache sbt dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.ivy2/cache
+ ~/.sbt
+ ~/.m2
+ key: ${{{openbrackets}}} runner.os {{{closebrackets}}}-sbt-${{{openbrackets}}} hashFiles('**/*.sbt') {{{closebrackets}}}
+ restore-keys: |
+ ${{{openbrackets}}} runner.os {{{closebrackets}}}-sbt-
+
+ - name: Build with sbt
+ run: sbt clean compile test
+
+ - name: Publish to GitHub Packages
+ run: sbt publish
+ env:
+ GITHUB_TOKEN: ${{{openbrackets}}} secrets.GITHUB_TOKEN {{{closebrackets}}}
diff --git a/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt b/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt
index 4f3f02c2de45..ece317dfad9b 100644
--- a/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt
+++ b/modules/openapi-generator/src/main/resources/scala-cask/project/plugins.sbt
@@ -1,3 +1,4 @@
-addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.6")
-
-addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
\ No newline at end of file
+addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6")
+addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.2.0")
+addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.16.0")
+addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0")
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/swift5/Models.mustache b/modules/openapi-generator/src/main/resources/swift5/Models.mustache
index 9a8af56a8af1..3bd5e1c4f6c5 100644
--- a/modules/openapi-generator/src/main/resources/swift5/Models.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/Models.mustache
@@ -130,9 +130,9 @@ extension NullEncodable: Codable where Wrapped: Codable {
}
{{/useAlamofire}}
{{^useAlamofire}}
- private var task: URLSessionTask?
+ private var task: URLSessionDataTaskProtocol?
- internal func set(task: URLSessionTask) {
+ internal func set(task: URLSessionDataTaskProtocol) {
lock.lock()
defer { lock.unlock() }
self.task = task
diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache
index 0c8cc2863cd7..a17db02e6892 100644
--- a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache
+++ b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache
@@ -12,11 +12,33 @@ import MobileCoreServices
import UniformTypeIdentifiers
#endif
+// Protocol defined for a session data task. This allows mocking out the URLSessionProtocol below since
+// you may not want to create or return a real URLSessionDataTask.
+{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol URLSessionDataTaskProtocol {
+ func resume()
+
+ var taskIdentifier: Int { get }
+
+ var progress: Progress { get }
+
+ func cancel()
+}
+
+// Protocol allowing implementations to alter what is returned or to test their implementations.
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} protocol URLSessionProtocol {
- func dataTask(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTask
+ // Task which performs the network fetch. Expected to be from URLSession.dataTask(with:completionHandler:) such that a network request
+ // is sent off when `.resume()` is called.
+ func dataTaskFromProtocol(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, Error?) -> Void) -> URLSessionDataTaskProtocol
+}
+
+extension URLSession: URLSessionProtocol {
+ // Passthrough to URLSession.dataTask(with:completionHandler) since URLSessionDataTask conforms to URLSessionDataTaskProtocol and fetches the network data.
+ {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} func dataTaskFromProtocol(with request: URLRequest, completionHandler: @escaping @Sendable (Data?, URLResponse?, (any Error)?) -> Void) -> any URLSessionDataTaskProtocol {
+ return dataTask(with: request, completionHandler: completionHandler)
+ }
}
-extension URLSession: URLSessionProtocol {}
+extension URLSessionDataTask: URLSessionDataTaskProtocol {}
class URLSessionRequestBuilderFactory: RequestBuilderFactory {
func getNonDecodableBuilder() -> RequestBuilder.Type {
@@ -136,7 +158,7 @@ private var credentialStore = SynchronizedDictionary()
}
}
- let dataTask = urlSession.dataTask(with: request) { data, response, error in
+ let dataTask = urlSession.dataTaskFromProtocol(with: request) { data, response, error in
apiResponseQueue.async {
self.processRequestResponse(urlRequest: request, data: data, response: response, error: error, completion: completion)
cleanupRequest()
diff --git a/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache b/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache
index 43207b65e305..232acaf3ea43 100644
--- a/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-angular/modelGeneric.mustache
@@ -2,9 +2,17 @@ export interface {{classname}}{{#allParents}}{{#-first}} extends {{/-first}}{{{.
{{#vars}}
{{#description}}
/**
- * {{{.}}}
+ * {{{description}}}
+ {{#deprecated}}
+ * @deprecated
+ {{/deprecated}}
*/
{{/description}}
+ {{^description}}
+ {{#deprecated}}
+ /** @deprecated */
+ {{/deprecated}}
+ {{/description}}
{{#isReadOnly}}readonly {{/isReadOnly}}{{{name}}}{{^required}}?{{/required}}: {{#isEnum}}{{{datatypeWithEnum}}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}} | null{{/isNullable}};
{{/vars}}
}{{>modelGenericEnums}}
diff --git a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache
index 004fc11fdae8..aa594015c7f9 100755
--- a/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-axios/common.mustache
@@ -118,50 +118,10 @@ export const serializeDataIfNeeded = function (value: any, requestOptions: any,
? configuration.isJsonMime(requestOptions.headers['Content-Type'])
: nonString;
return needsSerialization
- ? JSON.stringify(value !== undefined ? convertMapsAndSetsToPlain(value) : {})
+ ? JSON.stringify(value !== undefined ? value : {})
: (value || "");
}
-function convertMapsAndSetsToPlain(value: any): any {
- if (typeof Set === "undefined") return value;
- if (typeof Map === "undefined") return value;
- if (typeof value !== "object" || !value) {
- return value;
- }
- if (value instanceof Set) {
- return Array.from(value).map(item => convertMapsAndSetsToPlain(item));
- }
- if (value instanceof Map) {
- const entries: Array<[string, any]> = [];
- value.forEach((value: any, key: any) => {
- entries.push([key, convertMapsAndSetsToPlain(value)])
- });
- return objectFromEntries(entries);
- }
- if (Array.isArray(value)) {
- return value.map(it => convertMapsAndSetsToPlain(it));
- }
- return objectFromEntries(objectEntries(value)
- .map(([k, v]) => [k, convertMapsAndSetsToPlain(v)]));
-}
-
-/**
- * Ponyfill for Object.entries
- */
-function objectEntries(object: Record): Array<[string, any]> {
- return Object.keys(object).map(key => [key, object[key]]);
-}
-
-/**
- * Ponyfill for Object.fromEntries
- */
-function objectFromEntries(entries: any): Record {
- return [...entries].reduce((object, [key, val]) => {
- object[key] = val;
- return object;
- }, {});
-}
-
/**
*
* @export
diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache
index 0aeeaa782550..005aabdff6c8 100644
--- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.module.mustache
@@ -3,7 +3,7 @@ import { DynamicModule, Module, Global, Provider } from '@nestjs/common';
import { HttpModule, HttpService } from '@nestjs/axios';
{{/useAxiosHttpModule}}
{{^useAxiosHttpModule}}
-import { DynamicModule, HttpService, HttpModule, Module, Global } from '@nestjs/common';
+import { DynamicModule, HttpService, HttpModule, Module, Global, Provider } from '@nestjs/common';
{{/useAxiosHttpModule}}
import { AsyncConfiguration, Configuration, ConfigurationFactory } from './configuration';
diff --git a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache
index 064978b97537..fee3b7ff2023 100644
--- a/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache
+++ b/modules/openapi-generator/src/main/resources/typescript-nestjs/api.service.mustache
@@ -9,11 +9,12 @@ import { HttpService } from '@nestjs/axios';
import { HttpService, Inject, Injectable, Optional } from '@nestjs/common';
{{/useAxiosHttpModule}}
import { AxiosResponse } from 'axios';
-import { Observable } from 'rxjs';
+import { Observable, from, of, switchMap } from 'rxjs';
{{#imports}}
import { {{classname}} } from '../{{filename}}';
{{/imports}}
import { Configuration } from '../configuration';
+import { COLLECTION_FORMATS } from '../variables';
{{#withInterfaces}}
import { {{classname}}Interface } from './{{classFilename}}Interface';
{{/withInterfaces}}
@@ -117,6 +118,8 @@ export class {{classname}} {
{{/isArray}}
{{/headerParams}}
+ let accessTokenObservable: Observable = of(null);
+
{{#authMethods}}
// authentication ({{name}}) required
{{#isApiKey}}
@@ -144,17 +147,16 @@ export class {{classname}} {
{{/isBasicBasic}}
{{#isBasicBearer}}
if (typeof this.configuration.accessToken === 'function') {
- headers['Authorization'] = `Bearer ${this.configuration.accessToken()}`;
+ accessTokenObservable = from(Promise.resolve(this.configuration.accessToken()));
} else if (this.configuration.accessToken) {
- headers['Authorization'] = `Bearer ${this.configuration.accessToken}`;
+ accessTokenObservable = from(Promise.resolve(this.configuration.accessToken));
}
{{/isBasicBearer}}
{{#isOAuth}}
if (this.configuration.accessToken) {
- const accessToken = typeof this.configuration.accessToken === 'function'
- ? this.configuration.accessToken()
- : this.configuration.accessToken;
- headers['Authorization'] = 'Bearer ' + accessToken;
+ accessTokenObservable = typeof this.configuration.accessToken === 'function'
+ ? from(Promise.resolve(this.configuration.accessToken()))
+ : from(Promise.resolve(this.configuration.accessToken))
}
{{/isOAuth}}
@@ -224,18 +226,26 @@ export class {{classname}} {
{{/formParams}}
{{/hasFormParams}}
- return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.basePath}{{{path}}}`,{{#isBodyAllowed}}
- {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams!.toString() : formParams!{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}}
- {
-{{#hasQueryParams}}
- params: queryParameters,
-{{/hasQueryParams}}
-{{#isResponseFile}}
- responseType: "blob",
-{{/isResponseFile}}
- withCredentials: this.configuration.withCredentials,
- headers: headers
- }
+ return accessTokenObservable.pipe(
+ switchMap((accessToken) => {
+ if (accessToken) {
+ headers['Authorization'] = `Bearer ${accessToken}`;
+ }
+
+ return this.httpClient.{{httpMethod}}{{^isResponseFile}}<{{#returnType}}{{{returnType}}}{{#isResponseTypeFile}}|undefined{{/isResponseTypeFile}}{{/returnType}}{{^returnType}}any{{/returnType}}>{{/isResponseFile}}(`${this.basePath}{{{path}}}`,{{#isBodyAllowed}}
+ {{#bodyParam}}{{paramName}}{{/bodyParam}}{{^bodyParam}}{{#hasFormParams}}convertFormParamsToString ? formParams!.toString() : formParams!{{/hasFormParams}}{{^hasFormParams}}null{{/hasFormParams}}{{/bodyParam}},{{/isBodyAllowed}}
+ {
+ {{#hasQueryParams}}
+ params: queryParameters,
+ {{/hasQueryParams}}
+ {{#isResponseFile}}
+ responseType: "blob",
+ {{/isResponseFile}}
+ withCredentials: this.configuration.withCredentials,
+ headers: headers
+ }
+ );
+ })
);
}
{{/operation}}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
index cd0bc10c8f16..49e254d311d7 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java
@@ -1891,6 +1891,38 @@ public void testMicroprofileGenerateCorrectJsonbCreator_issue12622() throws Exce
.containsWithNameAndAttributes("JsonbProperty", ImmutableMap.of("value", "\"c\""));
}
+ @Test
+ public void testMicroprofileGenerateCorrectJacksonGenerator_issue18336() throws Exception {
+ Map properties = new HashMap<>();
+ properties.put(JavaClientCodegen.MICROPROFILE_REST_CLIENT_VERSION, "3.0");
+ properties.put(CodegenConstants.SERIALIZATION_LIBRARY, JavaClientCodegen.SERIALIZATION_LIBRARY_JACKSON);
+
+ File output = Files.createTempDirectory("test").toFile();
+ output.deleteOnExit();
+
+ final CodegenConfigurator configurator = new CodegenConfigurator()
+
+ .setAdditionalProperties(properties)
+ .setGeneratorName("java")
+ .setLibrary(JavaClientCodegen.MICROPROFILE)
+ .setInputSpec("src/test/resources/bugs/issue_18336.yaml")
+ .setOutputDir(output.getAbsolutePath().replace("\\", "/"));
+
+ final ClientOptInput clientOptInput = configurator.toClientOptInput();
+ DefaultGenerator generator = new DefaultGenerator();
+ Map files = generator.opts(clientOptInput).generate().stream()
+ .collect(Collectors.toMap(File::getName, Function.identity()));
+
+ JavaFileAssert.assertThat(files.get("Pet.java"))
+ .assertConstructor("String")
+ .assertConstructorAnnotations()
+ .containsWithName("JsonCreator")
+ .toConstructor()
+ .hasParameter("name")
+ .assertParameterAnnotations()
+ .containsWithNameAndAttributes("JsonProperty", ImmutableMap.of("value", "JSON_PROPERTY_NAME", "required", "true"));
+ }
+
@Test
public void testJavaClientDefaultValues_issueNoNumber() throws Exception {
Map properties = new HashMap<>();
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java
index c11931e8a4fd..d63754a27470 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java
@@ -808,6 +808,103 @@ public void generateApiForQuarkusWithGzipFeature() throws Exception {
);
}
+ @Test
+ public void generateApiForQuarkusWithoutMutiny() throws Exception {
+ final File output = Files.createTempDirectory("test").toFile();
+ output.deleteOnExit();
+
+ final OpenAPI openAPI = new OpenAPIParser()
+ .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI();
+
+ codegen.setOutputDir(output.getAbsolutePath());
+ codegen.setLibrary(QUARKUS_LIBRARY);
+ codegen.additionalProperties().put(SUPPORT_ASYNC, true);
+ codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java
+
+ final ClientOptInput input = new ClientOptInput()
+ .openAPI(openAPI)
+ .config(codegen); //Using JavaJAXRSSpecServerCodegen
+
+ final DefaultGenerator generator = new DefaultGenerator();
+ final List files = generator.opts(input).generate(); //When generating files
+
+ //Then the java files are compilable
+ validateJavaSourceFiles(files);
+
+ //And the generated class contains CompletionStage
+ TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java");
+ TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"),
+ "CompletionStage pingGetBoolean", //Support primitive types response
+ "CompletionStage pingGetInteger" //Support primitive types response
+ );
+ }
+
+ @Test
+ public void generateApiForQuarkusWithMutinyApi() throws Exception {
+ final File output = Files.createTempDirectory("test").toFile();
+ output.deleteOnExit();
+
+ final OpenAPI openAPI = new OpenAPIParser()
+ .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI();
+
+ codegen.setOutputDir(output.getAbsolutePath());
+ codegen.setLibrary(QUARKUS_LIBRARY);
+ codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java
+ codegen.additionalProperties().put(SUPPORT_ASYNC, true);
+ codegen.additionalProperties().put(INTERFACE_ONLY, true);
+ codegen.additionalProperties().put(USE_MUTINY, true);
+
+ final ClientOptInput input = new ClientOptInput()
+ .openAPI(openAPI)
+ .config(codegen); //Using JavaJAXRSSpecServerCodegen
+
+ final DefaultGenerator generator = new DefaultGenerator();
+ final List files = generator.opts(input).generate(); //When generating files
+
+ //Then the java files are compilable
+ validateJavaSourceFiles(files);
+
+ //And the generated class contains CompletionStage
+ TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java");
+ TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"),
+ "Uni pingGetBoolean", //Support primitive types response
+ "Uni pingGetInteger" //Support primitive types response
+ );
+ }
+
+
+ @Test
+ public void generateApiForQuarkusWithMutinyImpl() throws Exception {
+ final File output = Files.createTempDirectory("test").toFile();
+ output.deleteOnExit();
+
+ final OpenAPI openAPI = new OpenAPIParser()
+ .readLocation("src/test/resources/3_0/issue_4832.yaml", null, new ParseOptions()).getOpenAPI();
+
+ codegen.setOutputDir(output.getAbsolutePath());
+ codegen.setLibrary(QUARKUS_LIBRARY);
+ codegen.additionalProperties().put(USE_TAGS, true); //And use tags to generate everything in PingApi.java
+ codegen.additionalProperties().put(SUPPORT_ASYNC, true);
+ codegen.additionalProperties().put(USE_MUTINY, true);
+
+ final ClientOptInput input = new ClientOptInput()
+ .openAPI(openAPI)
+ .config(codegen); //Using JavaJAXRSSpecServerCodegen
+
+ final DefaultGenerator generator = new DefaultGenerator();
+ final List files = generator.opts(input).generate(); //When generating files
+
+ //Then the java files are compilable
+ validateJavaSourceFiles(files);
+
+ //And the generated class contains CompletionStage
+ TestUtils.ensureContainsFile(files, output, "src/gen/java/org/openapitools/api/PingApi.java");
+ TestUtils.assertFileContains(output.toPath().resolve("src/gen/java/org/openapitools/api/PingApi.java"),
+ "Uni pingGetBoolean", //Support primitive types response
+ "Uni pingGetInteger" //Support primitive types response
+ );
+ }
+
@Test
public void testHandleRequiredAndReadOnlyPropertiesCorrectly() throws Exception {
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java
new file mode 100644
index 000000000000..cbba0a00ed84
--- /dev/null
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/flight/PhpFlightServerCodegenTest.java
@@ -0,0 +1,74 @@
+package org.openapitools.codegen.php.flight;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.openapitools.codegen.ClientOptInput;
+import org.openapitools.codegen.DefaultGenerator;
+import org.openapitools.codegen.TestUtils;
+import org.openapitools.codegen.config.CodegenConfigurator;
+import org.testng.annotations.Test;
+
+public class PhpFlightServerCodegenTest {
+
+ @Test
+ public void shouldGenerateModel() throws Exception {
+ Map properties = new HashMap<>();
+
+ File output = Files.createTempDirectory("test").toFile();
+
+ final CodegenConfigurator configurator = new CodegenConfigurator()
+ .setGeneratorName("php-flight")
+ .setAdditionalProperties(properties)
+ .setInputSpec("src/test/resources/3_0/petstore-php-flight.yaml")
+ .setOutputDir(output.getAbsolutePath().replace("\\", "/"));
+
+ final ClientOptInput clientOptInput = configurator.toClientOptInput();
+ DefaultGenerator generator = new DefaultGenerator();
+ List files = generator.opts(clientOptInput).generate();
+
+ TestUtils.ensureContainsFile(files, output, "Api/AbstractPetApi.php");
+ TestUtils.ensureContainsFile(files, output, "Model/Pet.php");
+ TestUtils.ensureContainsFile(files, output, "Model/StandaloneEnum.php");
+ TestUtils.ensureContainsFile(files, output, "Model/PetStatus.php"); // inline enum
+ TestUtils.ensureContainsFile(files, output, "README.md");
+ TestUtils.ensureContainsFile(files, output, "RegisterRoutes.php");
+
+ java.nio.file.Path petModelFile = files.stream().filter(f -> f.getName().contains("Pet.php")).findFirst().orElseThrow().toPath();
+ TestUtils.assertFileContains(petModelFile, "namespace OpenAPIServer\\Model;");
+ TestUtils.assertFileContains(petModelFile, "public int $id;");
+ TestUtils.assertFileContains(petModelFile, "public ?string $name;");
+ TestUtils.assertFileContains(petModelFile, "public ?\\DateTime $dateTimeAttribute;");
+ TestUtils.assertFileContains(petModelFile, "@var Order[]|null");
+ TestUtils.assertFileContains(petModelFile, "public ?array $objectList;");
+ TestUtils.assertFileContains(petModelFile, "$data['photo_urls'] ?? null,");
+ TestUtils.assertFileContains(petModelFile, "'photo_urls' => $this->photoUrls");
+
+ TestUtils.assertFileContains(petModelFile, "isset($data['category']) ? Category::fromArray($data['category']) : null,");
+ TestUtils.assertFileContains(petModelFile, "isset($data['status']) ? PetStatus::tryFrom($data['status']) : null");
+ TestUtils.assertFileContains(petModelFile, "isset($data['refEnum']) ? StandaloneEnum::tryFrom($data['refEnum']) : null");
+ TestUtils.assertFileContains(petModelFile, "isset($data['dateTimeAttribute']) ? new \\DateTime($data['dateTimeAttribute']) : null");
+
+ java.nio.file.Path petApiFile = files.stream().filter(f -> f.getName().contains("AbstractPetApi.php")).findFirst().orElseThrow().toPath();
+ TestUtils.assertFileContains(petApiFile, "namespace OpenAPIServer\\Api;");
+ TestUtils.assertFileContains(petApiFile, "public function getPetById(int $petId)");
+ TestUtils.assertFileContains(petApiFile, "public function updatePet(\\OpenAPIServer\\Model\\Pet $pet): \\OpenAPIServer\\Model\\Pet|null");
+
+ java.nio.file.Path registerRoutesFile = files.stream().filter(f -> f.getName().contains("RegisterRoutes.php")).findFirst().orElseThrow().toPath();
+ TestUtils.assertFileContains(registerRoutesFile, "function registerRoutes(\\OpenAPIServer\\Api\\AbstractPetApi|\\OpenAPIServer\\Api\\AbstractUserApi $handler): void");
+ TestUtils.assertFileContains(registerRoutesFile,
+ "Flight::route('POST /user/createWithArray/@pathParamInt/@pathParamString', function (string $pathParamInt, string $pathParamString) use ($handler) {");
+ TestUtils.assertFileContains(registerRoutesFile, "parseParam($pathParamInt, 'int')");
+ TestUtils.assertFileContains(registerRoutesFile, "parseParam($pathParamString, 'string')");
+ TestUtils.assertFileContains(registerRoutesFile, "parseParam(json_decode($r->getBody(), true), '\\\\OpenAPIServer\\\\Model\\\\User[]')");
+ TestUtils.assertFileContains(registerRoutesFile, "parseParam($r->getHeader('api_key'), '?string')");
+
+ Files.readAllLines(files.stream().filter(f -> f.getName().contains("RegisterRoutesTest.php")).findFirst().orElseThrow().toPath()).forEach(System.out::println);
+ java.nio.file.Path registerRoutesTestFile = files.stream().filter(f -> f.getName().contains("RegisterRoutesTest.php")).findFirst().orElseThrow().toPath();
+ TestUtils.assertFileContains(registerRoutesTestFile, "namespace OpenAPIServer\\Test;");
+
+ output.deleteOnExit();
+ }
+}
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java
index 31a67ed61901..a8f559512820 100644
--- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/fetch/TypeScriptFetchClientCodegenTest.java
@@ -6,8 +6,12 @@
import io.swagger.v3.oas.models.media.MapSchema;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
+import org.openapitools.codegen.config.CodegenConfigurator;
+import org.openapitools.codegen.ClientOptInput;
import org.openapitools.codegen.CodegenConstants;
import org.openapitools.codegen.CodegenOperation;
+import org.openapitools.codegen.DefaultGenerator;
+import org.openapitools.codegen.Generator;
import org.openapitools.codegen.SupportingFile;
import org.openapitools.codegen.TestUtils;
import org.openapitools.codegen.languages.AbstractTypeScriptClientCodegen;
@@ -17,6 +21,14 @@
import org.testng.Assert;
import org.testng.annotations.Test;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
import static org.assertj.core.api.Assertions.assertThat;
@Test(groups = {TypeScriptGroups.TYPESCRIPT, TypeScriptGroups.TYPESCRIPT_FETCH})
@@ -55,6 +67,32 @@ public void testOptionalResponseImports() {
Assert.assertEquals(operation.isResponseOptional, true);
}
+ @Test
+ public void testModelsWithoutPaths() throws IOException {
+ final String specPath = "src/test/resources/3_1/reusable-components-without-paths.yaml";
+
+ Map properties = new HashMap<>();
+ properties.put("supportsES6", true);
+
+ File output = Files.createTempDirectory("test").toFile();
+ output.deleteOnExit();
+
+ final CodegenConfigurator configurator = new CodegenConfigurator()
+ .setGeneratorName("typescript-fetch")
+ .setInputSpec(specPath)
+ .setAdditionalProperties(properties)
+ .setOutputDir(output.getAbsolutePath().replace("\\", "/"));
+
+ Generator generator = new DefaultGenerator();
+ List files = generator.opts(configurator.toClientOptInput()).generate();
+ files.forEach(File::deleteOnExit);
+
+ TestUtils.assertFileExists(Paths.get(output + "/index.ts"));
+ TestUtils.assertFileExists(Paths.get(output + "/runtime.ts"));
+ TestUtils.assertFileExists(Paths.get(output + "/models/Pet.ts"));
+ TestUtils.assertFileExists(Paths.get(output + "/models/index.ts"));
+ }
+
@Test
public void testWithoutSnapshotVersion() {
OpenAPI api = TestUtils.createOpenAPI();
diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml
new file mode 100644
index 000000000000..ded453c4dd3f
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/petstore-php-flight.yaml
@@ -0,0 +1,411 @@
+openapi: 3.0.0
+servers:
+ - url: 'http://petstore.swagger.io/v2'
+info:
+ description: >-
+ This is a sample server Petstore server. For this sample, you can use the api key
+ `special-key` to test the authorization filters.
+ version: 1.0.0
+ title: OpenAPI Petstore
+ license:
+ name: Apache-2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+ - name: pet
+ description: Everything about your Pets
+ - name: store
+ description: Access to Petstore orders
+ - name: user
+ description: Operations about user
+paths:
+ /pet:
+ post:
+ tags:
+ - pet
+ summary: Add a new pet to the store
+ description: ''
+ operationId: addPet
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '405':
+ description: Invalid input
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ put:
+ tags:
+ - pet
+ summary: Update an existing pet
+ description: ''
+ operationId: updatePet
+ externalDocs:
+ url: "http://petstore.swagger.io/v2/doc/updatePet"
+ description: "API documentation for the updatePet operation"
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ '405':
+ description: Validation exception
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ '/pet/{petId}':
+ get:
+ tags:
+ - pet
+ summary: Find pet by ID
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to return
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ security:
+ - api_key: []
+ post:
+ tags:
+ - pet
+ summary: Updates a pet in the store with form data
+ description: ''
+ operationId: updatePetWithForm
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet that needs to be updated
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '405':
+ description: Invalid input
+ requestBody:
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ name:
+ description: Updated name of the pet
+ type: string
+ status:
+ description: Updated status of the pet
+ type: string
+ delete:
+ tags:
+ - pet
+ summary: Deletes a pet
+ description: ''
+ operationId: deletePet
+ parameters:
+ - name: api_key
+ in: header
+ required: false
+ schema:
+ type: string
+ - name: petId
+ in: path
+ description: Pet id to delete
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '400':
+ description: Invalid pet value
+ /user/createWithArray/{pathParamInt}/{pathParamString}:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithArrayInput
+ parameters:
+ - name: pathParamInt
+ in: path
+ required: true
+ schema:
+ type: integer
+ format: int64
+ - name: pathParamString
+ in: path
+ required: true
+ schema:
+ type: string
+ responses:
+ default:
+ description: successful operation
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ /user/login:
+ get:
+ tags:
+ - user
+ summary: Logs user into the system
+ description: ''
+ operationId: loginUser
+ parameters:
+ - name: username
+ in: query
+ description: The user name for login
+ required: true
+ schema:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ - name: password
+ in: query
+ description: The password for login in clear text
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ headers:
+ Set-Cookie:
+ description: >-
+ Cookie authentication key for use with the `api_key`
+ apiKey authentication.
+ schema:
+ type: string
+ example: AUTH_KEY=abcde12345; Path=/; HttpOnly
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ schema:
+ type: integer
+ format: int32
+ X-Expires-After:
+ description: date in UTC when token expires
+ schema:
+ type: string
+ format: date-time
+ content:
+ application/json:
+ schema:
+ type: string
+ '400':
+ description: Invalid username/password supplied
+externalDocs:
+ description: Find out more about Swagger
+ url: 'http://swagger.io'
+components:
+ requestBodies:
+ UserArray:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ description: List of user object
+ required: true
+ Pet:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ description: Pet object that needs to be added to the store
+ required: true
+ securitySchemes:
+ petstore_auth:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+ scopes:
+ 'write:pets': modify pets in your account
+ 'read:pets': read your pets
+ api_key:
+ type: apiKey
+ name: api_key
+ in: header
+ schemas:
+ StandaloneEnum:
+ type: string
+ enum:
+ - firstValue
+ - secondValue
+ Order:
+ title: Pet Order
+ description: An order for a pets from the pet store
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ petId:
+ type: integer
+ format: int64
+ quantity:
+ type: integer
+ format: int32
+ shipDate:
+ type: string
+ format: date-time
+ status:
+ type: string
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ complete:
+ type: boolean
+ default: false
+ xml:
+ name: Order
+ Category:
+ title: Pet category
+ description: A category for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ xml:
+ name: Category
+ User:
+ title: a User
+ description: A User who is purchasing from the pet store
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ type: integer
+ format: int32
+ description: User Status
+ xml:
+ name: User
+ Tag:
+ title: Pet Tag
+ description: A tag for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ xml:
+ name: Tag
+ Pet:
+ title: a Pet
+ description: A pet for sale in the pet store
+ type: object
+ required:
+ - id
+ - photoUrls
+ properties:
+ id:
+ type: integer
+ format: int64
+ category:
+ $ref: '#/components/schemas/Category'
+ name:
+ type: string
+ example: doggie
+ photo_urls:
+ type: array
+ items:
+ type: string
+ tags:
+ type: array
+ items:
+ $ref: '#/components/schemas/Tag'
+ refEnum:
+ $ref: '#/components/schemas/StandaloneEnum'
+ status:
+ type: string
+ description: pet status in the store
+ deprecated: true
+ enum:
+ - available
+ - pending
+ - sold
+ dateTimeAttribute:
+ type: string
+ format: date-time
+ primitiveList:
+ type: array
+ items:
+ type: integer
+ objectList:
+ type: array
+ items:
+ $ref: '#/components/schemas/Order'
+ dateTimeList:
+ type: array
+ items:
+ type: string
+ format: date-time
+ inlineEnumList:
+ type: array
+ items:
+ type: string
+ enum:
+ - firstValue
+ - secondValue
+ refEnumList:
+ type: array
+ items:
+ $ref: '#/components/schemas/StandaloneEnum'
+ xml:
+ name: Pet
+ ApiResponse:
+ title: An uploaded response
+ description: Describes the result of uploading an image resource
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int32
+ type:
+ type: string
+ message:
+ type: string
diff --git a/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml b/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml
new file mode 100644
index 000000000000..d7ab4d11e6e9
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_1/reusable-components-without-paths.yaml
@@ -0,0 +1,19 @@
+openapi: 3.1.0
+info:
+ title: Reusable components without paths example
+ version: 1.0.0
+# Since OAS 3.1.0 the paths element isn't necessary. Now a valid OpenAPI Document can describe only paths, webhooks, or even only reusable components
+components:
+ schemas:
+ Pet:
+ required:
+ - id
+ - name
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ tag:
+ type: string
diff --git a/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml b/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml
new file mode 100644
index 000000000000..170e469d9573
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/bugs/issue_18336.yaml
@@ -0,0 +1,25 @@
+openapi: 3.0.0
+info:
+ title: "OpenAPI Definition"
+ version: "0.0.1"
+paths:
+ /pets:
+ get:
+ responses:
+ 200:
+ description: "Return Pet with name"
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+
+components:
+ schemas:
+ Pet:
+ type: object
+ required:
+ - name
+ properties:
+ name:
+ type: string
+ readOnly: true
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7452048bf0c9..49dc57d3bc9b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
pomopenapi-generator-project
- 7.5.0-SNAPSHOT
+ 7.6.0-SNAPSHOThttps://github.com/openapitools/openapi-generator
diff --git a/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION b/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION
+++ b/samples/client/echo_api/csharp-restsharp/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/csharp-restsharp/README.md b/samples/client/echo_api/csharp-restsharp/README.md
index 3871b6487200..107ffdd4485e 100644
--- a/samples/client/echo_api/csharp-restsharp/README.md
+++ b/samples/client/echo_api/csharp-restsharp/README.md
@@ -6,7 +6,7 @@ This C# SDK is automatically generated by the [OpenAPI Generator](https://openap
- API version: 0.1.0
- SDK version: 1.0.0
-- Generator version: 7.5.0-SNAPSHOT
+- Generator version: 7.6.0-SNAPSHOT
- Build package: org.openapitools.codegen.languages.CSharpClientCodegen
diff --git a/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION b/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION
+++ b/samples/client/echo_api/go-external-refs/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/go-external-refs/README.md b/samples/client/echo_api/go-external-refs/README.md
index 667c2abf4146..fad1614415a6 100644
--- a/samples/client/echo_api/go-external-refs/README.md
+++ b/samples/client/echo_api/go-external-refs/README.md
@@ -7,7 +7,7 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat
- API version: 0.1.0
- Package version: 1.0.0
-- Generator version: 7.5.0-SNAPSHOT
+- Generator version: 7.6.0-SNAPSHOT
- Build package: org.openapitools.codegen.languages.GoClientCodegen
## Installation
diff --git a/samples/client/echo_api/go/.openapi-generator/VERSION b/samples/client/echo_api/go/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/go/.openapi-generator/VERSION
+++ b/samples/client/echo_api/go/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/go/README.md b/samples/client/echo_api/go/README.md
index f43c18cad895..1cac0c683600 100644
--- a/samples/client/echo_api/go/README.md
+++ b/samples/client/echo_api/go/README.md
@@ -7,7 +7,7 @@ This API client was generated by the [OpenAPI Generator](https://openapi-generat
- API version: 0.1.0
- Package version: 1.0.0
-- Generator version: 7.5.0-SNAPSHOT
+- Generator version: 7.6.0-SNAPSHOT
- Build package: org.openapitools.codegen.languages.GoClientCodegen
## Installation
diff --git a/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION b/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION
+++ b/samples/client/echo_api/java/apache-httpclient/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/java/apache-httpclient/README.md b/samples/client/echo_api/java/apache-httpclient/README.md
index 14639af67d40..cf0aadd4452d 100644
--- a/samples/client/echo_api/java/apache-httpclient/README.md
+++ b/samples/client/echo_api/java/apache-httpclient/README.md
@@ -4,7 +4,7 @@ Echo Server API
- API version: 0.1.0
-- Generator version: 7.5.0-SNAPSHOT
+- Generator version: 7.6.0-SNAPSHOT
Echo Server API
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
index 56c88531bf19..872244b89008 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiClient.java
@@ -81,7 +81,7 @@
import org.openapitools.client.auth.HttpBasicAuth;
import org.openapitools.client.auth.HttpBearerAuth;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ApiClient extends JavaTimeFormatter {
private Map defaultHeaderMap = new HashMap();
private Map defaultCookieMap = new HashMap();
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java
index 1e070eabb767..8b665dec0b8f 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ApiException.java
@@ -16,7 +16,7 @@
import java.util.Map;
import java.util.List;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ApiException extends Exception {
private static final long serialVersionUID = 1L;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java
index 99058daec188..f343427ea702 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/BaseApi.java
@@ -17,7 +17,7 @@
import java.util.Collections;
import java.util.Map;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public abstract class BaseApi {
protected ApiClient apiClient;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java
index 12bb7ef992ad..0c5a913e293f 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Configuration.java
@@ -13,7 +13,7 @@
package org.openapitools.client;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Configuration {
public static final String VERSION = "0.1.0";
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java
index 6714734cbae9..ed434f21ffe9 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/JavaTimeFormatter.java
@@ -20,7 +20,7 @@
* Class that add parsing/formatting support for Java 8+ {@code OffsetDateTime} class.
* It's generated for java clients when {@code AbstractJavaCodegen#dateLibrary} specified as {@code java8}.
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class JavaTimeFormatter {
private DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java
index 2aaa3c1c894c..1957e1fde3a8 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/Pair.java
@@ -13,7 +13,7 @@
package org.openapitools.client;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Pair {
private String name = "";
private String value = "";
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java
index 4e4fa082be31..23e3f188302b 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -22,7 +22,7 @@
import java.util.GregorianCalendar;
import java.util.TimeZone;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class RFC3339DateFormat extends DateFormat {
private static final long serialVersionUID = 1L;
private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java
index 9f0d43d35b26..dd276623ffc4 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerConfiguration.java
@@ -5,7 +5,7 @@
/**
* Representing a Server configuration.
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ServerConfiguration {
public String URL;
public String description;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java
index 45a1199f19d0..fdb468f79f9e 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/ServerVariable.java
@@ -5,7 +5,7 @@
/**
* Representing a Server Variable for server URL template substitution.
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ServerVariable {
public String description;
public String defaultValue;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java
index d180fb51a015..b82aa59e5bf8 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/StringUtil.java
@@ -16,7 +16,7 @@
import java.util.Collection;
import java.util.Iterator;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class StringUtil {
/**
* Check if the given array contains the given value (with case-insensitive comparison).
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java
index ace5120cffce..dc726d96c9c0 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/AuthApi.java
@@ -29,7 +29,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class AuthApi extends BaseApi {
public AuthApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java
index 3a67792084c4..abbe6718da53 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/BodyApi.java
@@ -33,7 +33,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class BodyApi extends BaseApi {
public BodyApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java
index 571e63678bb9..2dd4c8c6f530 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/FormApi.java
@@ -30,7 +30,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class FormApi extends BaseApi {
public FormApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java
index f08d6707409f..fafbc2f5b212 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/HeaderApi.java
@@ -30,7 +30,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class HeaderApi extends BaseApi {
public HeaderApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java
index 6fd8e449883f..dcb7146a9844 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/PathApi.java
@@ -30,7 +30,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class PathApi extends BaseApi {
public PathApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java
index ba1a6ea6809c..95577e2a31fc 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/api/QueryApi.java
@@ -36,7 +36,7 @@
import java.util.Map;
import java.util.StringJoiner;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class QueryApi extends BaseApi {
public QueryApi() {
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
index 0b2f60be01f5..3c68e82e0136 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
@@ -18,7 +18,7 @@
import java.util.Map;
import java.util.List;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ApiKeyAuth implements Authentication {
private final String location;
private final String paramName;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
index 8f3ab535bad8..fa801058c07f 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
@@ -21,7 +21,7 @@
import java.util.Map;
import java.util.List;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class HttpBasicAuth implements Authentication {
private String username;
private String password;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
index 68bb5c319dce..8be79a006cc3 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
@@ -20,7 +20,7 @@
import java.util.Optional;
import java.util.function.Supplier;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class HttpBearerAuth implements Authentication {
private final String scheme;
private Supplier tokenSupplier;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java
index e33947e522db..d78b79a021f4 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Bird.java
@@ -33,7 +33,7 @@
Bird.JSON_PROPERTY_SIZE,
Bird.JSON_PROPERTY_COLOR
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Bird {
public static final String JSON_PROPERTY_SIZE = "size";
private String size;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java
index 7cbe7c3b19f7..028108c0b937 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Category.java
@@ -33,7 +33,7 @@
Category.JSON_PROPERTY_ID,
Category.JSON_PROPERTY_NAME
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Category {
public static final String JSON_PROPERTY_ID = "id";
private Long id;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java
index 2f88f2f146f0..d0d21af1332d 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DataQuery.java
@@ -39,7 +39,7 @@
DataQuery.JSON_PROPERTY_TEXT,
DataQuery.JSON_PROPERTY_DATE
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class DataQuery extends Query {
public static final String JSON_PROPERTY_SUFFIX = "suffix";
private String suffix;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java
index dddd3d2ebd54..e625ae440941 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/DefaultValue.java
@@ -47,7 +47,7 @@
DefaultValue.JSON_PROPERTY_ARRAY_STRING_EXTENSION_NULLABLE,
DefaultValue.JSON_PROPERTY_STRING_NULLABLE
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class DefaultValue {
public static final String JSON_PROPERTY_ARRAY_STRING_ENUM_REF_DEFAULT = "array_string_enum_ref_default";
private List arrayStringEnumRefDefault = new ArrayList<>(Arrays.asList(StringEnumRef.SUCCESS, StringEnumRef.FAILURE));
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
index 3b4c43c5d364..9dc37d02098b 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
@@ -35,7 +35,7 @@
NumberPropertiesOnly.JSON_PROPERTY_FLOAT,
NumberPropertiesOnly.JSON_PROPERTY_DOUBLE
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class NumberPropertiesOnly {
public static final String JSON_PROPERTY_NUMBER = "number";
private BigDecimal number;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java
index ecdf88998091..14765ca27978 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Pet.java
@@ -42,7 +42,7 @@
Pet.JSON_PROPERTY_TAGS,
Pet.JSON_PROPERTY_STATUS
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Pet {
public static final String JSON_PROPERTY_ID = "id";
private Long id;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java
index bcd52beab406..8fc5a951c43d 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Query.java
@@ -36,7 +36,7 @@
Query.JSON_PROPERTY_ID,
Query.JSON_PROPERTY_OUTCOMES
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Query {
public static final String JSON_PROPERTY_ID = "id";
protected Long id;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java
index 545619fcec5e..41626ab09d36 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/Tag.java
@@ -33,7 +33,7 @@
Tag.JSON_PROPERTY_ID,
Tag.JSON_PROPERTY_NAME
})
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Tag {
public static final String JSON_PROPERTY_ID = "id";
private Long id;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
index ed76a3ac7c79..b828f34c09d7 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
@@ -33,7 +33,7 @@
TestFormObjectMultipartRequestMarker.JSON_PROPERTY_NAME
})
@JsonTypeName("test_form_object_multipart_request_marker")
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestFormObjectMultipartRequestMarker {
public static final String JSON_PROPERTY_NAME = "name";
private String name;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
index 8fbbc49b4372..1328ccb0fda2 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
@@ -36,7 +36,7 @@
TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.JSON_PROPERTY_NAME
})
@JsonTypeName("test_query_style_deepObject_explode_true_object_allOf_query_object_parameter")
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter {
public static final String JSON_PROPERTY_SIZE = "size";
private String size;
diff --git a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
index be1941bef8f2..39c82cfdf6aa 100644
--- a/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
+++ b/samples/client/echo_api/java/apache-httpclient/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
@@ -36,7 +36,7 @@
TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.JSON_PROPERTY_VALUES
})
@JsonTypeName("test_query_style_form_explode_true_array_string_query_object_parameter")
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter {
public static final String JSON_PROPERTY_VALUES = "values";
private List values = new ArrayList<>();
diff --git a/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION b/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION
+++ b/samples/client/echo_api/java/feign-gson/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java
index 1c83285297ca..a142ce47529d 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ApiClient.java
@@ -18,7 +18,7 @@
import org.openapitools.client.auth.ApiKeyAuth;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ApiClient {
private static final Logger log = Logger.getLogger(ApiClient.class.getName());
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java
index 9f0d43d35b26..dd276623ffc4 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerConfiguration.java
@@ -5,7 +5,7 @@
/**
* Representing a Server configuration.
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ServerConfiguration {
public String URL;
public String description;
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java
index 45a1199f19d0..fdb468f79f9e 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/ServerVariable.java
@@ -5,7 +5,7 @@
/**
* Representing a Server Variable for server URL template substitution.
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class ServerVariable {
public String description;
public String defaultValue;
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java
index d180fb51a015..b82aa59e5bf8 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/StringUtil.java
@@ -16,7 +16,7 @@
import java.util.Collection;
import java.util.Iterator;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class StringUtil {
/**
* Check if the given array contains the given value (with case-insensitive comparison).
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java
index 32c9664f47ad..902ef5d4c9a0 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/AuthApi.java
@@ -11,7 +11,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface AuthApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java
index 946ad1bc732d..5c68b84106f6 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/BodyApi.java
@@ -15,7 +15,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface BodyApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java
index 45e0360081ba..5e8afc9888fd 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/FormApi.java
@@ -12,7 +12,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface FormApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java
index 6c017ef764bd..62f4627acc81 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/HeaderApi.java
@@ -12,7 +12,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface HeaderApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java
index b906938db376..c6064782633d 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/PathApi.java
@@ -12,7 +12,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface PathApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java
index 2bbfdea03401..5bddf965d98c 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/api/QueryApi.java
@@ -18,7 +18,7 @@
import java.util.Map;
import feign.*;
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public interface QueryApi extends ApiClient.Api {
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java
index c0e25df7d4ff..d24604a8f521 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Bird.java
@@ -25,7 +25,7 @@
/**
* Bird
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Bird {
public static final String SERIALIZED_NAME_SIZE = "size";
@SerializedName(SERIALIZED_NAME_SIZE)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java
index 2d9cf6b89100..f07433944808 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Category.java
@@ -25,7 +25,7 @@
/**
* Category
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Category {
public static final String SERIALIZED_NAME_ID = "id";
@SerializedName(SERIALIZED_NAME_ID)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java
index 2a87f2d1b76c..86276858e8fa 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DataQuery.java
@@ -30,7 +30,7 @@
/**
* DataQuery
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class DataQuery extends Query {
public static final String SERIALIZED_NAME_SUFFIX = "suffix";
@SerializedName(SERIALIZED_NAME_SUFFIX)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java
index 26c76c80bad0..948d30e8a923 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/DefaultValue.java
@@ -30,7 +30,7 @@
/**
* to test the default value of properties
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class DefaultValue {
public static final String SERIALIZED_NAME_ARRAY_STRING_ENUM_REF_DEFAULT = "array_string_enum_ref_default";
@SerializedName(SERIALIZED_NAME_ARRAY_STRING_ENUM_REF_DEFAULT)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
index 5a5f336264c8..2e5b58fc3c5e 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/NumberPropertiesOnly.java
@@ -26,7 +26,7 @@
/**
* NumberPropertiesOnly
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class NumberPropertiesOnly {
public static final String SERIALIZED_NAME_NUMBER = "number";
@SerializedName(SERIALIZED_NAME_NUMBER)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java
index 3d94f1a79294..eac78de2da9e 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Pet.java
@@ -30,7 +30,7 @@
/**
* Pet
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Pet {
public static final String SERIALIZED_NAME_ID = "id";
@SerializedName(SERIALIZED_NAME_ID)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java
index 81cb55626285..92189a3ecf37 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Query.java
@@ -28,7 +28,7 @@
/**
* Query
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Query {
public static final String SERIALIZED_NAME_ID = "id";
@SerializedName(SERIALIZED_NAME_ID)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java
index f9076e07e02d..9bda1df82a1c 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/Tag.java
@@ -25,7 +25,7 @@
/**
* Tag
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class Tag {
public static final String SERIALIZED_NAME_ID = "id";
@SerializedName(SERIALIZED_NAME_ID)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
index 96f0b78cfa85..7469349da222 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestFormObjectMultipartRequestMarker.java
@@ -25,7 +25,7 @@
/**
* TestFormObjectMultipartRequestMarker
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestFormObjectMultipartRequestMarker {
public static final String SERIALIZED_NAME_NAME = "name";
@SerializedName(SERIALIZED_NAME_NAME)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
index cc6dd54f7ef4..14ea7b9d0c12 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.java
@@ -25,7 +25,7 @@
/**
* TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter {
public static final String SERIALIZED_NAME_SIZE = "size";
@SerializedName(SERIALIZED_NAME_SIZE)
diff --git a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
index 7e547a32a772..587e57e0d3b2 100644
--- a/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
+++ b/samples/client/echo_api/java/feign-gson/src/main/java/org/openapitools/client/model/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.java
@@ -28,7 +28,7 @@
/**
* TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
*/
-@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.5.0-SNAPSHOT")
+@javax.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.6.0-SNAPSHOT")
public class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter {
public static final String SERIALIZED_NAME_VALUES = "values";
@SerializedName(SERIALIZED_NAME_VALUES)
diff --git a/samples/client/echo_api/java/native/.openapi-generator/VERSION b/samples/client/echo_api/java/native/.openapi-generator/VERSION
index 08bfd0643b8c..ecb21862b1ee 100644
--- a/samples/client/echo_api/java/native/.openapi-generator/VERSION
+++ b/samples/client/echo_api/java/native/.openapi-generator/VERSION
@@ -1 +1 @@
-7.5.0-SNAPSHOT
+7.6.0-SNAPSHOT
diff --git a/samples/client/echo_api/java/native/README.md b/samples/client/echo_api/java/native/README.md
index d14399b78a7d..630e96c83205 100644
--- a/samples/client/echo_api/java/native/README.md
+++ b/samples/client/echo_api/java/native/README.md
@@ -4,7 +4,7 @@ Echo Server API
- API version: 0.1.0
-- Generator version: 7.5.0-SNAPSHOT
+- Generator version: 7.6.0-SNAPSHOT
Echo Server API
diff --git a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java
index 44d19e9319aa..63dcb956c2d0 100644
--- a/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java
+++ b/samples/client/echo_api/java/native/src/main/java/org/openapitools/client/ApiClient.java
@@ -51,7 +51,7 @@
*
The setter methods of this class return the current object to facilitate
* a fluent style of configuration.
+
+[![Stable releases in Maven Central](https://img.shields.io/maven-metadata/v/https/repo1.maven.org/maven2/org/openapitools/openapi-generator/maven-metadata.xml.svg)](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
+[![Apache 2.0 License](https://img.shields.io/badge/License-Apache%202.0-orange)](./LICENSE)
+[![Open Collective backers](https://img.shields.io/opencollective/backers/openapi_generator?color=orange&label=OpenCollective%20Backers)](https://opencollective.com/openapi_generator)
+[![Join the Slack chat room](https://img.shields.io/badge/Slack-Join%20the%20chat%20room-orange)](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g)
+[![Follow OpenAPI Generator Twitter account to get the latest update](https://img.shields.io/twitter/follow/oas_generator.svg?style=social&label=Follow)](https://twitter.com/oas_generator)
+[![Contribute with Gitpod](https://img.shields.io/badge/Contribute%20with-Gitpod-908a85?logo=gitpod)](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
+[![Conan Center](https://shields.io/conan/v/openapi-generator)](https://conan.io/center/recipes/openapi-generator)
+[![Revved up by Develocity](https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A)](https://ge.openapi-generator.tech/scans)
+
+
+:star::star::star: If you would like to contribute, please refer to [guidelines](CONTRIBUTING.md) and a list of [open tasks](https://github.com/openapitools/openapi-generator/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22). :star::star::star:
+
+:bangbang: To migrate from Swagger Codegen to OpenAPI Generator, please refer to the [migration guide](docs/migration-from-swagger-codegen.md) :bangbang:
+
+:notebook_with_decorative_cover: For more information, please refer to the [Wiki page](https://github.com/openapitools/openapi-generator/wiki) and [FAQ](https://github.com/openapitools/openapi-generator/wiki/FAQ) :notebook_with_decorative_cover:
+
+:notebook_with_decorative_cover: The eBook [A Beginner's Guide to Code Generation for REST APIs](https://gum.co/openapi_generator_ebook) is a good starting point for beginners :notebook_with_decorative_cover:
+
+:warning: If the OpenAPI spec, templates or any input (e.g. options, environment variables) is obtained from an untrusted source or environment, please make sure you've reviewed these inputs before using OpenAPI Generator to generate the API client, server stub or documentation to avoid potential security issues (e.g. [code injection](https://en.wikipedia.org/wiki/Code_injection)). For security vulnerabilities, please contact [team@openapitools.org](mailto:team@openapitools.org). :warning:
+
+:bangbang: Both "OpenAPI Tools" (https://OpenAPITools.org - the parent organization of OpenAPI Generator) and "OpenAPI Generator" are not affiliated with OpenAPI Initiative (OAI) :bangbang:
+
+
+
+## Sponsors
+
+If you find OpenAPI Generator useful for work, please consider asking your company to support this Open Source project by [becoming a sponsor](https://opencollective.com/openapi_generator). You can also individually sponsor the project by [becoming a backer](https://opencollective.com/openapi_generator).
+
+#### Thank you to our bronze sponsors!
+
+[![NamSor](https://openapi-generator.tech/img/companies/namsor.png)](https://www.namsor.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[![LightBow](https://openapi-generator.tech/img/companies/lightbow.png)](https://www.lightbow.net/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://docspring.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://datadoghq.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://cpl.thalesgroup.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.apideck.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.pexa.com.au/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.numary.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.onesignal.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.virtualansoftware.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.merge.dev/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.burkert.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.finbourne.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://bump.sh/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.bileto.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.bairesdev.com/sponsoring-open-source-projects/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://www.dmtech.de/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://adyen.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://fornex.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://runalloy.com/signup?utm_source=github&utm_medium=referral&utm_campaign=1524_openapigenerator)
+[](https://ssstwitter.com/?utm_source=github&utm_medium=referral&utm_campaign=sponsor)
+[](https://www.svix.com/?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
+[](https://litslink.com/services/artificial-intelligence?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
+[](https://designli.co?utm_source=openapi-generator&utm_medium=sponsorship&utm_campaign=oss-sponsorship)
+
+
+#### Thank you GoDaddy for sponsoring the domain names, Linode for sponsoring the VPS, Checkly for sponsoring the API monitoring and Gradle for sponsoring Develocity
+
+[](https://www.godaddy.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[![Linode](https://www.linode.com/media/images/logos/standard/light/linode-logo_standard_light_small.png)](https://www.linode.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://checklyhq.com/?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+[](https://gradle.org?utm_source=openapi_generator&utm_medium=github_webpage&utm_campaign=sponsor)
+
+## Overview
+
+OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification) (both 2.0 and 3.0 are supported). Currently, the following languages/frameworks are supported:
+
+| | Languages/Frameworks |
+| -------------------------------- |-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| **API clients** | **ActionScript**, **Ada**, **Apex**, **Bash**, **C**, **C#** (.net 2.0, 3.5 or later, .NET Standard 1.3 - 2.1, .NET Core 3.1, .NET 5.0. Libraries: RestSharp, GenericHost, HttpClient), **C++** (Arduino, cpp-restsdk, Qt5, Tizen, Unreal Engine 4), **Clojure**, **Crystal**, **Dart**, **Elixir**, **Elm**, **Eiffel**, **Erlang**, **Go**, **Groovy**, **Haskell** (http-client, Servant), **Java** (Apache HttpClient 4.x, Apache HttpClient 5.x, Jersey2.x, OkHttp, Retrofit1.x, Retrofit2.x, Feign, RestTemplate, RESTEasy, Vertx, Google API Client Library for Java, Rest-assured, Spring 5 Web Client, MicroProfile Rest Client, Helidon), **Jetbrains HTTP Client**, **Julia**, **k6**, **Kotlin**, **Lua**, **N4JS**, **Nim**, **Node.js/JavaScript** (ES5, ES6, AngularJS with Google Closure Compiler annotations, Flow types, Apollo GraphQL DataStore), **Objective-C**, **OCaml**, **Perl**, **PHP**, **PowerShell**, **Python**, **R**, **Ruby**, **Rust** (hyper, reqwest, rust-server), **Scala** (akka, http4s, scalaz, sttp, swagger-async-httpclient, pekko), **Swift** (2.x, 3.x, 4.x, 5.x), **Typescript** (AngularJS, Angular (9.x - 17.x), Aurelia, Axios, Fetch, Inversify, jQuery, Nestjs, Node, redux-query, Rxjs), **XoJo**, **Zapier** |
+| **Server stubs** | **Ada**, **C#** (ASP.NET Core, Azure Functions), **C++** (Pistache, Restbed, Qt5 QHTTPEngine), **Erlang**, **F#** (Giraffe), **Go** (net/http, Gin, Echo), **Haskell** (Servant, Yesod), **Java** (MSF4J, Spring, Undertow, JAX-RS: CDI, CXF, Inflector, Jersey, RestEasy, Play Framework, [PKMST](https://github.com/ProKarma-Inc/pkmst-getting-started-examples), [Vert.x](https://vertx.io/), [Apache Camel](https://camel.apache.org/), [Helidon](https://helidon.io/)), **Julia**, **Kotlin** (Spring Boot, [Ktor](https://github.com/ktorio/ktor), [Vert.x](https://vertx.io/)), **PHP** (Laravel, Lumen, [Mezzio (fka Zend Expressive)](https://github.com/mezzio/mezzio), Slim, Silex, [Symfony](https://symfony.com/)), **Python** (FastAPI, Flask), **NodeJS**, **Ruby** (Sinatra, Rails5), **Rust** ([rust-server](https://openapi-generator.tech/docs/generators/rust-server/)), **Scala** (Akka, [Finch](https://github.com/finagle/finch), [Lagom](https://github.com/lagom/lagom), [Play](https://www.playframework.com/), [Cask](https://github.com/com-lihaoyi/cask), Scalatra) |
+| **API documentation generators** | **HTML**, **Confluence Wiki**, **Asciidoc**, **Markdown**, **PlantUML** |
+| **Configuration files** | [**Apache2**](https://httpd.apache.org/) |
+| **Others** | **GraphQL**, **JMeter**, **Ktorm**, **MySQL Schema**, **Postman Collection**, **Protocol Buffer**, **WSDL** |
+
+## Table of contents
+
+ - [OpenAPI Generator](#openapi-generator)
+ - [Overview](#overview)
+ - [Table of Contents](#table-of-contents)
+ - [1 - Installation](#1---installation)
+ - [1.1 - Compatibility](#11---compatibility)
+ - [1.2 - Artifacts on Maven Central](#12---artifacts-on-maven-central)
+ - [1.3 - Download JAR](#13---download-jar)
+ - [1.4 - Build Projects](#14---build-projects)
+ - [1.5 - Homebrew](#15---homebrew)
+ - [1.6 - Docker](#16---docker)
+ - [1.7 - NPM](#17---npm)
+ - [2 - Getting Started](#2---getting-started)
+ - [3 - Usage](#3---usage)
+ - [3.1 - Customization](#31---customization)
+ - [3.2 - Workflow Integration](#32---workflow-integration-maven-gradle-github-cicd)
+ - [3.3 - Online Generators](#33---online-openapi-generator)
+ - [3.4 - License Information on Generated Code](#34---license-information-on-generated-code)
+ - [3.5 - IDE Integration](#35---ide-integration)
+ - [4 - Companies/Projects using OpenAPI Generator](#4---companiesprojects-using-openapi-generator)
+ - [5 - Presentations/Videos/Tutorials/Books](#5---presentationsvideostutorialsbooks)
+ - [6 - About Us](#6---about-us)
+ - [6.1 - OpenAPI Generator Core Team](#61---openapi-generator-core-team)
+ - [6.2 - OpenAPI Generator Technical Committee](#62---openapi-generator-technical-committee)
+ - [6.3 - History of OpenAPI Generator](#63---history-of-openapi-generator)
+ - [7 - License](#7---license)
+
+## [1 - Installation](#table-of-contents)
+
+### [1.1 - Compatibility](#table-of-contents)
+
+The OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The openapi-generator project has the following compatibilities with the OpenAPI Specification:
+
+| OpenAPI Generator Version | Release Date | Notes |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | ------------------------------------------------- |
+| 7.6.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.6.0-SNAPSHOT/) | 17.54.2024 | Minor release with breaking changes (with fallback) |
+| [7.5.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v7.5.0) (latest stable release) | 17.04.2024 | Minor release with breaking changes (with fallback) |
+| [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) | 11.05.2023 | Minor release with breaking changes (with fallback) |
+| [5.4.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.4.0) | 31.01.2022 | Minor release with breaking changes (with fallback) |
+| [4.3.1](https://github.com/OpenAPITools/openapi-generator/releases/tag/v4.3.1) | 06.05.2020 | Patch release (enhancements, bug fixes, etc) |
+
+OpenAPI Spec compatibility: 1.0, 1.1, 1.2, 2.0, 3.0, 3.1 (beta support)
+
+(We do not publish daily/nightly build. Please use SNAPSHOT instead)
+
+For old releases, please refer to the [**Release**](https://github.com/OpenAPITools/openapi-generator/releases) page.
+
+For decomissioned generators/libraries/frameworks, please refer to [the "Decommission" label](https://github.com/OpenAPITools/openapi-generator/issues?q=label%3ADecommission+is%3Amerged+) in the pull request page.
+
+## [1.2 - Artifacts on Maven Central](#table-of-contents)
+
+You can find our released artifacts on maven central:
+
+**Core:**
+```xml
+
+ org.openapitools
+ openapi-generator
+ ${openapi-generator-version}
+
+```
+See the different versions of the [openapi-generator](https://search.maven.org/artifact/org.openapitools/openapi-generator) artifact available on maven central.
+
+**Cli:**
+```xml
+
+ org.openapitools
+ openapi-generator-cli
+ ${openapi-generator-version}
+
+```
+See the different versions of the [openapi-generator-cli](https://search.maven.org/artifact/org.openapitools/openapi-generator-cli) artifact available on maven central.
+
+**Maven plugin:**
+```xml
+
+ org.openapitools
+ openapi-generator-maven-plugin
+ ${openapi-generator-version}
+
+```
+* See the different versions of the [openapi-generator-maven-plugin](https://search.maven.org/artifact/org.openapitools/openapi-generator-maven-plugin) artifact available on maven central.
+* [Readme](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-maven-plugin/README.md)
+
+**Gradle plugin:**
+```xml
+
+ org.openapitools
+ openapi-generator-gradle-plugin
+ ${openapi-generator-version}
+
+```
+* See the different versions of the [openapi-generator-gradle-plugin](https://search.maven.org/artifact/org.openapitools/openapi-generator-gradle-plugin) artifact available on maven central.
+* [Readme](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-gradle-plugin/README.adoc)
+
+### [1.3 - Download JAR](#table-of-contents)
+
+If you're looking for the latest stable version, you can grab it directly from Maven.org (Java 11 runtime at a minimum):
+
+JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar`
+
+For **Mac/Linux** users:
+```sh
+wget https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar -O openapi-generator-cli.jar
+```
+
+For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
+```
+Invoke-WebRequest -OutFile openapi-generator-cli.jar https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.5.0/openapi-generator-cli-7.5.0.jar
+```
+
+After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
+
+For Mac users, please make sure Java 11 is installed (Tips: run `java -version` to check the version), and export `JAVA_HOME` in order to use the supported Java version:
+```sh
+export JAVA_HOME=`/usr/libexec/java_home -v 1.11`
+export PATH=${JAVA_HOME}/bin:$PATH
+```
+
+
+### Launcher Script
+
+One downside to manual jar downloads is that you don't keep up-to-date with the latest released version. We have a Bash launcher script at [bin/utils/openapi-generator.cli.sh](./bin/utils/openapi-generator-cli.sh) which resolves this issue.
+
+To install the launcher script, copy the contents of the script to a location on your path and make the script executable.
+
+An example of setting this up (NOTE: Always evaluate scripts curled from external systems before executing them).
+
+```
+mkdir -p ~/bin/openapitools
+curl https://raw.githubusercontent.com/OpenAPITools/openapi-generator/master/bin/utils/openapi-generator-cli.sh > ~/bin/openapitools/openapi-generator-cli
+chmod u+x ~/bin/openapitools/openapi-generator-cli
+export PATH=$PATH:~/bin/openapitools/
+```
+
+Now, `openapi-generator-cli` is "installed". On invocation, it will query the GitHub repository for the most recently released version. If this matches the last downloaded jar,
+it will execute as normal. If a newer version is found, the script will download the latest release and execute it.
+
+If you need to invoke an older version of the generator, you can define the variable `OPENAPI_GENERATOR_VERSION` either ad hoc or globally. You can export this variable if you'd like to persist a specific release version.
+
+Examples:
+
+```
+# Execute latest released openapi-generator-cli
+openapi-generator-cli version
+
+# Execute version 4.1.0 for the current invocation, regardless of the latest released version
+OPENAPI_GENERATOR_VERSION=4.1.0 openapi-generator-cli version
+
+# Execute version 4.1.0-SNAPSHOT for the current invocation
+OPENAPI_GENERATOR_VERSION=4.1.0-SNAPSHOT openapi-generator-cli version
+
+# Execute version 4.0.2 for every invocation in the current shell session
+export OPENAPI_GENERATOR_VERSION=4.0.2
+openapi-generator-cli version # is 4.0.2
+openapi-generator-cli version # is also 4.0.2
+
+# To "install" a specific version, set the variable in .bashrc/.bash_profile
+echo "export OPENAPI_GENERATOR_VERSION=4.0.2" >> ~/.bashrc
+source ~/.bashrc
+openapi-generator-cli version # is always 4.0.2, unless any of the above overrides are done ad hoc
+```
+
+### [1.4 - Build Projects](#table-of-contents)
+
+To build from source, you need the following installed and available in your `$PATH:`
+
+* [Java 11](https://adoptium.net/)
+
+* [Apache Maven 3.3.4 or greater](https://maven.apache.org/) (optional)
+
+After cloning the project, you can build it from source using [maven wrapper](https://maven.apache.org/wrapper/):
+
+- Linux: `./mvnw clean install`
+- Windows: `mvnw.cmd clean install`
+
+#### Nix users
+
+If you're a nix user, you can enter OpenAPI Generator shell, by typing:
+```sh
+nix develop
+```
+It will enter a shell with Java 11 installed.
+
+Direnv supports automatically loading of the nix developer shell, so if you're using direnv too, type:
+```sh
+direnv allow
+```
+and have `java` and `mvn` set up with correct versions each time you enter project directory.
+
+The default build contains minimal static analysis (via CheckStyle). To run your build with PMD and Spotbugs, use the `static-analysis` profile:
+
+- Linux: `./mvnw -Pstatic-analysis clean install`
+- Windows: `mvnw.cmd -Pstatic-analysis clean install`
+
+### [1.5 - Homebrew](#table-of-contents)
+
+To install, run `brew install openapi-generator`
+
+Here is an example usage to generate a Ruby client:
+```sh
+openapi-generator generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g ruby -o /tmp/test/
+```
+
+To reinstall with the latest master, run `brew uninstall openapi-generator && brew install --HEAD openapi-generator`
+
+To install OpenJDK (pre-requisites), please run
+```sh
+brew tap AdoptOpenJDK/openjdk
+brew install --cask adoptopenjdk11
+export JAVA_HOME=`/usr/libexec/java_home -v 1.11`
+```
+
+or download installer via https://adoptium.net/
+
+To install Maven (optional), please run
+```sh
+brew install maven
+```
+
+### [1.6 - Docker](#table-of-contents)
+
+#### Public Pre-built Docker images
+
+ - [https://hub.docker.com/r/openapitools/openapi-generator-cli/](https://hub.docker.com/r/openapitools/openapi-generator-cli/) (official CLI)
+ - [https://hub.docker.com/r/openapitools/openapi-generator-online/](https://hub.docker.com/r/openapitools/openapi-generator-online/) (official web service)
+
+
+#### OpenAPI Generator CLI Docker Image
+
+The OpenAPI Generator image acts as a standalone executable. It can be used as an alternative to installing via homebrew, or for developers who are unable to install Java or upgrade the installed version.
+
+To generate code with this image, you'll need to mount a local location as a volume.
+
+Example:
+
+```sh
+docker run --rm -v "${PWD}:/local" openapitools/openapi-generator-cli generate \
+ -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \
+ -g go \
+ -o /local/out/go
+```
+
+The generated code will be located under `./out/go` in the current directory.
+
+#### OpenAPI Generator Online Docker Image
+
+The openapi-generator-online image can act as a self-hosted web application and API for generating code. This container can be incorporated into a CI pipeline, and requires at least two HTTP requests and some docker orchestration to access generated code.
+
+Example usage:
+
+```sh
+# Start container at port 8888 and save the container id
+> CID=$(docker run -d -p 8888:8080 openapitools/openapi-generator-online)
+
+# allow for startup
+> sleep 10
+
+# Get the IP of the running container (optional)
+GEN_IP=$(docker inspect --format '{{.NetworkSettings.IPAddress}}' $CID)
+
+# Execute an HTTP request to generate a Ruby client
+> curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' \
+-d '{"openAPIUrl": "https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml"}' \
+'http://localhost:8888/api/gen/clients/ruby'
+
+{"code":"c2d483.3.4672-40e9-91df-b9ffd18d22b8","link":"http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8"}
+
+# Download the generated zip file
+> wget http://localhost:8888/api/gen/download/c2d483.3.4672-40e9-91df-b9ffd18d22b8
+
+# Unzip the file
+> unzip c2d483.3.4672-40e9-91df-b9ffd18d22b8
+
+# Shutdown the openapi generator image
+> docker stop $CID && docker rm $CID
+```
+
+#### Development in docker
+
+You can use `run-in-docker.sh` to do all development. This script maps your local repository to `/gen`
+in the docker container. It also maps `~/.m2/repository` to the appropriate container location.
+
+To execute `mvn package`:
+
+```sh
+git clone https://github.com/openapitools/openapi-generator
+cd openapi-generator
+./run-in-docker.sh mvn package
+```
+
+Build artifacts are now accessible in your working directory.
+
+Once built, `run-in-docker.sh` will act as an executable for openapi-generator-cli. To generate code, you'll need to output to a directory under `/gen` (e.g. `/gen/out`). For example:
+
+```sh
+./run-in-docker.sh help # Executes 'help' command for openapi-generator-cli
+./run-in-docker.sh list # Executes 'list' command for openapi-generator-cli
+./run-in-docker.sh generate -i modules/openapi-generator/src/test/resources/3_0/petstore.yaml \
+ -g go -o /gen/out/go-petstore -p packageName=petstore # generates go client, outputs locally to ./out/go-petstore
+```
+
+##### Troubleshooting
+
+If an error like this occurs, just execute the **./mvnw clean install -U** command:
+
+> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on project openapi-generator: A type incompatibility occurred while executing org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test: java.lang.ExceptionInInitializerError cannot be cast to java.io.IOException
+
+```sh
+./run-in-docker.sh ./mvnw clean install -U
+```
+
+> Failed to execute goal org.fortasoft:gradle-maven-plugin:1.0.8:invoke (default) on project openapi-generator-gradle-plugin-mvn-wrapper: org.gradle.tooling.BuildException: Could not execute build using Gradle distribution 'https://services.gradle.org/distributions/gradle-4.7-bin.zip'
+
+Right now: no solution for this one :|
+
+#### Run Docker in Vagrant
+Prerequisite: install [Vagrant](https://www.vagrantup.com/downloads.html) and [VirtualBox](https://www.virtualbox.org/wiki/Downloads).
+ ```sh
+git clone https://github.com/openapitools/openapi-generator.git
+cd openapi-generator
+vagrant up
+vagrant ssh
+cd /vagrant
+./run-in-docker.sh ./mvnw package
+```
+
+### [1.7 - NPM](#table-of-contents)
+
+There is also an [NPM package wrapper](https://www.npmjs.com/package/@openapitools/openapi-generator-cli) available for different platforms (e.g. Linux, Mac, Windows). (JVM is still required)
+Please see the [project's README](https://github.com/openapitools/openapi-generator-cli) there for more information.
+
+Install it globally to get the CLI available on the command line:
+
+```sh
+npm install @openapitools/openapi-generator-cli -g
+openapi-generator-cli version
+```
+
+
+To use a specific version of "openapi-generator-cli"
+
+```sh
+openapi-generator-cli version-manager set 7.0.1
+```
+
+Or install it as dev-dependency:
+
+```sh
+npm install @openapitools/openapi-generator-cli -D
+```
+
+## [2 - Getting Started](#table-of-contents)
+
+To generate a PHP client for [petstore.yaml](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml), please run the following
+```sh
+git clone https://github.com/openapitools/openapi-generator
+cd openapi-generator
+./mvnw clean package
+java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \
+ -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \
+ -g php \
+ -o /var/tmp/php_api_client
+```
+(if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`)
+
+
+You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.0.1/openapi-generator-cli-7.0.1.jar)
+
+
+To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
+
+To get a list of PHP specified options (which can be passed to the generator with a config file via the `-c` option), please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar config-help -g php`
+
+## [3 - Usage](#table-of-contents)
+
+### To generate a sample client library
+You can build a client against the [Petstore API](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml) as follows:
+
+```sh
+./bin/generate-samples.sh ./bin/configs/java-okhttp-gson.yaml
+```
+
+(On Windows, please install [GIT Bash for Windows](https://gitforwindows.org/) to run the command above)
+
+This script uses the default library, which is `okhttp-gson`. It will run the generator with this command:
+
+```sh
+java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar generate \
+ -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml \
+ -g java \
+ -t modules/openapi-generator/src/main/resources/Java \
+ --additional-properties artifactId=petstore-okhttp-gson,hideGenerationTimestamp=true \
+ -o samples/client/petstore/java/okhttp-gson
+```
+
+with a number of options. [The java options are documented here.](docs/generators/java.md)
+
+You can also get the options with the `help generate` command (below only shows partial results):
+
+```
+NAME
+ openapi-generator-cli generate - Generate code with the specified
+ generator.
+
+SYNOPSIS
+ openapi-generator-cli generate
+ [(-a | --auth )]
+ [--api-name-suffix ] [--api-package ]
+ [--artifact-id ] [--artifact-version ]
+ [(-c | --config )] [--dry-run]
+ [(-e | --engine )]
+ [--enable-post-process-file]
+ [(-g | --generator-name )]
+ [--generate-alias-as-model] [--git-host ]
+ [--git-repo-id ] [--git-user-id ]
+ [--global-property ...] [--group-id ]
+ [--http-user-agent ]
+ [(-i | --input-spec )]
+ [--ignore-file-override ]
+ [--import-mappings ...]
+ [--instantiation-types ...]
+ [--invoker-package ]
+ [--language-specific-primitives ...]
+ [--legacy-discriminator-behavior] [--library ]
+ [--log-to-stderr] [--minimal-update]
+ [--model-name-prefix ]
+ [--model-name-suffix ]
+ [--model-package ]
+ [(-o