* [python-nextgen] fix template to make auto-generated example runnable when spec has no auth methods
* update samples with ./bin/generate-samples.sh
* add unit test code
* [REQ] Add equals and hashcode to java-cxf pojo #12519
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* [Java] Use abstraction for files for jaxrs-cxf #8792
* fix sample
* fix sample
---------
Co-authored-by: FWermelskirchen <fwermelskirchen@eitco.de>
* [java] Fix template logic related to supportUrlQuery
Generated models for arrays marked with uniqueItems: true (which end up as a Set<> in java) won't
compile because the templates are in some places using .get(i) on the sets.
Also, when the supportUrlQuery property is present in the additionalProperties map the
resulting value will be read using the key SUPPORT_STREAMING instead of 'supportUrlQuery'.
* fix NPE
Co-authored-by: Björgvin <bjorgvino@gmail.com>
* Currently, if a Model is an allOf the time and os imports are not correctly added to the generated file. This was introduced recently with a fix to not include those imports when the model is a composedSchema #13833. The logic in that fix was just slightly off as an allOf should be treated the same as a standard model.
If a model is an AllOf or does not have any composed schemas at all, the sub-models are in-lined defined in the struct. In this case, the standard logic of including the time and os imports apply.
If a model is a OneOf or AnyOf, the sub-models are included as pointers to the defined model. In this case, do not include those items in the logic of including time and os imports.
* Update example to include a time in an allOf
* Add back the accidentally removed nil check
* Use correct Pascal case for java enum
* Uniquely name @Bean annotations
* Use existing mustache var instead, run generate files
* rebase, re-run generators
* try to undo botched rebase/merge
* Attempt to manually undo whatever is going on w/ build, oops
* Attempt to manually undo whatever is going on w/ build, oops
* Change the return type of a file back to a pointer
* Change the api template to handle not double pointer-ing return types of os.File
* Fix unit tests
* Couple more unit test fixes
* fix depricated @Schema(required) since swagger 2.2.5
* use same swagger-annotations version which is used by swagger-core which is a dependency of springdoc
* generated java sampes
* If the collection type is csv, that means 'dont explode the query params'.
* Simplify the logic just a tad
* url.Values -> Has was added in go1.17 but there are CI tests running at 1.16
* [kotlin][client] add info if endpoints requires authentication or not
* [kotlin][client] update sample projects
* [kotlin][client] add info if endpoints requires authentication or not
* [kotlin][client] update sample projects
* add workflow to test java apache client with jdk8
* fix url encode issue with jdk8
* update samples
* minor improvements in java native client
* minor fix
* Added additional documentation for configuration object
* Regenerate samples
* Added exemplary usage of API to README.md
* Updated README, refined wording
* Added example for calling the API
* Regenerated samples
* Updated samples
* Add async `execute` interface
* Update samples
Run `./bin/generate-samples.sh`
* Add an explicit `self`
I forgot to add it
* Add an availability condition
* Add support of AWSV4 Signature in Java
* Add Petstore sample for AWSV4 Signature
* Update other sample examples
* Sync Documentation and sample
* Specify only available for okhttp-gson in doc
* #14141 Add externalDocs to @Operation to the JavaSpring generator
* #14141 Add externalDocs to @Operation to the JavaSpring generator : fix mustache template with #hasExternalDocs
* #14141 Add externalDocs to @Operation to the JavaSpring generator: fix indentation
* #14141 Add externalDocs to @Operation to the JavaSpring generator: fix carriage return
* #14141 Add externalDocs to @Operation to the JavaSpring generator: regenerate the spring-boot-oas3.yaml sample
* #14141 Add externalDocs to @Operation to the JavaSpring generator: generate-samples.sh
* #14141 Add externalDocs to @Operation to the JavaSpring generator: remove hasExternalDocs
* Fix ExternalDocumentation import generation and order
* #14141 Add externalDocs to @Operation to the JavaSpring generator: generate-samples.sh
* Fix#14276 Java Templates uses jakarta or javax package if useJakartaEe
is true
* generated samples after useJakartaEe changes
* generated docs after useJakartaEe changes
* Fix swapped operators
Signed-off-by: Tom Hörberg <tom@hoerberg.de>
* add conversion to support non-string params
Signed-off-by: Tom Hörberg <tom@hoerberg.de>
* Provide better fix for nonstring url param values
Signed-off-by: Tom Hörberg <tom@hoerberg.de>
* Updated python-nextgen sample files
Signed-off-by: Tom Hörberg <tom@hoerberg.de>
Signed-off-by: Tom Hörberg <tom@hoerberg.de>
* update openapi-generator dep
* update dep, fix tests with new spec
* update kotlin version
* revert cafferine version
* add back testng version and scope
* [rust] Fix declaration for arrays with object and array references
For arrays with an item defined by reference to an array or an object,
the generated type declaration was `Vec<core::models::Array>` or
`Vec<core::models::Map>` without defining a `Array` or `Map` so that the
code didn't compile.
* [rust] Fix trailing whitespace in petstore definition
When sending a request with a client generated by typescript-nestjs, the
default headers are modified. This occurs when headers such as "Accept"
are appended by the client.
The root of the issue is that a reference to the default headers is
stored instead of a clone.
* Enable the ruby client to support refreshing access tokens
- The client can now be configured with an access token getter proc
- The proc overrides the the static access token if it is set
* Run generators
* Update Java/Feign api.mustache to accept convinience Map
Hi, I just saw, that the generated Map Class is never used outside of tests, but it would be the perfect fit for the changed mehods, as its use-case is exactly the same.
Also a useful change to prevent problems with Collection types and their generics parameters (f.e. Map<x, y>). See: https://stackoverflow.com/questions/62823341/openapi-generator-maven-plugin-breaks-old-feign-with-querymap
* PR checklist
Steps as requested per checklist: done.
* Supporting Gson decoder in Feign
* Supporting Gson decoder in Feign
* Fixing test failures - and ensuring Jackson is used as the default if nothing selected (back compatible)
* Adding in sample files
* Updating docs
* Switching to echo server version
* Adding feign-gson to the github workflow
* Empty-Commit
* Add support for Angular v15
Support for:
- rxjs 7.5.5
- ngPackagr 15.0.2
- zonejs 0.11.5
- typescript >=4.8.2 and <4.10.0
Note that tsTickle is not added to the dependencies when generating for
Angular 15, as:
- it is not a real dependency
- tsTickle is compatible with any of the TypeScript versions that
Angular 15 supports.
* Generate samples for Angular v15
- typescript-angular-v15-provided-in-root
- typescript-angular-v15-query-param-object-format
* Drop sample typescript-angular-v15-query-param-object-format
* Fix typo
* Add tests for sample
Use credentials instead of api_key to avoid deprecation warnings when
initialising ConfigurationParameters.
* Update samples/client/petstore/typescript-angular-v15-provided-in-root/package.json
* Fix tests by removing context initialisation
Also updated the test dependencies.
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
* Changes manually cherry-picked (for the most part) from https://github.com/OpenAPITools/openapi-generator/pull/12685/files
* Examples updated post changes
* Missed a change in the mustache template
* Update examples after last fix
* Missed dereference for required files
* Update unit tests
* Missed another test case update
* `f := *f` isn't quite the same as `*f, err = ...`
* Fix response type to be Response or undefined
Current generated code produces a `response` variable set to undefined, and TS does not like you changing the type of the variable later. Therefore, set the type of the variable to be `Response` or `undefined`
Solves OpenAPITools/openapi-generator#12007
* Update samples
* clean up shippable ci related config and files
* comment out closeAndReleaseRepository
* Revert "comment out closeAndReleaseRepository"
This reverts commit 5a76e403b1.
* remove closeAndReleaseRepository
* Upgrade Gradle plugin Gradle build to Gradle 7.5.1
* Update Travis workflow file to support new tasks
* Update Maven POM with Gradle 7.5.1
* Capitalize many occurrences of "Gradle" in the Gradle plugin README
* Update Gradle version in appveyor.yml and shippable.yml
* Update comments
* Update Gradle wrapper to 7.5.1
* Capitalize Gradle in shippable.yml
* Leave Open API
* Upgrade Gradle plugin build to Gradle 7.6
* Upgrade wrapper to Gradle 7.6
* multiple use of parameters in deepobjects
* fix java native
* support camelCase
* revert modifying baseName because it is not used anymore
* remove commented line
When fromOperation(...) was called before fromModel, the aliases were uninitialized.
(cherry picked from commit 44ea23168362cfacf8a61ff944701990cf3fea76)
Co-authored-by: Clemens Heppner <ch@wps.de>
* fix documentation
* improve build.gradle.mustache and pom.xml.mustache to assume different serialization libs jackson or micronaut-serde-jackson
* improve pojo.mustache to skip generating @JsonDeserialize as for micronaut-serde-jackson
* improve model generating by removing visible flag from @JsonTypeInfo as it is not supported by micronaut-serde-jackson
Co-authored-by: dmitry.kubakhov <dmitry.kubakhov@check24.de>
This change has no functional impact. In my view, `pathlib` has a more
pleasant API than `os.path`. Incidentally, this slightly reduces line
count.
cc @spacether
* modify Alamofire version in podspec
* modify Alamofire version in Package.swift
* also pin optimistically in Cartfile
* optimistically resolve all other dependencies to next major version
* Add args to reserved words
* arg and args to _arg and _args in templates
* Corrections
* Test added
* Corrections
* Use arg and args as defined properties
* Removed unnecessary assertion
* Suggested change
* add isEnumRef to codegen property
* better format
* update R template to use isEnumOrRef
* update powershell template to use isEnumOrRef
* update samples
The if not passed the models create a new configuration object which
configures logging and determines cpu count every time.
This causes extreme performance issues when deserializing larger sets of
items.
See also
https://github.com/kubernetes-client/python/issues/1921
* use replace instead of replaceAll
* avoid using instance to accessd static methods
* use entrySet instead of keySet
* use statis class instead of instance for static method
* update samples
Added Twilio to "Companies/Projects using OpenAPI Generator"
https://github.com/twilio/twilio-oai-generator will soon be used to generate all of our helper libraries (currently used for twilio-go)!
* Add modification to petstore yaml to support testing enum string resolve. Move csharp-netcore-net50 to point to new yaml schema.
* [csharp-netcore] - For enum's with an EnumMember Attribute use this value instead of enum.ToString().
-Regenerate csharp samples to accomodate change.
* fix: rebase on master. Update samples.
* task (Samples): update csharp-netcore samples. (via generate-samples.sh)
Updating the OAuth2 client (although obsolete, it's still productive in openapi-generator) due to security problems related to the underlying libraries
* sonatype-2022-3061
* sonatype-2012-0050
Update pom.mustache
* Initial version of Kotlin Vert.x client
* Initial version of Kotlin Vert.x client
* Initial version of Kotlin Vert.x client
* Fix for parseDateToQueryString issue in vert.x kotlin client
* Moved common methods from api to ApiClient in kotlin vert.x client
* Fixed issue with absolute URLs
* bearer auth for oauth
* empty request headers fix
* missing import and typo
* added uri template dependency
* added api abstractions to client generator
* added full import form infrastructure
* removed fail on unknown properties to response body parsing
* fixed error response parsing
* replace vertx client name to more unique
* multiline content type
* optional responses added to template
* additional annotations for kotlin client
* Added additionalModelTypeAnnotations parameter support to AbstractKotlinCodegen
* Updated samples and documents
* Fixed issues with gson and moshi serializers with kotlin-jvm-vertx client
* Added sample configs for kotlin-jvm-vertx clients with gson, jackson and moshi
* Added samples for kotlin-jvm-vertx clients with gson, jackson and moshi
* Included kotlin-jvm-vertx samples to test build
* Updated samples
Co-authored-by: Katja Danilova <katja.danilova@protonmail.com>
* update echo to newer version
* add github workflow
* minor fix
* add install
* go get
* install middleware
* test go api server
* trigger build
* test go-api-server
* Revert "test go api server"
This reverts commit 42f24e578f.
* Revert "Revert "test go api server""
This reverts commit 7ce773275b.
* update samples
* test go gin in github workflow
* go install
* Revert "go install"
This reverts commit ec099b48c1.
* Revert "test go gin in github workflow"
This reverts commit 120516856e.
* remove go api, echo server tests
* fix for issue #13722: send body for application/x-www-form-urlencoded data
* fix python test_application_x_www_form_urlencoded_serialization
* x-www-form-urlencoded data needs to be percent encoded
* add verification endpoint test for x-www-form-urlencoded data
Co-authored-by: David Chaiken <dchaiken@pinterest.com>
* fix html encoded backticks when a modal contains reserved words
* Revert "fix html encoded backticks when a modal contains reserved words"
This reverts commit d2e4d5c780.
* fix html encoded backticks when a modal contains reserved words
* Add cacheability tests for same directory and different directory
(cherry picked from commit 46c96daf3b020ab02e13113166046d2383c04990)
* Clean up/add more cacheability tests
(cherry picked from commit 5d09d914ba7224b82dd7a3bd20beaf2b6fd3eb94)
* Add test for inputSpec
(cherry picked from commit 8d9e0dbb9d865ad3e61b60692b3ef6ca85b70b75)
* Add incremental build tests, run with multiple Gradle versions
(cherry picked from commit ba1d554c375068974d1799d6be6731ca1d59a783)
* Add proper Input annotations to task inputs
(cherry picked from commit 18da6161ba2b406876c516a3059850d9a0bc9ca0)
* Perform clean on tests where expectation is cleaned outputs
(cherry picked from commit 4670db92686c02d5dd2b69976488c33defd3a464)
* Ensure before & after files are the same
(cherry picked from commit 9150b4a5596b229a4404a92cfedbb795c6bb5b0d)
* delete and build samples
* how did this not get committed?
* how did this not get committed?
* how did this not get committed?
* fixed csharp netcore functions
* reverted two files
* restored manually created tests
* reverted some unintentional changes
* restored unintended changes
* Process api_test.mustache
* Create api_test.mustache
* Add test and helper method
* Commit all (re)generated files
* Commit all (re)generated files
* Fix indentation
* Fixing to use equalsNullable when nullable set in config for SpringCodeGen
* Adding additional test case file
* removed print statement from SpringCodeGen
* Updated model object
* Corrected indentation and removed import
* Fixed broken test
* Updating sample
* fix: remove option supportPython2.
[python-flask][python-aiohttp][python-blueplanet]
* fix: update samples
* test only python servers
* fix(tests): downgrade pytest version to ensure compatibility with python3.6 [python-flask][python-aiohttp]
* Revert "fix(tests): downgrade pytest version to ensure compatibility with python3.6 [python-flask][python-aiohttp]"
This reverts commit 9f47db2f87.
* test in circlei
* run commands directly
* test in node 1
* update makefile
* fix Makefile
* fix test
* revert some changes, remove python server tests from travis
Co-authored-by: Kevin Bannier <kevinbannier1@gmail.com>
* generate a RestResourceRoot with a string constant holding the jax-rs resource root to be used in the @ApplicationPath annotation to make it easier for people, who want to write their own jax-rs Application class
* build and update samples as per PR guide
* renamed introduced constant from ROOT to APPLICATION_PATH to make its use more obvious
* JS add oneOf support
* add validate json method
* add oneOf support to JS client
* update samples
* add todo in anyof
* switch to composed.oneOf
* update oneOf to support primitive types
* update messages
* minor fix, add more tests
* update samples
* fix npe in from model
* fix syntax error in length check
* update samples
* restore js tests
* test only js in circleci
* trigger build failure
* Revert "trigger build failure"
This reverts commit 7e8c34e823.
* Revert "test only js in circleci"
This reverts commit e261429339.
* add discriminator property, mapping
* add discriminator, mapping support to R client generator
* add discriminator, mapping support to R client genrator httr library
* fixed data type for maps
* fighting line endings
* fighting line endings
* removed commented code
* reverted unintended line break
* reverted unintended line break
* reverted unintended line break
While working with the Magento 2.4 API definition, there were several
issues found. The easiest to resolve is a documentation naming issue.
(The others will be raised for discussion.)
This is known to be an issue with query parameters, but may not be
limited to *just* query parameters.
In the event that a parameter is a mix of arrays and objects, the
template in the documentation for the API function was expanding out the
parameter name such that `foo[0]` would be turned into
`:foo_left_square_bracket0_right_square_bracket`, but the actual
parameter name was being left as `:foo[0]`, which meant that the
documentation did not reflect the actual parameter.
> Note: there are issues with the way that query parameters are put
> together in this sense, which is going to require substantially more
> work to resolve as well as discussion on how these options should be
> implemented, as what the Magento API requires may not be what is
> expected by a different server, and the nature of the input parameters
> is itself incorrect.
* [PHP] Bugfix - model_generic.mustache: missing setter for openAPINullabelsSetToNull (which is invoked in the property setters)
* [AUTOGENERATED] update samples
* [PHP] Added test for nullable fields
* Improves docs generation
* Adds inline composed schemas
* Adds missing from property
* Adds notes info
* Fixes spacing
* Updates notes, generates container properties
* Adds anchors to property schema docs
* Adds format info to docs
* Adds items schema documentation
* Adds doc for additionalProperties
* Adds anchors for response types
* Fixes anchors in endpoint
* Fixes api doc link to model doc
* Removes returnType from api docs because it is unused
* Fixes float and double tests
* [typescript-angular] Update api template to use HttpClient#request instead of its http-method-specific wrappers
* update expected output for integration tests
* regenerate samples
* use .yaml instead of .yml
This is recommended by Symfony standards
* save Bundle files also to src path
* add test for generate ping
* add package imports
* fix expected file names
* why is Api/ApiServer.php missing
* output filenames
* use getAbsolutePath for debug purpose
* do not use punctuation as current directory
* refactor: remove todos
* use also .yaml in test to fix it
* add test for setting a different source directory
* use correct const for setting source dir property in tests
* import the AbstractPhpCodegen in test class
* put also Resources to source path
* save docs not to Resources
* update samples and improve src path in autoload.php and composer.json
* update moved samples
* Better control of when to write MetaOapg
* Makes MetaOapg in Schema a type hint rather than assignmnet
* Samples regenerated
* Adds tuple types
* Removes types info
* Adds _types
* Samples regenerated
* Adds missing mixins, samples regenerated
* SchemaTypeChecker removed
* Samples regnerated
* fix(typescript-fetch): Handle cors errors.
If there is a communication error,
e.g. an OPTIONS request returns 404 not found,
then the whole request is cancelled and there is no
response object (it is undefined).
I observed the following error:
TypeError: Cannot read properties of undefined (reading 'status')
Basically response was undefined.
In order to circumvent this issue, we do a check
to make sure response is "truthy", which works
for objects.
With these code changes, it will throw a ResponseError,
which is what you would expect instead of a TypeError.
* regenerate typescript-fetch stuff
* retry code generation
Co-authored-by: Joe Heyming <jheyming@Roblox.com>
* [python-experimental] Enhance octet-stream deserialization
When the headers didn't provide the filename, use the url of response to
extract filename.
* [python-experimental] Remove todo comment.
* [python-experimental] Fix test code.
* Update samples
* [python-experimental] Refined the method and the test
+ Early return when the url is empty or `None`.
+ Removed unused f-string prefix.
* [python-experimental] Comapre url is None explicitly.
* Update samples.
* Further Elixir Client Improvements
Resolves#12731 and is the completion of the work that I started with
#12751.
The changes here are extensive and likely resolve an issue that I have
seen with the Ory SDK (ory/sdk#194). I have also been unable to run the
integration suite for Elixir as I am (trying) to run everything in
Docker (`./run-in-docker.sh`) as I *do not* have a suitable Java
development environment set up, and do not do enough Java work to really
justify it.
- Updated the README for Elixir projects. Aside from some improved
readability of the template by use of link references instead of
inline links, I have also fixed the examples:
- The `deps` example should have been putting a version constraint
related to `appVersion`.
- The `config` example should have been using `packageName` instead of
`appName`. This particular issue repeats.
- In all Elixir files:
- Changed the function `@docs` formatting:
- changed the ehading level for `Parameters` and `Returns` to h3
(`###` instead of `##`). This will make somewhat better looking
documentation that does not over-emphasize these details (which
are *not* documented in a normal Elixir way, but this is somewhat
to be expected with a code generator.) It may be desirable, after
testing, to change this to `h4` instead of `h3`.
- Put parameter names and most return types in in-line code blocks
(`` `hello` ``).
- Put return types, when there are multiple types, in a Markdown
list.
- Fixed a lot of the spacing. Most files will be *closer* to Elixir
standard formatting than they were. Because of the limitations of
Mustache, it is still recommended that people who generate Elixir
clients run `mix format` at least once on their codebase.
- `api.mustache`:
- Removed an awkward function pipeline call. If we specified at least
Elixir 1.12 (something that I do not recommend as we have recently
jumped from requiring Elixir 1.6 to Elixir 1.10), there is a better
way to specify this now with `Kernel.then/2`. In the meantime,
assigning the constructed request structure to a variable and then
making a separate pipeline for the request execution and handling
makes for *much* easier to read generated code.
- Fixed the extra space issue with `evaluate_response` call tuple
values; `{{=<% %>=}}` changes the tag types, so this change is
intentional.
- In `config.exs.mustache`, `runtime.exs.mustache`, `mix.exs.mustache`,
and `connection.ex.mustache`, use `packageName` instead of `appName`
for configuration specification. If `packageName` and `appName`
differed, we would end up with cases like ory/sdk#194.
- `connection.ex.mustache` has been almost entirely rewritten. The
changes started in order to eliminate a `@doc` compile-time warning,
but shifted to remove the old way of building Tesla client structs
with `use Tesla`. It works, but is no longer the recommended way of
building Tesla clients.
- The *recommended* way of building a Tesla Client would now be
`Tesla.client(Connection.middleware(), Connection.adapter())`.
- Exposed both `Connection.adapter/0` and `Connection.middleware/1`
for use. `Connection.middleware/1` has special handling for the
cases where OAuth2 or HTTP Basic Auth are defined in the
application, but do not currently handle any other auth methods.
- `deserializer.ex.mustache` has mostly been reformatted. There are
things that I do not like about it (I do not like pipelines with one
line), and I have expanded one function capture into an anonymous
function for readability.
- `request_builder.ex.mustache` has been updated with better
function and parameter descriptions and names. Please note that if
`request |> method(:delete) |> method(:post)` is supposed to produce
a `POST` operation, we will need to change from `Map.put_new/3` to
`Map.put/3`.
- Reordered `evaluate_response/2` so that it is the function documented,
and made `decode/2` and `response_mapping/3` private functions. As
far as I can tell, I have *not* changed the functionality.
* Address issues found in code review
- The example dependency code in the README had dropped the opening
brace for the tuple. This has been resolved.
- The default formatting of the API pipelines has been adjusted to
minimize possible changes from `mix format`.
* Update modules/openapi-generator/src/main/resources/elixir/api.mustache
Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache
Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/elixir/connection.ex.mustache
Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
* Update templates based on review comments
Co-authored-by: Michael Ramstein <633688+mrmstn@users.noreply.github.com>
These must match the expectations made by your contribution.
You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/configs/java*`.
For Windows users, please run the script in [Git BASH](https://gitforwindows.org/).
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (6.1.0) (minor release - breaking changes with fallbacks), `7.0.x` (breaking changes without fallbacks)
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (6.3.0) (minor release - breaking changes with fallbacks), `7.0.x` (breaking changes without fallbacks)
- [ ] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22) [](./LICENSE) [](https://opencollective.com/openapi_generator) [](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g) [](https://twitter.com/oas_generator) [](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g)
[](https://twitter.com/oas_generator)
[](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
| 7.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.0.0-SNAPSHOT/) | Feb/Mar 2023 | Major release with breaking changes (no fallback) |
| 6.1.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.1.0-SNAPSHOT/) | 03.08 2022 | Minor release with breaking changes (with fallback) |
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.
(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`)
<!-- RELEASE_VERSION -->
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.0.1/openapi-generator-cli-6.0.1.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/6.2.1/openapi-generator-cli-6.2.1.jar)
<!-- /RELEASE_VERSION -->
To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
@@ -582,6 +591,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Arduino](https://www.arduino.cc/)
- [b<>com](https://b-com.com/en)
- [百度营销](https://e.baidu.com)
- [Bandwidth](https://dev.bandwidth.com)
- [Banzai Cloud](https://banzaicloud.com)
- [BIMData.io](https://bimdata.io)
- [Bithost GmbH](https://www.bithost.ch)
@@ -680,6 +690,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [TribalScale](https://www.tribalscale.com)
- [Trifork](https://trifork.com)
- [TUI InfoTec GmbH](http://www.tui-infotec.com/)
- [Twilio](https://www.twilio.com/)
- [Twitter](https://twitter.com)
- [unblu inc.](https://www.unblu.com/)
- [Veamly](https://www.veamly.com/)
@@ -867,9 +878,20 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2022-06-01 - [API First, using OpenAPI and Spring Boot](https://medium.com/xgeeks/api-first-using-openapi-and-spring-boot-2602c04bb0d3) by [Micael Estrázulas Vianna](https://estrazulas.medium.com/)
- 2022-07-01 - [Generate API contract using OpenAPI Generator Maven plugin](https://huongdanjava.com/generate-api-contract-using-openapi-generator-maven-plugin.html) by [Khanh Nguyen](https://huongdanjava.com/)
- 2022-07-22 - [使用OpenAPI Generator Maven plugin开发api优先的java客户端和服务端代码](https://blog.roccoshi.top/2022/java/openapi-generator%E7%9A%84%E4%BD%BF%E7%94%A8/) by [Lincest](https://github.com/Lincest)
- 2022-08-01 - [Tutorial: Etsy Open API v3 (ruby)](https://blog.tjoyal.dev/etsy-open-api-v3/) by [Thierry Joyal](https://github.com/tjoyal)
- 2022-09-03 - [OpenAPI Generator For Go Web Development](https://blog.kevinhu.me/2022/09/03/03-openapi-generator/) by [Kevin Hu](https://twitter.com/Oldgunix)
- 2022-10-01 - [OpenAPI Generatorをカスタマイズしたコードを生成する(Swagger Codegenとほぼ同じ)](https://nainaistar.hatenablog.com/entry/2022/10/03/120000) by [きり丸](https://twitter.com/nainaistar)
- 2022-10-21 - [Kotlin(Spring Boot)の API を OpenAPI Generator で自動生成](https://zenn.dev/msksgm/articles/20221021-kotlin-spring-openapi-generator) by [msksgm](https://zenn.dev/msksgm)
- 2022-11-28 - [The REST API implementation flow](https://tmsvr.com/openapi-code-generation-for-rest-apis/) by [Imre Tömösvári](https://tmsvr.com/author/imre/)
- 2022-12-13 - [API-First with Spring WebFlux and OpenAPI Generator](https://boottechnologies-ci.medium.com/api-first-with-spring-webflux-and-openapi-generator-38b7804c4ed4) by [Eric Anicet](https://boottechnologies-ci.medium.com/)
## [6 - About Us](#table-of-contents)
What's the design philosophy or principle behind OpenAPI Generator?
We focus on developer experience. The generators should produce code, config, documentation, and more that are easily understandable and consumable by users. We focused on simple use cases to start with (bottom-up approach). Since then the project and the community have grown a lot: 300k weekly downloads via NPM CLI wrapper, 20M downloads via openapi-generator-cli docker image just to highlight a few. We've gradually supported more features (e.g. oneOf, anyOf introduced in OpenAPI 3.0) in various generators and we will continue this approach to deliver something based on our understanding of user demand and what they want, and continue to add support of new features introduced in OpenAPI specification (such as v3.1 and future versions of the OpenAPI specification).
OpenAPI Generator core team members are contributors who have been making significant contributions (review issues, fix bugs, make enhancements, etc) to the project on a regular basis.
@@ -933,6 +955,7 @@ Here is a list of template creators:
* Java (Rest-assured): @viclovsky
* Java (Java 11 Native HTTP client): @bbdouglas
* Java (Apache HttpClient): @harrywhite4
* Java (Helidon): @spericas@tjquinno@tvallin
* Javascript/NodeJS: @jfiala
* JavaScript (Apollo DataSource): @erithmetic
* JavaScript (Closure-annotated Angular) @achew22
@@ -1000,6 +1023,7 @@ Here is a list of template creators:
gradleProperties:"\n# JVM arguments\norg.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m\n# set timeout\norg.gradle.daemon.idletimeout=3600000\n# show all warnings\norg.gradle.warning.mode=all"
@@ -56,7 +56,7 @@ The above configuration will do the following:
* Compile a user-provided `my_custom_templates/api_interfaces.mustache` following our usual API template compilation logic. That is, one file will be created per API; APIs are generated defined according to tags in your spec documentation. The destination filename of `Interface.kt` will act as a suffix for the filename. So, a tag of `Equipment` will output a corresponding `EquipmentInterface.kt`.
* Because `api.mustache` is the same mustache filename as used in your target generator (`kotlin` in this example), we support the following:
- The destination filename provides a suffix for the generated output. APIs generate per tag in your specification. So, a tag of `Equipment` will output a corresponding `EquipmentImpl.kt`. This option will be used whether `api.mustache` targets a user customized template or a built-in template.
- The built-in template will be used if you haven't provided an customized template. The kotlin generator defines the suffix as simply `.kt`, so this scenario would modify only the generated file suffixes according to the previous bullet point.
- The built-in template will be used if you haven't provided a customized template. The kotlin generator defines the suffix as simply `.kt`, so this scenario would modify only the generated file suffixes according to the previous bullet point.
- Your `api.mustache` will be used if it exists in your custom template directory. For generators with library options, such as `jvm-okhttp3` in the kotlin generator, your file must exist in the same relative location as the embedded template. For kotlin using the `jvm-okhttp3` library option, this file would need to be located at `my_custom_templates/libraries/jvm-okhttp/api.mustache`. See [templating](./templating.md) for more details.
* Compile `my_custom_templates/other/check.mustache` with the supporting files bundle, and output to `scripts/check.sh` in your output directory. Note that we don't currently support setting file flags on output, so scripts such as these will either have to be sourced rather than executed, or have file flags set separately after generation (external to our tooling).
@@ -169,7 +169,7 @@ If you publish your artifact to a distant maven repository, do not forget to add
You may not want to generate *all* models in your project. Likewise, you may want just one or two apis to be written. If that's the case, you can use system properties or [global properties](./global-properties.md) to control the output.
The default is generate *everything* supported by the specific library. Once you enable a feature, it will restrict the contents generated:
The default is to generate *everything* supported by the specific library. Once you enable a feature, it will restrict the contents generated:
```sh
# generate only models
@@ -397,7 +397,7 @@ or
## Schema Mapping
One can map the schema to someting else (e.g. external objects/models outside of the package) using the `schemaMappings` option, e.g. in CLI
One can map the schema to something else (e.g. external objects/models outside of the package) using the `schemaMappings` option, e.g. in CLI
Inline schemas are created as separate schemas automatically and the auto-generated schema name may not look good to everyone. One can customize the name using the `title` field or the `inlineSchemaNameMapping` option, e.g. in CLI
Inline schemas are created as separate schemas automatically and the auto-generated schema name may not look good to everyone. One can customize the name using the `title` field or the `inlineSchemaNameMapping` option. For exmaple, run the following,
[main] INFO o.o.codegen.InlineModelResolver - Inline schema created as arbitraryObjectRequestBodyProperty_request. To have complete control of the model name, set the `title` field or use the inlineSchemaNameMapping option (--inline-schema-name-mappings in CLI).
[main] INFO o.o.codegen.InlineModelResolver - Inline schema created as meta_200_response. To have complete control of the model name, set the `title` field or use the inlineSchemaNameMapping option (--inline-schema-name-mappings in CLI).
```
For example, to name the inline schema `meta_200_response` as `MetaObject`, use the `--inline-schema-name-mappings` option as follows:
Note: Only arrayItemSuffix, mapItemSuffix are supported at the moment.
Note: Only arrayItemSuffix, mapItemSuffix are supported at the moment. `SKIP_SCHEMA_REUSE=true` is a special value to skip reusing inline schemas.
## OpenAPI Normalizer
OpenAPI Normalizer (off by default) transforms the input OpenAPI doc/spec (which may not perfectly conform to the specification) to make it workable with OpenAPI Generator. Here is a list of rules supported:
- `REF_AS_PARENT_IN_ALLOF`: when set to `true`, child schemas in `allOf` is considered a parent if it's a `$ref` (instead of inline schema).
- `REMOVE_ANYOF_ONEOF_AND_KEEP_PROPERTIES_ONLY`: when set to `true`, oneOf/anyOf schema with only required properies only in a schema with properties will be removed. [(example)](modules/openapi-generator/src/test/resources/3_0/removeAnyOfOneOfAndKeepPropertiesOnly_test.yaml)
@@ -24,6 +24,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|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.|<dl><dt>**false**</dt><dd>No changes to the enum's are made, this is the default option.</dd><dt>**true**</dt><dd>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.</dd></dl>|false|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C#have this enabled by default).|<dl><dt>**true**</dt><dd>The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document.</dd><dt>**false**</dt><dd>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.</dd></dl>|true|
|moduleName|module name (e.g. TwitterClient| |OpenAPIClient|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|shardAuthor|shard author (only one is supported).| |null|
|shardAuthorEmail|shard author email (only one is supported).| |null|
@@ -42,7 +42,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|releaseNote|Release note, default to 'Minor update'.| |Minor update|
|returnICollection|Return ICollection<T> instead of the concrete type.| |false|
|sourceFolder|source folder for generated code| |src|
|targetFramework|The target .NET framework version. To target multiple frameworks, use `;` as the separator, e.g. `netstandard2.1;netcoreapp3.1`|<dl><dt>**netstandard1.3**</dt><dd>.NET Standard 1.3 compatible</dd><dt>**netstandard1.4**</dt><dd>.NET Standard 1.4 compatible</dd><dt>**netstandard1.5**</dt><dd>.NET Standard 1.5 compatible</dd><dt>**netstandard1.6**</dt><dd>.NET Standard 1.6 compatible</dd><dt>**netstandard2.0**</dt><dd>.NET Standard 2.0 compatible</dd><dt>**netstandard2.1**</dt><dd>.NET Standard 2.1 compatible</dd><dt>**netcoreapp3.1**</dt><dd>.NET Core 3.1 compatible</dd><dt>**net47**</dt><dd>.NET Framework 4.7 compatible</dd><dt>**net5.0**</dt><dd>.NET 5.0 compatible</dd><dt>**net6.0**</dt><dd>.NET 6.0 compatible</dd></dl>|netstandard2.0|
|targetFramework|The target .NET framework version. To target multiple frameworks, use `;` as the separator, e.g. `netstandard2.1;netcoreapp3.1`|<dl><dt>**netstandard1.3**</dt><dd>.NET Standard 1.3 compatible</dd><dt>**netstandard1.4**</dt><dd>.NET Standard 1.4 compatible</dd><dt>**netstandard1.5**</dt><dd>.NET Standard 1.5 compatible</dd><dt>**netstandard1.6**</dt><dd>.NET Standard 1.6 compatible</dd><dt>**netstandard2.0**</dt><dd>.NET Standard 2.0 compatible</dd><dt>**netstandard2.1**</dt><dd>.NET Standard 2.1 compatible</dd><dt>**netcoreapp3.1**</dt><dd>.NET Core 3.1 compatible (End of Support 13 Dec 2022)</dd><dt>**net47**</dt><dd>.NET Framework 4.7 compatible</dd><dt>**net48**</dt><dd>.NET Framework 4.8 compatible</dd><dt>**net6.0**</dt><dd>.NET 6.0 compatible</dd><dt>**net7.0**</dt><dd>.NET 7.0 compatible</dd></dl>|netstandard2.0|
|useCollection|Deserialize array types to Collection<T> instead of List<T>.| |false|
|useDateTimeOffset|Use DateTimeOffset to model date-time properties| |false|
|useOneOfDiscriminatorLookup|Use the discriminator's mapping in oneOf to speed up the model lookup. IMPORTANT: Validation (e.g. one and only one match in oneOf's schemas) will be skipped.| |false|
@@ -20,12 +20,14 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| ------ | ----------- | ------ | ------- |
|additionalEnumTypeAnnotations|Additional annotations for enum type(class level annotations)| |null|
|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|additionalOneOfTypeAnnotations|Additional annotations for oneOf interfaces(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|apiPackage|package for generated api classes| |org.openapitools.api|
|artifactId|artifactId in generated pom.xml. This also becomes part of the generated library's filename| |openapi-groovy|
|artifactVersion|artifact version in generated pom.xml. This also becomes part of the generated library's filename| |1.0.0|
|bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false|
|camelCaseDollarSign|Fix camelCase when starting with $ sign. when true : $Value when false : $value| |false|
|dateLibrary|Option. Date library to use|<dl><dt>**joda**</dt><dd>Joda (for legacy app only)</dd><dt>**legacy**</dt><dd>Legacy java.util.Date</dd><dt>**java8-localdatetime**</dt><dd>Java 8 using LocalDateTime (for legacy app only)</dd><dt>**java8**</dt><dd>Java 8 native JSR310 (preferred for jdk 1.8+)</dd></dl>|legacy|
|developerEmail|developer email in generated pom.xml| |team@openapitools.org|
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
@@ -61,6 +63,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sourceFolder|source folder for generated code| |src/main/groovy|
|testOutput|Set output folder for models and APIs tests| |${project.build.directory}/generated-test-sources/openapi|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|withXml|whether to include support for application/xml content type and include XML annotations in the model (works with libraries that provide support for JSON and XML)| |false|
@@ -20,6 +20,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
| ------ | ----------- | ------ | ------- |
|additionalEnumTypeAnnotations|Additional annotations for enum type(class level annotations)| |null|
|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|additionalOneOfTypeAnnotations|Additional annotations for oneOf interfaces(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|annotationLibrary|Select the complementary documentation annotation library.|<dl><dt>**none**</dt><dd>Do not annotate Model and Api with complementary annotations.</dd><dt>**swagger1**</dt><dd>Annotate Model and Api using the Swagger Annotations 1.x library.</dd><dt>**swagger2**</dt><dd>Annotate Model and Api using the Swagger Annotations 2.x library.</dd></dl>|swagger2|
|apiFirst|Generate the API from the OAI spec at server compile time (API first approach)| |false|
@@ -32,12 +33,13 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|basePackage|base package (invokerPackage) for generated code| |org.openapitools|
|bigDecimalAsString|Treat BigDecimal values as Strings to avoid precision loss.| |false|
|camelCaseDollarSign|Fix camelCase when starting with $ sign. when true : $Value when false : $value| |false|
|camelDataformatProperties|list of dataformat properties separated by comma (propertyName1=propertyValue2,...| ||
|camelRestBindingMode|binding mode to be used by the REST consumer| |auto|
|camelRestClientRequestValidation|enable validation of the client request to check whether the Content-Type and Accept headers from the client is supported by the Rest-DSL configuration| |false|
|camelRestComponent|name of the Camel component to use as the REST consumer| |servlet|
|configPackage|configuration package for generated code| |org.openapitools.configuration|
|dateLibrary|Option. Date library to use|<dl><dt>**joda**</dt><dd>Joda (for legacy app only)</dd><dt>**legacy**</dt><dd>Legacy java.util.Date</dd><dt>**java8-localdatetime**</dt><dd>Java 8 using LocalDateTime (for legacy app only)</dd><dt>**java8**</dt><dd>Java 8 native JSR310 (preferred for jdk 1.8+)</dd></dl>|java8|
@@ -73,6 +75,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|performBeanValidation|Use Bean Validation Impl. to perform BeanValidation| |false|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|reactive|wrap responses in Mono/Flux Reactor types (spring-boot only)| |false|
|requestMappingMode|Where to generate the class level @RequestMapping annotation.|<dl><dt>**api_interface**</dt><dd>Generate the @RequestMapping annotation on the generated Api Interface.</dd><dt>**controller**</dt><dd>Generate the @RequestMapping annotation on the generated Api Controller Implementation.</dd><dt>**none**</dt><dd>Do not add a class level @RequestMapping annotation.</dd></dl>|controller|
|responseWrapper|wrap the responses in given type (Future, Callable, CompletableFuture,ListenableFuture, DeferredResult, RxObservable, RxSingle or fully qualified type)| |null|
|returnSuccessCode|Generated server returns 2xx code| |false|
|scmConnection|SCM connection in generated pom.xml| |scm:git:git@github.com:openapitools/openapi-generator.git|
@@ -90,8 +93,9 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|unhandledException|Declare operation methods to throw a generic exception and allow unhandled exceptions (useful for Spring `@ControllerAdvice` directives).| |false|
|useBeanValidation|Use BeanValidation API annotations| |true|
|useFeignClientUrl|Whether to generate Feign client with url parameter.| |true|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|useOptional|Use Optional container for optional parameters| |false|
|useSpringBoot3|Generate code and provide dependencies for use with Spring Boot 3.x. (Use jakarta instead of javax in imports).| |true|
|useSpringBoot3|Generate code and provide dependencies for use with Spring Boot 3.x. (Use jakarta instead of javax in imports). Enabling this option will also enable `useJakartaEe`.| |false|
|useSpringController|Annotate the generated API as a Spring Controller| |false|
|useSwaggerUI|Open the OpenApi specification in swagger-ui. Will also import and configure needed dependencies| |true|
|useTags|use tags for creating interface and controller classnames| |false|
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.