* Minor changes to 2.1 templates to make them work or improve documentation
* Support for ASP.NET Core 3.0 and 3.1
* Update aspnetcore test scripts and results
* Update generated documentation
* update doc
* Update modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
Co-Authored-By: Tatsuro Shibamura <me@shibayan.jp>
* Update modules/openapi-generator/src/main/resources/aspnetcore/3.0/Startup.mustache
Co-Authored-By: Tatsuro Shibamura <me@shibayan.jp>
Co-authored-by: William Cheng <wing328hk@gmail.com>
Co-authored-by: Tatsuro Shibamura <me@shibayan.jp>
* Add code comments
* Change 'setup' method to setPrivateKey
* Add support for configuring digest algorithm
* run script in bin directory
* format generated code
* Revert "format generated code"
This reverts commit 3b52778437.
* [scala][akka-http] fix non-default packages for api, model and invoker
* remove default invoker additionalProperty
* fix invoker package for scala-akka and sttp
* fix invoker package and settings for scala-akka
* fix tests compatible with windows paths
* test output
* test output
* fix base output path for test
* fix output path for test
* fix sttp invoker package
* fix runtime deserialisation
* add security support for dart dio
* regenerate dart dio sample
* update dio pubspec.mustache deps
* check response type before parsing
* add default dateTime serializer
* regenerate sample
* Propagate deprecated property through $ref's
As $ref is supposed to completely replace the definition of a property,
make sure we also include the 'deprecated' property when generating the
type of a $ref property.
This makes a property $ref'ing a deprecated schema also become deprecated.
* Clarify why we're messing around with $ref
* Fix return type in model setters.
Previously return type was same, as method arguments. It`s wrong, and cause errors like
"Return value of Foo::setSuccess() must be of the type bool, object returned"
We cant use self and current {{classname}} as return type, because that can break class inheritance. So, better remove type hint on setters, until PHP-devs dont make realization for return static
* Add return self type hint for setters
* Revert "Add return self type hint for setters"
This reverts commit 07dd9715
* better anytype support
* add tests for any type
* fix test with any_value
* fix tests
* fix case additionalProperties: {}
* test with CI
* remove check in map schema
* Revert "remove check in map schema"
This reverts commit e016c4155f.
* fix tests, comment out map schema fix
* fix tests
* fix tests with correct codegen model
* fix tests
* fix tests for map of any type
* fix array of any type
* fix array of any type
* update samples, remove log
* add typemapping to go, python
* Fix problem with clients, that put charset in content type header.
With this fix header "Content-Type: application/json; charset=utf-8" working same as "Content-Type: application/json" for parse input data
* Fix code style, add $consumes length check.
* Add isContentTypeAllowed static method and tests
* Fix old tests
Right now serializer doesn't support anything beside json and xml.
Call tests with application/json instead of form data.
Co-authored-by: Yuriy Belenko <yura-bely@mail.ru>
* Fixed valuetype parameters and discriminator deserialization
- Made non-required valuetypes nullable, and flagged required valuetypes as "x-csharp-value-type"
- Made sure to camelCase discriminator property names in Subtype converter
* Ran pet store sample script
* Ensure that readWriteVars and readOnlyVars are also marked as isEnum and isPrimitiveType where appropriate
* Updated petstore sample with enum fix
* Fields that are required should emit default values (otherwise the consuming API might throw a fit
* Added missing sample updated
* Re-ran petstore example script to grab all changes
* Rebased and re-ran example update script
* update csharp samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
Add a lambda that formats the documentation correctly even if it
contains newlines. The generated docs with typedoc looks a lot better
and also renders Markdown correctly.
Also remove the "no description" fallback for APIs because we don't have
it anywhere else, other generators don't generate a default fallback and
I'd rather have no documentation than a "no description" string.
There are cases where minimizing quotes results in invalid YAML. For
example, an input YAML with string "1234_1234" will be converted to YAML
value 1234_1234 which is an int in YAML 1.1
(https://yaml.org/type/int.html)
THe only option in these cases is to either:
* Revert the option completely to always quote values
* Provide a user-customization to disable quotes minimization
This applies the latter with the assumption that this is an edge case
and users who are unaffected will default to the "prettier" version.
An alternative would be to write a custom serializer for strings, and if
they are in the format of of any of the valid formats defined in YAML:
[-+]?0b[0-1_]+ # (base 2)
|[-+]?0[0-7_]+ # (base 8)
|[-+]?(0|[1-9][0-9_]*) # (base 10)
|[-+]?0x[0-9a-fA-F_]+ # (base 16)
|[-+]?[1-9][0-9_]*(:[0-5]?[0-9])+ # (base 60)
Then wrap the result in quotes. That approach was not taken because of
the potential for significant performance impact on very large specs,
which our users are often tasked with transforming.
deepObject query parameters need to be specially marshalled.
Unfortunately, they're quite tricky to distinguish in mustache because
there's no boolean property for deepObject, so add a vendorExtension
property to ease the mustache template.
* Try decoding but don't bail on error
* Switch binary and ByteArray to bytes
* Read content type and parse appropriately
* Remove response parsing
* Remove response parsing and just return the data
* Update petshop examples w/ new generator code
* Fix copy/paste error with naming
* Update petstore examples
* Move response decoding to inside _preload_content block
* Update the clients again
* Use a raw string for the regex pattern
* Regenerate petstore clients
* Add bytes to python primitives as it's supported in 2.7 and 3
* Add bytes to the exports from model_utils
* Import bytes from model_utils
* Add conditional typing for regex pattern to match variable type
* Regenerate petstore clients
* Use read() instead of text() for asyncio
* Regenerate petstore clients
* Remove unused six import
* Regenerate petstore clients
* Add newline to kick Circle to re-run
* Remove whitespace from tox.ini
* Update more examples after ensure_updated
* Add sample updates that didn't run with the --batch flag
* Remove extra bracket in regex to remove warning
* Stop printing debug messages
* Add bytes examples to python doc generators
* Update generated FakeApi docs
* Regenerate api_client.py
* Remove print statements from generated clients
* Update bytes example in FakeApi.md. Again. I swear.
* Add yet another seemingly missing doc update
* Catch the error, decode the body, and re-throw
* Remove the updates now that the change is non-breaking
* Regenerate client
* Add bytes deserialization test
* Update exception parsing
* Add exception parsing for python-experimental
* Regenerate client with minor changes
* Revert test changes
* Regenerate model_utils.py
* Update confusing test name
* Remove bytes from mapping and examples
* Add back in the old binary/ByteArray to str mapping
* Update docs and api_client template
* Add experimental api_client changes
* Regenerate samples again
* Add Tornado handling to early return
* Try fixing Tornado python returns
* More documentation changes
* Re-generate the client code
* Remove bytes from test_format_test
* Remove more leftover bytes usages
* Switch bytes validation back to string
* Fix format_test template and regenerate
* Remove unused bytes var
* Remove bytes import from models and regenerate
* Remove bytes import from test_deserialization
* Reduce nested ifs
* Remove byte logic for now
* Regenerate client after latest changes
* Remove another bytes usage
* Regenerate after removing dangling byte string usage
* Reduce the scope of the try/catch in api_client
* Regenerate after try/catch cleanup
* Swap catch for except
* Regenerate Python client after api_client change
* Fix lint error on the generated api_client
* Add binary format test back in w/ string
* Add decoding to python-experimental and regenerate
* Import re into python-experimental api_client
* Ensure file upload json response is utf-8 encoded bytes
* Adds addComposedMappedModels and testComposedSchemaOneOfDiscriminatorMap
* Requires that discriminators be required properties
* Strengthens discriminaotr validation, adds better error messages, adds schema oneof samples
* Adds oneOf and anyOf invalidDiscriminator tests
* Updates incorrect addOneOfInterfaceModel invocation
* Runs ensure-up-to-date
* Adds updates from Sebastien Rosset
* Removes newlines
* Uses df.isString
* Fixes tests be correctly setting df.isString
* Updates discriminatorExplicitMappingVerbose description per PR feedback
* Adds description of how mappedModels is populated
* Adds the suggestion exception raising when a MappedModel mappingName is null
* Actually resolves merge conflicts
* Switches two methods to package private because they are needed for testing
* Allow nulls in MappedModel.getMappingName
* Updates CLI flag name to legacyDiscriminatorBehavior, default=true
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Add __setattr__ function to ensure signing_info.host is the same as configuration.host when the user assigns signing info
* Add __setattr__ function to ensure signing_info.host is the same as configuration.host when the user assigns signing info
* add support for any type, i.e. when 'type' attribute is not specified in OAS schema
* fix typos, add code comments
* Handle case when 'type' attribute is not present in the OAS schema
* fix python formatting rule
* fix python formatting rule
* remove 'object' as a type
* add jersey2 experimental
* add new files
* add abstract one of class
* read the stream multiple times
* rename to getActualInstance
* update petstore
* fix jackon check
* test new java petstore in ci
* fix broken tests
* remove todo
* better exception message, primitive type handling
* add anyof support
* update samples
* add new files
* update all java client samples
* update doc, fix pom
* better null check for allOf
* add primitive types support in oneof, anyof
* better validation
* update python exp samples
* remove primitive type support in allOf
Some APIs have a model called "Index" which would create a file
"Index.ts" which would override "index.ts" on case-insensitive file
systems (e.g. macOS, some Windows versions). Make "Index" a reserved
word to prevent this clash.
* Fix Gradle and SBT builds for Java REST Assured generator
* Add missing jackson-databind-nullable dependency to SBT build
* Update rest-assured sample
* Add sample for Java client with REST Assured and Jackson
* Add new REST Assured sample as Maven sub-module
* Removing build path from gitignore as this causes npm publishing issues
* updating petstore example
* Adding npmignore to typescript-axios generator
* Updating petstore example
* 1441 fix visibility of body/response schemas
* Handle schemas with array items
* Point to template directory in bin script
* Regenerate sample
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* [scala-akka-http-server] When expecting an empty response, a response with an empty text/plain content is not produced anymore
* Updated scala-akka-http-server samples
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* [C][Client]Fix the defect of data lost when libcurl write-data callback function (configured by CURLOPT_WRITEFUNCTION) is called multiple times.
* [C][Client]Fix data lost when libcurl write-data callback function is called multiple times (Reset count)
* handle scenario when value is a list, fix TypeError: unhashable type: 'list'
* Add __hash__ function
* use list instead of set
* use list instead of set
* use list instead of set
* use list instead of set
* use list instead of set
* use list instead of set
* Use DER encoding for ECDSA signatures
* Use DER encoding for ECDSA signatures
* Use DER encoding for ECDSA signatures
* Use DER encoding for ECDSA signatures
* fix python unit tests for http message signature
* Fix error message
* format python code
* format python code
* Update axios dependency to 0.19.0
Axios (version 0.18.0) used by typescript-axios generator is more than two years old (released in Feb 2018). Axios 0.19.2 released earlier this year contains a lot of fixes and functionality, I recommend updating to 0.19.2.
* Ran ./bin/typescript-axios-petstore-all.sh to update package.json in ./samples
Co-authored-by: Chandra Yalangi <chandra.yalangi@appklenz.com>
* Add 'discriminatorCaseSensitive' property
* Discriminator value lookup should not be case insensitive
* fix typo
* run scripts
* execute ./bin/utils/export_docs_generators.sh
* fix discriminator mapping, add code comments
* FIX-5249 fix @Param annotation for Feign-client code generation
Use paramName instead of baseName in order to make mapping in @Headers
section fit the param-value.
* update samples
* FIX-5249 fix @Param annotation for Feign-client code generation
Use paramName instead of baseName in order to make mapping in @Headers
section fit the param-value.
Co-authored-by: Christoph Preißner <christoph.preissner@blu-pa.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Add date time format annotation on pojo for model query parameters
* Regenetare samples
* update spring samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Update modelGeneric.mustache
If maxlength is specified for a property type enum it there should be .ToString() appended before length check
* ran the csharp petstore bar and updated the file
Co-authored-by: Shweta Shukla <shshukl@microsoft.com>
* Add maven-compiler-plugin plugin in Java pom.xml and enable linter checks by default
* Add maven-compiler-plugin plugin in Java pom.xml and enable linter checks by default
* [csharp-client] Complex form parameters are now correctly serialized as json.
* Updated csharp samples
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* Updating packages version (#5313)
* Add support to RestSharp version 106.10.1
Restsharp 106.10.1 needs the Content Lenght as a parameter to AddFile method
* Updating RestSharp Version
Updating RestSharp Version
* Update netcore_project.mustache
* Update netcore_testproject.mustache
* Update Project.mustache
* Updating packages version
Updating packages version
* Updating packages version
Updating packages version
* Updating packages version
Updating packages version
* Updating packages version
Updating packages version
* Updating packages version
Updating packages version
* Updating packages version
Updating packages version
* Execute task async obsolete
Use ExecuteAsync instead
* update csharp samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [csharp] Library upgrade fix (#5848)
* On .net45 framework, Restsharp version is updated to 106.10.1 Otherwise, it stays on version 105.1.0
* Added additionalProperties for library versions and target frameworks
* Removed unused properties
* Added an additional property to test for a specific version of RestSharp
* Updated csharp samples
* Fixed nuspec.mustache to use library specific additional properties
* Updated csharp samples
* Updating CI/samples.ci csharp petstore test project file.
* Updated csharp.md
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* [csharp-client] Restored tests on csharp samples (#5879)
* Restored tests on csharp samples
* Restored a reference to the file used to test file uploads
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* update samples
Co-authored-by: Igor Quirino <iquirino91@gmail.com>
Co-authored-by: Bouillie <34162532+Bouillie@users.noreply.github.com>
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* python server: Add pythonSrcRoot option
This will allow the python project to be in a subdirectory (as specified
in pythonSrcRoot). That could mean following the src layout with sources
under src/ or lib/. Multi-language projects might use a sub directory
like python/, or whatever makes sense for the project.
By default, the pythonSrcRoot is "", meaning the existing behavior is
the default.
* python server: update template files to support pythonSrcRoot
* python server: update docs to add pythonSrcRoot option
* python server: add pythonSrcRoot sample script
* python server: build sample srclayout project
* [Python] copy test files preserving history
* [Python] Make a conflict to preserve file copy history
* [Python] customize pom.xml for src layout tests
* [Python] add python-aiohttp-srclayout tests
* [Python] Fix server tests by updating requirements
Reverts the PR that disabled python2 server tests:
https://github.com/OpenAPITools/openapi-generator/pull/4949
Reverts commits that disabled python3 server tests:
9adfedbfbb17ee990baa
Issue about the python 3 tests:
https://github.com/OpenAPITools/openapi-generator/issues/5235
I couldn't find an issue about the python2 tests being disabled.
I'm guessing build errors like the following were the trigger:
https://travis-ci.org/github/OpenAPITools/openapi-generator/builds/634238181
Let's see what breaks!
* [Python] Copy setup.py to python-aiohttp
* [Python] Save history while copying setup.py to python-aiohttp
* [Python] Add aiohttp server setup.py
* [Python] Fix python server tests with src layout
* [Python] bump Flask-Testing version
* [Python] Pin pyyaml for py2.7 flask server
* [Python] simplify flask server requirements
* consolidate server tests
* [Python] rebuild python server samples
* [Python] Fix python server requirements for older pythons
Documented minimum python version for our aiohttp server is 3.5.
Documented minimum python version for our flask server is 3.4.
Connexion 2.3 is the last version to support python 3.4 and 3.5, so fix
the version pinning to correctly select <=2.3 for these EOL python
versions. Newer pythons should get the latest if possible as there many
relevant bug fixes.
Werkzeug also needs to be pinned for these old versions in the aiohttp
server just like for the flask server.
3.4 and 3.5 are EOL. We really should increase the minimum supported
version, but that is for another PR to do.
* Added hasVars after completion of all model post-processing (#5587)
* Post ensure-up-to-date
* Update to check the size of vars and not assume non-null
* C client generator improvement to support:
openapi-generator/modules/openapi-generator/src/test/resources/3_0/petstore.yaml
* Improvements to the C client generator:
- moved base64* from apiClient.c to binary.h/binary.c
- changed CR/LF to LF in binary.h/binary.c
* C client generator: better support for base64encode / base64decode
When contentCompression is not enabled, the variables isRequestCompressionEnabled and isResponseCompressionEnabled in HttpRequestWorker are not being initialized.
Without initialization the compress function could be called and the request content could be an empty QByteArray instead of original request body.
* First try to generate unit tests for the models of the C-libcurl client. Models into models are not supported yet.
* Added unit tests for the modules of the C-libcurl client to the git repository.
* Support for objects having other objects as properties, for the C-libcurl client generator
* Proper formatting of generated code
* fix default value generation for kotlin
* add updated pet templates
* Revert "add updated pet templates"
This reverts commit 7e8168ad
* regen pet store projects code
* Scala akka-http server base implementation
* [scala-akka-http-server] petStore samples
* Improved the formatting of generated files
* Updated scala-akka-http server samples
* [scala-akka-http-server] the groupId, artifactId and artifactVersion default value are used as intended.
* Fixed the default operation not being correctly generated on parameterless operations
* Added build.sbt.mustache supporting file
* Updated scala-akka-http server samples
* ScalaAkkaHttpServer: Fixed a String.format call to use Locale.ROOT for locale
* [scala-akka-http-server] Fixed defaultValue being escaped during generation
* Added scala-akka-http.md
* Replaced all "⇒" character with "=>" to retain compatibility with scala 2.13
* [scala-akka-http] Added a config option akkaHttpVersion
It's set in the generated build.sbt.
* Updated scala-akka-http server samples
* [scala-akka-http] More accurate akkaHttpVersion parsing
* Updated scala-akka-http.md
* [scala-akka-http] Changed the akka-http version check to fix the generation of StringDirectives
* Updated scala-akka-http samples
* updated scala-akka-http.md
Co-authored-by: Olivier Leonard <oleonard@ankama.com>
* Warn once instead of many times when the log statement does not have contextual information
* Warn once instead of many times when the log statement does not have contextual information
-D option has been deprecated as it was previously used to:
* Pass "system properties"
* Pass additional properties
This was confusing because we already have --additional-properties and
because Java System Properties are passed as -D before program
arguments.
Confusion around the -D option had existed for some time, but when we
introduced the thread-safe GlobalSettings to avoid overwriting Java
System Properties, we created a hard break from Java System Properties
in the generator. This also disconnected the previous "system
properties" from accepting additional properties.
Once these newly deprecated methods are removed, we will have a clear
separation of concerns between:
* Java System Properties
* Global generator properties (used as workflow context)
* Additional properties (used as generator options)
This commit marks multiple places for cleanup in 5.0. These will be
breaking changes, and lower effort to break in 5.0 with deprecation
warnings now rather than adding sibling properties throughout the code
and potentially introducing logic errors.
* [cli] Some CLI improvements…
* Introduce --version
* Introduce --help
* Add --sha to version command for short SHA display
* Output Version and SHA details
* In new --version output, display repo and doc site
Additional cleanup to suppress warnings and code quality.
* [docker] Adds labels for metadata
This adds image labels to store metadata on the online and cli docker
images, using standard labels:
* org.opencontainers.image.created
* org.opencontainers.image.revision
* org.opencontainers.image.title
* org.opencontainers.image.version
These can be inspected via 'docker inspect IMAGE_NAME' and may be useful
in tooling/automation or bug reports submitted by users.
For more details on these labels, see:
https://github.com/opencontainers/image-spec/blob/master/annotations.md
* Include version --full for equiv to --version
* Map Merge Context & Params
handler requires context and params to be merged before returned to user defined request_handler.
* post build & shell script
* Delete VERSION
* update ci to use petstore 1.0.4
* comment out test
* comment out test
* comment out update user test
* comment out more tests
* use latest petstore
* comment out updatePetWithForm
* comment out update pet test
* fix function names and add parameter to return decoded bytes length from base64decode function
* format base64decode function to avoid unnecessary malloc and fix wrong length assigning
* update the pointer assigning
for some reason var++ / *var++ cannot be done on int *var, hence making a local variable which is incremented and at the end it is assigned to the pointer.
* - fixed cpp-client-qt5 HttpRequestWorker requests crashing on timeout when they have actually NOT timed out (were calling back into a deleted struct).
* #minor fixes after review
* Regenerate changed files
Co-authored-by: valentin Bisson <valentin@inrosoftware.com>
Co-authored-by: etherealjoy <sunn.ssb@live.com>
* [Rust Server] Handle text/xml correctly
Treat application/xml the same as text/xml as per RFC 7303
* [Rust Server] Add test for text/xml
* Update samples
* use more recent version of maven-surefire-plugin
* use more recent version of maven-surefire-plugin
* higher debug level for troubleshooting ci issue
* temporarily increase debug log to help troubleshoot
* Use local instance of pet store service for unit test purpose
* Add more logging to troubleshoot unit test failures
* Add more logging to troubleshoot unit test failures
* Add more logging to troubleshoot unit test failures
* Add more logging to troubleshoot unit test failures
* Add more logging to troubleshoot unit test failures
* use random ID for Java unit test instead of fixed id
* add code comments and specify URL for java unit test
* reenable quiet argument
* fix java unit test issues
* fix java unit test issues
* Revert "fix java unit test issues"
This reverts commit e8508416ff.
* fix java unit test issues
* Fix code generation for free-form objects in go-experimental
* Execute scripts in bin directory
* Add more use cases for open-ended types
* Add more use cases for open-ended types
* Add more use cases for open-ended types
* add code comments
* Better name for test properties
* handle scenario when type is arbitrary
* handle interface{} scenario
* handle interface{} scenario
* add helper function isAnyType
* isAnyType function
* implementation of isAnyType function
* fix javadoc issue
* handle interface{} scenario
* use equals comparison instead of ==
* merge from master
* Add code documentation
* add code comments, remove unused min/max attribute, fix equals method
* Handle 'anytype' use case
* add code comments
* override postProcessModelProperty to set vendor extension
* Use vendorExtensions.x-golang-is-container
* fix compilation error of generated code
* fix compilation error of generated code
* fix compilation error of generated code
* [kotlin][client] make base path configurable
* [kotlin][client] update pet project
* [kotlin][client] set default base path
* [kotlin][client] set default base path
* [kotlin][client] set default base path
* Fix nullable support in go-experimental client
* Fix support for models with parents and container fields
* Make sure that oneOf interfaces serialize properly even if they're required (non-pointers) on other models
* Spaces => tabs
* Regenerate samples
* Make some methods of nullables pointer-receivers, add tests
* Improve the Get/Set logic to make usage more convenient
* Address review
* Updated to new nodejs packages, depending heavily on express-openapi-validator. Requires quite a change in code.
Updated the business-logic in the controllers/Controller.js file.
Logger now records also timestamp of events.
Files are uploaded according to definition in config.js file
* Removed commented-out code; Changed openApi document extensions to suit new express-openapi-validator definition; multipart and file uploading is supported now; Automatic response returns the values the were sent in the request
* fixed README documentation, fixed a mistage in package.json/mustache
* added generated files that were created when running the ./bin/test file
* remove scala version in parent pom
* test ps petstore in appveyor
* fix command
* build and import
* fix import module
* fix import
* skip module import
* run multiple commands
* move to test script
* test ps exit
* fix exit
* check last status code
* clean tests
* exit last code
* add import
* change dir
* skip build failure
* fix check
* trigger build failure
* fail fast
* restore c# test
* new line comment
* add powershell exp to ensure up to date script
* Removed stray "printf"s in
modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CLibcurlClientCodegen.java
* Support for booleans in C client
* Update README.md
* Change to C API mustache files to solve issue #5623
* Debugging of C's modle-body.mustache, as suggested by ityuhui
* Final changes suggested by ityuhui
* fix php tests
* fix scala tests
* update ts angular v6 rest
* fix user create test
* fix spring cloud test
* comment out user delete
* fix angular v7 tests
* fix user test
* fix tests
* fix go exp tests
* commented out delete user tests
* comment out delete user tests in go openapi 3
* fix clojure tests
* Remove kotlin-reflect dependency when using CodeGen
* Update Kotlin tests
* Regenerated unit test samples
* Remove newline in generated build.gradle files
* [scala][akka-http-client] java8 dates support
* scala-akka readme doc updated
* DateSerializers renamed
* rename serializers
* move date-library option to abstractScala
* generators docs updated
* enum defined for date libraries
* Backport to scala-http-client
* fix scala-akka-client date serializers
* fix typo in docs
* switch scala templates to java8 (jsr-310) date library by default
* update scala samples with java8 date library
* update scala generators docs with java8 default date library
* fix scala-play-server generator cli options as only java8 dateLibrary supported
* fix scalaz DateTimeCodecs template to support java8
* scalaz ci test againt java7 removed as it generate scala 2.11.8 client which is java8 based
* add unit test assertion
* add check for composed schema
* add support for x-allOf-name
* change x-allOf-name to x-all-of-name
* Add more troubleshooting information
* Add more troubleshooting information
* Add more troubleshooting information
* Add more troubleshooting information
Update the required CXF version to 3.1.2 since PATCH support appeared
with this version.
Add the cxf PATCH annotation to the imports so that the generated code
when defining a PATCH api compiles.
* PR to solve 2 open issues on enums:
Issue 5091 needs to generate enums also when the enum is directly in a param to a API call, instead than in a model. I did that by copying and adapting enum code from *model* to *api*
Issue 4293 needs to decorate enums, for when enum names or enum values are repeated over the yaml definition.
* PR to solve 2 open issues on enums:
Issue 5091 needs to generate enums also when the enum is directly in a param to a API call, instead than in a model. I did that by copying and adapting enum code from *model* to *api*
Issue 4293 needs to decorate enums, for when enum names or enum values are repeated over the yaml definition.
* Enums decorated: with {{projectName}}_{{classVarName}}_{{enumName}}_ in the models, with {{projectName}}_{{classVarName}}_{{enumName}}_ in the operations.
* Changes to the c client:
- Removed white space.
- Removed ToJSON and FromJSON function for the enums, since they are not used
- Sanitized project name in the .java file. For example, this solves a problem with the issue #2338, where the yaml file had title: "Skycoin REST API."
* Changes to the c client:
- Removed white space.
- Removed ToJSON and FromJSON function for the enums, since they are not used
- Sanitized project name in the .java file. For example, this solves a problem with the issue #2338, where the yaml file had title: "Skycoin REST API."
* Do not generate HTTP signature unit test for every generated SDK
* Add golang 1.14 to CI environment
* fix unit test issues
* remove script commands that were commented out
* add support for ed25519 private keys
* [markdown] Fix broken links when generating markdown
The `api.mustache` file generates links to the markdown model files.
These links were previously brokeen.
Additionally, the defaultPackage for markdown is "/Models", so this
looked pretty in the heading for model files. So this prefix has been
stripped from the header in `model.mustache`.
* Re-generate Petstore samples for markdown
The helper methods for sanitize/underscore/camelize were recently
updated to cache values in static maps. This would lead to a memory leak
in hosted environments as the maps had no cleanup/expiry.
This moves those cached entries to Caffeine caches with expiry based on
last access to allow the edge-case performance improvement gains on very
large documents, without the memory leak in hosted or embedded
environments.
* Add failing tests for typescript type declaration
* Refactor array and map child type string fallback
* Add unaliasSchema to typescript getTypeDeclaration
* TypeScriptRxjs: Use Blob as file type declaration
This was inadvertantly changed in
https://github.com/OpenAPITools/openapi-generator/pull/5266
* [C++][Pistache] Use reserved words to replace incorrect names
discard old decision to truncate reservedWords
* [C++][Pistache] Update struct model to use name instead of baseName
* [C++][Pistache] Update Petstore sample
* [C++] Add option to have lowercase variables
* [C++] Update generated docs
* If not required, need `? = null`
* run ./bin/kotlin-server-petstore.sh
* Added `?` when value is `required` and `isNullable`
* Rerun ./bin/kotlin-server-petstore.sh. But No differences
* [cli] Validate now uses parseOptions w/setResolve
The validate command now uses ParseOptions#setResolve(true) to match how
we parse in CodegenConfigurator and online's Generate. Without this
option, the OpenAPI 3 parser skips the "resolve" block, which made lead
to validations in the command not matching validations during
generation.
* [gradle] Validate now uses parseOptions w/setResolve
The Graldle validate command now uses ParseOptions#setResolve(true) to match how
we parse in CodegenConfigurator and online's Generate. Without this
option, the OpenAPI 3 parser skips the "resolve" block, which made lead
to validations in the command not matching validations during
generation.
* [go-experimental] Support aliasing of API keys
* Use {{.}} inside condition
* Use name instead of keyParamName for lookup
* x-lookup to x-auth-id-alias
* Adds oneOf + anyOf schemas, models and tests to python-experimental
* Adds setUpClass and tearDownClass
* Removes newline in method_init_shared.mustache
* Regenerated v3 spec sample for python-experimental
* Fxes test for discard_unknown_keys
* Moves new models into existing spec, regen python-exp and go-exp
* Also fix python-exp windows file
* Use the dataType if the baseType is not set
* add tests for passing enum as parameter
* updated requirements file in samples
* Update spec to explicitly name objects and prevent `inline_object`
* use the correct scripts to generate samples (`bin/openapi3/python-flask*`)
* stripped parameter enabled for all scala based generators
* scala samples updated
* docs generators updated
* fix scalatra. regenerated by openapi3 script.
manually removed enum default value from scalatra example due bug in schema extraction
* fix obsolute configuration in generated .rubocop.yml
* fix style of `expect` with block in generated ruby client's test code
* update sample of ruby client
* scala-sttp-client template
* invoker for sttp fixed and tests added
* clean up pet api test from redunant comments
* docs updated
* fix artefact name, model comments and redunant generic
* code optimization
* cross scala versions 2.11 2.12 2.13
* date serializers extracted and joda enabled as default
* basic and bearer authorization added, apikey in query supported
* [swift] make some small improvements
* [swift][client] revert model to use allVars
* PostProcessModelProperty with allVars
* PostProcessModelProperty with vars
* [swift] improve objc interoperability
* [swift] fix swift4 for CI to pass
* [swift] improve objc interoperability
* [swift] improve objc interoperability
* Swift - try to fix build
* [swift] remove pods from git
When I originally implemented the feature set code, I added the
getter/setter on DefaultCodegen and CodegenConfig as well as on
GeneratorMetadata. GeneratorMetadata also includes the library variation
features. When I went to add library-specific features, I realized the
discrepancy.
This removes the public setter from DefaultCodegen/CodegenConfig, and
adds a protected modifyFeatureSet which accepts a lambda and hides the
builder logic away in the method.
This will be a breaking change for anyone who's created a custom
generator in 4.2.3, so the impact is very limited.
* Added support for msvc builds
Moved GCC-specific compile flags to non msvc builds, and added equivalent flags for msvc.
* CMakeLists condition cleanup
* [typescript] Clean up modelPropertyNaming across generators
Fixes https://github.com/OpenAPITools/openapi-generator/issues/2976
Generators without runtime models conversion use "original" property naming by default. It's still possible to change it via cli options
Generators with runtime conversion keep using "camelCase"
* Refactoring: use enum instead of string for modelPropertyNaming
* Restore the original camelCase for var names, decouple it from property names
* Swap toParamName and toVarName logic (looks like I've mistaken them)
* Regenerate docs
* Remove a no longer used private method
* Fix OpenAPITools#5086 handling date examples in openapi 3.0
* Fix OpenAPITools#5086
created test for handling date value
renamed variable p to schema
created field birthday in test yaml
* Fix OpenAPITools#5086
reverted birthday, because breaking tests
* Fix OpenAPITools#5086
create String in ISO format for date default. That can be converted to LocalDate
fixed Test
make the import conditional, and add a few that were missing
without this, setting `featureCORS` or `featureConditionalHeaders` to true produces invalid code
* add discard_unknown_key parameter
* add discard_unknown_key parameter
* add discard_unknown_key parameter
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* discard unknown keys in composed schema if configuration.discard_unknown_keys is set
* run sample scripts for python
* code reformatting
* execute script in bin directory
* improve unit tests for discarding properties
* [PHP] Remove model prefix/suffix from inline enum var names
This resolves issue #4403.
On a model `Foo` with an inline enum `Bar` which has a possible string
value `baz`. we should generate a `FooDTO::BAR_BAZ` constant, not
`FooDTO::BAR_DTO_BAZ`.
* Empty commit for another CI run
* [go-experimental] Add model constructors to initialize non-container vars with defaults
* Add docstring and extend model_doc to include the constructor
* Make variable names in constructor follow Go naming guidelines
* Provide 2 different constructurs as suggested + couple fixes to generate constructors right under all circumstances
* Fix defaults for enums
* Properly escape vars that have reserved names
* python: Respect useNose option in generated CI templates
Travis and Gitlab CI now use nosetests or pytests depending on the "useNose" option that is passed.
* python: Update CI samples
They now respect the "useNose" option
* Resolves `An error has occurred in Javadoc report generation: [ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/8/docs/api/ are in the unnamed module` error that happens when using Java 11
* Resolves `An error has occurred in Javadoc report generation: [ERROR] Exit code: 1 - javadoc: error - The code being documented uses modules but the packages defined in https://docs.oracle.com/javase/8/docs/api/ are in the unnamed module` error that happens when using Java 11
* Fix duplicate configuration entries
* Fix okhttp poms
* Remove letter that shouldn't be there
* Add test case to reproduce the issue
https://github.com/OpenAPITools/openapi-generator/issues/2574
* Fix: an alias of "an alias of simple OAS type" has an incorrect property `isAlias: false`
* Use ModelUtils instead of referring the "type" value directly
* Delete an unnecessary condition
* Tweak: the order of conditions
* Fix wrong "isAlias" value on ComposedSchema
* Added toString to enum_class script
This toString avoids using the enum var name and uses the enum's value instead. This will fix cases when enum var name and value are quite different.
* Updated enum template
Co-Authored-By: Jim Schubert <james.schubert@gmail.com>
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* :shirt:🎨 Minor refactor DefaultGenerator
This cleans up some lint warnings and improve general code cleanliness
of DefaultGenerator.
Specifically:
* logger strings are now using the built-in log formatter rather than
constructing new strings regardless of log level.
* Diamond operators are used where possible
* Some long-unused commented code has been removed
* Lambdas are used where possible
* Redundant operations are merged (HashMap constructor used rather than
subsequent putAll on a collection, for example)
* [cli][core] Add support for dry-run and display
CLI now supports `--dry-run`, which will output a file change status
similar to git status --porcelain.
The user may also specify `--verbose` for a one-liner below each file
explaining why the change operation might take place.
* [typescript-rxjs] fix coalescing in Configuration
- eliminate nully "" (empty string) value via conditional check
- use concrete "string" type in typeof check
("function" may be returned for Object types
* [typescript-rxjs] update petstore sample
* run petstore-all
- run the script for updating all petstores
./bin/typescript-rxjs-petstore-all.sh
* [maven] improve documentation regarding depedencies issues
* Improve english on the documentation
Co-Authored-By: Jim Schubert <james.schubert@gmail.com>
* Improve the english on the documentation
Co-Authored-By: Jim Schubert <james.schubert@gmail.com>
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* python: Add gitlab-ci.mustache
It does the same stuff as in the .travis.yml but just for Gitlab CI
#5340 - Python .gitlab-ci.yml
* python: Run all scripts in bin
find bin/ -type f -name 'python*.sh' -exec {} \;
Had to update all samples
* Remove DateTime mapping from concrete TypeScript generators that do not have full support for Date deserialization
* Fix model unit tests
* Regenerate samples
* [doc] Fix level 2 header on cutomization.md
* [doc] Specify https on API/online link
* [docs] Invert github/twitter links in dark mode
* [doc] Pin version for alpha release artifacts
* [kotlin][client] remove null message on server error
* [kotlin][client] avoid breaking change
* [kotlin][client] add response to client and server exceptions
* [kotlin][client] improve message on ClientException and ServerException
* [templates] Update to vendor extension standard keys
* Fix missed value in Java template, also implements=>x-implements. Evaluate Haskell Client changes
* Fix missing accept/content-type update for vendor extension format
* type aliasing issue
* Add example OpenAPI document from issue 3589
https://github.com/OpenAPITools/openapi-generator/issues/3589
* Add test to reproduce the issue
- type of TypeAlias changed from 'string' to 'object'
(not sure if importMapping is supposed also for 'string' types...)
- there might be better ways to write the test, it's kind of a brute
force test (generate a file and parse it with a regexp)
* Remove duplicate test file
* Add new method override handleMethodResponse
Fixes broken unit test after merge from master
Co-authored-by: bkoziak <bkoziak@gmail.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
* 3432 Use builder api of OkHttpClient to avoid UnsupportedOperationEx
The reason for the UnsupportedOperationException was an invalid access to the interceptors list of OkHttpClient. That list is unmodifiable as stated by the JavaDoc. Instead accessing the list directly, the interceptors should always be passed when building the client by the builder api.
* 3432 Use builder api of OkHttpClient to avoid UnsupportedOperationEx
The reason for the UnsupportedOperationException was an invalid access to the interceptors list of OkHttpClient. That list is unmodifiable as stated by the JavaDoc. Instead accessing the list directly, the interceptors should always be passed when building the client by the builder api.
* 3432 Follow-up fix to make samples compile again
* 3432 Updated sample implementation for okHttp-Gson-ParcelableModel
* initial commit for null type
* Add openAPI attribute to validation and recommendation
* improve code comments. the warning used to notify the users to use instead of defining the schema inline, but now the InlineModelResolver has been enhanced
* Add validation rule for the supported values of the 'type' attribute
* [typescript] Don't hardcode the date type if user has mapped it
If the user has set --type-mappings Date=foo, respect this setting
instead of hardcoding the date type.
* Use default type mappings for date/date-time
* Use typeMapping mechanism correctly
* Add default mapping for angular and node to preserve behavior
* One more change to keep current behavior
* Add default type mappings to the other TS generators
* [docs] Upgrade to Docusaurus 2
Due to formatting issues with Docusaurus 1 and code blocks, and upcoming
4.3 and 5.0 releases, this is an upgrade to have more control over
formatting and other functionality.
This adds behavior to have light/dark themes.
As a consequence of upgrading, columnar format on ul element in
generated generator docs had to be moved to css. This will not impact
users viewing the markdown on GitHub because it didn't display the
column format.
This upgrade should improve syntax highlighting and performance.
* Fix user page layout, choose theme with clear diff colors
* [go-experimental] Add oneOf support
* Fix docs for the oneOf models
* isOneOfInterface => x-is-one-of-interface
* Add proper warnings when inline models are used in oneOf choices
* Add a convenience method to oneOf implementing structs to cast them as the oneOf interface
* Update modules/openapi-generator/src/main/resources/go-experimental/model.mustache
Co-Authored-By: Jiri Kuncar <jiri.kuncar@gmail.com>
* Fix retrieving data from additionalDataMap
* Add basic tests
Co-authored-by: Jiri Kuncar <jiri.kuncar@gmail.com>
* [typescript-fetch] Make additional properties access safer
Instead of asserting that any key access returns a valid property, force
the consumer to check that the value is defined.
* Update tests
* Put null-safe additional props behind and flag and share
* Undo over copy
* Update docs
* Rearrange code
* Move to unit tests
The maven documentation was missing a few option, a couple of option
properties, and was inconsistent regarding selective generation for apis
an models. This adds properties and options where appropriate and
updates the docs. All options in the README have been reordered to match
property declaration order in CodegenMojo, hopefully making it easier
for maintainers to recognized when there are docs missing or out of
date.
This also slightly refactors the code in CodegenMojo to reduce the
cyclomatic complexity of the `execute` method.
This fixes issue #3796 for JavaSpring. It's a very straightfoward extension
of #5120 for the JavaSpring generator (that PR was just for the Java generator).
* Reduce redundancy in python docs
This is a followup to PR #5094, which had a few unresolved comments at
merge time. This reduces the amount of redundant lines in the api
example doc templates, and ensures that referenced Configuration objects
are actually instantiated.
* Regenerate samples
* Add real assertions in DefaultCodegenTest.java testAllOfXXX methods
* Add test to DefaultCodegenTest for an allOf composition with a single ref and no own props
* Ensure model.parent is also added to model.allParents when multipleInheritance is supported
* Cleanup: remove LOGGER.debug, renamed refedParentNames to refedWithoutDiscriminator
* [core] Normalizing vendor extension naming
According to [OAS 2.0][1] and [OAS 3.0][2] Specifications:
> Allows extensions to the OpenAPI Schema. The field name MUST begin with x-,
> for example, x-internal-id. The value can be null, a primitive, an array or an object.
> Can have any valid JSON format value.
This commit attempts to define a [clear identifier design format][3] of
maintaining lower-kebab casing and following the x- prefix defined by
OAI Specification.
Following a convention that matches that used by others (see [autorest][4]), we will remove
any confusion about naming strategies for template authors and
customizers. Following the lower-kebab convention will allow us to
convert from camelCase and missing prefixes to the desired format. For
example, these conversions are simple to make for template consistency:
* customValue => x-custom-value
* x-customValue => x-custom-value
* x-custom-value => x-custom-value
This convention also allows us to define a single standard for use
across all generators. This means no occurrence of x-operationId in one
generator and x-operation-id in another.
[1]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#patterned-objects
[2]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#specificationExtensions
[3]: https://tools.ietf.org/html/draft-wilde-registries-01#section-3.4
[4]: https://github.com/Azure/autorest/tree/master/docs/extensions
* Incorporate feedback to avoid race/blocking in OnceLogger
* Remove unnecessary additional log config
* Add tests,comments for OnceLogger
* Test caffeine cache with FakeTicker
* [kotlin] Fix compile of reserved word in client
A number of places in the client code need to be escaped for reserved
words.
That is, this should be:
(git log formatted): `as` rather than as
(markdown formatted): \`as\` rather than `as`
There are only a handful of places using `{{paramName}}` which HTML
encodes backticks, rather than `{{{paramName}}}` which outputs literal
values.
Added unit test to maintain the reserved word standard for Kotlin.
* don't use kotlin-codegen-escaped parameters in parameter-map
Co-authored-by: Andreas Müller <andreas@stapelspeicher.org>
* fix map as query parameter, use RequestPart instead of RequestParam in
FormParams, add filename for parameters of type file
* fix brace
* fix tests
* run bin/windows bat files
* test if this solves linending problem part 1
* test if this solves linending problem part 2
* test if this solves linending problem part 3
* test if this solves linending problem part 4
* test if this solves linending problem part 5
* test if this solves linending problem part 6
* manually set back version in pom
* update spring samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* improve python documentation and add import to __init__package.mustache
* improve python documentation and add import to __init__package.mustache
* add signing_info parameter conditionally
* add code comments and remove 'Content-Length' header from example
* Remove debug log statement
* set access_token to None by default
* set access_token to None by default
* fix unit tests for Python experimental
* fix trailing space
Adds a more prominent Slack block on the main doc site in response
to a few users not setting the Slack chat links on the Readme or in the
"Learn how" block.
Fixes a rendering issue in the "Try via NPM" block.
Adds a one-liner about the recently added `-Dcolor` option for
optionally colorizing output in the CLI.
* Flatten feature sets for display
* [cli] Add feature set output to config-help
This includes markdown and plain text outputs for config-help.
* [docs] FeatureSet on generator docs
* add support for ECDSA keys
* Add support for HTTP signature
* use bytes.Buffer instead of strings.Builder
* Add unit tests, compliance with HTTP signature draft version 12
* Support (expires) parameter
* Validate list of signed headers does not have duplicate values
* move method to ProcessUtils
* Add http-signature security scheme
* add http_signature_test to security scheme
* remove http signature from petapi
* Add separate OAS file with support for HTTP signature
* Include HTTP signature in README file
* Add generated files for HTTP signature
* Add helper function to return public key, and add more unit tests for signature validation
* some people save their private key with file extensions other than .pem, so I am relaxing the validation of the private key suffix
* [gradle] Add recommendations to validate task
* Use current version of Gradle Plugin in build checks.
* Fix gradle project build version confusion in CI
* [gradle] Bump samples to 5.2.1 wrapper
Previously, the Gradle plugin was building in CI against
openapi-generator 4.2.0 and Gradle version 4.10.2. At some point, a
contribution was made with an API which is incomatible at 4.10.2 and due
to a release script error which pinned the local-spec version to release
4.2.0, we didn't notice this inconsistency.
This bumps the project to build against Gradle 5.2.1.
* [doc] Update versions missed during release
Removed old script bin/utils/release_version_update_docs.sh to avoid
confusion. New script solves issues of not "globally" replacing.
New script is at:
bin/utils/release/release_version_update_docs.sh
* Update Gradle Plugin README with correct version
* Update gradle.properties to correct version
* Fixes issue with templates loading via classpath
The templating engines were originally written to load templates via the
classpath, but this functionality was blocked by file-only checks
further up the stack. This loosens those file-only checks, allowing
files and relatively imported files to be included via classpath.
* [docs] Add details about classpath-level templates
* [feat][maven] templateResourcePath for template on classpath
- NOTE templateResourcePath is not needed for gradle, as it accepts
a string for the target template directory, which supports classpath
* [core] Extracting recommendations to validation framework
This is work to extract recommendation logic out of the CLI validate command
into a shared evaluation instance which can be used elsewhere (such as Gradle,
or the Online tool).
For now, these validations are in addition to those provided by swagger-parser and
are only the following recommendations:
* Apache/Nginx warning that header values with underscore are dropped by default
* Unused models/schemas
* Use of properties with oneOf, which is ambiguous in OpenAPI Specification
I've allowed for disabling recommendations via System properties, since this is
something that has been requested a few times by users. System properties in this
commit include:
* openapi.generator.rule.recommendations=false
- Allows for disabling recommendations completely. This wouldn't include all warnings
and errors, only those we deem to be suggestions
* openapi.generator.rule.apache-nginx-underscore=false
- Allows for disabling the Apache/Nginx warning when header names have underscore
- This is a legacy CGI configuration, and doesn't affect all web servers
* openapi.generator.rule.oneof-properties-ambiguity=false
- We support this functionality, but the specification may not intend for it
- This is more to reduce noise
* openapi.generator.rule.unused-schemas=false
- We will warn when a schema is not referenced outside of Components, which
users have requested to be able to turn off
* openapi.generator.rule.anti-patterns.uri-unexpected-body=false
* Move recommendation/validations to oas package and add javadoc comments
* Refactor and test recommendation validations
* Refactor validation function signatures to return explicit state rather than boolean
* Add operation recommendation for GET/HEAD w/body
* [typescript] Generate enum name independently on model name, ignoring modelSuffix
* Add `enumSufix` cli option for all typescript generators
* Add ENUM_NAME_SUFFIX to to TypeScript***ClientOptionsProvider
* Add a typeMapping for OAS2 built-in "file" type
* Re-generate samples
* Introduce `v4-compat` mode for enumNamePrefix
* Update TypeScriptFetchModelTest - make sure codegen options are processed before running assertions
* Regenerate samples
* Regenerate docs
* Regenerate docs
* Add enumPropertyNaming option to typescript generators
* Regenerate docs
* Add Locale.ROOT to toUpperCase() call
* Use actual enum values in an error message, instead of hardcoding them
* Add tests for "UPPERCASE" and "snake_case" enum var namings
* Add LOCALE.ROOT to String#format call
* Updates ap.mustache for python-experimental, adds test test_test_endpoint_enums_length_one
* Removes sortParamsByRequiredFlag from python-experimental
* Removes duplicate params from docstring
* add Deprecated in kotlin dataClass
* add deprecated in CodegenProperty
* format (Column limit: 100)
* set property.deprecated
* add test
* run ./bin/kotlin-springboot-petstore-all.sh
* trim space
* [feature] Log "debounce" filter to remove spam.
* [log] slf4j-simple should be optional
This also sets the default log level to ERROR during CI builds for many
mvn invocations. This should reduce noise in the logs.
* [log] Rely only on mvn loglevel=error for now
* [cli] Clean up unused dependency
* [log] Change level to error/warn in more CI
* [python] Cleanup ThreadPool with atexit rather than __del__
This removes the `__del__` function from the generated Python client,
and replaces it with a `cleanup` function. When a ThreadPool is created,
the cleanup function is registered with the `atexit` module.
This fixes#5093, where the API client could hang indefinitely at
garbage collection.
* Update petstore examples
* Test to ensure threadpool is cleaned up
* Docs now encourage using the context manager
* Regenerate docs
* Update samples
* Make api to models from a single model/models.ts instead of individual model files.
Fixes inconsistent usage of file names with inline models (inline-model-1, inline-model-2, ...)
* Remove additional mapped filename prop from api imports (since it's not reliable)
* Rerun ./bin/typescript-angular-petstore-all.sh
* Restore the `filename` property passed to the templates, with a comment it's no longer used
* https://github.com/OpenAPITools/openapi-generator/pull/4407 squashed from original, and better author (I failed to refer the right PR the first time)
* removed isArrayLike in favour of Array.isArray
* support collectionFormat the old way
* fixed type and rebuild samples
* revert samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/package.json
* reverted samples/client/petstore/typescript-angular-v8-provided-in-root/builds/with-npm/tsconfig.json
* rebase-to-master-fix: isDateTime stuff is now handled within this.addToHttpParams
* run bin/typescript-angular-petstore-all.sh on the rebased PR
* applying proposed fix of @macjohnny
* run bin/typescript-angular-petstore-all.sh to regenerate samples
Co-authored-by: aanno <aanno@users.noreply.github.com>
* start implementation of HTTP signature
* add api key parameters for http message signature
* HTTP signature authentication
* start implementation of HTTP signature
* add api key parameters for http message signature
* HTTP signature authentication
* HTTP signature authentication
* start implementation of HTTP signature
* fix merge issues
* Address formatting issues
* Address formatting issues
* move python-experimental-openapiv3-sample to a separate PR
* Add support for HTTP signature
* Add code comments
* Add code comments
* Fix formatting issues
* Fix formatting issues
* Fix formatting issues
* add code comments
* add code comments
* fix python formatting issues
* Make PKCS1v15 string constant consistent between Python and Golang
* fix python formatting issues
* Add code comments in generated Python. Start adding unit tests for HTTP signature
* compliance with HTTP signature draft 12
* compliance with HTTP signature draft 12
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* working on review comments
* fix python formatting issues
* fix trailing white space
* address PR comments
* address PR comments
* address PR comments
* Add suppport for '(expires)' signature parameter
* address PR comments
* address PR comments
* Fix python formatting issues
* Fix python formatting issues
* Starting to move code to dedicated file for HTTP signatures
* Continue to refactor code to dedicated file for HTTP signatures
* Continue to refactor code to dedicated file for HTTP signatures
* Continue to refactor code to dedicated file for HTTP signatures
* Continue to refactor code to dedicated file for HTTP signatures
* move method to ProcessUtils
* conditionally build signing.py
* move method to ProcessUtils
* Code reformatting
* externalize http signature configuration
* address PR review comments
* address PR review comments
* run samples scripts
* Address PR review comments
* Move 'private_key' field to signing module
* Move 'private_key' field to signing module
* code cleanup
* remove use of strftime('%s'), which is non portable
* code cleanup
* code cleanup
* code cleanup
* run sample scripts
* Address PR review comments.
* Add http-signature security scheme
* Run sample scripts for go
* Fix issue uncovered in integration branch
* Fix issue uncovered in integration branch
* Fix issue uncovered in integration branch
* Fix issue uncovered in integration branch
* Run samples scripts
* move http signature tests to separate file
* move http signature tests to separate file
* unit tests for HTTP signature
* continue implementation of unit tests
* add http_signature_test to security scheme
* add unit tests for http signature
* address review comments
* remove http signature from petapi
* Add separate OAS file with support for HTTP signature
* Add support for private key passphrase. Add more unit tests
* Add unit test to validate the signature against the public key
* remove http signature from petstore-with-fake-endpoints-models-for-testing.yaml
* fix unit test issues
* run scripts in bin directory
* Refact unit test with better variable names
* do not throw exception if security scheme is unrecognized
* change URL of apache license to use https
* sync from master
* fix usage of escape character in python regex. Fix generated python documentation
* write HTTP signed headers in user-specified order. Fix PEP8 formatting issues
* write HTTP signed headers in user-specified order. Fix PEP8 formatting issues
* http signature unit tests
* Fix PEP8 format issue
* spread out each requirement to a separate line
* run samples scripts
* run sample scripts
* remove encoding of '+' character
* Spotbugs, PMD and Checkstyle #33
* Reducing Spotbugs effort to min #33
* Also using project.parent.basedir and avoiding relative paths in pom files.
* Filtering out samples.
* Move PMD/Spotbugs to static-analysis profile
This moves the static-analysis checks to a standalone profile. Core
contributors may run static analysis with:
```
mvn -Pstatic-analysis install
```
The analysis is separated from default functionality to reduce impact to
community contributions. SpotBugs/PMD may add a non-trivial amount of
time to builds on some machines.
Co-authored-by: Tomas Bjerre <tomas.bjerre85@gmail.com>
* Add support for HTTP signature
* Add http-signature security scheme
* add http_signature_test to security scheme
* Add separate OAS file with support for HTTP signature
* change URL of apache license to use https
* add log warning to indicate the 'http signature' security scheme is still a draft
* Update RestSharp and improve async methods
* Fixed missing type parameter
* Update sample code
* Update README
* Update RestSharp version for CI
* Fixed sample test projects
* 🐛 Fixing some issues with threading and NPE
After running Sonar on the master branch, some major analysis
opportunities were displayed.
This fixes the use of SimpleDateFormat stored as static fields.
SimpleDateFormat is not thread-safe, and may retain data across threads.
While there's no indicator that this has caused any issues (these are
mostly used for example code), we should follow these best practices.
This also fixes a handful of NPE and other minor issues such as
comparing Boolean.TRUE to strings and no wrapping some closeables in
try-with-resources.
* [cli] Unit test GenerateBatch custom deserialization helper
* Quiet batch mode in sonar.yml
* Suppress unnecessary warnings (ThreadLocals in static fields)
* Adds jacoco for code coverage
This sets up jacoco instrumentation for code coverage. Preparing for
master and PR coverage reporting via sonarcloud.
* Set initial required coverage to 0
* fix go compilation error for properties of type map and array
* fix go compilation error for properties of type date and datetime
* add missing shell script to bin/utils/ensure-up-to-date
* add missing shell script to bin/utils/ensure-up-to-date
* add missing shell script to bin/utils/ensure-up-to-date
* fix issue with 'date' type
* fix time import problem
* Add missing pom.xml files for golang
* Add missing unit test files for golang
* Add missing unit test files for golang. Must use class name prefix for enums
* Fix unit tests for go-experimental in OAS3
* Fix unit tests for go-experimental in OAS3
* Add code comments in codegen
* Fix compilation errors of generated go code
* Fix compilation errors of generated go code
* remove antihax from go-experimental, it is no longer used
* copy python testfile for ut purpose
* add error checkout in unit tests
* add unit tests
* add code comments
* move test foo.png file to correct location
* run samples scripts
* run samples scripts
* [Slim4] Support byte data format
* [Slim4] Support date and date-time data formats
* [Slim4] Support password data format
* [Slim4] Support uuid data format
* [Slim4] Fix test of password format mocking
'00000' is numeric type, because PHPUnit doesn't make strict type
comparison.
* [Slim4] Fix data format key in object mocking
* [Slim4] Support binary data format
* [Slim4] Support email data format
* [Slim4] Base64 encode binary format output
Raw bytes string breaks PHP stdout output, so I've decided to use base64
encoding format for binary format too.
* [Slim4] Refresh samples
* [test] Removes jmockit in favor of mockito
We use mockito in many tests. This removes jmockit which is run as a
javaagent in favor of Mockito which is not.
This work is in preparation for applying some static analysis tools,
while evaluating others such as Jacoco. I'm also look at ways to improve
build times while also decreasing "ramp up time" for contributions from
the community. Reducing the number of mock frameworks and dependencies
is a step toward that goal.
* Rename method in new.sh
* [cli] Mock the generate task
Tests for python client, comprising support for additional_properties and arrays.
There are ugly workarounds for when there are discriminators, since the python client generator does not fully handle them.
Cool indentation of test files.
* [aspnetcore] Fix duplicate generation of enums
Fixes template issue where enums defined within a class were generated
regardless of whether they were a complexType (externally defined
"model") or an inlined enum.
* [dart-dio+time_machine] Add missing import, serializer
* [dart-dio] Remove bad import from `http` package
* [dart-dio] Use raw strings for those that contain variable name.
This should eliminate potential issue with variables like `$ref`.
* [dart-dio] Use `_path` instead of `path` to avoid potential conflict with op params.
See 1bec0b47b1/Kubernetes.json, there are a few with `{path}` param.
* [dart-dio+time_machine] Use `OffsetXxx` classes for date time values
* [config-help] Sort all outputs
* Remove old/stale generator docs (these have been renamed previously)
* Sort config doc outputs, making it easier to find relevant info
* Fixes cliOptions duplicates
Erlang client/proper improperly set the version option as packageName
(causing duplicate for packageName).
The java and swift option removals are because the options are added in
parent classes, resulting in duplication of the options.
* Add --github-nested-index for generating docs/generators/README.md
* 📝 Regenerate generator docs
This continues on work in #5033 and #5034 which convert all http usage
to https to unblock CircleCI builds.
In #5034, mavenCentral() DSL was updated to explicitly target the https
maven repo because Gradle didn't force TLS 1.2 until v4.8.1 and many of
our examples use earlier versions of Gradle. The Kotlin meta generator
was missed because it is a .kts build file rather than build.gradle, and
the mustache filename doesn't have kts in it; the file was updated as if
it was build.gradle (groovy syntax).
* Use builder pattern for requests
* petstore
* Add @throws annotation
* regenerate jersey2 test files
* Also group bodyParam in builder class
* petstore java6
* regenerate java8
* ensure up to date
- due to the addition of the timemachine library, models were importing ‘DateTime’ when using the core library, which is not a valid import.
- the parameterToString function was copied from the dart2 generator and had some errors when some enums were classes.
* Fix for Issue #2205
Because when we have tags on OpenAPI Specification, there can be more than 1 Feign Beans being generated and the title field is share by all the clients. This makes the code to stop working in runtime.
Here is a PR which uses the classVarName instead, which follows the standards and should be enough to solve this issue.
For more info please refer to: https://github.com/OpenAPITools/openapi-generator/issues/2205
* fix java feign parameter request name (#4883)
* update sprign cloud feign sample
* [JAVA][SPRING][2195] added missing getter for enum value (#2346)
* [2195] added missing getter for enum value
* updated samples
* re-generate spring samples
* Removed @JsonValue from toString and regenerated samples
* re-generate spring samples
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
* update samples
* [kotlin][client] make Request date converter toJson as default
* [kotlin][client] update windows scripts
* [kotlin][client] update docs
* [kotlin][client] update scripts
* [kotlin][client] update scripts
Co-authored-by: Filipe Manuel Couto Pinheiro <filipemcpinheiro@gmail.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
Co-authored-by: Lukáš Vasek <bilaak@gmail.com>
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
* Expanding CodableHelper with a more customisable dateFormatter and JSON en-/decoder.
* Ran ./bin/swift4-petstore.sh
* Ran ./bin/swift4-petstore-all.sh again after merge from master.
* Ran ./bin/swift4-petstore-all.sh again after building.
* Ran ./bin/swift4-petstore-all.sh again after rebase latest from upstream master.
* sync master, update samples
* Built and ran ./bin/swift4-petstore-all.sh
* Re-adding code which disappeared in rebase from master.
* Fixed test
* [swift] remove old classes
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
@@ -91,7 +91,12 @@ To test the templates, please perform the following:
(`git add -A` if added files with new test cases)
- For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml)
To start the CI tests, you can run `mvn verify -Psamples` (assuming you've all the required tools installed to run tests for different languages) or you can leverage http://travis-ci.org to run the CI tests by adding your own openapi-generator repository.
To start the CI tests, you can:
- Run `mvn verify -Psamples`, assuming you have all the required tools installed to run tests for different languages.
- Leverage http://travis-ci.org to run the CI tests by adding your own openapi-generator repository.
- Run some of the CI tests in your local workspace.
See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/Integration-Tests) for more information about the integration tests.
[](https://join.slack.com/t/openapi-generator/shared_invite/enQtNzAyNDMyOTU0OTE1LTY5ZDBiNDI5NzI5ZjQ1Y2E5OWVjMjZkYzY1ZGM2MWQ4YWFjMzcyNDY5MGI4NjQxNDBiMTlmZTc5NjY2ZTQ5MGM)
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
[](https://twitter.com/oas_generator)
</div>
@@ -59,22 +52,23 @@ If you find OpenAPI Generator useful for work, please consider asking your compa
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:
@@ -110,12 +104,11 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se
The OpenAPI Specification has undergone 3 revisions since initial creation in 2010. The openapi-generator project has the following compatibilities with the OpenAPI Specification:
5.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/)| 13.05.2020 | Major release with breaking changes (no fallback)
4.3.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.3.0-SNAPSHOT/)| 29.02.2020 | Minor release (breaking changes with fallbacks)
| 5.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/)| 13.05.2020 | Major release with breaking changes (no 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/2_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](http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/4.2.2/openapi-generator-cli-4.2.2.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/4.3.1/openapi-generator-cli-4.3.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`
@@ -567,6 +566,8 @@ Here is a list of community-conitributed IDE plug-ins that integrate with OpenAP
Here are some companies/projects (alphabetical order) using OpenAPI Generator in production. To add your company/project to the list, please visit [README.md](README.md) and click on the icon to edit the page.
@@ -635,6 +644,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Vouchery.io](https://vouchery.io)
- [Xero](https://www.xero.com/)
- [Yahoo Japan](https://www.yahoo.co.jp/)
- [YITU Technology](https://www.yitutech.com/)
- [Yelp](https://www.yelp.com/)
- [Zalando](https://www.zalando.com)
@@ -645,6 +655,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2018/05/15 - [REST API仕様からAPIクライアントやスタブサーバを自動生成する「OpenAPI Generator」オープンソースで公開。Swagger Codegenからのフォーク](https://www.publickey1.jp/blog/18/rest_apiapiopenapi_generatorswagger_generator.html) by [Publickey](https://www.publickey1.jp)
- 2018/06/08 - [Swagger Codegen is now OpenAPI Generator](https://angular.schule/blog/2018-06-swagger-codegen-is-now-openapi-generator) by [JohannesHoppe](https://github.com/JohannesHoppe)
- 2018/06/21 - [Connect your JHipster apps to the world of APIs with OpenAPI and gRPC](https://fr.slideshare.net/chbornet/jhipster-conf-2018-connect-your-jhipster-apps-to-the-world-of-apis-with-openapi-and-grpc) by [Christophe Bornet](https://github.com/cbornet) at [JHipster Conf 2018](https://jhipster-conf.github.io/)
- 2018/06/27 - [Lessons Learned from Leading an Open-Source Project Supporting 30+ Programming Languages](https://speakerdeck.com/wing328/lessons-learned-from-leading-an-open-source-project-supporting-30-plus-programming-languages) - [William Cheng](https://github.com/wing328) at [LinuxCon + ContainerCon + CloudOpen China 2018](http://bit.ly/2waDKKX)
- 2018/07/19 - [OpenAPI Generator Contribution Quickstart - RingCentral Go SDK](https://medium.com/ringcentral-developers/openapi-generator-for-go-contribution-quickstart-8cc72bf37b53) by [John Wang](https://github.com/grokify)
- 2018/08/22 - [OpenAPI Generatorのプロジェクト構成などのメモ](https://yinm.info/20180822/) by [Yusuke Iinuma](https://github.com/yinm)
@@ -652,6 +663,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2018/10/31 - [A node package wrapper for openapi-generator](https://github.com/HarmoWatch/openapi-generator-cli)
- 2018/11/15 - [基于openapi3.0的yaml文件生成java代码的一次实践](https://blog.csdn.net/yzy199391/article/details/84023982) by [焱魔王](https://me.csdn.net/yzy199391)
- 2018/11/18 - [Generating PHP library code from OpenAPI](https://lornajane.net/posts/2018/generating-php-library-code-from-openapi) by [Lorna Jane](https://lornajane.net/) at [LORNAJANE Blog](https://lornajane.net/blog)
- 2018/11/19 - [OpenAPIs are everywhere](https://youtu.be/-lDot4Yn7Dg) by [Jeremie Bresson (Unblu)](https://github.com/jmini) at [EclipseCon Europe 2018](https://www.eclipsecon.org/europe2018)
- 2018/12/09 - [openapi-generator をカスタマイズする方法](https://qiita.com/watiko/items/0961287c02eac9211572) by [@watiko](https://qiita.com/watiko)
- 2019/01/03 - [Calling a Swagger service from Apex using openapi-generator](https://lekkimworld.com/2019/01/03/calling-a-swagger-service-from-apex-using-openapi-generator/) by [Mikkel Flindt Heisterberg](https://lekkimworld.com)
@@ -663,6 +675,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2019/02/26 - [Building API Services: A Beginner’s Guide](https://medium.com/google-cloud/building-api-services-a-beginners-guide-7274ae4c547f) by [Ratros Y.](https://medium.com/@ratrosy) in [Google Cloud Platofrm Blog](https://medium.com/google-cloud)
- 2019/02/26 - [Building APIs with OpenAPI: Continued](https://medium.com/@ratrosy/building-apis-with-openapi-continued-5d0faaed32eb) by [Ratros Y.](https://medium.com/@ratrosy) in [Google Cloud Platofrm Blog](https://medium.com/google-cloud)
- 2019-03-07 - [OpenAPI Generator で Spring Boot と Angular をタイプセーフに繋ぐ](https://qiita.com/chibato/items/e4a748db12409b40c02f) by [Tomofumi Chiba](https://github.com/chibat)
- 2019-03-16 - [A Quick introduction to manual OpenAPI V3](https://vadosware.io/post/quick-intro-to-manual-openapi-v3/) by [vados](https://github.com/t3hmrman) at [VADOSWARE](https://vadosware.io)
- 2019-03-25 - [Access any REST service with the SAP S/4HANA Cloud SDK](https://blogs.sap.com/2019/03/25/integrate-sap-s4hana-cloud-sdk-with-open-api/) by [Alexander Duemont](https://people.sap.com/alexander.duemont)
- 2019-03-25 - [OpenAPI generatorを試してみる](https://qiita.com/amuyikam/items/e8a45daae59c68be0fc8) by [@amuyikam](https://twitter.com/amuyikam)
- 2019-03-27 - [OpenAPI3を使ってみよう!Go言語でクライアントとスタブの自動生成まで!](https://techblog.zozo.com/entry/openapi3/go) by [@gold_kou](https://twitter.com/gold_kou)
@@ -709,6 +722,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2019-11-08 - [JHipster beyond CRUD - API-First for Enterprises by Enrico Costanzi](https://www.youtube.com/watch?v=m28JFovKQ20) by [Enrico Costanzi](https://twitter.com/enricocostanzi) at [JHipster Conf 2019 in Paris](https://jhipster-conf.github.io/)
- 2019-11-11 - [TypeScript REST APIクライアント](https://qiita.com/unhurried/items/7b74f7d3c43545dadd2b) by [@unhurried](https://qiita.com/unhurried)
- 2019-11-11 - [One Spec to Rule them all - OpenAPI in Action](https://www.youtube.com/watch?v=MMay_nht8ec) by [Andreas Litt](https://github.com/littldr) at [code.talks 2019](https://www.codetalks.com/)
- 2019-11-13 - [OpenAPI 3.0 Editor And Generator With A Spring Boot Example](https://simply-how.com/design-and-generate-api-code-from-openapi) at [Simply How](https://simply-how.com/)
- 2019-11-17 - [OpenAPI Generator YouTube playlist](https://www.youtube.com/playlist?list=PLtJyHVMdzfF6fBkOUV5VDVErP23CGgHIy) at [YouTube](https://www.youtube.com)
- 2019-11-20 - [Introduction to OpenAPI](https://noti.st/lornajane/HvDH7U/introduction-to-openapi) by [Lorna Mitchell](https://twitter.com/lornajane) at [GOTO Copenhagen 2019](https://gotocph.com/2019/)
- 2019-11-20 - [How to Generate Angular code from OpenAPI specifications](https://dotnetthoughts.net/how-to-generate-angular-code-from-openapi-specifications/) by Anuraj
@@ -716,9 +730,27 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2019-11-24 - [Accelerate Flutter development with OpenAPI and Dart code generation](https://medium.com/@irinasouthwell_220/accelerate-flutter-development-with-openapi-and-dart-code-generation-1f16f8329a6a) by [Irina Southwell](https://medium.com/@irinasouthwell_220)
- 2019-11-25 - [openapi-generatorで手軽にスタブサーバとクライアントの生成](https://qiita.com/pochopocho13/items/8db662e1934fb2b408b8) by [@pochopocho13](https://twitter.com/pochopocho13)
- 2019-11-26 - [CordaCon 2019 Highlights: Braid Server and OpenAPI Generator for Corda Client API’s](https://blog.b9lab.com/cordacon-2019-highlights-braid-server-and-openapi-generator-for-corda-flows-api-s-d24179ccb27c) by [Adel Rustum](https://blog.b9lab.com/@adelrestom) at [B9lab](https://blog.b9lab.com/)
- 2019-12-03 - [A Road to Less Coding: Auto-Generate APILibrary](https://www.corda.net/blog/a-road-to-less-coding-auto-generate-apilibrary/) at [Corda Blog](https://www.corda.net/blog/)
- 2019-12-04 - [Angular+NestJS+OpenAPI(Swagger)でマイクロサービスを視野に入れた環境を考える](https://qiita.com/teracy55/items/0327c7a170ec772970c6) by [てらしー](https://twitter.com/teracy55)
- 2019-12-17 - [OpenAPI Generator で OAuth2 アクセストークン発行のコードまで生成してみる](https://www.techscore.com/blog/2019/12/17/openapi-generator-oauth2-accesstoken/) by [TECHSCORE](https://www.techscore.com/blog/)
- 2019-12-23 - [Use Ada for Your Web Development](https://www.electronicdesign.com/technologies/embedded-revolution/article/21119177/use-ada-for-your-web-development) by [Stephane Carrez](https://github.com/stcarrez)
- 2019-12-23 - [OpenAPIのスキーマを分割・構造化していく方法](https://gift-tech.co.jp/articles/structured-openapi-schema) by [小飯塚達也](https://github.com/t2h5) at [GiFT, Inc](https://gift-tech.co.jp/)
- 2020-01-17 - [OpenAPI demo for Pulp 3.0 GA](https://www.youtube.com/watch?v=mFBP-M0ZPfw&t=178s) by [Pulp](https://www.youtube.com/channel/UCI43Ffs4VPDv7awXvvBJfRQ) at [Youtube](https://www.youtube.com/)
- 2020-01-19 - [Why document a REST API as code?](https://dev.to/rolfstreefkerk/why-document-a-rest-api-as-code-5e7p) by [Rolf Streefkerk](https://github.com/rpstreef) at [DEV Community](https://dev.to)
- 2020-01-28 - [Get Your Serverless Swagger Back with OpenAPI](https://dev.to/matttyler/get-your-serverless-swagger-back-with-openapi-48gc) by [Matt Tyler](https://dev.to/matttyler)
- 2020-01-30 - [OpenAPI Generatorへのコントリビュート](https://www.yutaka0m.work/entry/2020/01/30/163905) by [yutaka0m](https://github.com/yutaka0m)
- 2020-02-01 - [Using OpenAPI to Maximise Your Pulp 3 Experience](https://fosdem.org/2020/schedule/event/openapi/) by [Dennis Kliban](https://github.com/dkliban/) at [FOSDEM](https://fosdem.org/)
- 2020-02-07 - [Why you should use OpenAPI for your API design](https://www.youtube.com/watch?v=zhb7vUApLW8&t=927s) by [Nick Van Hoof](https://apiconference.net/speaker/nick-van-hoof/) at [API Conference](https://apiconference.net/)
- 2020-02-17 - [Rubynetes: using OpenAPI to validate Kubernetes configs](https://www.brightbox.com/blog/2020/02/17/using-openapi-to-validate-kubernetes-configs/) by Neil Wilson at [Brightbox](https://www.brightbox.com/)
- 2020-02-20 - [Building SDKs for the future](https://devblog.xero.com/building-sdks-for-the-future-b79ff726dfd6) by [Sid Maestre (Xero)](https://twitter.com/sidneyallen)
- 2020-02-27 - [Nuxt利用プロダクトでIE11と仲良くするためのE2E](https://tech.medpeer.co.jp/entry/e2e-ie11) at [Medpeer.co.jp Tech Blog](https://tech.medpeer.co.jp/)
- 2020-02-29 - [Providing Support to IoT Devices Deployed in Disconnected Rural Environment (Conference paper)](https://link.springer.com/chapter/10.1007/978-3-030-41494-8_14) by Sergio Laso, Daniel Flores-Martín, Juan Luis HerreraCarlos, CanalJuan Manuel, MurilloJavier Berrocal
- 2020-03-02 - [How To Generate Angular & Spring Code From OpenAPI Specification](https://www.mokkapps.de/blog/how-to-generate-angular-and-spring-code-from-open-api-specification/) by [Michael Hoffmann](https://www.mokkapps.de/)
- 2020-03-02 - [OpenAPI Generator + TypeScript で始める自動生成の型に守られた豊かなクライアント生活](https://gift-tech.co.jp/articles/openapi-generator-typescript) by [五百蔵 直樹](https://gift-tech.co.jp/members/naokiioroi) at [GiFT株式会社](https://gift-tech.co.jp/)
- 2020-03-10 - [OpenAPI Generator Meetup #1](https://speakerdeck.com/akihito_nakano/openapi-generator-meetup-number-1) by [中野暁人](https://github.com/ackintosh) at [OpenAPI Generator Meetup #1](https://openapi-generator-meetup.connpass.com/event/168187/)
- 2020-03-15 - [Load Testing Your API with Swagger/OpenAPI and k6](https://k6.io/blog/load-testing-your-api-with-swagger-openapi-and-k6)
- 2020-04-13 - [俺的【OAS】との向き合い方 (爆速でOpenAPIと友達になろう)](https://tech-blog.optim.co.jp/entry/2020/04/13/100000) in [OPTim Blog](https://tech-blog.optim.co.jp/)
- 2020-04-22 - [Introduction to OpenAPI Generator](https://nordicapis.com/introduction-to-openapi-generator/) by [Kristopher Sandoval](https://nordicapis.com/author/sandovaleffect/) in [Nordic APIs](https://nordicapis.com/)
## [6 - About Us](#table-of-contents)
@@ -778,6 +810,7 @@ Here is a list of template creators:
* Java (Rest-assured): @viclovsky
* Java (Java 11 Native HTTP client): @bbdouglas
* Javascript/NodeJS: @jfiala
* Javascript (Apollo DataSource): @erithmetic
* Javascript (Closure-annotated Angular) @achew22
* Javascript (Flow types) @jaypea
* JMeter: @davidkiss
@@ -796,6 +829,7 @@ Here is a list of template creators:
* Rust (rust-server): @metaswitch
* Scala (scalaz & http4s): @tbrown1979
* Scala (Akka): @cchafer
* Scala (sttp): @chameleon82
* Swift: @tkqubo
* Swift 3: @hexelon
* Swift 4: @ehyche
@@ -815,6 +849,7 @@ Here is a list of template creators:
* Ada: @stcarrez
* C# ASP.NET 5: @jimschubert [:heart:](https://www.patreon.com/jimschubert)
* C# ASP.NET Core 3.0: @A-Joshi
* C# APS.NET Core 3.1: @phatcher
* C# NancyFX: @mstefaniuk
* C++ (Qt5 QHttpEngine): @etherealjoy
* C++ Pistache: @sebymiano
@@ -847,6 +882,7 @@ Here is a list of template creators:
@@ -95,7 +95,12 @@ To test the templates, please perform the following:
(`git add -A` if added files with new test cases)
- For new test cases, please add to the [Fake Petstore spec](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml)
To start the CI tests, you can run `mvn verify -Psamples` (assuming you've all the required tools installed to run tests for different languages) or you can leverage http://travis-ci.org to run the CI tests by adding your own openapi-generator repository.
To start the CI tests, you can:
- Run `mvn verify -Psamples`, assuming you have all the required tools installed to run tests for different languages.
- Leverage http://travis-ci.org to run the CI tests by adding your own openapi-generator repository.
- Run some of the CI tests in your local workspace.
See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/Integration-Tests) for more information about the integration tests.
<a id="creating-a-new-template"></a><!-- maintain old link ref name.-->
## Custom Generator (and Template)
If none of the built-in generators suit your needs and you need to do more than just modify the mustache templates to tweak generated code, you can create a brand new generator and its associated templates. OpenAPI Generator can help with this, using the `meta` command:
<a id="creating-a-new-template"></a> If none of the built-in generators suit your needs and you need to do more than just modify the mustache templates to tweak generated code, you can create a brand new generator and its associated templates. OpenAPI Generator can help with this, using the `meta` command:
```sh
java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar meta \
@@ -224,7 +223,7 @@ apiPackage: "petstore"
```
Supported config options can be different per language. Running `config-help -g {lang}` will show available options.
**These options are applied via configuration file (e.g. config.json or config.yml) or by passing them with `-D{optionName}={optionValue}`**. (If `-D{optionName}` does not work, please open a [ticket](https://github.com/openapitools/openapi-generator/issues/new) and we'll look into it)
**These options are applied via configuration file (e.g. config.json or config.yml) or by passing them with `-p {optionName}={optionValue}`**. (If `-p {optionName}` does not work, please open a [ticket](https://github.com/openapitools/openapi-generator/issues/new) and we'll look into it)
As a user there may be times when generated outputs don't match your expectations it's unclear why. The CLI supports a `--dry-run` option which may be used to inspect the anticipated file operations without making changes to the file system.
Suppose you generate using the `--minimal-update` option, and you notice on subsequent generations of a client that no files have changed. This is by design.
For example, if you generate the aspnetcore generator passing `--minimal-update --dry-run` to the sample generation script in the code repository:
w /path/to/aspnetcore/src/Org.OpenAPITools/.gitignore
n /path/to/aspnetcore/src/Org.OpenAPITools/Attributes/ValidateModelStateAttribute.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Authentication/ApiAuthentication.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Controllers/PetApi.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Controllers/StoreApi.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Controllers/UserApi.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Converters/CustomEnumConverter.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Dockerfile
n /path/to/aspnetcore/src/Org.OpenAPITools/Filters/BasePathFilter.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Filters/GeneratePathParamsValidationFilter.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/ApiResponse.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/Category.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/Order.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/Pet.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/Tag.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Models/User.cs
n /path/to/aspnetcore/src/Org.OpenAPITools/Org.OpenAPITools.csproj
n /path/to/aspnetcore/src/Org.OpenAPITools/Program.cs
w /path/to/aspnetcore/src/Org.OpenAPITools/Properties/launchSettings.json
n /path/to/aspnetcore/src/Org.OpenAPITools/Startup.cs
w /path/to/aspnetcore/src/Org.OpenAPITools/appsettings.json
w /path/to/aspnetcore/src/Org.OpenAPITools/wwwroot/README.md
w /path/to/aspnetcore/src/Org.OpenAPITools/wwwroot/index.html
n /path/to/aspnetcore/src/Org.OpenAPITools/wwwroot/openapi-original.json
w /path/to/aspnetcore/src/Org.OpenAPITools/wwwroot/web.config
States:
- w Write
- n Write if New/Updated
- i Ignored
- s Skipped Overwrite
- k Skipped by user option(s)
- e Error evaluating file write state
```
The output lists the files which would be written in a normal run of the tool. Notice that we skip `.openapi-generator-ignore` because the file exists and we don't want to blow away the user's generation rules. Most of these files will overwrite output files only if the contents slated for write are different from those on the filesystem; this is denoted by an `n` preceding the filename. Some of the above lines begin with a `w`, meaning these files will _always_ result in a write operation.
If you find an operation that you feel should result in a different state, please [open an issue](https://github.com/OpenAPITools/openapi-generator/issues/new/choose) or [submit a pull request](https://github.com/OpenAPITools/openapi-generator/compare) to change the behavior (we welcome all contributions).
## Templates
Sometimes, you may have issues with variables in your templates. As discussed in the [templating](./templating.md) docs, we offer a variety of system properties for inspecting the models bound to templates.
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|legacyDiscriminatorBehavior|This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.|<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|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|projectName|GNAT project name| |defaultProject|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|legacyDiscriminatorBehavior|This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.|<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|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|projectName|GNAT project name| |defaultProject|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|modelPackage|package for generated models| |null|
|apiPackage|package for generated api classes| |null|
|invokerPackage|root package for generated code| |null|
|groupId|groupId for use in the generated build.gradle and pom.xml| |null|
|artifactId|artifactId for use in the generated build.gradle and pom.xml| |null|
|artifactVersion|artifact version for use in the generated build.gradle and pom.xml| |null|
|sourceFolder|source folder for generated code| |null|
|useAndroidMavenGradlePlugin|A flag to toggle android-maven gradle plugin.| |true|
|androidBuildToolsVersion|buildToolsVersion version for use in the generated build.gradle| |null|
|androidGradleVersion|gradleVersion version for use in the generated build.gradle| |null|
|androidSdkVersion|compileSdkVersion version for use in the generated build.gradle| |null|
|androidBuildToolsVersion|buildToolsVersion version for use in the generated build.gradle| |null|
|apiPackage|package for generated api classes| |null|
|artifactId|artifactId for use in the generated build.gradle and pom.xml| |null|
|artifactVersion|artifact version for use in the generated build.gradle and pom.xml| |null|
|ensureUniqueParams|Whether to ensure parameter names are unique in an operation (rename parameters that are not).| |true|
|groupId|groupId for use in the generated build.gradle and pom.xml| |null|
|invokerPackage|root package for generated code| |null|
|legacyDiscriminatorBehavior|This flag is used by OpenAPITools codegen to influence the processing of the discriminator attribute in OpenAPI documents. This flag has no impact if the OAS document does not use the discriminator attribute. The default value of this flag is set in each language-specific code generator (e.g. Python, Java, go...)using the method toModelName. Note to developers supporting a language generator in OpenAPITools; to fully support the discriminator attribute as defined in the OAS specification 3.x, language generators should set this flag to true by default; however this requires updating the mustache templates to generate a language-specific discriminator lookup function that iterates over {{#mappedModels}} and does not iterate over {{children}}, {{#anyOf}}, or {{#oneOf}}.|<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|
|library|library template (sub-template) to use|<dl><dt>**volley**</dt><dd>HTTP client: Volley 1.0.19 (default)</dd><dt>**httpclient**</dt><dd>HTTP client: Apache HttpClient 4.3.6. JSON processing: Gson 2.3.1. IMPORTANT: Android client using HttpClient is not actively maintained and will be depecreated in the next major release.</dd></dl>|null|
|modelPackage|package for generated models| |null|
|prependFormOrBodyParameters|Add form or body parameters to the beginning of the parameter list.| |false|
|serializableModel|boolean - toggle "implements Serializable" for generated models| |false|
|library|library template (sub-template) to use|<dl><dt>**volley**</dt><dd>HTTP client: Volley 1.0.19 (default)</dd><dt>**httpclient**</dt><dd>HTTP client: Apache HttpClient 4.3.6. JSON processing: Gson 2.3.1. IMPORTANT: Android client using HttpClient is not actively maintained and will be depecreated in the next major release.</dd><dl>|null|
|sortModelPropertiesByRequiredFlag|Sort model properties to place required parameters before optional parameters.| |true|
|sortParamsByRequiredFlag|Sort method arguments to place required parameters before optional parameters.| |true|
|sourceFolder|source folder for generated code| |null|
|useAndroidMavenGradlePlugin|A flag to toggle android-maven gradle plugin.| |true|
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.