* fix(csharp-netcore): Fixing the XML warnings
* fix(csharp-netcore): Updating Pet project
* fix(csharp-netcore): Minor fix
* fix(csharp-netcore): Minor fix
* fix(csharp-netcore): Minor ifx
* fix(csharp-netcore): Minor fix
* [java][model] set collection to null when not required
* Fix tests
* Fix trailing whitespace
* generate samples
* Restore 'de.thetaphi' plugin in pom.xml
Before Java 9, the `Generated` annotation was part of JEE and in the
`javax.annotation` package. Starting with Java 9, it is now part
of the standard SDK, under the new `javax.annotation.processing`
package.
This change creates a custom Generated annotation template for the
native clientlib, since it is guaranteed to be run in Java 11+.
* add test cases to cover different collection format
* add space params to retrofit 1.x
* add space params to retrofit 2.x
* rename url to localVarUrl
* fix exception in haskell servant
* Add correct library versions for Angular 8.0.0
* Keep Angular default version of 7.0.0 to avoid breaking changes
* Add petstore example for Angular 8
* Add ngVersion field to typescript-angular-v8-petstore-provided-in-root-with-npm.json
* Filter deprecated generators from CLI list by default.
* [gradle] Exclude deprecated generators from list by default, add "include" option to allow for customization of list task.
* Update scripts to support the --include option of the list command
* Update gradle/cli docs for generators listing with "include" option.
* Update addJsonHeaders
addJsonHeaders currently throws a compiler error because the headers args in get/put/post etc is nullable, but the argument in addJsonHeaders is not
* Executed samples generator
* [core] Initial support for server variable overrides
* [gradle] Support user overrides for serverVariables
* [core] Clarify server variable overrides, and propagate them to templates in the "servers" array
* Mustache lambda tests
* If lambda key is already taken in additionalProperties, throw an exception.
* Test whether common lambdas are registered in additionalProperties.
* create nodejs express esrver
* 1st commit of the express.js module. Express server working, api-docs loads properly. No real paths yet
* 1st commit of the express.js module. Express server working, api-docs loads properly. No real paths yet (#2839)
* Working Express server with successful routing to controllers.
* rewrote controllers and services. Haven't tested yet
* controllers and services have passed tests successfully
* Added documentation
* Added documentation
* Support for openApi v3, using 'express-openapi-validator' for parsing and validation, and an internal router to pass arguments to controllers and services. /controllers/Pet.js and /services/PetService.js should be used for reverse engineering for future codegen script
* update generator and template
* update samples
* more update
* update service, controller
* add vendor extensions
* some updates to adapt to changes in the generator (removing references to swager); some work on handling file uploads; some work on tests
* Update NodeJS server generator and templates based on new output (#3261)
* update generator and template
* update samples
* more update
* update service, controller
* add vendor extensions
* update doc
* Changed routing code to follow the following convention:
Each path operation has a 'x-openapi-router-controller' and 'x-openapi-router-service'. Automated files will be placed under /controllers and /services respectively.
Controller file names will end with 'Controller.js'.
Removed swaggerRouter, replaced it with openapiRouter
Routing works and simple tests show a return of 200 to requests.
* [nodejs-express-server] various updates, fixes (#3319)
* various fix
* remove dot from service
* add space
* better method empty argument
* remove test service (#3379)
* add new doc
* 1. routingTests.js runs through all operations described in openapi.yaml and tries calling them, expecting 200 in return. Currently not all tests pass - not supporting xml, and problems with formData
2. Removed old testing files.
3. Added model files - contain data and structure as defined in openapi.yaml. Model.js has static methods relevant to all model files.
4. Changed openapi.yaml to allow running tests easily.
* 1. routingTests.js runs through all operations described in openapi.yaml and tries calling them, expecting 200 in return. Currently not all tests pass - not supporting xml, and problems with formData (#3442)
2. Removed old testing files.
3. Added model files - contain data and structure as defined in openapi.yaml. Model.js has static methods relevant to all model files.
4. Changed openapi.yaml to allow running tests easily.
* added model classes. Currently as a concept only. Seems like won't be in use
* Updated README.md to be a detailed description of the project.
Removed test files that are not needed.
Removed utils/writer.js which is not needed, and the references to it in the codegen files
* Removed redundant file app.js - this file has no benefit at this point. index.js now calls ExpressServer.js directly. Updated files that used to call app.js. Updated README.md accordingly
Added a path to call the openapi.yaml, and a test file for all endpoints that are not in the openapi.yaml, ensuring that they return 200. Updated README.md accordingly
* Remove test controller (#3575)
* remove test controller
* add back changes to templates
* remove app.js
* update wording
* dart2: Use the correct classname in test generation
At present test generation has a stray hard-coded reference to the pet
store Pet() class, which should reflect the actual classname under test.
* dart2: Call toDouble() in generated code for double types
At present the generated code does not correctly handle transitioning
to double when dealing with non-integer types in JSON deserialization.
This ends up with dart raising an unhandled type mismatch exception:
Unhandled exception: type 'int' is not a subtype of type 'double' where
...
Using the .toDouble() conversion when a double type is expected fixes
this up by making the typing explicit.
* dart2: Drop use of deprecated 'new' keyword in generated code
The use of the 'new' keyword in dart2 is deprecated and should be
avoided, as per the official guidance of the dart2 authors:
https://dart.dev/guides/language/effective-dart/usage#dont-use-new
* dart2: Regenerate samples for mustache template changes
* Fix#3402 by giving the possibility to set additional headers and the credentials parameters to the fetch query.
* Fix#3402 : Changes from code review
* Added handling of api keys in headers.
* Added handling of optional arguments in api functions.
* Optional header params.
* Fixed a bug in path param replacement.
* Relaxed deserializing of model records with @@deriving yojson { strict = false }. It allows receiving more fields in the JSon payload than declared in the OCaml record, fields not matching any record field are ignored.
* Reformatted api-impl.mustache.
* Generate shorter enum value names by allowing underscore character.
* Cleanup of optional params generation.
* Updated the OCaml samples with the latest version of the generator.
* Corrected a bug encountered when generating default value for optional enum fields.
* Added v3 version of the samples for the OCaml generator.
* -Fix bug in fetch -> Missing "runtime"
-Move fetch files to an "src" folder instead of doing everything at the root which removes the bugs when using the library itself
-Fix the distribution of fetch using npm
* Move the .ts files to an `src` folder which is more common in npm package
* Add missing mustache
* Add missing .npmignore
* If a separate parent pom is specified, there
should be no depdendency management
#3230
* Add Bean Validation framework
* Fix test and depedencies
* Format pom
[Rust Server] Support multipart/form_data
- Support multipart/form_data in the Rust Server
- Add a new test API to test the change.
- Update the examples to match
* Fixed#3521. Response headers were not processed for enums collection.
* Replace " by '' in text fields to allow these to be used in OCaml comments.
* Added support of ByteArray (i.e. base64 encoded data) body and free form object as request body. Added support of free form object in response body as well.
* Added result as a reserved word to prevent generating model files with this name (having a result.ml model file confuses dune into thinking some other model modules depend on Result when they don't).
* Updated samples to reflect the latest changes in the OCaml generator.
* [C++][Pistache] Do not use JSON for primitive types in request body
Request body can contain any input, simple strings, CSV text or something else
* [C++][Pistache] Update Petstore sample version
* WIP: add faraday support to Ruby client
* update samples
* bin/console
* https only
* ruby-faraday: Add a gemspec template for faraday
* Add a test for ruby-faraday client options
* Remove Gemfile.lock from ruby-client-faraday
* Implement faraday client
* Problem: can't use Faraday library for ruby clients
Solution: add support for Faraday library
This patch builds on the work started by @meganemura
* Problem: Faraday is set as default library
Solution: Make Typhoeus default
This patch also updates the api_client template for Faraday to include query params with requests.
* Update python client java generator
* Updates python generator mustache files
* Python sample regenerated
* Switches from getfullargspec to getargspec for python2 compatibility
* Uses getattr to get model class init method to correctly see its arguments, linting fixes to pass python tests
* Updates comment in python centerator to restart CI tests
* Adds bin/windows/python-experimental-petstore.bat
* CHanges spec update to apply to the python-experimental spec
* Moves new python templates to python-experimental
* Moves generator python java code to python-experimental
* Reverts python generator mustache files
* Regenerates python, v3 python, python-experimental samples
* Test moved to python-experimental, unused python files removed
* Default outputFile value is `openapi/openapi.yaml`.
* Mustache Lambdas documentation.
* Default OpenAPIYamlGenerator outputFile value is `openapi/openapi.yaml`.
It fails if the model contains a float, which don't implement Eq.
Fix for bug introduced in #3309.
We really need to improve the testing of the rust generator to catch this sort of mistake in future. I don't have time to do this now, though.
* fix name sanitation when using kebab case filenaming
* remove whitespaces
* sanitize names by removing spec 3 ref keys
* Revert "sanitize names by removing spec 3 ref keys"
This reverts commit 7e58719317.
* add pipes to datatype names
* split imports
* remove comment
* fix when using a mixture of (any|one) and standard imports
* sanitize names by removing spec 3 ref keys
* Revert "sanitize names by removing spec 3 ref keys"
This reverts commit 7e58719317.
* Merge conflict DefMerge branch 'master' into name-ref-fix
# Conflicts:
# modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
* split imports
* remove comment
* fix when using a mixture of (any|one) and standard imports
* Fix merge error
import missing package, merge error.
* format
* fix tests
* create test, fi regex
* Début d'un générateur pour OCaml.
* Ajout du script bash de generation pour OCaml.
* Implémentation de la partie model du générateur OCaml.
* Suppression du fichier Model.mustache.
* Légère modification dans le générateur OCaml.
* Début d'implémentation de la génération des opérations.
* Avancées dans l'implémenatation des opérations.
* Avancée dans la gestion des enums : reste à traiter le fait que Yojson sérialize les variants comme des tableaux JSON.
* Prise en compte du fait que Yojson représente les variants constants sous forme d'un tableau JSON contenant une unique string.
* Utilisation des variants polymorphe pour les enums car il se peut que plusieurs énumérations partagent des valeurs communes ce que ne permettent pas les variants ordinaires au sein d'un même module.
* Avancées dans le générateur de code OCaml : le code produit compile et prendre en compte les pathParams, les queryParams, les headersParams, les bodyParams et la réponse JSON. Manque le support du multipart, du form encoded et des mécanismes d'authentification.
* More tests.
* Correction de problèmes dans la génération mis en évidence par l'utilisation d'un fichier OAS plus gros et complexe que Petstore.
* Mapping du case Error de Ppx_deriving_yojson_runtime.ok_error vers l'exception Failure pour avoir des types plus simples et non dépendants de Pppx_deriving_yoson_runtime dans les APIs générées.
* Ajout de la génération des fichiers d'interfaces .mli pour les APIs.
* Ajout du support des parametres de type x-www-form-urlencoded.
* Le paramètres d'url de type number étaient mal gérés.
* Cleanup.
* Replace block comment start and end sequences in input text.
* Make apis calls without a return type return unit rather than Yojson.Safe.t.
* Make modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml generate properly.
* Added generated code for modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml.
* Better handling of enums and map container and better sanitizing of generated identifiers to support all the corner cases present in modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml.
* Correcting a violation : using toLowerCase without relying on the default Locale.
* Changed authoring in partial_header.mustache.
* Deleted commented code.
* Collect enum schemas in items properties of operation parameters in the case of ArraySchema parameters. This allows correct processing of modules/openapi-generator/src/test/resources/2_0/petstore-with-fake-endpoints-models-for-testing.yaml.
* Collect enums also in additional properties schemas of operation parameters in the case of MapSchema parameters (if this type of parameter can is allowed).
* Removed copy-pasted Copyright notice from SmartBear.
* update doc
* Use Locale.ROOT instead of Locale.ENGLISH for toLowerCase calls.
* Make GET operations with body generate compilable code.
* Updated ocaml-client generated samples using the latest version of the OCaml code generator.
* Added [@default None] for record fields with option types so that if those fields are missing at deserialization time, None is assumed.
* Added support of api keys in query params.
* Updated generated ocaml samples to reflect latest changes in templates.
* Added [@default] on enum record fields for which the enum type has only one accepted value so that those fields can be deserialized even if the value is absent of the json payload.
* Delete useless space character in template.
* Added proper handling of http response codes.
* Updated generated ocaml samples to reflect latest changes in templates.
* Bash: Update samples
I'm about to make a fix to the bash generator. I'm regenerating the
samples in this commit so that the change I make isn't lost amongst
the noise.
https://github.com/OpenAPITools/openapi-generator/pull/3290
* Bash client: Fix query params seperation
Fix bug where empty query parameters weren't separated by ampersands.
For example, this
```bash
bash bash_keycloak/client.sh -v --oauth2-bearer "$access_token" --host "$api_host" realmUsersGet realm=demo_realm2 email=foo+bar@baz.com
```
would generate the path
`/auth/admin/realms/demo_realm2/users?briefRepresentation=email=foo+bar@baz.comfirst=firstName=lastName=max=search=username=`.
It now puts ampersands around them to make
`/auth/admin/realms/demo_realm2/users?briefRepresentation=&email=foo+bar@baz.com&first=&firstName=&lastName=&max=&search=&username=`
Instead of predicting if there is going to be a `parameter_value` ahead of
time, we now put in the ampersand if there is a `parameter_value` and existing
`query_request_part`.
https://github.com/OpenAPITools/openapi-generator/pull/3290
* Bash: Skip query parameters with empty value
I have a route with many optional query parameters.
I observed that when they weren't specified, they were still included in
the routes, but without a value.
Running:
```bash
bash bash_keycloak/client.sh -v --header "Authorization: Bearer $access_token" --host "$api_host" --dry-run realmUsersGet realm=demo_realm2 email=foo+bar@baz.com username=foo
```
Would produce the route:
`http://localhost:8080/auth/admin/realms/demo_realm2/users?briefRepresentation=&email=foo+bar@baz.com&first=&firstName=&lastName=&max=search=&username=foo`
After this change it produces the route:
``http://localhost:8080/auth/admin/realms/demo_realm2/users?email=foo+bar@baz.com&username=foo
---
I discussed with @wing328 in the pull request about if empty values (eg
`username=` should produce an empty query parameter, or if the query
parameter should be removed.
We decided it should remove the query parameter.
https://github.com/OpenAPITools/openapi-generator/pull/3290
----
The OpenAPI definition I was using:
Using:
https://github.com/ccouzens/keycloak-openapi/blob/master/keycloak/6.0.json
In particular:
```json
"/{realm}/users": {
"get": {
"summary": "Get users Returns a list of users, filtered according to query parameters",
"parameters": [
{
"in": "query",
"name": "briefRepresentation",
"schema": {
"type": "boolean"
},
"style": "form"
},
{
"in": "query",
"name": "email",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "first",
"schema": {
"type": "integer",
"format": "int32"
},
"style": "form"
},
{
"in": "query",
"name": "firstName",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "lastName",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "max",
"description": "Maximum results size (defaults to 100)",
"schema": {
"type": "integer",
"format": "int32"
},
"style": "form"
},
{
"in": "query",
"name": "search",
"description": "A String contained in username, first or last name, or email",
"schema": {
"type": "string"
},
"style": "form"
},
{
"in": "query",
"name": "username",
"schema": {
"type": "string"
},
"style": "form"
}
],
```
* [java] Support for number enum
* [core] add isLong, isNumber, isNumeric, isFloat, isDouble to CodegenModel
* [java-gson] fix Enum TypeAdapter in BigDecimal case.
I already contributed proper enum supports a few weeks ago, but somehow missed actually using them when they're used as a property. This PR fixes that.
I also took the liberty of fixing a bunch of unused warnings.
* Make sure we use the enum types in Rust
* Fix unused warnings in Rust and regenerate samples
* Use crate:: import path that works both with Rust 2015 and 2018
* Derive PartialEq and Eq in generated Rust structs and enums
* feat(typescript-rxjs): use interfaces from rxjs/ajax, use shorthands
* feat(typescript-rxjs): regenerate samples
* docs(typescript-rxjs): extend readme by middleware howto
* feat(typescript-rxjs): stop generating empty comment when there is no description in model
* feat(typescript-rxjs): import throwIfRequired and COLLECTION_FORMATS only when needed
* feat(typescript-rxjs): generate HttpHeaders and HttpQuery only if needed, improve formatting
* feat(typescript-rxjs): conditionally import HttpHeaders and HttpQuery
* feat(typescript-rxjs): add encodeURI helper, refactor queryString helper
* feat(typescript-rxjs): improve condition for hasListContainers
* feat(typescript-rxjs): regenerate samples
* use proper response for simple object return types
* exclude api and/or model support files and imports if none are generated
Signed-off-by: Prateek Malhotra <someone1@gmail.com>
* Better Rust client imports.
* No more "unused_imports" in models for serde_json::Value.
* No more compilation problem for apis requiring serde_json::Value.
* "crate::" prefix for models and apis imports, for compatibility with Rust 2018 edition.
* Rust samples regeneration using new code.
* [Go][experimental-client] Properly define packageName for go-experimental sample client
* [Go][experimental-client] make structure members pointers, provide custom marshalling.
* Include commonly used Mustache lambdas in DefaultCodegen.
* Use or extend common Mustache lambdas from DefaultCodegen.
* Extract OnChangeLambda to own file.
* Javadoc fixed in addMustacheLambdas().
* Fix 3349 : Proposition to follow spec closely
* Fix#3349 : Changes suggested by code review. Add an option for the single request parameter.
* Fix#3349 : Add sample with the use of the single request parameter
* Fix#3349 : Small fix that wasn't passing the tests
* Fix#3349 : Remove cariage return that might create an error
* Fix#3349 : Add chmod to make new sh file executable and fix the CircleCI issue
* Fix#3349 : Add windows sample generation
* Fix#3349 : Rename everything because of default value change
* Fix#3349 : Indentation fix
* Fix#3349 : Add 755 to typescript-fetch-petstore-multiple-parameters.sh
* Fix#3349 : Auto generation of the documentations
* Fix#3349 : Revert back a change that was auto-generated.
* [typescript-node] fixed enum generator for top level enums #665
* [typescript-node] fixed enum generator for top level enums in models.mustache #665
* Remove wrong copyright line
* [C++][Pistache] Replace contains with find on json object
This makes generator compatible with nlohmann-json 3.5.0
* [C++][Pistache] Update Petstore sample
* [dart=-jaguar] Adds option to customise the generated API client name
* [dart-jaguar] Removes explicit clientName CLI property and derives client name from pub name
* [dart-jaguar] Updates samples
* Reverts import changes
The defaults configured for GENERATOR_HOST didn't really make sense.
When running the docker container with `-P`, GENERATOR_HOST defaulted to
http://localhost. This caused download links for generated client/server
code to be incorrect. For most cases, there's no reason to provide
GENERATOR_HOST as the code already figures the appropriate
scheme/host/port from the originating request.
GENERATOR_HOST could still be used for more complex deployment
scenarios, for instance if a specific server is configured as a file
server. I haven't tested this scenario, and it may require mounting /tmp
as a volume when running within a container.
* Adds python-experimental generator
* Adds python-experimental samples folder which uses its own v2 spec
* Adds enusre-up-to-date updates
* Removes samples/client/petstore/perl/t/AnotherFakeApiTest.t
* Removes comment line from python-experimental generator
* Reverts perl docs file
* Updates perl sample client
* Adds python-experimental to pom.xml
* Copies the python test foldeers tests and testfiles into python-experimental
* Copies python test folder into python-experimental
* Moves python testing from Travis (samples pom.xml profile) to Circlci (samples.circleci pom.xml profile)
* Adds python-experimental pom.xml
* Adds python-experimental makefile and .sh files
* Chenges python-experimental to use gitignored venv rather than .venv which is not ignored when testing
* Adds dev-requiremnts.txt and removes .travis.yml from python-experimental so CI tests will pass
* Moves python-experimental from CicleCI to Travis to get support for multiple python environments
* Updates generator java comment so CI tests will run over again
* Set error_reporting(E_ALL) in phpunit.xml settings, so that undefined variables will always cause a test failure
* Update petstore sample for php-laravel
The `mapping` property of the [Discriminator Object] is "An object to
hold mappings between payload values and schema names or references."
The subsequent examples in the spec have `mapping`s of both types.
The `mapping` support introduced in #536 only supports references.
Update the code to support names (identified by lack of `/`) or
references and change a test mapping to cover this case.
[Discriminator Object]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#discriminatorObject
Signed-off-by: Kevin Locke <kevin@kevinlocke.name>
* feat(r): Added handling exception with ApiException class and document generation
* feat(r):enhancements to exception handling and documentation
* fix(r): fixes and reverting the man folder
* fix(r): minor fix of import statement
* fix(r): generated the docs file
* fix(r) minor doc casing fixes
* Update DefaultCodeGen to allow additional primitive types
If a string field is specified with a format which is also defined using
--typeMappings, it will be treated as a primitive type
* Fixed typo in android-petstore-httpclient.bat
Previously, this pulled from the GENERATOR_HOST system property. This
should have been an environment variable. Fallback is now generator.host
system property.
* First set of fixes to support ver 3.0, useswashbuckle does not work yet
* Fix swashbuckle issues iwth aspnetcore 3.0
* Use default routing for 2.2 and turn off default for 3.0
* fix up documentation
* PR Feedback and wrong name in mustache file
* Fix for 2.1 usage too
* Change isFramework to useFrameworkReference as name to make thngs explicitly clear. Also fix small messages for the review comments
* Make JSON.NET version configurable
* Activate endpoint routing and use camel case NamingStrategy
* Make Newtonsoft version configurable to match ASP.NET Core preview 5
* Fix spelling of an option, remove a duplicate call and update docs
* feat(r): Inclusion of useragent timeout and serialization
* fix(r): fixing name of timeout parameter
* fix(r): fixing unit tests
* fix(r): fixing minor issues
* fix(r): updated r petstore batch command
* fix(r): minor unit test fix
* fix(r): refactor of useragent passing and other minor
* feat(typescript-rxjs): change BaseAPI to arrow functions, use shorthands where possible
* feat(typescript-rxjs): replace null checking with throwIfRequired helper function in api controllers
* feat(typescript-rxjs): use shorthand syntax for object creation of query and header params
* feat(typescript-rxjs): provide fallback for previously exported RequiredError and querystring
* refactor(typescript-rxjs): change order of query and headers definition
* feat(typescript-rxjs): regenerate samples
* fix(typescript-rxjs): missing closing curly
* fix(typescript-rxjs): add condition to prevent undefined parameters in header or query params
* [Go][Client] Ensure test errors don't crash
Previously we did not interrupt execution of a test case
when an error was returned from an API call. This was
causing the tests to crash as soon as we try to
dereference the response.
We now fail the tests as soon as the first API error
is received.
* [Go][Client] Use configured Scheme and Host in requests
Previously we were simply setting the Host header and
completely ignoring the configured scheme.
* Initial implementation of a validation framework in core
* Print surefire summary (helps evaluate errors)
* Bump versions: surefire plugin,jmockit
* Depend on jmockit within maven-surefire-plugin which requires it
* Release versioning script with marker tags.
Introduces bump.sh which supports moving from version to version but
only within delimiting marker tags in the target file.
This script currently doesn't do validations or anything fancy.
* Allow bumping version according to type (major,minor,build,revision)
* bump.sh will display error if file contents are unchanged
URL-special characters such as /,?,% should be encoded when inside path
parameters. I changed the Ruby-client to do so.
https://github.com/OpenAPITools/openapi-generator/pull/3039
Unfortunately, some projects relied on slashes not being expanded within
path paramters:
https://github.com/OpenAPITools/openapi-generator/issues/3119
With this commit, these projects can now pass `--strict-spec false` to
not have / converted to %2F.
strict spec not specified: / -> %2F
--strict-spec true: / -> %2F
--strict-spec false: / -> /
* Add Flow import to kotlin spring reactive
* Add runBlockingTest to api tests
* Add kotlin-springboot-petstore-server-reactive.sh to ensure-up-to-date
* add reactive check for runBlockingTest
* Samples
* feat(csharp-documentation): Improving documentation and example
* feat(csharp-documentation): Updating pet project
* feat(csharp-documentation): Minor updates
* feat(csharp-documentation): Updating pet project
* feat(csharp): Updating pet project
* feat(csharp-netcore): Updating pet project
* feat(r): fixing serialization and deserialization issues
* feat(r): pet store file generated with serialization fixes
* fix(r): updated the query params with keyname in get request
* fix(r):fix issue with package name and other minor
* fix(r): fixing unit tests
* feat(r): adding api calls WithHttpInfo method
* fix(r): reverting unit test changes
* feat(r): saving changes for reference
* Revert "feat(r): saving changes for reference"
This reverts commit 0d091b5c20.
* feat(r): minor refactor of method position
* fix(r): fixing bug in withhttpinfo method args passing
* fix(r): generated petstore with fix
* Bump up babel version
* Update samples
bin/javascript-flowtyped-petstore.sh
* The dependency `babel-preset-react-app` requires `NODE_ENV` or `BABEL_ENV`
* Run `env BABEL_ENV=development npm run build` to update the samples
* Introduce GeneratorSettings + cleanup
GeneratorSettings is an immutable settings object, intended to limit the
manipulation of generator settings.
To move to GeneratorSettings, lots of modification was done to
CodegenConfigurator. The goal here is that CodegenConfigurator
would create the contextual information required to initiate a
generator run:
* GeneratorSettings
* Workflow related settings
* Configuring "system" GeneratorProperties (ThreadLocal properties)
* Deserializing from file to config object
* Input spec document (OpenAPI, intending to target others)
ClientOpts was generally unused, and the few places it was being used
have been updated to pass the properties to
codegen.additionalProperties.
* Add sanity to system properties
The -D argument for the generate command is an application argument
which is easily confused for Java System Properties. This isn't the
case, as setting values here doesn't update the configuration in
System.getProperties().
This adds a warning and deprecation to that option, as defining these
values as system properties will also continue to work as expected. This
makes the -D application argument redundant and confusing.
* Contextualize generator/workflow settings
This splits settings relevant to generator configuration (the what) and
workflow configuration (the how) in an attempt to make configuration
easier to conceptualize.
* Update Gradle task w/ CodegenConfigurator setters
* Remove -D usage in scripts
* Add -p option for additional properties
* Regnerate samples
* Add support for enum schemas and properties to the rust generator
Also:
* Skip serializing a field with serde if it's optional and empty
* Fix borrow checker error when using &std::path::Path (should be std::path::PathBuf)
* Add script to generate sample with rust-reqwest
* Regenerate petstore sample for both rust targets
* Remove go code from README.md
* Fix formatting of serde skip_serializing_if attribute
* Explicitly ignore .bak in gradle samples directory
* Add gradle wrapper to local-spec sample, make .java-version (jenv local) be less machine specific
* Include gradle plugin samples in travis build
`URI.encode` is obsolete. `CGI.escape`, `URI.encode_www_form` or
`URI.encode_www_form_component` are recommended instead.
https://ruby-doc.org/stdlib-2.6/libdoc/uri/rdoc/URI/Escape.html#method-i-escape
URI.encode has different behaviour to CGI.escape:
```ruby
URI.encode('hello/world?test%string')
=> "hello/world?test%25string"
CGI.escape('hello/world?test%string')
=> "hello%2Fworld%3Ftest%25string"
```
I recently raised pull request #3039201cbdce29
That pull request escapes path items at insertion.
Before either pull request, the path item 'hello?world' would go into
the URL as 'hello?world'. That behaviour was insecure as if an attacker
could control the path item value, they could change the URL the
application connected to.
After #3039 'hello?world' would go in as 'hello%253Fworld'. This was
safer than before, but it's still not correct.
If I'd realised at the time, I would have made it correct at the time.
What this pull request does is make it go in as 'hello%35world', which
is correct.
ApiClient::build_request_url was URI.encoding the whole path.
This wasn't protecting against all undesirable characters in the path
items, but was escaping % characters a 2nd time which was unhelpful.
I have additionally removed URI.encode from Configuration::base_url as I
can't see any benefit it could be bringing.
There is no justification for it in the commit where it was originally
added: 47c8597d36
* test plugin in travis, move jobs to circle CI
* Revert "[maven-plugin] fix strictSpec parameter (#3071)"
This reverts commit 8c9a1512ae.
* Revert "Revert "[maven-plugin] fix strictSpec parameter (#3071)""
This reverts commit c3e5723c5a.
* test with jdk8
* general support to add scopes for bearer auth too
implemented authorize workflow in aspnet core too
* petstore update
* fix missing )
* multi roles fix
* null pointer error prevention
* null point exception fixes
* null pointer fixes
* npe fix
* solved line break issue
* Fixed case where invalid comma is added to consumes/produces list in case last element is empty.
* Changed default HttpStatus.OK response to match first response code in definition.
Allowing also other responses 201, 202 ...
* Changed default HttpStatus.OK response to match first response code in definition.
Allowing also other responses 201, 202 ...
* run ./bin/kotlin-springboot-petstore-server.sh
Updated APIs
* feat(java-jersey2): Adding http response headers and making example compilable
* feat(java-jersey2): Updating pet project
* feat(java-jersey2): Removing uncessary lines from Readme
* feat(java-jersey2): Updating pet projects
* feat(java-jersey2): Updating pet projects
* refactor(golang): Use http constants for methods
* regenerate samples
* fix: Only import strings when needed
* regenerate samples
* Only import fmt and strings when needed
* regenerate samples
* kotlin spring : add reactivity via kotlin's coroutines
* add kotlin spring boot reactive samples
* bug : fix spring version and import for coroutines
* remove exception handler for reactive (webflux doesn't support it)
* add spring milestone repository to maven pom
* add reactive type for list in Api and ApiImpl methodes for mathching body responsive parameter
* fix baseType for ArraySchema
* regenerate samples
* updating documentation
* Ruby client: escape path parameters
Path parameters should be escaped when encoded into the path.
In the path '/pet/{petId}' let's pretend petId is a string instead of a
number.
If the user uses "Bobby" as the petId then they correctly get the path
'/pet/Bobby'.
But if they put 'Bobby/Tables' as the petId then they used to get the
path '/pet/Bobby/Tables' which will be interpreted by the server as a
different route.
Using CGI::Escape they now get '/pet/Bobby%2FTables' which is correct.
* Ruby client- regenerate further files
Thank you @autopp for noticing I needed to update
`samples/openapi3/client/petstore/ruby`.
Regenerated by running `bin/openapi3/ruby-client-petstore.sh`.
PR #3039
* [gradle] Reworking publishing pipeline
TravisCI proxies separate external requests with different orginating IP
addresses, while Sonatype associates artifacts for auto-generated
repositories by IP address. This leads to many gradle deploys from CI
resulting in "split" staging repositories with no way to combine in
Sonatype Nexus.
This introduces a workflow which should resolve this issue on the next
revision release. Specifically, nexus-publish-plugin is included to
create singular staging repositories from TravisCI and
gradle-nexus-staging-plugin is included to auto-release and promote
this repository.
NOTE:
We need to publish via publishPluginMavenPublicationToNexusRepository,
because publishToNexus will publish _all_ publish-related tasks,
including the one intended only for the Gradle Plugin Portal.
Tested in standalone open source Nexus Repo Manager, which doesn't
support the staging plugin. So, only SNAPSHOT workflow has been
validated locally.
* Change the 'publish' task to 'publishToMavenLocal' in the helper pom.xml
* Add condition on signing and be explicit about sources/javadoc artifacts
* Call close/closeAndReleaseRepository
* Reuse same closeAndReleaseRepository for SNAPSHOT + releases using a task guard, and publish to Gradle Plugin portal only on tagged build.
* Add v prefix for tag check.
* [typescript-fetch] Fix uploading files
* Check for Blob instead of File
* Update samples
* Update samples
* Update samples
* Update samples
* Regenerate samples
* Bug
* Manually fix samples
* Implement support for Buffer and Blob in a backwards-compatible way
* Rework how blob and buffer instance checking works
* Check for Blob/Buffer existence properly
* Avoid using Buffer and Blob in type declarations
* Remove Buffer support
* Update samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts
Co-Authored-By: Esteban Marin <estebanmarin@gmx.ch>
* Update samples/client/petstore/typescript-fetch/tests/default/test/PetApi.ts
Co-Authored-By: Esteban Marin <estebanmarin@gmx.ch>
* Support python 3.7 for all server-generators
Signed-off-by: Guillaume Smaha <guillaume.smaha@gmail.com>
* Rename typing_patch.py to typing_utils.py
* Renaming typing_patch.mustache to typing_utils.mustache
* Fix comparaison in typing_utils.is_dict for python3.7
* Use golang's provided method names (gin)
This commit modifies the gin template for the router to leverage the http constants for method types as defined by RFC 7231 section 4.3. These are documented on:
https://golang.org/pkg/net/http/#pkg-constants
This removes the need for the `strings` dependency and does not require any new dependencies, as `net/http` is already imported.
* Remove strings dependency which is no longer used
* Update samples
* fix(okhttp-gson): Make example executable
* fix(okhttp-gson): Make example executable
* fix(okhttp-gson): Make example executable
* fix(okhttp-gson): Updating pet project
* fix(okhttp-gson): Updating parcelable project
* fix(okhttp-gson): Using {{{}}}
* fix(okhttp-gson-java): Adding response headers on api_doc.mustache
* feat(okhttp-gson): Adding Http response headers to docs and javadocs
* feat(okhttp-gson): Included dots in custom tage
* feat(java-okhttpgson): Updating pet project
* feat(java-okhttpgson): Updating other pet project
* To fix conflict params name 'url'
Sometime we have api params named url that will conflict with imported module url named url.
* run samples
* run samples
* update samples
* update ts axios petstore all
* add apiSuffix configuration
* refactor the global option apiSuffix to kotlin specific feature
* add testcase
* add testFolder for kotlin gen
* add basic api_test.mustache template
* add api_test,mustache
* add tests
* improve usage of file separators
* replace defined file separator into os specific separators
* improve test templates and kotlin-springboot sample
* add test dependecies into gradle template
* add newline into template file
The namedCredential property is intended to override the namedCredentials name, but it wasn't being used. Instead, the title from the openapi spec file was used, and the namedCredential property wasn't used anywhere.
For backwards compatibility, this change also keeps the spec title as the default name if an override is not provided.
* Add openapi dictionary/map support to typescript-fetch client generator
Change isContainer -> isListContainer for existing array support.
Add isMapContainer control flow, adding map support.
Add utility function to help map openapi map/dictionaries to ts maps.
Close#1878
* Run typescript-fetch generator scripts and update output files
* Support for Bearer in Ruby Client
* Update README.mustache
* Update README.mustache
* Update api_doc.mustache
* Update api_doc.mustache
* Update api_doc.mustache
* samples
* Uncommited changes
* Formatting
* More Formatting
* Fomatting
* More formatting
* More formatting
* Even more formatting
* Even more formatting
* More formatting
* Even more formatting
* More formatting
* More formatting
* [JAVA] fix artifactVersion is not taken from specification when not provided by generator option
* update jaxrs-spec samples
* update docs generator jaxrs
* add apiSuffix configuration
* Add default value for Api suffix
* remove overriding method toApiName
* refactor the global option apiSuffix to kotlin specific feature
* add missing Option for apiSuffix
* extend readme.md for apiSuffix configuration
* update doc
* add testcase
* python: api_client: add the multipart files after sanitization
* simplify prepare_post_parameters
* fix case of both post params and files set
* update samples
* update samples
* [Java] improve docs with adding default value for additional properties
* remove using File.separator for sourceFolder/projectTestFolder path
* Improve artifactId and artifactVersion description
* update doc java pkmst and sample
* [feat] Intro GeneratorMetadata (stability index)
GeneratorMetadata offers an immutable object created via Builder pattern
which allows generators to explicitly define their stability (stable,
beta, experimental, deprecated) as well as a message to be shown during
generation.
This is a step toward:
* Fleshing out the "Core" artifact (#845)
* Providing a place to encapsulate feature-oriented metadata (#840)
* Providing a means to communicate end of life scheduling (#116)
This new structure, specifically the Stability property, allows us to
offer future enhancements such as allowing users to filter down to only
"Stable" generators via CLI, and eventually any compat table (see #503).
* Mark deprecated generators as deprecated in-code
* Re-export docs/generators.md
* Beta server stub generator for F#/Giraffe (#2705)
* first commit for F#/Giraffe
use CLI generator
work on handlers
add binding to url params
add parameter declaration to handler & fix array types
order models by dependency and add tests
add oauth handlers
add service generation
add service implementation
return json for map types and add all return types to service implementation
pare down record types for readability
move implementations to impl folder
fix additional handler invocation
remove logging
remove open api type provider package reference
add sane defaults for OAuth
add readme and reorganize files for easier ignore
fix oauth checks and move login to default template
typedef operation body params as model
add API test templates
fix test templates
set project & other folders when packageName is set
add ignore to test pipes
add ignore for oauth to hide compile warnings
escape model types for generic dictionaries
remove Boolean object from primitives
fix handler and param templates for multiple path params
remove "Model" from model module names and fix import mapping for dictionary
add package name to model imports
change model templates to use imports
move login to CustomHandlers
raise exception where oauth not properly configured
allow webhost configuration from CustomHandlers
remove explicit support for nullable types and render option in template instead
move Cookie options to CustomHandlers
add header params
integrate api key provider
add nullable to datetime types
fix test generation and pretty up model folder
add context path to handler test template
dont copy spec file
remove superseded copyright notices
remove superseded copyright notices
* remove carriage return in fsharp template
* remove superseded sample output directory
* fix bash build script
* update generated sample
* update documentation
* add new file
* fix compile issues
PR template seems to assume contributor is compiling the project, and would have had "latest" build completed locally. New contributors making template or documentation changes may not have built the project at all, and wouldn't know to do so based on previous PR template instructions.
* [all] Adds strict spec option
Introduces an option to allow user customization of strict specification
behaviors. For instance, OpenAPI 3.x requires a path object name to be
prefixed with '/' so we append any missing '/', but this may not be
desirable to some users or generators. In this commit, this fix specifically is
the only modification affected.
* Clarify strict-spec docs, add option to README.md
* Update CLI options in docs/usage.md
* do not add non-nullable fields to model json
This fix would avoid adding and sending fields that are not isNullable in the request.
* updated sample for issue #2535
* Support enums
* Updating petstore sample
* Use enum class instead of just enum
* Use string_t for g++ compatibility
* Add enum descriptions
* Fix string parsing. Make g++ compatible.
* Add boost-uid to vcpkg isntall command. It's required.
* Add instructions for building on visual studio 2017
* Add section to support vcpkg and visual studio
* Undef U on windows to stop compiler error
* Update pet store sample
* Move undef U to apiclient-header
* Slight change to address compiler warning
* [cli] Support packageName as global option
CLI supports other package-related options (--api-package,
--model-package, --invoker-package). This aligns those options with
--package-name to avoid confusion about how to configure these options
where those are supported.
This intentionally does not apply a packageName getter/setter to
DefaultCodegen to reduce the footprint of this change.
* [gradle] Add packagName as global option
This makes packageName available as a global option, beside apiPackage,
modelPackage, and invokerPackage to reduce potential confusion about how
to configure the four of these options by generators which support them.
* [TypeScript] Generate oneOf schemas as type unions
* [TypeScript] Generate oneOf schemas as type unions
* [TypeScript] Generate oneOf schemas as type unions
update aurelia sample
This fixes adding supporting files to packages that have a '.'.
If the controllersPackage or modelsPackage has a '.' (eg to put the
controllers and/or models in a subpackage of the invokerPackage),
supporting controller and models were ending up in directories that
included the period instead of converting the periods to file
separators.
* Pass opts argument to api client in ruby-client
We want to change the option when debugging, changing timeout to specific api, etc...
So we want to merge and pass options to api client.
* fix ruby-client
* fix openapi ruby-client
* fix typo
* fix template
* Fix issue including header, the filename not the class name should be used to import a header file.
* Include header file name, not class name.
Header file name and class name differ.
* Update petstore samples
* [Elixir] update version / add test
* update samples (add missing 200 responses in petstore-with-fake-endpoints-models-for-testing.yaml)
* [Elixir] update to 1.6 version
* [Elixir] fix test petapi
* new module: openapi-generator-core
* templating engine adapters to support extension (currently only Handlebars)
* new `-e` templating engine CLI option
* adapt Generator to process Template with the passed TemplatingEngineAdpater
* add a MustacheEngineAdapter to the codegen in the unit tests
* force default MustacheEngineAdapter
* copy new core module in the root Dockerfile
* add processTemplatingEngine to CodegenConfig, to be overriden by Codegen classes if needed
* support multiple file extensions per templating engine adapter
* Extends handlebars experimental adapter with explicit contextual resolvers (e.g. map processing)
* Add new openapi-generator-core/pom.xml to release_version_update.sh
* A detailed message will be logged on missing handlebars helper
* Adds README documentation around template default and beta options
* Moves mustache package under new templating package
* Include built-in handlebars helpers which require explicit registration, and custom `startsWith` helper.
- Restore XML namespace support
- Remove non snake case rust warning for xml wrap_in methods
- Add XML rust-server tests
- Fix wrapping XML arrays when a property of another object
- Run all tests, not just those for OpenAPI 2.0
- Force wrapping for rust-server
* Improve CONTRIBUTING.md
Indicate that bin/openapi3 scripts should be executed too.
Try to clarify how to run tests:
* use in sample a client for which tests exist
* explain where to run the command and how to find the artifactId
* Update contributing.md by running copy-to-website
* Add first cutasync support and small cleanups
* Add apiPackage, modePacke to use for namespaces, for library don't generate wwwroot and dont make model class partial and default to no swashbuckle, , workarodun empty string cliOption
* Update docs
* Don't add async for library
* Fix generated program for async and task
* Default models names space should be <package>.Models
* Remove commented out code
* Remove unnecessary code, fix a comparison and add an else fo an if statment.
* Update docs
* Fixed#2643
Refactored to/from json functions to use universal object serialization method.
* Code review found incorrect indenting and I forgot to remove unused mustache files.
* Removed helpers class because it is not needed anymore.
* Removed helpers package from docs.
* Reverted helper class removal.
* Add RubyKaigi 2019 presentation
I talked "How to use OpenAPI3 for API developer" in RubyKaigi 2019
These are the topics of OpenAPI Generator
* Add the conference name
* Use isNotEmpty instead of length in dart2 validity checks
In dart2 the preferred method of checking whether an object is empty or
not is to use the .isNotEmpty property. An aspect that is now warned
about by the linter.
While not an issue in this particular case - testing length can also
have negative performance implications for Iterable collections, which
are not required to know or provide their length deterministically.
* Prefer equals for default values in dart2
The dart2 linter complains about m({a: 1}) style assignments, preferring
m({a = 1}) instead. Update the api_client generation to follow this.
* Regenerate dart2 samples for mustache template changes
* New modified model header and body mustache for c client generator
* remove uncrustify from cmake as it is used during code generation, also remove valgrind as it is not used
* add function to encode and decode binary data
* update model mustache
* update api body and header mustache for handling all types of parameters
* update model mustache with variable names and address few more issues to generate working codes
* updated api body and header mustaches with support for various new parameters and fix some issues as per new changes in code flow structure
* update apiClient header and body mustache as per new modifications for handling binary data and few more stuff
* updated samples generated by new modified mustache
* update handling of file and binary data type to binary_t
* update samples with recent commit on master regarding c-generator
* update cmakelist which was ignored by .openapi-generator-ignore, cleanup external folder
* update CMakeList mustache to show how to use compiled libary to compile source files
* update samples with new cmake
* Add comments explaining what each command is doing inshort
* remove freeing of base path as it is not memory allocated
* update samples to free apiclient object when the requirement is over
* add missing cJSON delete to fix memory not freed bugs
* use uncrustify to beautify manual written test code
* Updated StaticHtmlGenerator to it overrides the toVarName(String name) method in DefaultCodegen and prevents underscores from being converted to the word Underscore
* adding model propery with a snake_case name
* Reverting change to base petstore.yaml file
* Trying to trigger another CI build
* Trying to trigger another CI build
* Removing trailing space
* update travis to test gradle plugin
* update gradle version
* show gradle version
* test gradle plugin in circleci
* test appveyor in gradle
* use direct link
* revert other ci config
* Add tests to reproduce the issue
* Use simple replacement instead of regexp
* Add tests to reproduce the issue (apiPackage)
* Use simple replacement instead of regexp (apiPackage)
* Replace a slash with File.separator (addressing the issue on windows)
* Tweak (windows)
* Tweak (windows)
* Use StringUtils#remove***() instead of regexp
* Fix “The field JavascriptFlowtypedClientCodegen.SNAPSHOT_SUFFIX_FORMAT is hiding a field from type AbstractTypeScriptClientCodegen”
* Fix “The field JavaCXFExtServerCodegen.CodegenVariable.vendorExtensions is hiding a field from type
DefaultCodegen”
* Fix “Javadoc: Invalid URL reference. Double quote the
reference or use the href syntax”
* add static modifier - mvn verify passes
* specify charset, mvn verify works, compiles and clean on spotbugs in my project
* update samples as per contribution guide; mvn integration-test passes
* commit rest of samples
* fix missing newline at EOF
* lots of new newlines
* needed to run mvn clean beforehand...
* [BUG][php-symfony] Fix alias generation
* fix
* add bundle alias option and alias logic when it is not defined
* run bin/utils/ensure-up-to-date to update php-symfony.md
If a path defined security to an OAuth type, and defined scopes, the scopes from the
components definition were still being used, rather than the (most likely shorter) list
of specific scopes for the path.
This copies all the component security information over EXCEPT for the scopes. The scopes
to be included are determined by the path's security settings.
NOTE: Modified the petstore.yaml file so the GET operations only have read:pets scope and
utilized the Kotlin server sample to verify output. Sample output updated only for this scenario
* [Doc] Better highlight of generators docs page with generators specific parameters
* [Doc] Better highlight of generators docs page with generators specific parameters
* Add optValue to CliOption
* Fix compilation with ASP.Net Core 2.1
* Add ASP.Net core 2.2
* Use CliOption for classModifier, operationModifier, buildTarget, add ASP.Net core 2.2
* Make abstract method look cleaner
* Update docs
* Regenerate sample
- [ ] Read the [contribution guidelines](https://github.com/openapitools/openapi-generator/blob/master/CONTRIBUTING.md).
- [ ] Ran the shell script under `./bin/` to update Petstore sample so that CIs can verify the change. (For instance, only need to run `./bin/{LANG}-petstore.sh`, `./bin/openapi3/{LANG}-petstore.sh` if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in `.\bin\windows\`.
- [ ] Filed the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master`~~, `3.4.x`, `4.0.x`~~. Default: `master`.
- [ ] Ran the shell script under `./bin/` to update Petstore sample so that CIs can verify the change. (For instance, only need to run `./bin/{LANG}-petstore.sh`, `./bin/openapi3/{LANG}-petstore.sh` if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in `.\bin\windows\`. If contributing template-only or documentation-only changes which will change sample output, be sure to [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) first.
- [ ] Filed the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master`, `4.1.x`, `5.0.x`. Default: `master`.
- [ ] Copied 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.
# Avoid caching our built dependencies between runs.
- rm -fr $HOME/.m2/repository/org/openapitools/
cache:
directories:
- $HOME/.m2
@@ -87,6 +94,12 @@ before_install:
# - Rely on `kerl` for [pre-compiled versions available](https://docs.travis-ci.com/user/languages/erlang#Choosing-OTP-releases-to-test-against). Rely on installation path chosen by [`travis-erlang-builder`](https://github.com/travis-ci/travis-erlang-builder/blob/e6d016b1a91ca7ecac5a5a46395bde917ea13d36/bin/compile#L18).
@@ -31,6 +31,8 @@ Please file the pull request against the correct branch, e.g. `master` for non-b
All the code generators can be found in [modules/openapi-generator/src/main/java/org/openapitools/codegen/languages](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages)
If you want to add a new generator, follow the [new-generator](https://openapi-generator.tech/docs/new-generator) guide.
### Templates
All the templates ([mustache](https://mustache.github.io/)) can be found in [modules/openapi-generator/src/main/resources](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources).
@@ -83,8 +85,8 @@ For [Vendor Extensions](https://github.com/OAI/OpenAPI-Specification/blob/master
To add test cases (optional) covering the change in the code generator, please refer to [modules/openapi-generator/src/test/java/org/openapitools/codegen](https://github.com/openapitools/openapi-generator/tree/master/modules/openapi-generator/src/test/java/org/openapitools/codegen)
To test the templates, please perform the following:
- Update the Petstore sample by running the shell script under `bin` folder. For example, run `./bin/ruby-client-petstore.sh` to update the Ruby PetStore API client under [`samples/client/petstore/ruby`](https://github.com/openapitools/openapi-generator/tree/master/samples/client/petstore/ruby) For Windows, the batch files can be found under `bin\windows` folder. (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)
- Run the tests in the sample folder, e.g. in `samples/client/petstore/ruby`, run `mvn integration-test -rf :RubyPetstoreClientTests`. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
- Update the Petstore sample by running the shell scripts under `bin` and `bin/openapi3` folder. For example, run `./bin/python-client-petstore.sh` and `./bin/openapi3/python-client-petstore.sh` to update the Python PetStore API client under [`samples/client/petstore/python`](https://github.com/openapitools/openapi-generator/tree/master/samples/client/petstore/python) and [`samples/openapi3/client/petstore/python`](https://github.com/openapitools/openapi-generator/tree/master/samples/openapi3/client/petstore/python). For Windows, the batch files can be found under `bin\windows` folder. (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)
- Run the tests in the sample folder using maven `mvn integration-test -rf :<artifactId>`, e.g. open a shell in `samples/client/petstore/python`, run `mvn integration-test -rf :PythonPetstoreClientTests`. The artifactId of the project can be found in the pom.xml file. (some languages may not contain unit testing for Petstore and we're looking for contribution from the community to implement those tests)
- 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)
[](https://gitter.im/OpenAPITools/openapi-generator?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](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)
@@ -25,7 +37,7 @@
:notebook_with_decorative_cover: For more information, please refer to the [Wiki page](https://github.com/openapitools/openapi-generator/wiki) and [FAQ](https://github.com/openapitools/openapi-generator/wiki/FAQ) :notebook_with_decorative_cover:
:notebook_with_decorative_cover: The eBook [A Beginner's Guide to Code Generation for REST APIs](https://gumroad.com/l/swagger_codegen_beginner) is a good starting point for beginners :notebook_with_decorative_cover:
:notebook_with_decorative_cover: The eBook [A Beginner's Guide to Code Generation for REST APIs](https://gum.co/openapi_generator_ebook) is a good starting point for beginners :notebook_with_decorative_cover:
:warning: If the OpenAPI spec, templates or any input (e.g. options, environment variables) is obtained from an untrusted source or environment, please make sure you've reviewed these inputs before using OpenAPI Generator to generate the API client, server stub or documentation to avoid potential security issues (e.g. [code injection](https://en.wikipedia.org/wiki/Code_injection)) :warning:
@@ -33,13 +45,28 @@
</div>
## Sponsors
If you find OpenAPI Generator useful for work, please consider asking your company to support this Open Source project by [becoming a sponsor](https://opencollective.com/openapi_generator). You can also individually sponsor the project by [becoming a backer](https://opencollective.com/openapi_generator).
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:
4.0.0 (upcoming release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.0.0-SNAPSHOT/)| 20.12.2018 | Major release with breaking changes (with or without fallback)
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.2.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/4.2.0-SNAPSHOT/)| 09.10.2019 | Minor release (breaking changes with fallbacks)
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.
After downloading the JAR, run `java -jar openapi-generator-cli.jar help` to show the usage.
@@ -155,7 +184,7 @@ For Mac users, please make sure Java 8 is installed (Tips: run `java -version` t
exportJAVA_HOME=`/usr/libexec/java_home -v 1.8`
exportPATH=${JAVA_HOME}/bin:$PATH
```
<!-- /RELEASE_VERSION -->
### Launcher Script
One downside to manual jar downloads is that you don't keep up-to-date with the latest released version. We have a Bash launcher script at [bin/utils/openapi-generator.cli.sh](./bin/utils/openapi-generator-cli.sh) which resolves this issue.
@@ -203,9 +232,9 @@ openapi-generator-cli version # is always 3.0.2, unless any of the above overrid
To build from source, you need the following installed and available in your `$PATH:`
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
(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`)
You can also download the JAR (latest release) directly from [maven.org](http://central.maven.org/maven2/org/openapitools/openapi-generator-cli/3.3.4/openapi-generator-cli-3.3.4.jar)
<!-- 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.1.0/openapi-generator-cli-4.1.0.jar)
<!-- /RELEASE_VERSION -->
To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
- latest master: https://api-latest-master.openapi-generator.tech (updated with latest master every hour)
The server is sponsored by [Linode](https://www.linode.com/) [](https://www.linode.com/)
@@ -506,9 +554,14 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [BIMData.io](https://bimdata.io)
- [Bithost GmbH](https://www.bithost.ch)
- [Boxever](https://www.boxever.com/)
- [CAM](https://www.cam-inc.co.jp/)
- [Camptocamp](https://www.camptocamp.com/en)
- [codecentric AG](https://www.codecentric.de/)
- [Commencis](https://www.commencis.com/)
- [Cupix](https://www.cupix.com/)
- [DB Systel](https://www.dbsystel.de)
- [FormAPI](https://formapi.io/)
- [Fuse](https://www.fuse.no/)
- [GenFlow](https://github.com/RepreZen/GenFlow)
- [GMO Pepabo](https://pepabo.com/en/)
- [GoDaddy](https://godaddy.com)
@@ -526,7 +579,9 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
@@ -547,6 +602,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 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)
- 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/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/)
@@ -555,7 +611,21 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2019-03-07 - [OpenAPI Generator で Spring Boot と Angular をタイプセーフに繋ぐ](https://qiita.com/chibato/items/e4a748db12409b40c02f) by [Tomofumi Chiba](https://github.com/chibat)
- 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)
- 2019-04-17 - [OpenAPIによるスキーマファースト開発の実施サンプルとCloud Runについて](https://tech-blog.optim.co.jp/entry/2019/04/17/174000) by [@yukey1031](https://twitter.com/yukey1031)
- 2019-04-18 - [How to use OpenAPI3 for API developer (RubyKaigi 2019)](https://speakerdeck.com/ota42y/how-to-use-openapi3-for-api-developer) by [@ota42y](https://twitter.com/ota42y) at [RubyKaigi 2019](https://rubykaigi.org/2019)
- 2019-04-29 - [A Beginner's Guide to Code Generation for REST APIs (OpenAPI Generator)](https://gum.co/openapi_generator_ebook) by [William Cheng](https://twitter.com/wing328)
- 2019-05-01 - [Design and generate a REST API from Swagger / OpenAPI in Java, Python, C# and more](https://simply-how.com/design-and-generate-api-code-from-openapi) by [Simply How](https://simply-how.com/)
- 2019-05-17 - [Generate Spring Boot REST API using Swagger/OpenAPI](https://www.47northlabs.com/knowledge-base/generate-spring-boot-rest-api-using-swagger-openapi/) by [Antonie Zafirov](https://www.47northlabs.com/author/antonie-zafirov/)
- 2019-05-24 - [REST API 代碼生成指南 (OpenAPI Generator)](https://gum.co/openapi_generator_ebook_big5) by [William Cheng](https://twitter.com/wing328)
- 2019-06-24 - [Kubernetes Clients and OpenAPI Generator](https://speakerdeck.com/wing328/kubernetes-clients-and-openapi-generator) by [William Cheng](https://twitter.com/wing328) at [Kubernetes Contributor Summits Shanghai 2019](https://www.lfasiallc.com/events/contributors-summit-china-2019/)
- 2019-06-28 [Codewind OpenAPI Tools](https://marketplace.eclipse.org/content/codewind-openapi-tools) in [Eclipse Marketplace](https://marketplace.eclipse.org/) by IBM
- 2019-06-29 [Codewind OpenAPI Tools](https://marketplace.visualstudio.com/items?itemName=IBM.codewind-openapi-tools) in [Visual Studio Marketplace](https://marketplace.visualstudio.com/) by IBM
- 2019-07-04 - [REST API のためのコード生成入門 (OpenAPI Generator)](https://gum.co/openapi_generator_ebook_big5) by [William Cheng](https://twitter.com/wing328), [中野暁人](https://github.com/ackintosh), [和田拓朗](https://github.com/taxpon)
- 2019-07-14 - [OpenAPI GeneratorでPythonのクライアントライブラリを作成した](https://qiita.com/yuji38kwmt/items/dfb929316a1335a161c0) by [yuji38kwmt](https://qiita.com/yuji38kwmt)
- 2019-07-19 - [Developer Experience (DX) for Open-Source Projects: How to Engage Developers and Build a Growing Developer Community](https://speakerdeck.com/wing328/developer-experience-dx-for-open-source-projects-english-japanese) by [William Cheng](https://twitter.com/wing328), [中野暁人](https://github.com/ackintosh) at [Open Source Summit Japan 2019](https://events.linuxfoundation.org/events/open-source-summit-japan-2019/)
## [6 - About Us](#table-of-contents)
@@ -568,15 +638,18 @@ OpenAPI Generator core team members are contributors who have been making signif
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.