* Adds vars to all schema classes, adds partial test
* Adds tests and addVarsRequiredVarsAdditionaProps
* Adds CodegenProperty test
* Adds requiredVars
* Adds vars and requiredVars cloning for CodegenProperty
* Fix a bug when asking to upload a MultipartFile as body.
* Make finalizing MultipartFileRequest simpler.
* Restrict creating a MultipartFileRequest when not part of a multipart-form.
* Simplified the upload to use a StreamedRequest.
* Wrap all requests with try-catch.
* First iteration to support new mechanism that needs to have the handle of the result.
* Most of the samples now build except "async". Also, everything is messed up.. need to understand the mustache way to handle this.
* New version to support play 2.8
* Fix conflict
* Fix error when multiple file in forms
* test protobuf schema
* remove sudo
* use different image
* proto files
* test with go
* test with go
* test with go
* test with go
* break the build
* Revert "break the build"
This reverts commit 81c10e7d96.
* remove comment
* move config
* remove old protobuf-schema.yaml
* Update users.yml
We are happily using this, too!
* add our logo, too
* sort in our company alphabetically
Co-authored-by: Alexander Presber <alexander@giantmonkey.de>
* [python] add socket_options to configuration for the rest client
* (python-experimental) add socket_options to configuration for the rest client
This mirrors work done on the python generator
* (python-experimental) add test to cover socket_options is passed on from configuration
Co-authored-by: steve brazier <steve.brazier@trioptima.com>
* Force isCollectionFormatMulti in case of binary/file
* Manage multipartFormData in isCollectionFormatMulti
* Update petstore
Co-authored-by: Julien Herr <julien@nabu.io>
* test file return
* fix stream response
* use options
* use local var
* fix nil tempfile
* fix tempfile
* fix tempfile
* use stream
* check content
* open temp file
* test ruby file download
* fix stream data
* test faraday
* catch connection error
* catch Faraday::ConnectionFailed
* catch all error
* use sream
* refactor
* fi download file in faraday
* local fix
* fi streaming download
* undo changess to spec, test
* undo changes to spec
* add option to return None instead of raising exception when accessing unset attribute
* update python samples
* reimplement getattr using getitem or get depending on attrNoneIfUnset
* move getattr and setattr to respective templates
* update docstrings, def get/setattr methods to have docstrings in them, use __dict__ to avoid recursion issues
* revert required_properties change
* add manual tests for .get method
* Fix [jaxrs-jersey][java][jersey] multipart/form-data file array issue on generating jaxrs-jersey.
This commit aims to fix https://github.com/OpenAPITools/openapi-generator/issues/7330 with described solution 'choice C'.
* add test code [jaxrs-jersey][java][jersey] for multipart/form-data file on generating
* update test code [jaxrs-jersey][java][jersey] for multipart/form-data file on generating
followed latest master branch of OpenAPITools/openapi-generator
* update samples/* by executing ./bin/generate-samples.sh
* update mustaches for JavaJaxxRS/libraries/jersey1/* and samples/* to resolve failure of CI test on PR.
Complex types need to be serialized as JSON to avoid FormData.append()
from converting them into strings through .toString(). The generated
ToJSON mapper is used in case the value name has underscores or other
unusual characters.
Signed-off-by: Andreas Metsälä <andreas.metsala@gmail.com>
* adding multiple servers support to typescript-rxjs
* regenerated typescript-rxjs samples
Co-authored-by: Schwartz, Benjamin <benjamin.schwartz@cgi.com>
* Implements additionalProperties in CodegenParameter
* Implements additionalProperties in CodegenProperty
* Adds additionalProperties to CodegenModel
* Adds additionalProperties to CodegenResponse
* Adds additionalProperties examples for CodegenModel and CodegenProperty
* Adds test cases for CodegenParameter and CodegenResponse
* Adds testAdditionalPropertiesPresentInModelProperties
* Adds testAdditionalPropertiesPresentInResponses
* Adds underscore name for additionalProperties property, needed for CppTizenClientCodegen
* Changes prop name back to empty string, fixes CppTizenClientCodegen
This adds the Maven integration tests to the Check Supported Java
Versions job which runs on master.
Maven on Windows was previously broken with templateDirectory. This was
fixed previously in a pull request, but the Maven plugin integration
testing did not work in our other CI vendors. This was tested and
verified in a private repo. The difference is likely due to vCPUs
available in GitHub Workflows differing from other free CI we use
elsewhere.
* Move java specific import mappers to java specific code gen
* Use JVM specific import mappers in kotlin, scala, groovy
* Update generators docs
* Add autogenerated files
* Better code for building Retrofit
By removing the nullable `usedClient` passed to Retrofit, the code is compatible with newer Retrofit versions which don't allow null as client.
* Updated Kotlin retrofit2 samples ApiClient
* Updates key java files
* Adds all lingering isArray fixes
* Adds two files
* Reverts two cs files
* Fixes lingering isListContainer + isArrayModel references
* Some ensure up to date updates
replace setConfig and setOpenApi with the
non-deprecated config / openAPI methods
Co-authored-by: Peter Somogyvari <petermetz@users.noreply.github.com>
* [maven] Fallback to templates using classpath rather than OS-specific paths
Previous checks would cause logic in Windows to return early, for
built-in templates only. This reorganizes and simplifies the ordering
behavior.
* Match classpath check in WorkflowSettings with that in TemplateManager
* [maven] Much needed unit/integration tests
This follows similar approach used in PMD and other plugins managed by
maven.
Unit tests simply verify we can load configuration as expected into the
Mojo.
Integration tests execute actual sample projects bound to the current
build's Maven plugin. This uses maven-invoker-plugin, which also allows
for specifying the maven options in invoker.properties to execute the test.
It also provides a verification framework using groovy files with the
required naming convention of "verify.groovy". This allows us to quickly
and easily check that certain files are outputted by generation, and we
may also spotcheck file contents.
templateResourcePath option is skipped on windows. I've tested back to
version 3.3.3 and this doesn't seem to have worked consistently with how
the property works on non-Windows.
* Set groovy 3.0.5 for test harness
* Print stacktrace on Maven error in Travis
* [maven] Set groovy version in tests to supported in Java 11+
* Puts maven integration tests in separate profile called 'integration'
The FILES metadata is supplementary, but was logging a warning while
generating Ada client that FILES couldn't be written. An exception was
being thrown because Path was being reported as two different "types of
Path". One would be reported as mac file, while the other was reported
as a unix file. The fix here is to disconnect path details from the
underlying file system provider by creating a new Path based on the
file's absolute path. This change also fixes sorting so it works
alphabetically in ascending order.
* fixed import mapping for arrays with component of type string
* changed test title
* generated samples
* Revert "generated samples"
This reverts commit b86a6fcdee.
* Fix#7594: [BUG][Ada] Incorrect client Ada code generated
- Fix the identification of path parameters
- Fix the model and client to support FreeFormObject
* update doc
* fix errors, update samples
Co-authored-by: Stephane Carrez <Stephane.Carrez@gmail.com>
* Resolve an exception situation when a remote server returns 204 with no body.
* Only return a value when needed.
* Use HttpStatus codes instead of magic numbers.
* Drop checking for a body as it will consume too much memory.
* Cosmetic changes.
* Updated Dart2 template.
* Generated Petstore client code for Dart2.
* Use double-quotes instead of single-quotes, to be consistent with output of Dart generator.
* Updated Petstore samples.
* Wrap few more places with triple curly parentheses.
* Generated Petstore files.
* Revert to using single quotes, fix Java generator too.
* Generated Petstore files.
* Lower case the content type value.
* Only lower-case content type when checking its value.
* Generated files from running "./bin/utils/ensure-up-to-date".
* Remove outdated comments for Dart1.
* Regenerate Petstore samples for Dart.
* Added a new option "pubLibrary".
* Added support for (de)serializing a DateTime into an epoch value.
* Make client variable a getter/setter, adjust docs.
* Fixed a small error in class template.
* Fix Dart documentation in API classes.
* Simplify test in HTTP Basic auth, remove unused lint rule.
* Adds items getter and setter in IJsonSchemaValidationProperties
* Adds isModel interface
* Reverts file
* Fixes issue_7613.yaml schema for /array_with_validations_in_items/{items} response body
* Adds isModel to CodegenModel hash and print and comparison
* Updates CodegenResponse hash and comparison and print
* add oneOf support to c# netcore
* add oneof support to c# netcore client
* update samples
* remove unused file
* add oneof support to response in api client
* add oneof support to serialize
* update samples
* fix actual instance, add more tests
* fix oneof handling in api client
* update tests
* [Rust Server] Fix server example on non-Linux
The server example is broken because it tries to import `use openssl::ssl::SslAcceptorBuilder;` unconditionally when it won't be present on MacOS, Windows or iOS and then conditionally provides `create` causing compile errors on the aforementioned platforms.
To fix, we simply move the condition from the function to the import and all is happy again :)
* Update Samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Remove old dart generated code
* Remove uses of SUPPORT_DART2
* Remove dart1 only flag BROWSER_CLIENT
* Remove supportDart2 and browserClient from docs
* Revert removal of credits of dart(1)
* Update getHelp in dartcodegen
* [Python-experimental] Don't mandate passing in required value as argument
* Remove usage of have_value
* Address additional review comments
* Fix tests according to the code change
* Does not set None as value initial value, removes hasRequired tag usage, updates docstring
Co-authored-by: Justin Black <justin.a.black@gmail.com>
* Update RetryConfiguration.mustache
Use Policy<> instead of RetryPolicy<> to allow for use of wrapped policies.
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
swagger-parser has the potential to return null
for messages which will throw NPE on
initialization of the validationMessages hashset.
rather that allow this to happen we will assume
that a null message collection represents an empty
collection and continue.
Fixes#7453
* fix: correct handling of customHeaders
Problem: custom headers could be overwritten between
request retries following, e.g. a token refresh ( for example,
while implementing @4brunu refresh code :
https://github.com/OpenAPITools/openapi-generator/issues/5462#issuecomment-592417371 ).
A simple reordering of the modifiedRequest headers construction
solves the problem.
* fix: correct PetStore samples implementation [PR#7527]
Co-authored-by: Franz Marini <f.marini@opengate.biz>
* Fixing java:S3599 - Avoid double brace initializer
Because Double Brace Initialization (DBI) creates an anonymous class with a
reference to the instance of the owning object, its use can lead to memory
leaks if the anonymous inner class is returned and held by other objects. Even
when there's no leak, DBI is so obscure that it's bound to confuse most
maintainers.
* Fix incorrect List.contains typed check
* Avoid potential NPE in DefaultCodegen
* [fsharp] Remove unused boolean and log
* Fix potential NPE in Haskell http client
* Fix potential bugs in JavaCXFExtServerCodegen, found by static analysis
* Adds "useTags" option to all jaxrs code generators (AbstractJAXRSServerCodegen):
- jaxrs-jersey
- jaxrs-spec
- jaxrs-cxf-cdi
- jaxrs-resteasy
- jaxrs-cxf
- jaxrs-cxf-extended
- java-msf4j
- jaxrs-resteasy-eap
* jaxrs-spec
- Changed handling of root paths: e.g "/:", "/{id}:" to simplify code and create a more consistent behaviour
-- old: use tag for classname
-- new: use tag only if useTags is enabled, use "DefaultApi" if not
* @path class level annotation
- for all generators above and the microprofile generator (uses same jaxrs postprocessing)
- extended the "commonPath" to contain more than only the root path if possible
- e.g. "/group1/subgroup1/op1" -> "/group1/subgroup1" is moved to class level annotation
* Adds free form model generation in python-experimental
* Adds hasValidation property to codegenModel
* Adds separate variable val
* Samples regenerated
* Updates test_some_object.py
* Adds two more boolean conditions
* Runs ensure up to date
* Updates tests to check that models are or are not generated
* Removes unused import
* Updates model names in java test
* Removes unneeded test
* Cleans up tests
* HTTPSigning implementation for CSharpSDK
* Updated the sample for HTTPSigning
* Updated the sample2 for HTTPSigning
* update samples
* HTTPSigning_For_Async
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Issue 7425: Fixed comments that referred to RestTemplate.
* Ran genreate-samples.sh
* Re-ran generate-samples.sh against all configs.
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Fix the new package that deal with Configuration (the old one is depecrated)
* First version to support Play Framework 2.7
* Fix small problems that prevent compilation of each samples. Now everything is compiling perfectly
Tests running under Gradle 5.6.4 were breaking due to a change in
informational output. It's not clear when this was introduced, but it
looks like the upgrade to Gradle 5.6.4 may have stopped running tests
during builds.
* Rust reqwest/api_mustache Missing api Vec in parameter
Not using #isListContainer in parameters
* incorrect value for supportAsync
supportAsync set to "false" should be false
* Sample updates for CI
* Fixed Double Vec
Only check for special case... "dataType" case includes Vec
* update samples
* remove old files
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Properly decode $ref
fixes#5720
* Specify decoding encoding
* Nicer syntax
* UTF-8 typo
* Unescape special characters
* Change order of unescaping to prevent escaped sequences by accident
* Comment for special decoding
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* Add unit test for simple ref decoding
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* Adds fix for issue7262 and a test of it
* Updates inline schema to not include properties
* Adds null check of discriminator
* Updates issue sample file
* replace go with go-experimental
* update samples
* extends with abstract go class
* rearrange
* remove deprecated
* minor fix
* remove go deprecated samples
* update pom, clean up samples
* mark generator as deprecated
* use java8 OffsetDateTime for clients
* use java8 OffsetDateTime for clients
* fix javadoc
* add javadoc to JavaTimeFormatter.mustache
* add javadoc to JavaTimeFormatter.mustache
* add javadoc to JavaTimeFormatter.mustache
* Add option to prevent usage of jackson-nullable (#2901)
Add a option for all java client and server to prevent
usage of third party library (jackson-databind-nullable)
which may be forbidden in some company
Add samples for Vertx, Spring MVC, Spring Cloud, Feign and Play
Upgrade dependencies for org.openapitools:jackson-databind-nullable
* Samples - Remove dependency org.openapitools:jackson-databind-nullable (#2901)
* Fix generation of gradle file for vertx (#2901)
* Regenerate samples (#2901)
* Fix documentation and up to date (#2901)
* Fix forgotten regeneration of vertx after dependency integration (#2901)
* Regenerate template after rebase (#2901)
* Use yaml config files introduce in #6509 to manage samples (#2901)
* Regenerate template using the config (#2901)
* Fix bad version during testing generated samples (#2901)
* Regenerate template after fix bad version (#2901)
* Fix merge, allow for set importing on codegen model
Co-authored-by: Jim Schubert <james.schubert@gmail.com>
* add model/index.ts
- move export of all models to model/index.ts
- move RequestFile definition to model/index.ts
This fixes#7126
* update samples
* Back out models/index.ts
Make this backwards-compatible:
- move `RequestFile` definition to `model/models.ts`
- remove `model/index.ts`
- re-export `RequestFile` from `api/apis.ts`
- make generation of `ObjectSerializer` conditional
* for some reason, Symfony isn't up to date
* reverts changes to php-symfony sample
* moves comment to mustache comment rather than TS comment
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
* removes stale files from samples (no longer generated)
* updates samples
Co-authored-by: Esteban Gehring <esteban.gehring@gmail.com>
* [java/resttemplate] Generate valid code if no Authentication implementations present
Take the logic used to decide which instances to add to the authentications map and re-use to not import classes or offer non-functional util methods
* parameterize formParams
fixes#5782
* replace use of ISO8601DateFormat and ISO8601Utils with StdDateFormat
fixes#5779
* add constructor to intialise calendar
* Revert "[java/resttemplate] Generate valid code if no Authentication implementations present"
This reverts commit 6e450907ba.
* Revert "parameterize formParams"
This reverts commit 7a26ce5dd2.
* also override single arg parse method to avoid throwing exception
* also override single arg parse method to avoid throwing exception
* update samples
* update samples
* fix jersey1 tests
* fix jersey2 test
* update resteasy dependencies
* fix java jersey2 oas3 tests
* use java8 in springboot-beanvalidation
Co-authored-by: Jon Freedman <jon.freedman@zoho.com>
This adds an x-is-free-form vendor extension to allow users to skip our
"free-form" logic which would previously prevent object schemas with no
properties to be considered "free-form". The previous behavior was due
in part to Swagger Parser not exposing `additionalProperties: false` to
us (which should be similar behavior to this extension).
A free-form object is considered a dynamic object with any number of
properties/types. DefaultGenerator does not allow for generation of
models considered free-form. However, a base type with no properties and
no additional properties is allowed by OpenAPI Specification and is
meaningful in many languages (e.g. "marker interfaces" or abstract
closed types).
* Updates docker images for CLI and Online to JDK 11 and Maven 3.6.3 builders
* Uses openjdk:11.0.8-jre-slim-buster rather than alpine as new image publishes CVEs
* Update apiInvoker.mustache
In scala-akka-client code that is getting generated, addAuthentication method is called after setting headers using header parameter in the below mentioned line
addAuthentication(request.credentials)(
httpRequest.withHeaders(headers(request.headerParams))
)
However, in addAuthentication method, we are using withHeaders method that overwrites the headers set using header parameters. So, I am proposing to
change the addAuthentication method be replacing withHeaders() method to addHeader() to add authentication header to the list of already existing headers.
* Update ApiInvoker.scala
Added changes to sample for the client generator code change
* Provide getter `values` for all enum values
* Add values getter also to inline enum
* Generate samples
Co-authored-by: SimonIT <simonit.orig@gmail.com>
* FILES is now path relative with no prefixes
some Java implementations don't honor .relativize documentation fully.
When outDir is /a/b and the input is /a/b/c/d, the result should be c/d.
Some implementations make the output ./c/d which seems to mix the logic
as documented for symlinks. So we need to trim any / or ./ from the start,
as nobody should be generating into system root and our expectation is no ./
This resolves regeneration issues for those on such Java
implementations, although we've not been able to track down the exact
vendor or configurations which might lead to these differences.
* Ensure windows outputs FILES paths in same format
* Normalize FILES paths to remove relativization mid-path
* Correct date format of date formatted strings
* Update petstore
* Regenerate samples on linux
* Remove final for letting the user configure custom date formats
Co-authored-by: SimonIT <simonit.orig@gmail.com>
* First approach for discussion
* typo
* add addiotional method
* polish a bit
* remove call of super method
* fix javadoc error
* com.google.common.collect.
* merge master regenerate samples
* sort imports alphabetically
* sort imports alphabetically with right key
* typo
* add type previous imports are still there.
* add type previous imports are still there.
* remove new test to see if they are the problem.
* merge master add tests back in
* align changes which should not lead to failing test but you never know.
* remove formatting changes
* dummy change
* revert spaces
* revert spaces
* revert functional changes
* comment out test
* remove model
* remove interface method
* remove test class completely
* put test class back - test body commented out
* rename test methods
* put back logic and tests
* remove generated APIs
* remark amakhrov
* check in one generated file to test
* adjust call super
* add comment use set.
for required fields better. This change ensures the required field isn't
overridden with undefined when the object is constructed - especially through
a chain of constructFromObject calls..
* Adds example setting code in python-experimental with one fn setting example values
Fixes sample indentations
Handles composed schema models, object model and arraymodels
Adds brackets in arraymodel input
Sets modelName with map schemas
Removes included_schemas arguments, dicriminator examples do not include property examples
Refactors modelName into toExampleValueRecursive argument
Fixes bug where example models contained themselves
Stops using model ExampleGenerator examples because they are inconsistent with the ones in python-experimental
Uses example values if they exist
Removes single quotes from enum examples
Fixes password example
Adds commented our regex handling, commented out because it breaks
Handles AnyType schema examples
Adds x_example values for simple string properties, uses toExampleValue for all example generation
Adds examples for simple string parameters
Updates comments in toExampleValueBase
Fixes the double nested bug for AdditionalPropertiesWithArrayOfEnums
Fixes bug where NumberWithValidations had double nesting
Updates simple string examples in arrays
Fixes array string examples
Fixes example for string endpoint body example
Adds exampleFromStringOrArraySchema
Adds regex examples, pegs slf4j-version to v1.7.29 for rgxgen
Adds comment about regex seed
Updates pattern matcher to not handle ^ and $
Updates used sample values
Adds ensureQuotes
Adds ensureQuotes
Fixes double quote bug
Updates mustache file
Adds ensureQuotes to key handling
Adds modelNameToSchema map, reduces run time by using it
Fixes java tests
Regenerates python-experimental samples
Fixes python test
* Rebased on master
* Adds getModelNameToSchemaCache
* Updates toDefaultValue to not mutate schemas
* Has all dates and datetimes default and example setting use the same helper function
* Samples regenerated
* indentation tweak, removes txt from sample file
* Added library and edited generator to support server stub generation with Kumuluzee framework.
* Trimmed and tweaked pom.xml template and removed unnecessary template files from generator and library.
* minor edits
* Added new library to Java client codegen (microprofile-kumuluzee). A
functional KumuluzEE REST client can now be generated.
* Edited README for microprofile-kumuluzee
* Edited docs to include new KumuluzEE library options.
* Updated kee-rest-client client POM dependency version to latest
* fixed pom, edited REAMDE
* Trimmed redundant dependencies from KEE client pom
* Removed unnecessary DefaultGenerator edit, modified config template accordingly.
* Made mp framework an additional property for microprofile instead of being another library option, removed now redundant library files.
* Updated documentation with microprofile framework
* Fixed errors caused by removed functions and variables
* update doc
Co-authored-by: Chuckledog <aljaz.pavsic@gmail.com>
Co-authored-by: Jan Meznaric <jmezna@gmail.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
* update spec
* fix datetime default value
* fix the issues when the class name is not in pascal case
* Update modules/openapi-generator/src/main/resources/csharp-netcore/modelGeneric.mustache
Co-authored-by: Tatsuro Shibamura <me@shibayan.jp>
* update samples
Co-authored-by: Tatsuro Shibamura <me@shibayan.jp>
* update csharp-netcore dependencies
* update test sdk version
* set tests.sdk version to 15.9.2
* rearrange test
* vs 2019 image
* rollback to v4.61.0
* update Microsoft.NET.Test.Sdk version
* Revert "update Microsoft.NET.Test.Sdk version"
This reverts commit 7a86bfc415.
* rollback Microsoft.NET.Test.Sdk
The "..._parseFromJSON" template was buggy because the name of the _e type used was not the same than the generated.
See the first argument of "..._convertToJSON" to see that the _e type used there was not the same
* Add samples composer.lock to root .gitignore
composer.lock may produce CI errors when you need to test build against
different PHP versions. However users most likely want to commit this
file, so I think it's better to exclude it only in root .gitignore.
* Commit composer.lock in default PHP templates
* Refresh samples
* Update play framework minor version + scala + swagger-ui + Remove bugs in the url of swagger-ui.
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [python-experimental] Fix model tests
* Fixes model tests to template off the classname instead of
the model's description.
* Uses python-experimental templates when generating
python-experimental samples
* Fix sample file manifest
* Restore remaining tests
* Added a Configuration object in the Runtime that can be used to update a base path.
Added a new Configuration object that has attributes that can be used to alter the behaviour of the query config generators. In particular, added a basePath field which can be used to prepend to the urls in the query configs. The old behaviour only used relative paths for the urls which means cross domain support was not possible.
* Ran script to update the samples after making the template change
Co-authored-by: Steve Graham <stgraham2000@gmail.com>
* renamed async methods to end with async
* update samples
* updated samples
* updated test to use new name
Co-authored-by: William Cheng <wing328hk@gmail.com>
* added rx3 support
* fix rx3 support
* generated samples
* updated samples
* update samples
* changed rxjava3 adapter to the one from squareup
* changed dependency of RxJava3CallAdapterFactory
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Update to reset httpRepsonse.Body such that is available to client consumers via the returned httpResponse variable.
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* fixed a typo issue in aspnetcore generator #4829
* solved an issue with integration tests using WebApplicationFactory
* updated aspnetcore samples impacted by the change
* added cancellation tokens to async calls
* changed variable name for consistency
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Corrects tag for including HttpSignatureAuth in gradle builds
* Updates version of org.tomitribe:tomitribe-http-signatures in
gradle template to match version from maven template
* Updates samples
* Fix for issue 4656 typescript-node generate invalid require statement instead of import statement
* Fixed broken link under testing templates
* Result of run generate-samples.sh / typescript-node*
* import stmt depending on flag supportsES6
* Update petstore sample for typescript-node
* import ... from stmt for http/request module
* update samples
* update doc
Co-authored-by: William Cheng <wing328hk@gmail.com>
* fix(typescript-axios): add Set as language primitive
* fix(typemapping): added lowercased set as primitive type
* fix(samples): regenerated ts samples and added Set as language primitive to ts docs
* Requires python >= 3.5, adds type hints to call_api method
* Adds type hints to files_parameters and __call_api
* Adds and uses a new json encoded to prepare data before it is sent
* Removes nose name from gitlab testing invocations
* Also updates travis to py>=3.5
* Collapses encoder back into sanitize_for_serialization
* [Swift5] Fix Datetime default value
If a default value is provided by the API spec for a date-time attribute,
this commit fixes the generation code to build a correct Swift `Date` object.
* update samples with swiftlint
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [java][jersey2-client] Disable coercion of scalars
* Respect the coercion objectmapper setting in deserializers
* Update jackson in maven plugin to get version that has ALLOW_COERCION_OF_SCALARS
* [Dart] Fix enum generation
* Update generated Order file
* Re-add constructor
* Generate dart2 files
* Dart - nicer enum formatting
* Dart - generate enum name as className+enumName
* Dart - dont initialize vars to null by default
Fixes#3633
* Dart - Generate inlined enums and deserialize them
* Merge branch 'master' of github.com:agilob/openapi-generator into 6727
* Dart - Fix using default value
* Fix typo
* Regenerate add dart files
* dart Revert override for dart dio and jaguar
* Fix dart model tests
* Fix dart1 generated template
* Use {{{datatypeWithEnum}}}
* Dart - throw when enum not known
* Fix generating enum with datatype from list
* Default value for the non required fields to null
When a field is not required, the avro schema has no default value.
Has described in an [avro issues](https://issues.apache.org/jira/browse/AVRO-1803), the property default: null must be set.
If we don't do this in the avro file, when we generate java code from generated avro schema, the builder fail if the data isn't set in the avro data class.
* Update generated avro sample
* Fix dir path in PR request template
* Add "useAbstractionForFiles" config option for Java/RestTemplate to allow flexible options in generated client when a file is needed (#6715)
* Add "useAbstractionForFiles" config option for Java/RestTemplate to allow flexible options in generated client when a file is needed (#6715)
* Add "useAbstractionForFiles" config option for Java/RestTemplate to allow flexible options in generated client when a file is needed (#6715)
* #6715 - Add "useAbstractionForFiles" config option for Java/RestTemplate to allow flexible options in generated client when a file is needed.
* Removes future from python-exp v3 sample
* Removes future from python-exp v2 sample
* Deletes future from remaining python-exp files
* Removes six from python-exp templates
* Removes six from python-exp samples
* Removes mock from python-exp
* Python-exp switched to py3
* Removes python 2.7 for python-exp ci testing
* Requires python>=3.3 for python-exp
* Reverts unnecessary changes to two templates
* Mustache template should use invokerPackage tag to generate import
* add JsonSubTypes annotation to handle scenario when OAS name has special characters
* add JsonSubTypes annotation to handle scenario when OAS name has special characters. Add unit test
* run sample scripts
* fix unit test
* run sample scripts
* add minimal openapi document to show issue with special characters and discriminators
* Add 'isClassnameSanitized' tag
* Add 'isClassnameSanitized' tag
* Add 'isClassnameSanitized' tag
* Add 'isClassnameSanitized' tag
* Add 'isClassnameSanitized' tag
* Add 'isClassnameSanitized' tag
* Add unit tests for unmarshaling of discriminators with special characters
* Add unit tests for unmarshaling of discriminators with special characters
* use JsonTypeName
Co-authored-by: Vikrant Balyan (vvb) <vvb@cisco.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
* fix: make accept header of async apis consistent with sync version
* make sync and async version use same logic
* generate samples for csharp-netcore using generate-samples.sh
* fix: make accept header of async apis consistent with sync version
* change tabs to spaces to match existing code
- [ ] Have you provided a full/minimal spec to reproduce the issue?
- [ ] Have you validated the input using an OpenAPI validator ([example](https://apidevtools.org/swagger-parser/online/))?
- [ ]What's the version of OpenAPI Generator used?
- [ ] Have you search for related issues/PRs?
- [ ]Have you [tested with the latest master](https://github.com/OpenAPITools/openapi-generator/wiki/FAQ#how-to-test-with-the-latest-master-of-openapi-generator) to confirm the issue still exists?
- [ ] Have you searched for related issues/PRs?
- [ ] What's the actual output vs expected output?
- [ ] [Optional] Bounty to sponsor the fix ([example](https://www.bountysource.com/issues/66123212-javascript-client-produces-a-wrong-object-for-a-string-enum-type-that-is-used-with-ref))
- [ ] [Optional] Sponsorship to speed up the bug fix or feature request ([example](https://github.com/OpenAPITools/openapi-generator/issues/6178))
<!--
Please follow the issue template below for bug reports.
@@ -45,9 +45,13 @@ please create a Gist (https://gist.github.com) or upload it somewhere else and
link it here.
-->
##### Command line used for generation
##### Generation Details
<!-- including the language, libraries and various options -->
<!--
Prefer CLI steps, including the language, libraries and various options.
Providing config-based settings allows for simpler testing across CLI and plugins.
For examples, see https://github.com/OpenAPITools/openapi-generator/tree/master/bin/configs
- [ ] Read the [contribution guidelines](https://github.com/openapitools/openapi-generator/blob/master/CONTRIBUTING.md).
- [ ] Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community.
- [ ] If contributing template-only or documentation-only changes which will change sample output, [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) beforehand.
- [ ] Run the shell script `./bin/generate-samples.sh`to update all Petstore samples related to your fix. This is important, as CI jobs will verify _all_ generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/config/java*`. For Windows users, please run the script in [Git BASH](https://gitforwindows.org/).
- [ ] Run the shell script `./bin/generate-samples.sh`to update all Petstore samples related to your fix. This is important, as CI jobs will verify _all_ generator outputs of your HEAD commit as it would merge with master. These must match the expectations made by your contribution. You may regenerate an individual generator by passing the relevant config(s) as an argument to the script, for example `./bin/generate-samples.sh bin/configs/java*`. For Windows users, please run the script in [Git BASH](https://gitforwindows.org/).
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master`
- [ ] Copy the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) to review the pull request if your PR is targeting a particular programming language.
- If you're not using the latest master to generate API clients or server stubs, please give it another try by pulling the latest master as the issue may have already been addressed. Ref: [Getting Started](https://github.com/openapitools/openapi-generator#getting-started)
- Search the [open issue](https://github.com/openapitools/openapi-generator/issues) and [closed issue](https://github.com/openapitools/openapi-generator/issues?q=is%3Aissue+is%3Aclosed) to ensure no one else has reported something similar before.
- File an [issue ticket](https://github.com/openapitools/openapi-generator/issues/new) by providing all the required information.
- File an [issue ticket](https://github.com/openapitools/openapi-generator/issues/new) by providing all the required information. Failure to provide enough detail may result in slow response from the community.
- Test with the latest master by building the JAR locally to see if the issue has already been addressed.
- You can also make a suggestion or ask a question by opening an "issue".
@@ -87,10 +87,7 @@ To add test cases (optional) covering the change in the code generator, please r
To test the templates, please perform the following:
- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh .
/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/t
ree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files g
enerated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec fro
m time to time. If you've questions or concerns, please open a ticket to start a discussion)
/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion)
- During development it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`.
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
@@ -110,7 +107,8 @@ See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/
- Add test case(s) to cover the change
- Document the fix in the code to make the code more readable
- Make sure test cases passed after the change (one way is to leverage https://travis-ci.org/ to run the CI tests)
- File a PR with meaningful title, description and commit messages.
- File a PR with meaningful title, description and commit messages
- Make sure the option "Allow edits from maintainers" in the PR is selected so that the maintainers can update your PRs with minor fixes, if needed.
- Recommended git settings
- `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around
- To close an issue (e.g. issue 1542) automatically after a PR is merged, use keywords "fix", "close", "resolve" in the PR description, e.g. `fix #1542`. (Ref: [closing issues using keywords](https://help.github.com/articles/closing-issues-using-keywords/))
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22) [](./LICENSE)  [](https://join.slack.com/t/openapi-generator/shared_invite/enQtNzAyNDMyOTU0OTE1LTY5ZDBiNDI5NzI5ZjQ1Y2E5OWVjMjZkYzY1ZGM2MWQ4YWFjMzcyNDY5MGI4NjQxNDBiMTlmZTc5NjY2ZTQ5MGM) [](https://twitter.com/oas_generator)
</div>
<div align="center">
[](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)
[](https://twitter.com/oas_generator)
[](https://github.com/OpenAPITools/openapi-generator/actions?query=workflow%3A%22Check+Supported+Java+Versions%22)
</div>
@@ -59,7 +60,7 @@ OpenAPI Generator allows generation of API client libraries (SDK generation), se
| 5.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/) | TBD | Major release with breaking changes (no fallback) |
| 5.0.0-beta2 (upcoming beta release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/) | 30.07.2020 | Major beta release with breaking changes (no fallback) |
| 5.0.0-beta3 (upcoming beta release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.0.0-SNAPSHOT/) | 01.11.2020 | Major beta release with breaking changes (no fallback) |
| [5.0.0-beta2](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.0.0-beta2) (latest beta release) | 04.09.2020 | Major beta release with breaking changes (no fallback) |
| [5.0.0-beta](https://github.com/OpenAPITools/openapi-generator/releases/tag/v5.0.0-beta) (latest beta release) | 30.06.2020 | Major beta 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.
To generate a PHP client for [petstore.yaml](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml), please run the following
To generate a PHP client for [petstore.yaml](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml), please run the following
(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`)
(if you're on Windows, replace the last command with `java -jar modules\openapi-generator-cli\target\openapi-generator-cli.jar generate -i https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml -g php -o c:\temp\php_api_client`)
<!-- RELEASE_VERSION -->
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.0.0-beta/openapi-generator-cli-5.0.0-beta.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.0.0-beta2/openapi-generator-cli-5.0.0-beta2.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`
@@ -428,7 +430,7 @@ To get a list of PHP specified options (which can be passed to the generator wit
## [3 - Usage](#table-of-contents)
### To generate a sample client library
You can build a client against the [Petstore API](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/2_0/petstore.yaml) as follows:
You can build a client against the [Petstore API](https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml) as follows:
```sh
./bin/java-petstore-okhttp-gson.sh
@@ -440,7 +442,7 @@ This script uses the default library, which is `okhttp-gson`. It will run the ge
@@ -561,6 +563,7 @@ 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.
@@ -668,7 +679,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 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)
- 2019/01/13 - [OpenAPI GeneratorでRESTful APIの定義書から色々自動生成する](https://ky-yk-d.hatenablog.com/entry/2019/01/13/234108) by [@ky_yk_d](https://twitter.com/ky_yk_d)
- 2019/01/20 - [Contract-First API Development with OpenAPI Generator and Connexion](https://medium.com/commencis/contract-first-api-development-with-openapi-generator-and-connexion-b21bbf2f9244) by [Anil Can Aydin](https://github.com/anlcnydn)
- 2019/01/30 - [Rapid Application Development With API First Approach Using Open-API Generator](https://dzone.com/articles/rapid-api-development-using-open-api-generator) by [Milan Sonkar](https://dzone.com/users/828329/milan_sonkar.html)
- 2019/01/30 - [Rapid Application Development With API First Approach Using Open-API Generator](https://dzone.com/articles/rapid-api-development-using-open-api-generator) by [Milan Sonkar](https://dzone.com/users/828329/milan_sonkar.html)
- 2019/02/02 - [平静を保ち、コードを生成せよ 〜 OpenAPI Generator誕生の背景と軌跡 〜](https://speakerdeck.com/akihito_nakano/gunmaweb34) by [中野暁人](https://github.com/ackintosh) at [Gunma.web #34 スキーマ駆動開発](https://gunmaweb.connpass.com/event/113974/)
- 2019/02/20 - [An adventure in OpenAPI V3 code generation](https://mux.com/blog/an-adventure-in-openapi-v3-api-code-generation/) by [Phil Cluff](https://mux.com/blog/author/philc/)
- 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)
@@ -756,10 +767,24 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2020-05-19 - [Dead Simple APIs with Open API](https://www.youtube.com/watch?v=sIaXmR6xRAw) by [Chris Tankersley](https://github.com/dragonmantank) at [Nexmo](https://developer.nexmo.com/)
- 2020-05-22 - [TypeScript REST API Client](https://dev.to/unhurried/typescript-rest-api-client-4in3) by ["unhurried"](https://dev.to/unhurried)
- 2020-05-28 - [Building APIs with Laravel using OpenAPI](https://www.youtube.com/watch?v=xexLvQqAhiA) by [Chris Tankersley](https://github.com/dragonmantank) at [Laracon EU](https://laracon.eu/)
- 2020-06-23 - [新規サーバーアプリケーションにTypeScriptを採用してみた](https://www.cam-inc.co.jp/news/20200623) at [CAM Tech Blog](https://www.cam-inc.co.jp/news/tech-blog/)
- 2020-06-29 - [Artifact Abstract: Deployment of APIs on Android Mobile Devices and Microcontrollers](https://ieeexplore.ieee.org/document/9127353) by [Sergio Laso ; Marino Linaje ; Jose Garcia-Alonso ; Juan M. Murillo ; Javier Berrocal](https://ieeexplore.ieee.org/document/9127353/authors#authors) at [2020 IEEE International Conference on Pervasive Computing and Communications (PerCom)](https://ieeexplore.ieee.org/xpl/conhome/9125449/proceeding)
- 2020-07-07 - [5 Best API Documentation Tools](https://blog.dreamfactory.com/5-best-api-documentation-tools/) by Susanna Bouse at [DreamFactory Blog](https://blog.dreamfactory.com/)
- 2020-07-12 - [Open API 3.0の定義からgolangのサーバコードのスケルトンを作成する](https://qiita.com/professor/items/4cbd04ec084d13057bc2) by [@professor (Qiita Blog)](https://qiita.com/professor)
- 2020-07-20 - [Datadog API client libraries now available for Java and Go](https://www.datadoghq.com/blog/java-go-libraries/) by Jordan Obey at [Datadog Blog](https://www.datadoghq.com/blog)
- 2020-07-23 - [Generate Client SDK for .NET Core using Open Api](https://dev.to/no0law1/generate-client-sdk-for-net-core-using-open-api-2dgh) by [Nuno Reis](https://dev.to/no0law1)
- 2020-07-26 - [Dartのhttp_interceptorライブラリを使うと配列のクエリパラメータが消えてしまう件の応急処置](https://qiita.com/gyamoto/items/eeeff81b6770487319ed) by [@gyamoto](https://qiita.com/gyamoto)
- 2020-08-01 - [Generate Angular ReactiveForms from Swagger/OpenAPI](https://dev.to/martinmcwhorter/generate-angular-reactiveforms-from-swagger-openapi-35h9) by [Martin McWhorter](https://dev.to/martinmcwhorter)
- 2020-08-03 - [Criando Bibliotecas para APIs RESTful com OpenAPI, Swagger Editor e OpenAPI Generator](https://medium.com/@everisBrasil/criando-bibliotecas-para-apis-restful-com-openapi-swagger-editor-e-openapi-generator-75349a6420fd) by [everis Brasil (an NTT DATA Company)](https://medium.com/@everisBrasil)
- 2020-08-19 - [マイクロサービスを連携してみよう](https://thinkit.co.jp/article/17704) by [岡井 裕矢(おかい ゆうや)](https://thinkit.co.jp/author/17588), [泉 勝(いずみ まさる)](https://thinkit.co.jp/author/17705) at [Think IT(シンクイット)](https://thinkit.co.jp/)
- 2020-09-10 - [Introduction to OpenAPI with Instana](https://www.instana.com/blog/introduction-to-openapi-with-instana/) by [Cedric Ziel](https://www.instana.com/blog/author/cedricziel/) at [Instana Blog](https://www.instana.com/blog/)
- 2020-09-17 - [Generate PowerShellSDK using openapi-generator](https://medium.com/@ghufz.learn/generate-powershellsdk-using-openapi-generator-33b700891e33) by [Ghufran Zahidi](https://medium.com/@ghufz.learn)
- 2020-09-24 - [How to automate API code generation (OpenAPI/Swagger) and boost productivity - Tutorial with React Native featuring TypeScript](https://medium.com/@sceleski/how-to-automate-api-code-generation-openapi-swagger-and-boost-productivity-1176a0056d8a) by [Sanjin Celeski](https://medium.com/@sceleski)
- 2020-09-25 - [Generate OpenAPI Angular Client](https://medium.com/@pguso/generate-openapi-angular-client-8c9288e8bbd4) by [Patric](https://medium.com/@pguso)
- 2020-10-24 - [Working with Microsoft Identity - React Native Client](https://www.josephguadagno.net/2020/10/24/working-with-microsoft-identity-react-native-client) by [Joseph Guadagno](https://www.josephguadagno.net/)
- 2020-10-31 - [[B2] OpenAPI Specification으로 타입-세이프하게 API 개발하기: 희망편 VS 절망편](https://www.youtube.com/watch?v=J4JHLESAiFk) by 최태건 at [FEConf 2020](https://2020.feconf.kr/)
## [6 - About Us](#table-of-contents)
@@ -1045,7 +1070,7 @@ OpenAPI Generator is a fork of [Swagger Codegen](https://github.com/swagger-api/
Our tooling supports the following types of configuration:
* [global properties](./global-properties.md)
- properties with cross-cutting concerns which control generation, but _don't_ belong to individual generators
- Example: `debugSupportingFiles` prints the contents of template data bound to supporting files
* config options
- configuration specific to each individual [generator](./generators/README.md)
- these options are susceptible to validation within the defining generator; a config option of the same name across multiple generators may be validated differently in each
- NOTE: The CLI accepts config options as "additional properties"
* additional properties
- these are the properties which will be passed to templates
- generally used to pass user-defined properties to custom templates
- many config options may also be passed as additional properties, however generators will read/modify/rewrite config options
- users may pass custom additional properties and use these within templates (e.g. a custom `generatedBy` key with a value of `Jim Schubert` for inclusion in a custom CVS-like header)
* top-level properties specific to individual tools/plugins used to bootstrap our tooling
## Tool-specific Declarations
The READMEs for the [CLI](https://openapi-generator.tech/docs/usage#generate), [Gradle Plugin](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-maven-plugin), [Maven Plugin](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator-maven-plugin), and [SBT Plugin](https://github.com/OpenAPITools/sbt-openapi-generator/blob/master/README.md) may have top-level or tooling specific options which appear to duplicate 'config options' or 'global properties'. Each may also expose user-facing properties slightly differently from the other tools. This may occur due to:
* Conventions used by the underlying tooling
* Limitations in underlying frameworks which define how properties must be declared
* Continuation of support for "legacy" invocation patterns
* Mistakes in documentation and/or contributions (please do [file a bug](https://github.com/OpenAPITools/openapi-generator/issues/new?assignees=&labels=Issue%3A+Bug&template=bug_report.md&title=%5BBUG%5D+Issue+with+options))
Take, for example, the CLI option of `--skip-validate-spec`. This flag sets the value to true with no option to set it to false (the default internally). The maven and gradle plugins allow for the top-level option `skipValidateSpec` to have a value of true or false. The SBT plugin, on the other hand, follows community convention and this property is `openApiSkipValidateSpec`.
_How_ you provide values to options also depends on the tool. OpenAPI Generator supports global properties for [selective generation](https://openapi-generator.tech/docs/customization/#selective-generation) -- such as `apis` -- to have either a blank value or a comma-separated list of selected values. We would define this in CLI as `--global-property apis` or `--global-property apis=Equipment`. In the Gradle Plugin, these properties are set directly as strings:
```
openApiGenerate {
globalProperties = [
apis: "",
models: "User,Pet"
]
}
```
In the Maven plugin, we're limited by XML syntax where `<apis/>` and `<apis></apis>` are treated the same as if the `apis` node was undefined; there's no way to provide an empty string as a default. Instead, we have to extract the global property into its own properties which maintain the two states supported elsewhere (i.e. "all apis" or "select apis"). We have `generateApis` which accepts a boolean and `apisToGenerate` which accepts a comma-separated selection list.
## Discovering Options
Refer to [global properties](./global-properties.md) for a list of available global properties and their usage.
Top-level tooling options are defined in [CLI usage](https://openapi-generator.tech/docs/usage/#generate). Many of these options directly map to camel case options in other tools, but do refer to [plugin documentation](https://openapi-generator.tech/docs/plugins) for full details or plugin-specific differences.
Config options for generators are available in [documentation online](https://openapi-generator.tech/docs/generators). You may also use the CLI to query config options for a target generator using `openapi-generator config-help -g <generator-name>`. For example:
```
$ openapi-generator config-help -g mysql-schema
CONFIG OPTIONS
defaultDatabaseName
Default database name for all MySQL queries (Default: )
identifierNamingConvention
Naming convention of MySQL identifiers(table names and column names). This is not related to database name which is defined by defaultDatabaseName option (Default: original)
original - Do not transform original names
snake_case - Use snake_case names
jsonDataTypeEnabled
Use special JSON MySQL data type for complex model properties. Requires MySQL version 5.7.8. Generates TEXT data type when disabled (Default: true)
namedParametersEnabled
Generates model prepared SQLs with named parameters, eg. :petName. Question mark placeholder used when option disabled. (Default: false)
```
This output provides the name of the configuration option. A set of acceptable values for any constrained values will print as an indented list (e.g. `identifierNamingConvention` above).
Suppose you want to apply snake case naming to mysql schema outputs. Your configuration might resemble the following examples.
**CLI**
```
openapi-generator -g mysql-schema -o out -i spec.yaml --additional-properties=identifierNamingConvention=snake_case
```
It may seem like a typo but there are two `=` signs in the above example.
- If you're not using the latest master to generate API clients or server stubs, please give it another try by pulling the latest master as the issue may have already been addressed. Ref: [Getting Started](https://github.com/openapitools/openapi-generator#getting-started)
- Search the [open issue](https://github.com/openapitools/openapi-generator/issues) and [closed issue](https://github.com/openapitools/openapi-generator/issues?q=is%3Aissue+is%3Aclosed) to ensure no one else has reported something similar before.
- File an [issue ticket](https://github.com/openapitools/openapi-generator/issues/new) by providing all the required information.
- File an [issue ticket](https://github.com/openapitools/openapi-generator/issues/new) by providing all the required information. Failure to provide enough detail may result in slow response from the community.
- Test with the latest master by building the JAR locally to see if the issue has already been addressed.
- You can also make a suggestion or ask a question by opening an "issue".
@@ -91,10 +91,7 @@ To add test cases (optional) covering the change in the code generator, please r
To test the templates, please perform the following:
- Update the Petstore sample by running the shell scripts under the `bin` folder. For example, run `./bin/generate-samples.sh .
/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/t
ree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files g
enerated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec fro
m time to time. If you've questions or concerns, please open a ticket to start a discussion)
/bin/configs/python*` to update the Python-related samples under [`samples`](https://github.com/openapitools/openapi-generator/tree/master/samples). For Windows, please install [GIT bash](https://gitforwindows.org/). (If you find that there are new files generated or unexpected changes as a result of the update, that's not unusual as the test cases are added to the OpenAPI spec from time to time. If you've questions or concerns, please open a ticket to start a discussion)
- During development it can be helpful to quickly regenerate the samples without recompiling all of openapi-generator, e.g. when you have only updated the mustache templates. This can be done by passing the `-t` parameter: `-t modules/openapi-generator/src/main/resources/python`.
- Run the tests in the sample folder using maven `mvn integration-test -f /path/to/pom.xml`, e.g. `mvn integration-test -f samples/client/petstore/python/pom.xml`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
@@ -114,7 +111,8 @@ See [OpenAPI Tools wiki](https://github.com/OpenAPITools/openapi-generator/wiki/
- Add test case(s) to cover the change
- Document the fix in the code to make the code more readable
- Make sure test cases passed after the change (one way is to leverage https://travis-ci.org/ to run the CI tests)
- File a PR with meaningful title, description and commit messages.
- File a PR with meaningful title, description and commit messages
- Make sure the option "Allow edits from maintainers" in the PR is selected so that the maintainers can update your PRs with minor fixes, if needed.
- Recommended git settings
- `git config core.autocrlf input` to tell Git convert CRLF to LF on commit but not the other way around
- To close an issue (e.g. issue 1542) automatically after a PR is merged, use keywords "fix", "close", "resolve" in the PR description, e.g. `fix #1542`. (Ref: [closing issues using keywords](https://help.github.com/articles/closing-issues-using-keywords/))
The most common scenario for user customization is to override the built-in templates with small modifications. That scenario's documentation is in our [templating](./templating.md) page, and differs from user-defined templates.
Prior to release 5.0.0, whenever a user wanted to include templates which weren't built-in or weren't known to the generator at compile time, they'd need to follow the more involved approach of creating a custom generator as documented later in this document. Beginning in 5.0.0, a user may now provide additional supporting files and extensions to built-in templates via configuration. This feature requires using the external configuration file feature.
Consider that you might want to add some static documentation such as `AUTHORS.md` and a custom tooling script. Rather than a single file for API definitions you also want an implementation file and a separate interface file for each.
You might have an external configuration file named `config.yaml` which defines additional properties like this for a `kotlin` client generator:
To support the above scenario with custom templates, ensure that you're pointing to your custom template directory and add a `files` node with template file definitions to your config:
```
templateDir: my_custom_templates
additionalProperties:
artifactId: kotlin-petstore-client
serializableModel: "true"
dateLibrary: java8
files:
AUTHORS.md: {}
api_interfaces.mustache:
templateType: API
destinationFilename: Interface.kt
api.mustache:
templateType: API
destinationFilename: Impl.kt
other/check.mustache:
folder: scripts
destinationFilename: check.sh
templateType: SupportingFiles
```
The keys under the `files` node are your template filenames. These honor the same resolution order as all other templates.
The above configuration will do the following:
* Copy `my_custom_templates/AUTHORS.md` to the generated output directory without processing via the template engine (due to template file extension). The empty object definition following `AUTHORS.md` allows the tool to infer the target output filename in the root of the output directory.
* Compile a user-provided `my_custom_templates/api_interfaces.mustache` following our usual API template compilation logic. That is, one file will be created per API; APIs are generated defined according to tags in your spec documentation. The destination filename of `Interface.kt` will act as a suffix for the filename. So, a tag of `Equipment` will output a corresponding `EquipmentInterface.kt`.
* Because `api.mustache` is the same mustache filename as used in your target generator (`kotlin` in this example), we support the following:
- The destination filename provides a suffix for the generated output. APIs generate per tag in your specification. So, a tag of `Equipment` will output a corresponding `EquipmentImpl.kt`. This option will be used whether `api.mustache` targets a user customized template or a built-in template.
- The built-in template will be used if you haven't provided an customized template. The kotlin generator defines the suffix as simply `.kt`, so this scenario would modify only the generated file suffixes according to the previous bullet point.
- Your `api.mustache` will be used if it exists in your custom template directory. For generators with library options, such as `jvm-okhttp3` in the kotlin generator, your file must exist in the same relative location as the embedded template. For kotlin using the `jvm-okhttp3` library option, this file would need to be located at `my_custom_templates/libraries/jvm-okhttp/api.mustache`. See [templating](./templating.md) for more details.
* Compile `my_custom_templates/other/check.mustache` with the supporting files bundle, and output to `scripts/check.sh` in your output directory. Note that we don't currently support setting file flags on output, so scripts such as these will either have to be sourced rather than executed, or have file flags set separately after generation (external to our tooling).
The `templateType` option will default to `SupportingFiles`, so the option for `other/check.mustache` is redundant and provided to demonstrate the full template file configuration options. The available template types are:
* API
* APIDocs
* APITests
* Model
* ModelDocs
* ModelTests
* SupportingFiles
Excluding `SupportingFiles`, each of the above options may result in multiple files. API related types create a file per API. Model related types create a file for each model.
Note that user-defined templates will merge with built-in template definitions. If a supporting file with the sample template file path exists, it will be replaced with the user-defined template, otherwise the user-defined template will be added to the list of template files to compile. If the generator's built-in template is `model_docs.mustache` and you define `model-docs.mustache`, this will result in duplicated model docs (if `destinationFilename` differs) or undefined behavior as whichever template compiles last will overwrite the previous model docs (if `destinationFilename` matches the extension or suffix in the generator's code).
## Custom Generator (and Template)
<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:
@@ -20,7 +91,12 @@ These names can be anything you like. If you are building a client for the white
### Use your new generator with the CLI
To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package` and execute the generator:
To compile your library, enter the `out/generators/my-codegen` directory, run `mvn package`.
**NOTE** Running your custom generator requires adding it to the classpath. This differs on [Windows](https://docs.oracle.com/javase/8/docs/technotes/tools/windows/classpath.html) slightly from [unix](https://docs.oracle.com/javase/8/docs/technotes/tools/unix/classpath.html).
If you are running a Windows Subsystem for Linux or a shell such as gitbash, and have issues with the unix variant, try the Windows syntax below.
Each tool (CLI and plugins) supports enabling file post-processing at a high-level. Enabling this option allows for generators which support post-processing to call some external process for each generated file, passing the file path to that tool. The external tool must be defined in an environment variable supported by the generator.
Note that:
* this option is `--enable-post-process-file` in the CLI and `enablePostProcessFile` in plugins
* we require _both_ specifying the environment variable _and_ enabling the option at the tooling level; this feature is opt-in for security
* file processing occurs one at a time
* the external tool may be a custom script which invokes multiple tools
Also refer to the relevant documentation for [CLI](./usage.md), [Maven Plugin](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-maven-plugin/README.md), [Gradle Plugin](https://github.com/OpenAPITools/openapi-generator/blob/master/modules/openapi-generator-gradle-plugin/README.adoc), or [SBT Plugin](https://github.com/OpenAPITools/sbt-openapi-generator/blob/master/README.md).
## Supported Environment Variables
The following environment variables are supported by their respective generators:
You will now see messages logged about which files have been processed:
```
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/.rspec
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/spec/spec_helper.rb
[main] INFO o.o.c.languages.AbstractRubyCodegen - Successfully executed: /usr/local/bin/rubocopy -a /Users/jim/projects/openapi-generator/.out-ruby/spec/spec_helper.rb
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/spec/configuration_spec.rb
[main] INFO o.o.c.languages.AbstractRubyCodegen - Successfully executed: /usr/local/bin/rubocopy -a /Users/jim/projects/openapi-generator/.out-ruby/spec/configuration_spec.rb
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/spec/api_client_spec.rb
[main] INFO o.o.c.languages.AbstractRubyCodegen - Successfully executed: /usr/local/bin/rubocopy -a /Users/jim/projects/openapi-generator/.out-ruby/spec/api_client_spec.rb
[main] INFO o.o.codegen.TemplateManager - Skipped /Users/jim/projects/openapi-generator/.out-ruby/.openapi-generator-ignore (Skipped by supportingFiles options supplied by user.)
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/.openapi-generator/VERSION
[main] INFO o.o.codegen.TemplateManager - writing file /Users/jim/projects/openapi-generator/.out-ruby/.openapi-generator/FILES
@@ -3,6 +3,8 @@ title: Config Options for ada-server
sidebar_label: ada-server
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
@@ -3,6 +3,8 @@ title: Config Options for asciidoc
sidebar_label: asciidoc
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
@@ -3,11 +3,13 @@ title: Config Options for aspnetcore
sidebar_label: aspnetcore
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
@@ -3,6 +3,8 @@ title: Config Options for avro-schema
sidebar_label: avro-schema
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
@@ -3,6 +3,8 @@ title: Config Options for cpp-pistache-server
sidebar_label: cpp-pistache-server
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|addExternalLibs|Add the Possibility to fetch and compile external Libraries needed by this Framework.| |true|
@@ -3,6 +3,8 @@ title: Config Options for cpp-qt5-client
sidebar_label: cpp-qt5-client
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
@@ -3,6 +3,8 @@ title: Config Options for cpp-qt5-qhttpengine-server
sidebar_label: cpp-qt5-qhttpengine-server
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
@@ -3,6 +3,8 @@ title: Config Options for cpp-restbed-server
sidebar_label: cpp-restbed-server
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|apiPackage|C++ namespace for apis (convention: name.space.api).| |org.openapitools.server.api|
@@ -3,6 +3,8 @@ title: Config Options for cpp-restsdk
sidebar_label: cpp-restsdk
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|apiPackage|C++ namespace for apis (convention: name.space.api).| |org.openapitools.client.api|
@@ -3,6 +3,8 @@ title: Config Options for cpp-tizen
sidebar_label: cpp-tizen
---
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
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.