* [Go] return errors that happen while unmarshalling objects
* Update model samples
* More updates to samples
* Update failing Go store API test to match the one that passes
* add nullable case to spring test spec
* generate samples for changed spring input
* add nullable case to general test spec
* generate samples for changed general input
* generate samples again
* generates samples again
* re-build from new sources, generates samples again
The added option removes the wrapper part of build.gradle, enabling the generated project to be used as a sub project. The same option from kotlin client was used as reference for this change.
This patch fixes two issues with the Resteasy generated client code.
The first is the usage of a deprecated method, getFormData. The fix for
this issue was originally conceived by @peter-seitz.
The second issue was a problem in how the Content-Disposition header was
being constructed. If we had a file named "test.txt" and were uploading
it to a field named "myFile", the Content-Disposition header should look
like
Content-Disposition: form-data; name="myFile"
Instead, the code was using the file's name (rather than the field name)
in the name directive and the header looked like
Content-Disposition: form-data; name="test.txt"
The Content-Disposition header can take an optional directive, filename,
but I have not included that here as that directive is mostly useful for
file downloads and not uploads.
Descriptions can easily exceed line-length limits because they are often
extracted from doc/comments strings, which may use unexpected formatting.
Python doc strings, in particular, are likely to use newlines, which mustache
does not preserve, causing descriptions to be condensed to a single line.
* [Ruby] Test correct escaping of pattern sequences
Ruby is not correctly escaping pattern sequences containing forward
slashes in their definition. This commit adds tests that verify the
correct behaviour of the code generator.
See issue #5582.
* [Ruby] Correctly escape patterns containing forward slashes
Ruby regexs are always generated as match patterns enclosed in slash
characters (i.e. using the `/pattern/` syntax). Regular expressions
defined in the OpenAPI declaration via the `pattern` attribute follow
[ECMA 262](https://262.ecma-international.org/5.1/#sec-15.10.1) which
means they already include the correct escaping of forward slashes as
far as Ruby is concerned.
The current Ruby codegen is incorrectly escaping all forward slashes,
which ultimately causes the generated code to include additional
incorrect escape sequences which cause the generated file to have an
invalid syntax.
This commit ports the same fix introduced in #1539 for the Python
codegen, as both Ruby and Python use perl-flavored regular expressions
so they behave in the same way when it comes to escaping forward
slashes.
Fixes#5582.
* started source generator
* copy the options
* fixed visibility
* added new sample
* discarded changes to existing samples
* discarded changes to existing samples
* build new sample
* changed package name due to file path length limit
* reverted changes to manual tests
* fixed all new manual tests
* inject contexts into api
* only one JsonConstructor
* fixed spacing
* revert samples for easier merge master
* revert unnecessary change
* fixed formatting
* build samples
* reverting unintended commit
* fixing default value
* reverting unintended commit
* move minor formatting changes to different pr
* php-nextgen first commit
* [php] Set minimal PHP version to ^8.0 (#14500)
* Set minimal PHP version to ^8.0
* Fix php-nextgen config
* Change stability to BETA
* Add phplint package (#15054)
* [php-nextgen] Rename folders to follow PDS skeleton (#15102)
* Change lib -> src, test -> tests folder
This will make build compliant to PHP-PDS skeleton.
Ref: https://github.com/php-pds/skeleton
* Refresh samples
* Exclude composer.lock from codebase (#15105)
Since client generator is library and not a project it makes sense
to exclude composer.lock from codebase by default.
Ref: http://getcomposer.org/doc/02-libraries.md#lock-file
* Add @generated tag to DocBlocks (#15106)
This tag in draft status right now(PSR-19), but I think we can leverage
from it already.
Ref: https://github.com/php-fig/fig-standards/blob/master/proposed/phpdoc-tags.md#55-generated
* update samples, doc
* update samples
---------
Co-authored-by: Yuriy Belenko <yura-bely@mail.ru>
* python: several typing and style improvements
The generated (python) code fails with several standard validation tools,
including `flake8`, `mypy`, and `autoflake`. While fixing every possible
violation -- especially wrto typing -- woudl be a project, some of the
changes are fairly easy.
- The `autoflake` tool picks up on unused imports. These can just be removed.
- The `mypy` tool picks up on numerious typing violations, especially if set
to its strictest mode. As a starting point, all functions ought to annotate
a return type, including constructors, even if the return type is `None`
because otherwise the functions are omitted from type checking and it's
impossible to make incremental progress towards adding types.
- The `flake8` tool mostly finds whitespace and line-length issues; while
line-length standards very, the source already includes several flake8
ignores, so it seems safe to add a few more.
* Add generated files
* Restore imports used by `AbstractPythonCodegen.java`
* Update generated files
* bug: python client generator didn't respect range response specification (e.g. "1XX", "2XX", etx.). Return values tended to become None as a result
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* fix cast exception when handling uuid example/default
* more cast exception fix
* better fix in example generator
* better code format
* better code format
* make Java imports overridable
* fix for other dateLibraries
* complete core fix
* adapt test - step 1/2
* add unit test
* adapt test - step 2/2
* remove accidentally added file
* final small clean-up
* fix: Using Map.Entry to avoid "reference to Entry is ambiguous"
when spec defines a model Entry it conflicts. Also rest of mustache
uses Map.Entry to matching it
* fix: Map.Entry - update samples
* regenerate tests in jersey2-java8 client
* update samples
* fix java google api client tests
* update java resteasy to use v3 spec for tests
* update java vertx to test with v3 spec
* update java resttemplate to test with v3 spec
* add new files
* regenerate jersey1 tests
* [ruby] Not symbolize header param keys to allow the usage of underscore ("_") character
* use lambda to convert header key to a string if underscore is included
* Fix and improvement of Ada server code generator
- add support for EWS (Embedded Web Server)
- fix GNAT project to avoid depending on util_http but instead use util_aws or util_curl
- update server skeleton generation to handle more data types for the response
- add more explanation on the generated server README
* Rebuild the Ada client GNAT project
* add mapping features to julia generators
* additional changes required for mapped names (#16383)
---------
Co-authored-by: Tanmay Mohapatra <tanmaykm@gmail.com>
* started source generator
* copy the options
* fixed visibility
* added new sample
* discarded changes to existing samples
* discarded changes to existing samples
* build new sample
* changed package name due to file path length limit
* reverted changes to manual tests
* fixed all new manual tests
* inject contexts into api
* only one JsonConstructor
* fixed spacing
* reverted samples changes
* reverted more unrelated changes
* reverted more unrelated changes
* minor refactors
* [typescript] add http info calls to access headers
* [typescript] add http info calls to access headers
* [typescript] add http info calls to access headers
* [typescript] add http info calls to access headers
* [typescript] add http info calls to access headers
---------
Co-authored-by: Robert Schuh <robert.schuh@valtech.com>
* adopt python3.5+ syntax
removing some residual python2 code, since it is not supported anymore, like:
- no need for `six` anymore
- no need for encoding utf8 in top file
- remove `object` inheritance in base model
- remove absolute import `__future__`
* generate samples
applying the new templates
* update python ignore pattern
ignore all the `.venv` folders
* JsonConverter.mustache - Obfuscate "propertyName" variable to rare name "__jsonPropertyName__" to avoid conflict with generated variables
obfuscate "propertyName" variable, fixes issue if #allVars contains a variable named "propertyName" conflicting with the declared variable
* prefix local variable with localVar
* remove eol
* minor fix
* update
---------
Co-authored-by: SDP190 <sprizant1@gmail.com>
* Update go-gin-server templates to return a configurable library
Before this change, the user would be required to make changes in the
generated code. This makes it really hard to update the API and the
documentation at the same time. With this change, the generated code can
be imported as is and used. The user just needs to set the handler
functions for each endpoint.
* Use spaces instead of tabs for api files
* Use space instead of tab for ApiHandleFunctions in go-gin-server
* Update samples for go-gin-server
* [Java][WebClient] support string list return type
* [Java][WebClient] add test
* [Java][WebClient] support string list return type
* [Java][WebClient] support string list return type
* fix webclient auto-generated test files
---------
Co-authored-by: Gavin.Wu <gavin.guohao.wu@kingland.com>
* Remove trailing underscore in security_controller_.py and base_model_.py
* Regenerating sample files
* Clean-up files with trailing underscore in samples
* Update security extension to use the new security_controller
* Regenerate unmaintained samples
* Fix Retrofit template with Jackson (Fix#8147)
This commit amends the `ApiClient` template for Retrofit. It fixes a bug where the Retrofit client uses Jackson as the serialization library.
Until now, the `ApiClient` could not be compiled when using the Jackson library (default in SpringBoot applications), as the constructor of the class had the following parameter:
`private val serializerBuilder: Builder = Serializer.Builder,`
The change done in the commit, is to ensure that in case of Jackson, the right property of the `Serializer` class is assigned
* Add sample code for `kotlin-jvm-jackson`
This commit adds a sample code for the `kotlin-jvm-jackson` generated code to test the changes on CI
* Update kotlin code samples for CI
This commit only runs the command `bin/generate-samples.sh bin/configs/kotlin-*` to ensure that all code samples are up-to-date and CI can pass successfully.
* feat(swift5): allow to swift build in linux
* chore(ci): add .github/workflows/samples-swift.yaml
* feat(swif5): bump Alamofire to 5.7.0
* chore(ci): run in macos all swift sample clients
HaskellServantCodegen and HaskellYesodServerCodegen modify
specialCharReplacements by replacing its keys: backslash ("\\") with
"\\\\" and "\"" with "\\\"".
It seems that those replacements were for using the keys in string
literals in the specialChars table in the generated code. However,
modifying the keys causes the substitution of those characters in
field names not to work, making generated code syntactically invalid.
Since the specialChars table has already been removed, we can safely
stop modifying the specialCharReplacements.
When creating an enum where a valid value is `String`, the override of toString() will be the wrong type.
Simply using `*kotlin*.String` will allow using `String` as a value in an enum.
* bugfix-15672 updated mavenplugin dependencies
* bugfix-15672 re-added maven-compat since needed by maven-plugin-testing-harness
* bugfix-15672 explicit dependency of plexus archiver in a new version due to CVEs in version included from maven-plugin-testing-harness (2.2)
---------
Co-authored-by: Kai Neuhaus <kneuhaus@communicode.de>
* Partitally reverts #15185
* Remove unused import
* Set zero value if param is empty
* Refactor samples, add test config
* Add tests
* Clean up
* Fix test
* [bug][kotlin] sanitize model names according to convention
* [bug][kotlin] revert to english word sanitization except minus
---------
Co-authored-by: Theo Meneau <tmeneau@clearcover.com>
* Add support for deep equality for complex types.
* Use version of collection used by the SDK.
* Use a const instead of final.
* Use deep equality only for arrays and maps.
* Generate pet store sources.
* Downgrade version of dependency.
* Expose `DeepCollectionEquality` instance.
* Revert last change.
* introduce useApachePekko flag into scala-akka-http-server
* useApachePekko flag in scala-akka-http-server templates
* introduce scala-pekko-http-server samples
* [haskell-servant][haskell-yesod] use table-based conversion for field name conversion
Current fieldLabelModifier implementation always produces uncapitalize
name, but it is inappropriate if the original JSON field name begins
with a capital letter.
* [haskell-servant][haskell-yesod] regenerate samples
* Support for multipart/form-data; charset="utf-8"
Previously, it was only checked for an exact equal string, which failed when there were additional options such as charset.
* Update samples
* [haskell][haskell-yesod] remove fixOperatorChars()
fixOperatorChars() does not change input strings since special
characters have already been replaced in DefaultCodegen.fromModel().
* [haskell][haskell-yesod] do not prefix with quote ("'") when generating removeFieldLabelPrefix table
We switched from the conversion done by fixOperatorChars() to the
conversion done by DefaultCodegen.fromModel() and the latter does not
insert quote characters. So We modify the removeFieldLabelPrefix table
to conform the new mapping.
* [haskell][haskell-yesod] remove forParsing parameter from removeFieldLabelPrefix function
Aeson's fieldLabelModifier always convert Haskell field names to JSON
field names, whether at parse time or not. (Note that stripPrefix and
uncapitalize do not take such parameter)
* [haskell][haskell-yesod] perform replaceSpecialChars after stripping prefix
Because replaceSpecialChars can corrupt prefix if the prefix contains
a replacement string of a specfial character as a substring.
* [haskell][haskell-yesod] regenerate samples
I spotted a mention of `github.com/antihax/optional` in
AbstractGoCodegen. I was curious and investigated. However, it turns out
that this code is an obsolete remnant of the go-deprecated generator
removed before 6.0.0, so is now just a false lead. This PR cleans it up
so no-one else has to go down the same investigative pathway.
* [Ruby] Fix Operation Servers
* user `server_index` instead of `index`
* use nil as default
* add tests
* revert tests
* add tests to custom file
* add test file to ruby-faraday
This fixes#15043
The issue is that browsers like "text/html,...,*/*;q=0.8" (see for
instance https://developer.mozilla.org/en-US/docs/Web/HTTP/Content_negotiation/List_of_default_Accept_values
)
Without this commit we end up with an array of accepted type like
`("text/html", "*/*;q=0.8)` so when we then check if the array contains
`*/*` the check fails, and we return a 406 even though the client is
able to get the response.
This commit fixes it by removing the `;q=0.8` part.
(Ideally we should not just discard that part, we should extract that
value, and order by it. See
https://developer.mozilla.org/en-US/docs/Glossary/Quality_values for
more info about that. However this could be done in a subsequent PR:
this already fixes the 406 error, which is pretty blocking)
* [Julia] update samples test and a minor fix
- updating samples test for Julia generated code to use the latest OpenAPI.jl Julia package, which includes tests for file uploads
- also including a fix where generated code duplicated the `mandatory` flag in one of the method calls
* add blank line, trigger build with julia workflow
* more updates to julia samples tests
* add samples changes
* [haskell] fix exampe code in generated README.md
Since create{{title}}Client is not a monadic action, we need to use
"let" instead of "<-".
* regenerate samples
- detect multipart and urlencoded post data formats correctly on the server side
- generate data types correctly for binary file uploads
- re-generated samples
* Switch Poison to Jason
* generate-samples.sh
* Finalize Poison -> Jason switch
* parse date-time values to Elixir DateTime
* improve formatting in various places, so there's less changes by `mix
format` later
* fix Java version in flake.nix
* Use List.delete/2 instead of Enum.reject/2 for performance reasons
* mix format test/*
* Install dialyxir and fix reported issues
* Fix RequestBuilder.decode/2 hardcoded module name
* Update docs
* Revert changes to API spec (HTTP -> HTTPS)
* Revert uneeded change to Elixir code generator
* Use HTTP in Elixir tests
HTTPS doesn't work for folks who setup petstore.swagger.io as described
in docs/faq-contributing.md.
---------
Co-authored-by: Wojciech Piekutowski <wojciech@piekutowski.net>
* Make generated kotlin variable nullable if corresponding schema property is required and nullable
* Updating generated samples
* Fixing indent
* Updating samples after indent fix in mustache template
* Improvement of Ada client and server generator
- recognize several mime types and configure the client/server API
- fix support to handle binary and ByteArray
- add support for client and server with multiple mime type responses
- update model templates
* Fix and improvement of Ada code generator
- fix order of model types to emit the types that depend on other
types after; also sort the model types on their name
- fix model Serialize to avoid serializing a field which is Null
when it is not "Nullable"
* Add support to avoid some Ada Vectors package instantiation
- recognized the x-ada-no-vector specific attribute on model types
and when present and TRUE, don't emit the Ada Vector package instantiation
nor the Serialize and Deserialize associated procedures.
* Fix float and double support
- fix mapping for float and double
- add x-ada-serialize-op custom attribute to allow overriding the serialize procedure
- setup a default x-ada-serialize-op value for the template
* Fix wrong import and serialize method
* Regenerate the Ada client sample petstore
* Rebuild with export_docs_generators.sh
* Fix calls to toLowerCase() to use the Locale.ROOT
In OpenAPI it is possible to define an enum schema containing integers
only.
Similar to the following JSON snippet:
```
...
"components": {
"schemas": {
"size": {
"type": "integer",
"description": "Container size",
"enum": [
10000,
20000,
100000,
200000,
300000,
1000000,
1200000,
2500000,
5000000,
10000000
]
}
}
}
...
```
To correctly serialize this we need to convert to JSON integers. We can
achieve this by feeding nlohmann JSON objects directly with integers
instead of strings.
For the C++ pistache server adapt the enum models to serialize integer
values if possible.
* Update generatedAnnotation.mustache
Without this, it generates a jakarta annotation in the controllers of a spring boot 2 project.
* Updated examples
- [ ] 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)
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (7.0.1 - patch release), `7.1.x` (minor release - breaking changes with fallbacks), `8.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.
| 7.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/7.0.0-SNAPSHOT/) | May/Jun 2023 | Major release with breaking changes (no fallback) |
| [6.6.0](https://github.com/OpenAPITools/openapi-generator/releases/tag/v6.6.0) (latest stable release) | 11.05.2023 | Minor release with breaking changes (with fallback) |
(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.
@@ -176,16 +179,16 @@ See the different versions of the [openapi-generator-cli](https://search.maven.o
<!-- RELEASE_VERSION -->
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/6.6.0/openapi-generator-cli-6.6.0.jar`
JAR location: `https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.0.0/openapi-generator-cli-7.0.0.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.
(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.6.0/openapi-generator-cli-6.6.0.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.0.0/openapi-generator-cli-7.0.0.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`
@@ -648,6 +651,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Landeshauptstadt München - it@M](https://muenchen.digital/it-at-m/)
- [Linode](https://www.linode.com/)
- [Logicdrop](https://www.logicdrop.com)
- [Lumeris](https://www.lumeris.com)
@@ -905,6 +909,8 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2023-04-27 - [Create an Angular Client using OpenAPI Specifications](Create an Angular Client using OpenAPI Specifications) by [Patric](https://pguso.medium.com/)
- 2023-05-16 - [Adyen for Java developers](https://www.adyen.com/blog/adyen-java-library) by [Beppe Catanese, Developer Advocate, Adyen](https://github.com/gcatanese)
- 2023-06-28 - [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/)
- 2023-06-30 - [Generate Client SDKs with OpenApi Generator in Springboot](https://medium.com/@ramavathvinayak/generate-client-sdks-with-openapi-generator-in-springboot-f9f012e73c0b) by [Vinayak Ramavath](https://medium.com/@ramavathvinayak)
## [6 - About Us](#table-of-contents)
@@ -1024,6 +1030,7 @@ Here is a list of template creators:
* TypeScript (Rxjs): @denyo
* TypeScript (redux-query): @petejohansonxo
* Xojo: @Topheee
* Zapier: @valmoz, @emajo
* Server Stubs
* Ada: @stcarrez
* C# ASP.NET 5: @jimschubert [:heart:](https://www.patreon.com/jimschubert)
@@ -1133,7 +1140,7 @@ If you want to join the committee, please kindly apply by sending an email to te
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.