* [dart][dart-dio] Add support for set types
* copy `uniqueItems` usage from 2.0 fake spec to `3.0`
* add support for sets in parameters, responses and properties
* Regenerate all other samples
* Fix broken tests due to invalid cast
* Update documentation
* Regenerate samples
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [rust-server] Add support for Bearer auth
- Added bearer auth to the security features for rust server
- Supplemented the basic auth condition in the context template to handled basic auth and bearer auth separately.
- Repurpose an exising sample to confirm the code generation works as expected.
* Update docs
* Update readme for bearer tokens
* [Rust Server] Support Cargo Metadata Configuration
This adds support for publish, repository, documentation and homepage metadata.
* [Rust Server] Test Cargo Metadata configuration
* Add CORS support to python-flask server generator
* Documentation update and CORS support for other generators using the same base class
* Trivial sample changes
* Removes nulltype from python, updates samples
* Removes nulltype from the python requirements
* Removes nulltype import in models, moves requiredVars to optionalVars when approprieate
* Fixed defaultValue escaping in Vert.x server template
* Ran all java/vertx scripts in bin folder (java-vertx-*, java-petstore-vertx) and committed result.
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Spring codegen - fix equals and hashCode methods for byte array and binary
- they should be compared using Arrays.equals
- they're hash code generated using Arrays.hashCode
* Corrected checkstyle issues
* Revert changes for binary types
* Remove weak self to fix too early deallocations
* Update samples
* Remove podfile lock
* Run pod install on samples/client/test/swift5/default/TestClientApp/
* Revert "Run pod install on samples/client/test/swift5/default/TestClientApp/"
This reverts commit 5ad327c707.
Collection related refactorings:
- replaces for/foreach loops to use Collections.addAll() where
possible,
- replaces for/foreach loops to use Collection.addAll() where possible,
- replaces for/foreach loops to use Collection.removeAll() where
possible.
AddAllRatherThanLoopCleanUp from AutoRefactor applied by erefactor.
For AutoRefactor see https://github.com/JnRouvignac/AutoRefactor .
* removed depricated functions
* using preprocessor variable. Updated samples
* added version check for random functions
* added another version check to Json functions
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpFileElement.cpp.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.cpp.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Update modules/openapi-generator/src/main/resources/cpp-qt5-client/HttpRequest.h.mustache
Co-authored-by: Martin Delille <martin@delille.org>
* Apply suggestions from code review
Changed version check to Qt 5.15 to remove the warning of the deprecated functions when compiling with Qt 5.15
Co-authored-by: Martin Delille <martin@delille.org>
Co-authored-by: Martin Delille <martin@delille.org>
* remove trailing slash
* update sample app
* added tests
* bug fix
* Adds test in DefaultGeneratorTest
* Reverts python files
* Does not modify a value of /
* Stops skipping / use case
* update samples
Co-authored-by: Justin Black <justin.a.black@gmail.com>
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [Core] Inline Model Resolution of Enums
Enums need to be named types, so handle them as part of inline model resolution
* [Rust Server] Handle models starting with a number correctly
* [Rust Server] Additional trace
* [Rust Server] Add support for oneOf/anyOf
* [Rust Server] Update supported features
* [Rust Server] General template tidy up
* [Rust Server] Implement IntoHeaderValue for wrapped data types
* [Rust Server] Convert from string correctly
* [Rust Server] Test for anyOf/oneOf
* Update samples
* Update docs
* Update the bean validation to use version 2.0. For a reason I don't know, it was not working anymore with version 1.
* better format
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Update min sdks when Combine is used
* Update samples
* Revert "Update min sdks when Combine is used"
This reverts commit e88b8abaa7.
* Wrap import combine with canImport directive
* Update samples
* Wrap functions using Combine with canImport because of compiler error on archive
* Update samples
* Remove unnecessary newline and update samles
* Implement unit tests for feign client
Implement tests
Migrate to junit 5
* Default feign client does not support PATCH verb
Default feign client does not support PATCH verb
* Remove test for GET endpoint with request body
* Configure junit in gradle build
* Configure logback for unit tests
* Add missing dependencies to sbt
* Fix gradle dependency
* Add logback to gradle unit test
* Regenerate samples
* Make junit test classes package private
* Make junit test classes package private
* Update samples
* Organize imports
* Organize imports
* [dart-dio] Improve form param handling, respect required flag
* simplify template
* respect required flag (only null check when not rquired)
* minor formatting
* Add additional nullable check
* Adds hasValidation to IJsonSchemaValidationProperties
* Adds model validation examples for maxItems, minItems, minProperties, maxProperties, minLength, maxLength, multipleOf
* Adds schemas with pattern validation
* Adds minimum example schemas
* Adds maximum example schemas
* Adds ArrayWithUniqueItems
* Adds exclusiveMinimum schemas
* Adds exclusiveMaximum examples
* adds testModelGetHasValidation
* Adds testPropertyGetHasValidation
* Adds testQueryParametersGetHasValidation
* Uncomments out query parameters
* Adds testHeaderParametersGetHasValidation
* Adds testCookieParametersGetHasValidation
* Adds length assertions for properties and marameters
* Adds testBodyAndResponseGetHasValidation
* Improves validation setting
* Only sets exclusiveMinimum when minimum is set, only set exclusiveMaximum when maximum is set
* Adds fix for rust
* Fixes min and max setting for integers
* Regenerates python samples
* Updates code so python sample does not change
* Update gradle plugin version to 4.3.1
1. Updated gradle plugin version to 4.3.1 (to keep in sync with maven sample)
2. Removed modelFilesConstrainedTo in the gradle sample to generate code for dummies who are pasting and running.
* Update version to 5.0.0
* Added Javadoc + meta-data about request/response + abstract class.
* Added one more method to set base path.
* Updated Javadoc for each endpoint.
* Shorten the method name displayed in Javadoc.
* Fix README grammar.
* Separate imports based on type.
* Put operations into their own interface class.
* Update Javadoc.
* Adjust Mustache template to support Java 1.5.
* Add import for HttpServerExchange, suppress warning about using a Lambda.
* Remove @Override from a mgetStatefulHandler().
* Regenrate the samples.
* - Replace apache oltu with scribejava
- Implement the following authentication methods
- ApiKey header
- HTTP basic authentication
- Oauth client credentials flow
- Oauth Implicit flow
- Oauth Pasword (deprecated)
* Create class hierarchy for Oauth flows implementation
* Add instructions of how to use the ApiClient to Readme.md
* Update samples
* Remove support for java 6 and 7
* Remove java 6 and 7 support from gradle
* Format pom.xml
* Remove empty line
* Update samples
* Remove oltu dependency from build.gradle and build.sbt.
Replace oltu with ScribeJava
Update samples
* Update samples
* Update samples
* Adds isNull to all schema classes
* Adds null model and property samples, adds models test of isNull
* Adds isNull tests for parameter and response also
* Reverts version file
* Fix#8395 - changed function name to basic
* Fix#8395 - changed function name to basic
* Fix#8395 - removed test.yaml file
Co-authored-by: sergey <sterentyev@ebay.com>
1. unable to use --global-property models="User,Pet" as this creates only User model.
2. to solve the issue, instead of "," separator used ":" separator
3. made some changes with that
* only generate actually used serializers (anything used in body or response)
* generate previously missing serializers for collection types
* improve formatting
* create enum documentation in model
* add newline to fix layout when a markdown table follows a markdown list
* avoid escaping of attributes to make sure documentation is displayed as in the spec
The rule to split a capitalized word with plural didn't work properly,
leading to weird name generation in a few languages. This is an attempt
at fixing it.
* feat: add providedIn for Angular 9+
Adding new option, providedIn, for generator typescript-angular
Keep providedInRoot for backward compatibility but mark as deprecated
for Angular 9+
fix: #6432
* doc: providedIn
infos about providedIn
Mark providedInRoot as deprecated
* doc: run generate-samples for typescript
using typescript-angular-v9-provided-in-any.yaml
* refactor: runned ensure-up-to-date locally
* refactor: api.module.mustache rely on providedIn too
* doc: re-generate samples
Added a Set<String> in toExampleValueRecursive() to keep track of which models we have
generated to avoid an infinite recursion for recursive models. An example of a recursive
model would be a GeoJson GeometryCollection.
Co-authored-by: Frank Levine <frank.levine@blacklynx.tech>
* empty arrays are now correctly generated
* default arrays with values are empty
* date/dateTime is now always null in order to prevent compile errors
* [dart-dio] Enable strong-mode and strict types
This will make it easier to eventually transition to NNBD. Also fix some formatting things.
* [dart-dio] Add implicit-casts: false to analysis options
* [dart-dio] Add dartanalyzer to integration tests
* raise minimum Dart version to 2.6 (to support spread collection)
* add header to all files for language version
* fix some missing imports that can be fixed (some remain due to missing inheritance support)
* [swift5] fix issue with form data with null file
* [swift5] fix issue with form data with null file on alamofire implementation
* [swift5] update sample projects
* [swift5] fix issue with form data with null file on alamofire implementation
* [swift5] add support for form url enconded in URLSession
* [swift5] add support for form url enconded in Alamofire
* [swift] improve code formatting
* [swift] improve code formatting
* [swift] dont defaut to application/json
* [Swift 5] deprecated retry hook since its no longer needed
* [Swift 5] deprecated retry hook since its no longer needed
* [swift] fix generator code formatting
* ran `mvn -N io.takari:maven:0.7.7:wrapper`
* this fixes colored output not working in zsh/MacOs/BigSur, not exactly sure what caused it not to work anymore
* 7141: filter out problem+json mime type from JSON mime types fast tracked into the Accept header (resttemplate)
* 7141: ran ensure-up-to-date
* 7141: minimize changes with master (keep using isJsonMime for MediaType)
* [swift] create a sample of bearer token authentication with URLSession
* [swift] create a sample of bearer token authentication with URLSession
* [swift] create a sample of bearer token authentication with URLSession
* [swift] create a sample of bearer token authentication with URLSession
* [swift] create a sample of bearer token authentication with Alamofire
* [swift] create a sample of bearer token authentication with Alamofire
Added a Set<String> in toExampleValueRecursive() to keep track of which models we have
generated to avoid an infinite recursion for recursive models. An example of a recursive
model would be a GeoJson GeometryCollection.
Co-authored-by: Frank Levine <frank.levine@blacklynx.tech>
* rxgen version update
* rgxgen version 1.2
* update rgxgen version to 1.3
* remove start end slash in patterns
* Remove debug logs
* fix logic for removal of backslash
* fix logic for forward-slash removal
* fix logic for removing unwanted characters in regex
* add test for example value for string properties
* improvise regex validation logic for example generation
* complicate regex examples
* regex pattern correction
Co-authored-by: aani <aani>
* test aspnetcore server in appveyor
* update samples
* to break the build
* Revert "to break the build"
This reverts commit ab23062815.
* ignore csproj. update samples
* first Commit parameterzied Server support
* fixed serverconfig classes
* Defautl constructor f. Config, fixed regex replace
* Polosihed Templates, Added MultiServer support
* Update Readme. Fixed MultiServer. Fixed def. Value
* Passing global Server to mustache. Small fixes
* Updated samples, fixed mustache for multi server
* added prefixes, removed unused imports
* added newly generated samples
* missing vendorExtension in mustache. Update smaple
* update doc
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Fixed the query string for HttpSigning core vs dotnet47
* updated the sample
* replace the tab with space
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* test: enable typescript-axios integration test
* chore: update old dep & devDep
* refactor: use axios installed in test target
* chore(travisCI): update node version from v8.12.0 to v12.20.0
* [dart-dio] Generate default value builders
* return `null` when there is no default value instead of `"null"`
* use built_value's `_initializeBuilder` to set default values
* [dart-dio] Fix default value formatting in model doc
* [dart][dart-dio] Prevent name clashes with existing dart types
Can not use dart import aliases for now as this is not supported by built_value. This means we need to add potentially clashing names/classes to an `additionalReservedWords` exclusion list. Starting with a basic list of some http/io classes.
Correctly use `importMapping` and `defaultIncludes` this time around. Improve reserved word checking.
This now successfully generates `ModelList`, `ModelFile` and `ModelClient` models which previously were not generated at all or were wrong types.
* Address review comment
* Update generator docs
* Make header params with dynamic types
Otherwise this will generate code which is not compile-able. Like this:
```dart
Future<Response<List<StockItemProjectionDirect>>>getAllStockItems(Store storeId,{ int xXChunkNumber,int xXChunkSize,StockItemRequestFilterDto stockItemRequestFilterDto,CancelToken cancelToken, Map<String, String> headers, ProgressCallback onSendProgress, ProgressCallback onReceiveProgress,}) async {
String _path = "/api/store/{storeId}/stock".replaceAll("{" r'storeId' "}", storeId.toString());
Map<String, dynamic> queryParams = {};
Map<String, String> headerParams = Map.from(headers ?? {});
dynamic bodyData;
headerParams[r'XX-Chunk-Number'] = xXChunkNumber;
headerParams[r'XX-Chunk-Size'] = xXChunkSize;
```
See how the func recieves int argument which then assignes into a string... last 2 lines
* FIX: Dynamic header and sync with upstream
* DART-DIO new samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Use system CA by default and remove certifi
See https://github.com/OpenAPITools/openapi-generator/issues/6506
* Use system CA by default in asyncio client
* Update README_onlypackage.mustache
* Result of ./bin/generate-samples.sh
* Add ssl_ca_cert argument for Configuration
* Result of ./bin/generate-samples.sh
* Remove certifi, use system CA by default
* Include description directly in python docstrings
mustache escaping the description make them render weirdly, including
sometimes unsupported characters in python.
* More parameters
* always add trailing commas in arrays and break each line
* make variables final
* improve API formatting (mainly leading spaces)
* remove empty lines and whitespaces
* fix formatting of datatype and description and docs
* consistently use single quotation marks (dart already does this)
* correctly generate enums from `mostInnerItems`
* use `datatypeWithEnum` which should always be he correct type
* dart generators prefix inner enums with the classname of the containing class, ensure datatypeWithEnum always matches
* only use `FormData.fromMap()` for multipart content, `FormData` does not work with `x-www-form-urlencoded`
* use a basic map for `x-www-form-urlencoded` content
* fix formatting
* [dart] Always use the correct enum data type
* use raw strings for enum string values
* [dart-dio] Use raw strings for built_value enums
`@BuiltValueEnumConst` does some wierd string handling in the generated code `r'\$'` becomes `'$'`. This is different compared to the wireName in `@BuiltValueField`
* [dart] Properly escape param/var names that clash with Dart types
* [dart] Add tests for var/enumVar names
* note: public and private are no keywords in Dart
* some tests are still wrong, some are commented out
* Fix typo
* [dart] Improve variable name escaping
* add more tests
* [dart] Fix operationId naming
* [dart] Fix upper case var name with leading underscore
* [dart] Correctly support model prefix/suffix
* [dart] Support spaces in property names
* Call super for empty operationId
* [dart] Fix and improve enumVar naming/generation
* use same handling for all 3 generators
* allow `updateEnumVarsWithExtensions` to have access to the data type
* improve `x-enum-values` handling and add supprt for other enum vendor extensions
* remove duplicate and outdated tests from `DartDioModelTest`
* add more tests to `DartModelTest`
* no longer force lowercase enums for plain dart generator (breaking)
* this change also removes the trailing underscore from plain dart generator (breaking)
* [dart-dio] Fix wrong escaped serializer names
* [dart-dio] Prevent enum name collisions in inlined enums
Prefix the private built_value instances with the enum class name. Prevents clashes when multiple inline enums contain the same value - for example `EnumTest`. No breaking changes here as all the changed fields/references are private and automatically re-generated with built_value.
* Updated all C# templates ToJson method not to conflict reference with model properties.
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [dart] Configure and use import mapping
This prevents models from being generated which would clash with exisiting dart types, e.g. List.
* [dart] Fix decimal format not supported
* [dart-dio] Remove redundant modelToIgnore & ignore dart:core import
* modelToIgnore is now handled via importMappings the same way other generators do this
* choose not to import dart:core as this is available by default
* [dart-dio] EnumClass is a reserved word in built_value
* Review changes
* Fix regenerate docs
* Fixes issue 8014, _check_type flag not being honored.
Updated model_utils.mustache to pass the check_type flag into attempt_convert_item(). Failure to do so
results in type validation errors occurring when the user has specifically requested that they be disabled.
* regenerated samples
Co-authored-by: Frank Levine <frank.levine@blacklynx.tech>
* Remove redundant encoding definitions
UTF-8 is already the default encoding in Python 3.
* Remove Python3.4 related requirements
* Remove dead Python version 3.5
* Add Python 3.9 to CI and test configs
* Update petstore example
* encode object in json and add content-type:application/json for multipart/form-data
fix issue https://github.com/OpenAPITools/openapi-generator/issues/8068
* update samples by ./bin/generate-samples.sh
* non-ascii chars supported in encoding object to json, and add "content-type:application/json; charset=utf-8"
* update samples again, by ./bin/generate-samples.sh
* update comment(docstring) in parameters_to_multipart according to the discussion in PR review.
* fix default value in parameters_to_multipart function as described in PR review comment.
* update samples again, by ./bin/generate-samples.sh
* [dart] Cleanup and regnerate old/wrong tests and docs
* docs path seems to be doc now in all dart generators
* generated tests are very old and use wrong classes
* [dart-dio] Improve formatting
* [dart][dart-dio] Restructure tests to same layout
* remove duplicate/old openapi sample for which there is no generation config
* generate to `petstore_client_lib` for both generators
* run generated tests as integration tests for dart2 even if empty - this makes it easier to find compile errors
* [dart] Improve gitignore handling for Dart generators
* globally ignore all dart related files that should not be commited
* remove old ignores that are no longer valid
* [dart][dart-dio] Add OAS3 generation and integration tests
Dart2 doesn't compile, needs fixes.
* [dart] Do not attempt to deserialize binary content from JSON fields
Not sure if that case is ever relevant but for now there doesn't seem to be a better option.
* [dart] Fix integration tests for OAS3 petstore
Some POST operations now return 200 with content.
* [dart] Generate Petstore Fake API but don't add to integration tests yet
Explicitly not adding the new integration tests to the master POM. They do not work but having them allows for quickly iterating on open issues without breaking existing basic OAS2/OAS3 petstore examples. Instead they should be run manually until everything is fixed.
* [typescript-axios] Sets 'isCollectionFormatMulti' to true on file uploads.
Fixes#8104
* Safely checks if dateFormat is "binary" #8105
Co-authored-by: Bruno Matissek <bruno.matissek@gmail.com>
* feat(config): pull the basePath from config if the basePath doesn't exist
* chore: update samples
* chore: use the basePath from the base class
* chore: update all the samples
* Bump Gradle in Java projects from 6.0.1 to 6.7.1
Regular maintenance, 6.0.1 was released November 18th, 2019 and the latest release (November 16th, 2020) is 6.7.1. This updates all the wrapper templatesto the latest version.
* Updated generated Java samples
Generated via `./bin/generate-samples.sh bin/configs/java-*`
* update samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Updated Eiffel code generator.
Added missing language reserved words.
Updated mustache templates to use the latest Eiffel rules to avoid obsolte
feature calls and Cat-Calls.
Updated Eiffel configuration files (ecf's)
Updated comments styles.
Updated Travis CI file to use the latest Eiffel compiler.
Updated EIffel sample to use https://raw.githubusercontent.com/openapitools/openapi-generator/master/modules/openapi-generator/src/test/resources/3_0/petstore.yaml
* Added missing mapping decimal to REAL_64
Added Eiffel Kernel classes to importMapping to avoid generate models for
them.
Fixed issue with Eiffel feature name generation, updated toOperationId(String) method.
Simplified toInstantiationType method implementaetion.
Improved model.mustache to generate Eiffel models.
* Updated Eiffel sample.
* Removed unneeded tabs.
* Added AnyType mapping to ANY
Removed unneeded tab
Updated model name, remane models that starts with _.
* update doc
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [java][spring] updated template to support proper reactive map type
* [java][spring] supporting unit test for spring boot reactive request map issue
* [java][spring] updated samples
* [java][spring] refactoring the issue test spec
* Default body to NULL
* update samples
* Update to set body to NULL only when no hasBodyParam
* Revert any whitespace changes.
* Makes defaulting body conditional on hasFormParams also not being set
Co-authored-by: William Cheng <wing328hk@gmail.com>
Co-authored-by: Robert Pyke <robertpyke@fb.com>
* [dart-dio] Add basic integration test POM
This basically just fetches dependencies, runs the built_value generator and empty test cases. Even running empty test cases is more than is currently possible and at least finds compile errors.
There are compile errors atm which need to be fixed.
* [dart-dio] Fix missing BuiltSet import in models that use enums
* [dart-dio] Fix compile error when the return type is a Map
* the compile error was `serializerForType(Map<String, int>)` in `StoreApi` which needs to be `serializerForType(Map)`
* use final instead of var in response handling
* [dart-dio] Generate docs after changes
* [dart-dio] Add integration test to CI execution list
When generation examples of objects with additional properties, we use
the map syntax inside a model instantiation, which is incorrect. This
fixes it by checking for model at the right place.
* first commit of api Key feature.
* added multi key and URL query key support
* fixed error in mustache files, updated samples and tests
* added Basic Auth with Base64 encoding.
* updated Readme, added bearer token
* added check that authentication credentials are set. fixed typo in README
* fix async in java play generator
* add async operation option
* Remove the return null and replace with a return at the right place.
Co-authored-by: Jean-François Côté <jcote@stingray.com>
* [JAXRS-CXF] Introduce petstore sample for jaxrs-cxf-client with additional property jackson (preparational commit)
generated using: ./bin/generate-samples.sh ./bin/configs/other/jaxrs-cxf-client-jackson.yaml
* [JAXRS-CXF] Generate missing jackson annotations in inner enum
fix for generators jaxrs-cxf and jaxrs-cxf-client
* Add basic types imports to generated examples
This adds an extension to include basic types imports to generated Java
examples.
* Make some fixes to example generation
* Generate OffsetDatetime correctly
* Create a useful sample for enums, regenerate samples
* Fix BigDecimal as well
* Fix list examples in python
When a model has an example in an array, it wrongly wraps it again in a
list instead of returning the list examples. This fixes it.
* Add comment
* Expose JsonSerializerSettings in ApiClient
* Update generated petstore sample
* Add XML comments for SerializerSettings and match new OverrideSpecifiedNames default
* Add GetSerializerSettingsTest
* Allows install typescript client via npm from Git
'prepublishOnly' is run before the package is published. 'prepack' is run before the package is published and after installation local installation eg. via Git.
* Update examples for Typescript
* [ruby] fix oneOf handling
* use previous ruby configs due to issue #4690
* check for oneOf model in base_object
* validate the attributes in partial_oneof_module
* Fixed a couple of problems with current implementation.
1) When encoding non-String header values, the client will forwar to parameterToString() for encoding.
2) fromJson() now accepts a dynamic value since the type transformer accepts a dynamic value.
* Updated Pet Store files.
* Proper spacing between blocks.
* Adjust spacing.
* Make fromJson() as a static function, thus not instantiating a new object if JSON is null.
* Adjust doc for fromJson() function.
* python->python-legacy, python-experimental->python
* test with openjdk8
* test with openjdk11
* comment out rm
* move kotlin tests to circleci
* move kotlin tests
* move tests to circleci
* fix circleci
* rearrange test
* move tests
* use wrapper
Co-authored-by: Justin Black <justin.a.black@gmail.com>
* Add CLI options to remove runtime checks (serialization/deserialization).
* Update templates to support the new parameter
- Generates all the models in a same file to avoid import complexity
- Extract interfaces creator templates to reuse them
* Fix formatting and generate client examples
* Add documentation
If a form-parameter had the same name as another (header-, query-,
path-, or cookie-)parameter, a conflict could be caused (for example
in the typescript generator). This fix executes the same uniqueness-
check and renaming for form- and body-parameters as it is done for
all other parameters.
@see issue #7575
Co-authored-by: Alexander Rashed <alexander.rashed@ntsretail.com>
* Fix a few issues with go examples generation
This fixes a bunch of issues seen when generating go examples, namely
- Numbers aren't casted to the right type
- The time import is missing
- Enums are treated as regular models
* Rebuild more samples
* Use examples properly
* Handle multiple instances in the same doc
* Fix wrong array closure
* Handle model arrays
* Fix file and enum namespace
* Regenerate samples
* Handle maps of complex types
* Handle oneOf
* Fix padding
* Fix enum doc
* Removes links to basic types in arrays
* Remove links to basic types in maps
* Fix enum links
* Minor indent fix
* Handle review comments
* 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>
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
- [ ] 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/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.
- [ ]Run the following to [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) and update samples:
```
./mvnw clean package
./bin/generate-samples.sh
./bin/utils/export_docs_generators.sh
```
Commit all changed files.
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`, `5.1.x`, `6.0.x`
- [ ] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.
@@ -87,9 +88,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/tree/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)
[](https://github.com/OpenAPITools/openapi-generator/actions?query=workflow%3A%22Check+Supported+Java+Versions%22)
: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:
: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)). For security vulnerabilities, please contact [team@openapitools.org](mailto:team@openapitools.org). :warning:
:bangbang: Both "OpenAPI Tools" (https://OpenAPITools.org - the parent organization of OpenAPI Generator) and "OpenAPI Generator" are not affiliated with OpenAPI Initiative (OAI) :bangbang:
@@ -47,6 +63,7 @@ If you find OpenAPI Generator useful for work, please consider asking your compa
| 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-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) |
| 6.0.0 (upcoming major release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/6.0.0-SNAPSHOT/) | Nov/Dec 2021 | Minor release with breaking changes (no fallback) |
| 5.1.0 (upcoming minor release) [SNAPSHOT](https://oss.sonatype.org/content/repositories/snapshots/org/openapitools/openapi-generator-cli/5.1.0-SNAPSHOT/) | Mar/Apr 2021 | Minor release with breaking changes (with fallback) |
For **Windows** users, you will need to install [wget](http://gnuwin32.sourceforge.net/packages/wget.htm) or you can use Invoke-WebRequest in PowerShell (3.0+), e.g.
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-beta2/openapi-generator-cli-5.0.0-beta2.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/openapi-generator-cli-5.0.0.jar)
<!-- /RELEASE_VERSION -->
To get a list of **general** options available, please run `java -jar modules/openapi-generator-cli/target/openapi-generator-cli.jar help generate`
@@ -430,20 +447,22 @@ 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:
Other generators have [samples](https://github.com/OpenAPITools/openapi-generator/tree/master/samples) too.
### [3.1 - Customization](#table-of-contents)
@@ -563,6 +576,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.
@@ -649,6 +668,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- [Vouchery.io](https://vouchery.io)
- [Xero](https://www.xero.com/)
- [Yahoo Japan](https://www.yahoo.co.jp/)
- [viadee](https://www.viadee.de/)
- [Vonage](https://vonage.com)
- [YITU Technology](https://www.yitutech.com/)
- [Yelp](https://www.yelp.com/)
@@ -675,7 +695,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)
@@ -764,6 +784,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 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-12 - [Interoperability by construction: code generation for Arrowhead Clients](https://ieeexplore.ieee.org/document/9274746) by Michele Albano, Brian Nielsen at [2020 IEEE Conference on Industrial Cyberphysical Systems (ICPS)](https://ieeexplore.ieee.org/xpl/conhome/9274544/proceeding)
- 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/)
@@ -778,6 +799,16 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 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/)
- 2020-11-05 - [Automated REST-Api Code Generation: Wie IT-Systeme miteinander sprechen](https://www.massiveart.com/blog/automated-rest-api-code-generation-wie-it-systeme-miteinander-sprechen) by Stefan Rottensteiner at [MASSIVE ART Blog](https://www.massiveart.com/blog)
- 2020-12-01 - [OpenAPI GeneratorでGoのAPIサーバー/クライアントコードを自動生成する](https://qiita.com/saki-engineering/items/b20d8b6074c4da9664a5) by [@saki-engineering](https://qiita.com/saki-engineering)
- 2020-12-04 - [Scaling the Test Coverage of OpenAPI Generator for 30+ Programming Languages](https://www.youtube.com/watch?v=7Lke9dHRqT0) by [William Cheng](https://github.com/wing328) at [Open Source Summit Japan + Automotive Linux Summit 2020](https://events.linuxfoundation.org/archive/2020/open-source-summit-japan/) ([Slides](https://speakerdeck.com/wing328/scaling-the-test-coverage-of-openapi-generator-for-30-plus-programming-languages))
- 2020-12-09 - [プロジェクトにOpenAPI Generatorで自動生成された型付きAPI Clientを導入した話](https://qiita.com/yoshifujiT/items/905c18700ede23f40840) by [@yoshifujiT](https://github.com/yoshifujiT)
- 2020-12-15 - [Next.js + NestJS + GraphQLで変化に追従するフロントエンドへ 〜 ショッピングクーポンの事例紹介](https://techblog.yahoo.co.jp/entry/2020121530052952/) by [小倉 陸](https://github.com/ogugu9) at [Yahoo! JAPAN Tech Blog](https://techblog.yahoo.co.jp/)
- 2021-01-08 - [Hello, New API – Part 1](https://www.nginx.com/blog/hello-new-api-part-1/) by [Jeremy Schulman](https://www.nginx.com/people/jeremy-schulman/) at [Major League Baseball](https://www.mlb.com)
- 2021-01-18 - [「アプリ開発あるある」を疑うことから始まった、API Clientコードの自動生成【デブスト2020】](https://codezine.jp/article/detail/13406?p=2) by [CodeZine編集部](https://codezine.jp/author/1)
## [6 - About Us](#table-of-contents)
@@ -812,11 +843,12 @@ Here is a list of template creators:
# If you break your build into multiple jobs with workflows, you will probably want to do the parts of this that are relevant in each
# The following `checkout` command checks out your code to your working directory. In 1.0 we did this implicitly. In 2.0 you can choose where in the course of a job your code should be checked out.
- checkout
# Prepare for artifact and test results collection equivalent to how it was done on 1.0.
# In many cases you can simplify this from what is generated here.
# 'See docs on artifact collection here https://circleci.com/docs/2.0/artifacts/'
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-gradle-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.
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.