* Update ElixirClientCodegen.java
* Refine the regular expression for atoms
The original regex incorrectly matched `@atom` (unquoted atoms
cannot begin with @). However, through testing with `iex`, it also turns out that the atom
`:@` is legal.
The following atoms will now be quoted that would have been
incorrectly not quoted:
- `:@type`
* Add model to petstore client to test new atom creation regex pattern
* [C] Don't convert post body strings to JSON
If the body provided for the api request is a just a string itself,
don't try to convert it to JSON, simply submit the string.
* [C] Implement BearerToken authentication
* [C] Handle nullable fields correctly
* [C] Fix implementation of FromString for enums
* [C] Update the test schemas to cover the changes
* Update samples
* Fix the updated samples
* [C] Add the new samples folder to the CI workflow
* Fix#19566 implemented the missing definition of declared methods inside openapi-generator/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-header.mustache, have also be added two missing body of methods definitions
* Regenerated cpp-restsdk client samples
* Fixed shared_ptr creation
* [cpprestsdk] Implement enum inside objects
* [kotlin-spring] Fix no List being used for an array of files using multipart/form-data
* [kotlin-spring] Use Spring's MultipartFile class for incoming Files instead of Spring's Resource class.
* [kotlin-spring] Add test to ensure that return type for files is `org.springframework.core.io.Resource`
* [kotlin-spring] Ensure Array is used for lists of files in generated Api class
* Update samples
* [kotlin-spring] Move conditional usage of MultipartFile to optionalDataType.mustache. Update samples
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* feat(typescript-angular): add support for Angular V19
fix#20204
* feat(typescript-angular): add options to override angular deps + refactor deps definition
add tsVersion, rxjsVersion, ngPackagrVersion and zonejsVersion options to override default config if new version of Angular is available but not yet implemented in openapi-generator
refactor Angular dependencies definition in separate readable yaml config file
fix#20204
* feat(typescript-angular): add better angular 19 exemple for ci testing
fix#20204
* feat(typescript-angular): unify tsVersion param
fix#20204
---------
Co-authored-by: Thibaud SOWA <thibaud.sowa@equasens.com>
* fix(typescript): remove incorrect file extensions
url, http, and https are Node.js core modules, and form-data
should be loaded using a bare specifier. This commit removes
the file extensions from these imports.
* update samples
* Updated README.mustache file for the Erlang server generator. Fixed one error and updated the usage instructions
Changes made to the Erlang server generator's user instructions ("README.mustache" file):
1. Corrected the argument in section 4.1 of the user instructions.
In openapi_server:start/2, the second argument for the generated Erlang code must now be in a different format than proposed in the instructions (see lines 13-16 of the "server.mustache" file).
Initially, the server failed to start, and after some debugging, I discovered that the argument format did not match the server's expectations, causing the port number not to be passed to cowboy:start_clear/3. This has now been fixed.
2. Reviewed and updated the text of the user instructions to remove any ambiguities.
3. Tested the user instructions for accuracy and completeness.
* erlang-server sample recompiled
* README fix
* Fixed README.mustache template markdown for erlang-server. Re-generated erlang-server sample.
* Update README.mustache
* Sample 'erlang-server' re-generated
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [rust][reqwest] support binary type for upload and download
* [rust][reqwest] support binary download in supportMultipleResponses contexts
* [rust][reqwest] support binary responses that don't have any return type
* erlang-server: add jesse to app.up release
* erlang-server: remove dialyzer errors that might not be related to the program
* erlang-server: minor fixes to return types and generated docs
* C: add a template for an empty any_type.h header
Some generated C apis fail to build because the source files get
'#include "any_type.h"' lines, but no such header gets generated. As a
simple fix, add a new template for an empty file with that name. This is
enough to fix the problem for us, because all the generic type stuff is
handled by object_t.
* C: fix enums
I'm guessing that enums have not been used much with the C generator
before, because they always seem to produce code that doesn't build, or
that tries to free them after use. This patch fixes all the problems
we've encountered so far, except for those that need checking the return
type. I'll come back to that later.
* C: fix confusion of 'classname'/'classFilename'
* C: fix issues with returned enums
Currently, the C templates never check if a function returns an enum
inside mustache, so when that happens the generated code has broken
return types and doesn't build. I originally tried to fix this by
extending CodegenOperation to implement a 'returnTypeIsEnum' check, but
William Cheng suggested[1] that I use the existing 'returnProperty'
instead:
https://github.com/OpenAPITools/openapi-generator/pull/14379#discussion_r1064636735
So do that.
* C: update the samples
As required for a pull request, run the generate-samples.sh script and
commit the changes.
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* chore(go): add failing test for JSON marshalling
Adds a small schema (FruitJuice) which contains a required gmFruit,
which inherits using AnyOf. This fails to correctly marshal as JSON.
* fix(go): use non-pointer receiver for JSON marshal
In the case of a required anyOf property, JSON marshalling would has
been incorrect.
Required properties are not nullable, and thus always use value
receivers. For the single case of anyOf models, a pointer receiver was
used for MarshalJSON. All other instances of json marshalling use value
receivers.
This change is simply to use a value receiver instead of a pointer
receiver in the template for `MarshalJSON` on anyOf models.
---------
Co-authored-by: Per Hallgren <perhallgren@users.noreply.github.com>
* [R client] better support for binary/compressed responses
* cleanup
* revert change after PR review
* update samples
* fix R tests
* move private api methods to api-client, revert breaking method name change
* fixes(java/restclient) Force usage of custom converter
Insert custom converter at the beginning of the 'RestClientBuilder' converter list so as not to use default 'MappingJackson2HttpMessageConverter'
Close#20111
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* feat(gdscript): sketch implementation of gdscript target language
This does not really work yet, but it's a start.
Results are not denormalized, no support for enums nor datetimes,
and thousands of other features are missing.
I still don't know how we are going to denormalize JSON+LD
without writing a whole GDScript lib for it…
* feat: add an exhaustive list of keywords reserved in GDScript
I've also provided the small python script I used to generate the list.
* refacto(gdscript): start using partials in templates
Whilst I'm racking my brains trying to figure out integration testing…
* test(gdscript): prepare a demo and integration testing
* fix(gdscript): do not use subclasses, use plain POGO
(plain ol' godot object)
One: I don't know how they work under-the-hood.
Two: I'm very confused over-the-hood.
Tri: We do not need them.
* refacto(gdscript): move demo files to their own directory
I know I'm making a lot of commits for not much,
but now I'm opening the sample files with Godot as well,
and doing unholy things with filesystems,
so I'm not taking any chances.
It's all going to be squashed anyway. :)
* fix(gdscript): sample as a Godot project
It works ! I can now write integration tests in GDScript.
The real work starts now.
/spend 25h
* feat(gdscript): serialize and send body params
The test suite is now past its first hurdle, the 415 HTTP status code,
and went straight into an unexpected error 500.
I suspect the server does not like me trying to set the pet id at 0,
because that's what we're trying to do right now.
Godot is crashing a lot, mostly because I don't know how to make Callable.NOOP
and my current solution hints at optional on_success and on_failure,
yet if we omit them the engine will ragequit.
* feat(gdscript): check request body for required yet missing properties
Now we'll get a nice error when we forget to set a required property.
The demo is now able to:
- connect
- create a user
- login as that user
- create a pet
* feat(gdscript): namespace core classes as well with apiPrefixName
This makes our usage of `class_name` a little more acceptable.
* feat(gdscript): support prefixes and suffixes for class names
This will crutch namespacing well enough for most uses.
* feat(gdscript): handle enums, naively
* feat(gdscript): support basic API endpoint param constraints
- minLength
- maxLength
- minItems
- maxItems
- minimum
- maximum
- pattern (no flags)
* feat(gdscript): handle header params and header customization
We also support serializing to application/x-www-form-urlencoded now.
Next up: DateTimes !
* feat(gdscript): handle Date and DateTime like Strings
There's no timezone support in Godot for DateTimes.
* feat(gdscript): support plain text responses
* feat(gdscript): support collections of models
Those are Arrays, not custom collection objects.
* feat(gdscript): configure default host from OAS
* feat(gdscript): some documentation and better config
We don't need no factories nor singletons ; config is enough.
* docs(gdscript): document usage a little
* feat(gdscript): add more reserved words, skip jsonld models and configure features
We can now generate a client for an OAS server running ApiPlatform (PHP).
* feat(gdscript): improve logging with a configurable log level
* feat(gdscript): add support for Basic Bearer and Header ApiKey
(but I can't find the `description` template handler)
* fix(gdscript)
Too late to amend >.<
* fix(gdscript)
dangsarnit
* chore(gdscript): clean up a sprint artifact
* fix: don't forget the HTTP error code when relevant
* feat: use Resource as base class for models
* fix. Default string values now with "quotes"
* temporary remove settings as godot api have changed
* kick ci
* docs: review gdscript java class
* feat: support for TLS, some refacto, some review
There's still a lot of holes, TODOs and FIXMEs.
* feat: experimental support of Request inline objects
The inline response objects are still not supported.
* feat(gdscript): support inline request and response objects
* chore(gdscript): review the templates
* fix(gdscript): unexpected nulls in default values
{{#if defaultValue}} evaluates to true for null if we call super here.
* refacto(gdscript): replace "bee" prefix by "bzz", use a constructor
Now we pass the config and the client via the constructor.
This reduces the area of the public surface a bit, for the better I think.
This commit also cleans up the class name shenanigans.
* fix(gdscript): add missing file
* test(gdscript): refactor the test project to use the generated lib as addon
Since there is no singleton in the generated client, the addon need not be enabled in the project configuration to be usable.
The --headless mode is broken for now, as things changed in Godot 4 since the beta.
* docs(gdscript): document petstore server ADR
* test(gdscript): add GUT and an integration test
We used the latest stable GUT, but a feature we're going to need was merged today, so we'll need to update it either to master or to the next release at some point.
* refacto(gdscript, breaking): use an ApiResponse object in success callbacks
/spent 6d since the beginning
* test(gdscript): update integration tests
/spend 2h
* docs(gdscript): explain the new ApiResponse
Also moving core templates to their own subdir, for clarity.
/spend 10m
* chore(gdscript): review, document, clean up
/spend 2h
* test(gdscript): test the delete operation as well
/spend 7m
* feat(gdscript): update GUT and exit with appropriate code
/spend 2h
* docs(gdscript): add Gdscript's PI
Hire me while I'm available ! :D
I'd rather code than make a CV.
* feat(gdscript): support reserved keywords
Also adding some more assertions,
and using our own OAS file now.
/spend 3h
* refacto(gdscript): use "base" instead of "bee"
/spend 1h
* feat(gdscript): improve descriptions
/spend 1h
* fix(gdscript): await before polling
Contributed by @jchu231
* docs(gdscript): review the template files
* docs(gdscript): review and generate docs
---------
Co-authored-by: Bagrat <b.saatsazov@gmail.com>
* adding support for useResponseEntity into spring-http-interface java spring generator
* adding samples for @StatusResponse into spring-http-interface java spring generator
* additional changes to sample
additional changes to samples jdk17
* adding sample files
* extra adjustments
* fixing generator version
* fixing status code in samples
* some rollback
* some rollback 2
* Fix compilation error when validate is used on Nullable values
* Update samples
* Switch Nullable Into Option trait implement to From
* Update samples from rebase
* [swift][client] rename api client to api configuration
* [swift][client] rename api client to api configuration
* [swift][client] rename api client to api configuration
* [swift][client] rename api client to api configuration
* [swift][client] rename api client to api configuration
* [swift][client] rename api client to api configuration
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* [swift][client] rename api client to api configuration
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* Update modules/openapi-generator/src/main/resources/swift6/api.mustache
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* [swift][client] rename api client to api configuration
---------
Co-authored-by: Lennard Sprong <x-sheep@users.noreply.github.com>
* added support for 'oneOf' types represented as unions
also updated libs and an 'errors' field rename to address
name clashes with likely/popular field names
* Created cask-specific petstore example which
Includes a oneOf and allOf example
* [kotlin-server] Bump Kotlin versions to latest
* Run tests on more samples
* Fix typo in workflow definitions
* Update samples
* Bump Gradle to 7.6.4
* Some further tweaks
* Bump Gradle versions
* Fix Gradle version syntax
* Add of a first working generator for FastEndpoints framework
Generator that support the basics of a FastEndpoints project
https://fast-endpoints.com/
* Add respose code documentation support
* Add an option to enable use of problem details
* Clean enum and model
* Add an option to generate record for requests/models
* Update sample
* Add support of nullable types
* Add option to enable authentication
* Add option to generate validators
* Clean readme.md file
* Add option to enable response caching
* update readme template
* Add missing files references
* Update generated sample
* Add link to documentation
* Add generator documentation
* correctly support packageName
supportingFiles additions moved to processOpts()
* improve useAuthentication option handling
Avoid to copy an empty file
* processOpts, move call to parent at the end
* Update generated sample
* Refactor and fix super.processOpts(); call order
* Handle the case of multi-line description
* Rename field to match naming conventions
* Add useApiVersioning option
* Update generated sample
* Add generator documentation
* Fix record when model contains optional properties
* Add configuration files for each option
* Add sample project for each configuration
* Add GitHub Action workflow for sample projects
* Add FastEndpoints BindFrom attribute on path, query and form params
* Update sample generated projects
* Fix validator template
* fix alphabetical order
* Use fully qualified name for FastEndpoints
* Add options to set GUID to be used in sln file
* update sample projects
* Update generators.md
* Fix path in github workflow
* Put readme, gitignore and solution file at the root of generated project
* update sample projects
* Remove the projectGuid option
This Guid need to be constant, it is related to project type
* update sample projects
* fixed missing output
* bug fix
* add new sample
* build samples again
* delete sample
* move the sample and add to github workflow
* remove model not needed for this test
* handle specs with no models
* better handling of duplicate operation ids
* fixed mistake in resolving conflicts
* build samples again
* revert a change sent in another pr
* Scala-cask improvements:
* fixe for grouped methods which have routes containing dashes.
Previously our OperationGroup work-around would potentially
Create methods like ‘foo-bar’, which isn’t a valid function name
* Fix to not import some.package.Array[Byte] when binary format is specified
* Fix for grouped operations which contain duplicate query parameters
* Fix for binary response fields. This can come up with the following example
"responses" : {
"200" : {
"content" : {
"application/json" : {
"schema" : {
"format" : "binary",
"type" : "string"
}
}
},
"description" : "data"
},
* Fix for enum model classes
Extracted complex logic for ‘asData’ and ‘asModel’ transformations for properties
* Introduced a generic effect F[_] for services
This was done to support composable services
(Service A calls Service B) by using monadic
Effect types (ones which can flatMap)
* Fixed unique union types for responses, asModel and asData fixes for non-model types
* scala-cask: regenerated samples
* Fix for reserved-word properties in the API
* Fix for null imports and reserved-word enum types
* Fixes for api methods with backticked params
* Fix for duplicate (by name) grouped params
* small syntax fix
* logging response type
* Regenerated samples
* String.format fix
* [julia] improve enum support
Improved enum support. Added an override for `postProcessModels` method in julia code generator to do enum post processing. Added an override for `toEnumValue` method in julia code generator to generate enum values correctly based on julia types. Updated templates to use `#enumVars` for generating enum values.
* generated samples
* python-pydantic-v1: Keep trailing commas for tuples when enum has just single member
* Update samples
* Add test for single member enums
* Refactor test name
* [Kotlin] Properly document nonPublicApi CLI option
* [Kotlin] Respect parameter name of parent KSerializer to avoid miss-behavior
* [Kotlin] Introduce support for Kotlin Explicit API Mode for Kotlin-Client generator (resolves#16506)
* fix: csharp mustash fully qualify namespace Path
The generated code of Csharp get a fully quallify namespace for PATH
using Path = global::System.IO.Path;
* mend
* Remove alias for fully qualify Path class
* Added Rust Reqwest trait based client
* Fixed Cargo imports for reqwest trait template
* Added support for mockall to Rust reqwest trait library
* Added MockApiClient when mockall and topLevelClient are enabled
* Added missing flags to Rust generator documentation
* feat: add support for single argument and bon builder
Adds support for single argument and bon building for the new
reqwest-trait generator
* Rebuilt rust samples
---------
Co-authored-by: Troy Benson <troybensonsa@gmail.com>
The api.mustache template only uses the reflect package if there is a
query parameter which `isCollectionFormatMulti`. The import for the
reflect package is however added if _any_ parameter is
`isCollectionFormatMulti`.
If the parameter which `isCollectionFormatMulti` e.g. is in the body
instead of the query, this leads to the import being part of the
generated code but not used and the code does not compile.
This updates reworks the import handling for the `reflect` package so
that it is only added if there is a query parameter which
`isCollectionFormatMulti`.
Co-authored-by: Per Hallgren <perhallgren@users.noreply.github.com>
Updated the README company list by adding CERN, which is currently experimenting with OpenApi Generator to streamline API calls in a newly developed business application.
* [kotlin] Sanitize one_of and any_of model variable names to avoid compilation errors (#19942)
* [kotlin] add missing validateJsonElement method to oneOf and anyOf model templates (#19942)
This fixes generation of a Rust library for OpenAPI specifications
where `info.version` was a single-digit number. This happened to for
[this](db005f2e55/openapi.yaml (L10))
specification. The fix for this issue is similar to the one in !17440.
* Add licenseName option to typescript
* Update documentation
* Fix import in test
* Consolidate typescript test OptionsProviders
* Rename Typescript to TypeScript
* issue-1960: Add nullability annotations to Java generated clients
Motivations:
Have generated clients properly annotated for nullability to be able to check code using them with tools like NullAway
Modifications:
* Add nullable_var_annotations template to handle nullability annotation on vars
* Add pojo templates to use the nullability template
* Adapt tests
* issue-1960: Add nullability annotations to Java generated clients
Modifications:
* Run export_docs_generator.sh script to update samples
Previously, if an operation had a 'servers' block, the template would
emit code requiring a `serverConf` local variable. Unfortunately, the
template would not emit this variable, because it was looking for a
`servers` variable in the wrong context.
This change makes the template emit an anonymous block containing a
unique server configuration for each operation.
I did not test this change beyond a simple code inspection, there are
other problems with the code generator which prevent it from running on
my API definition.
* Stop using obsolete MaxTimeout
* Convert timeout to a timespan, rather than update the configuration object
* Use async overload of RestClientExtensions.Deserialize
* Update samples
* Fix typo
* Undo timeout change
* Remove further Qt support before Qt 5.15.2
This is a follow-up pull request for [#19164] (https://github.com/OpenAPITools/openapi-generator/pull/19164), which removes the further handling of older Qt versions.
* Updates samples to match the mustach config files.
---------
Co-authored-by: Daniel Simon <mail@dlins.de>
* [Kotlin Server] Update Ktor to latest version; move config to kts
* Bump gradle version for kotlin server samples
* Replace deprecated gradle API
* Bump gradle to 7.6.4
* Improve typescript-angular README.mustache
- Add syntax highlighting to code blocks
- Correct heading levels
* Add space between heading and convert bare url to angle brackets link
* Update samples
* Added support for 'additionalProperties:true' to scala-cask generator
additionalProperties means the request can contain arbitrary
additional properties, and so this change adds an 'additionalProperties'
field to request objects which is a json type.
* fixed warning in example scala-cli project
* updated samples
* addressed codegen comments
* Remove calculateRequestOrder Function
This PR removes the calculateRequestOrder function from the codebase and addresses the bug described in issue #19110. After a thorough review, it was determined that the function was unnecessary due to its redundant logic and lack of unique functionality.
* delete import java.lang.*;
* delete import java.lang.*;
* Remove calculateRequestOrder Function
This PR removes the calculateRequestOrder function from the codebase and addresses the bug described in issue #19110. After a thorough review, it was determined that the function was unnecessary due to its redundant logic and lack of unique functionality.
* delete import java.lang.*;
---------
Co-authored-by: rmarqmo <rmarqmo@mercadona.es>
* Add type information about classes and operation-ids
* Remove unused logger included header
* Bugfix badmatch in delete_resource handler
* Bugfix: respect original indentation of operation_ids
* Bugfix json schema correct refs
* Add a bit more documentation
* Regenerate erlang-server handlers
* Fix#19566 implemented the missing definition of declared methods inside openapi-generator/modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/modelbase-header.mustache, have also be added two missing body of methods definitions
* Regenerated cpp-restsdk client samples
* Fixed shared_ptr creation
* fixed missing output
* bug fix
* add new sample
* build samples again
* delete sample
* move the sample and add to github workflow
* remove model not needed for this test
* handle specs with no models
* fix(core): single value enums (`const`) are not generated correctly in `3.1` specs
* fix: const enums
* chore: update samples
* chore: update samples
* feat(avro)/refactor: unify `*_POST_PROCESS_FILE` bahviour and code
* refactor: use existing function
* test: add simple test for post processor execution
* test: restrict concurrency to 1
* docs: add explanation to method
* fix attemp
* use java.time.Instant
* fix client gen
* Tweeks
* header and form
* use scala 3 enum
* more tweeks
* add additional properties; add auth
* add form media type
* add modelsOnly
* add unit tests
* add petstore samples
* add doc
* add new samle to .github/workflows/samples-scala.yaml
* update build.sbt template
* simply the baseclient
* add None to optional field
* tweek auth model and format
---------
Co-authored-by: Jenny Leahy <jennyleahy@JENNYLEAHY.localdomain>
* [swift6] upload files as data
* [swift6] upload files as data
* [swift6] upload files as data
* [swift6] upload files as data
* [swift6] upload files as data
* [swift6] upload files as data
* [swift6] make async await the default response library
* [swift6] make async await the default response library
* [swift6] make async await the default response library
* Add @deprecated tag for deprecated operations
* Add test helper to verify a given line
* Add test to verify deprecated method
* Regenerate samples
* Delete tmp files after test
* Remove assertFileContains on specific line
* Update modules/openapi-generator/src/main/resources/typescript-node/api-single.mustache
Co-authored-by: Joscha Feth <joscha@feth.com>
* Correct indentation
* Regenerate samples
---------
Co-authored-by: Joscha Feth <joscha@feth.com>
* Allow Content-Type merge-match+json for encoding
* Changes JSON recognition to more flexible regex
* Removes now useless JSON format list
* Removes empty spaces
* Adds explanatory PHPDoc comment
* Moves Json-detection to class HeaderSelector
* Update HandlebarsEngineAdapter.java
The old MY_FIELD_VALUE_RESOLVER.INSTANCE is equivalent to FieldValueResolver.INSTANCE, which is assigned `new FieldValueResolver();` so our custom class was never used.
* Add test verifying partial template works; Extract accessAwareFieldValueResolver; Add test verifying priority fo values extracted from object
* Bugfix: exclusiveMinimum/Maximum must be booleans
* Add support for validating and decoding base64 byte strings
* Add support for validating RFC3339 datetime
* Simplify validate function for performance
* Regenerate erlang-server handlers
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* [swift6] general improvements
* Add documentation to server and handlers
* Respond to at least one path-server
* Let url servers override base path
* Handle reading bigger bodies in cowboy
* Improve json error handling
* Regenerate erlang-server handlers
* Rework API module for performance and completion
* Regenerate erlang-server handlers
* Add C++ header for cpp-pistache-server to fix breaking CMake build of generated code.
* Sort includes of system C++ headers for cpp-pistache-server.
* Add samples generated from fixing bug #19683.
* Fix export type for typescript interfaces in all platforms (#6805)
* Generated samples and docs
* chore: update samples
---------
Co-authored-by: Kevin Broja <kevin.broja@gus-group.com>
* [swift] small improments
* [swift] small improments
* [swift] small improments
* [swift] make CI pass
* [swift] make CI pass
* [swift] make CI pass
* [swift] make CI pass
* [swift] make CI pass
* [swift] make CI pass
* [swift] make CI pass
* Remove deprecated suppressImplicitAnyIndexErrors property from templates
* Add encoding / decoding tests for the typescript generator
* Add encoding / decoding tests for the typescript-node generator
* [Typescript][Typescript Node] fix deserializing complex types
This fixes deserializing of models that are composed with null,
undefined, or are inside of a map.
* Use more sensible `startsWith` implementation
* Remove use of magic number offsets
* Fix endsWith bounds checking
* Regenerate samples
* fix: `nullable` enums should not serialize a `null` value to a string
* better solution?
* Update modules/openapi-generator/src/main/java/org/openapitools/codegen/DefaultCodegen.java
Co-authored-by: Joscha Feth <joscha@feth.com>
* chore: Update circle_parallel.sh
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* Check references in additionalProperties correctly
Handle references in additionalProperties correctly when determining free-form status
* Update samples
Python 3.12 has been released in October 2023, it should be tested in
the CI.
Python 3.7 is not maintained anymore, removing it from the minimum
required version in `pyproject.toml` files.
With:
```
sampleObject:
type: object
additionalProperties:
$ref: '#/components/schemas/SampleData'
minProperties: 1
description: Map of Charging data policy decisions.
```
and
```
SampleData:
type: object
...
nullable: true
```
We currently generate: HashMap<String, SampleData>, which doesn't allow
null charging data entries. This MR changes this to be
`HashMap<String, swagger::Nullable<SampleData>>`, which thus will allow null data entries.
We do this by moving null-handling to the Java code - primarily `getTypeDeclaration()`.
Note, to some extent this is wrong. In this MR (and previously) we are treating
`nullable: true` as an extrinsic property (like required), whereas it should be an
intrinsic property (and thus `HashMap<String, SampleData>` is correct, but `SampleData`
absorbs the nullability.
This would be possible with this code:
```
enum ChargingData = {
Null,
Present {
...
}
}
```
Which would remove the usage of https://docs.rs/swagger/2.0.2/swagger/nullable_format/enum.Nullable.html.
I haven't resolved this - and have instead done a more targeted fix.
This, along with some other crude code, creates a scenario where we need to
unpick whether something is null. I've left that, though flagged a TODO to tidy it up at some point.
* [Rust Server] Convert Rust comment to Mustache
The comment about auth types supported by the generator shouldn't be
included in the generated code as it's confusing when the API doesn't
support the same auth types.
As such, we convert it from a Rust comment to a Mustache comment
* Update samples
* Fix issue with toString causing wrong value with collections
With collections, calling toString will result in the value becoming [a,b] instead of just a,b.
Using the existing apiClient::parameterToString method ensures it gets parsed correctly if it is a collection
* Updated samples
---------
Co-authored-by: Rasmus Zweidorff Iversen <rzi@jysk.com>
* [Kotlin] Add a new additional property to configure Jackson's `failOnUnknownProperties`
Default to false
* [Kotlin] Unconditionally import `com.fasterxml.jackson.databind.DeserializationFeature`
* [Kotlin] Refactor and add test
* Update ApiClient.mustache
* Update ApiClient.mustache
Jersey doesn't allow request entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* Update ApiClient.java
Jersey doesn't allow entities in method DELETE
* jersey ApiClient.mustache invoke DELETE without entity if empty
* jersey ApiClient.mustache invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* jersey ApiClient invoke DELETE without entity if empty
* fix: object serialization for multipart requests
This PR is essentially
<https://github.com/OpenAPITools/openapi-generator/pull/18140> but for
the asyncio client.
* fix: int serialization for multipart requests
urllib3 handles serializing ints in post params (ref 1), while asyncio
explicitly does not (ref 2).
ref 1: <9316764e90/src/urllib3/filepost.py (L75-L76)>
ref 2: <https://github.com/aio-libs/aiohttp/issues/920>
* test: new fake multipart endpoint with files and body
* test: regression test for stringified body params
* fix: mypy tweak
* fix: FILES regeneration
* feat: object, int serialization for multipart reqs
Extends previous commits (and #18140) to cover the python-pydantic-v1
client as well.
* fix: use async with in test
* test: regression test for pydantic-v1-aiohttp
* test: add regression test to pydantic-v1
Also brings the second test in line with the first, patching
`urllib3.PoolManager.urlopen`
* Upgrade erlang-server code generation and fix is_authorized crashes
* Introduce structured logging
* Improve general formatting
* Update generated files
* Enable erlang server on CI
* Add echo-server testing to CI
* Require OTP27 explicitly in the generated rebar.config file
* Rework handler and API
With this work, json validation becomes optional, fully implemented in
the `_api` module as it was before, but without being forcibly called by
the `_handler`. It is instead left as optional for the user to take
advantage of the exposed callbacks. Jesse also chooses draft-06 as a
default, but these can be chosen manually by the user too, as long as
jesse implements them.
`_handler` also becomes lighter, it now handles all mime types
transparently by forwarding to a user-given module that must implement
`accept_callback/4` and `provide_callback/4` as described in the
`_logic_handler` callbacks. These will simply be the return values of
cowboy_rest's `content_types_accepted` and `content_types_provided`
respectively, and should simply comply with their defined APIs. They
only get two parameters extending the behaviour, so that the user-given
callback can pattern-match on them: the path prefix of the logic
handler, and the operationID of the call.
* Fix return types for provide_callbacks
* Upgrade jesse to incur no dependencies
The less dependencies the built code requires the better.
* Fix dialyzer errors in the generated code
* Apply stronger dialyzer checks
* Fix for #15736 [TYPESCRIPT-FETCH] Subclassing components using discriminators fails to convert subclasses to JSON.
Added similar discriminator handling to ToJSON as was already in place for FromJSON.
The actual files changed are typescript-fetch/modelGeneric.mustache and typescript-fetch/apis.mustache.
Also, adjusted FromJSON a bit in an attempt to support multiple hierarchical levels of discriminators.
And fixed an issue with calling FromJSON from the map() function, which caused the index parameter getting inadvertently passed as the ignoreDiscriminator parameter.
Additionally, fixed failing "mvn integration-test -f samples/client/petstore/typescript-fetch/builds/prefix-parameter-interfaces/pom.xml"
Moreover, added forceConsistentCasingInFileNames:false into tsconfig.json to make tests compile on OsX.
* Rolled back the changes related to the map() function calls in favor of using ToJSONTyped instead, as that is in line with how FromJSON is already implemented.
* feat (JAVA SPRING RESTCLIENT) 19406: Add single request parameter for Spring RestClient
Closes#19406
* chore (JAVA SPRING RESTCLIENT) 19406: Add new sample to jdk 17 tests
* fix (JAVA SPRING RESTCLIENT) 19406: Fix sample build
* fix: typescript-angular -> when model property name is sanitized, use instead original property name within quotes in mustache template
* fix: updated samples
* chore: added comment for hasSanitizedName
* add original tag, add dummy model for test
* update samples
---------
Co-authored-by: Davide Diaconu <davidediak@gmail.com>
* [Java] Add a new additional property to configure Jackson's `failOnUnknownProperties`
* Move `FAIL_ON_UNKNOWN_PROPERTIES` property to JavaClientCodegen
* Template `FAIL_ON_UNKNOWN_PROPERTIES` for other libraries beside retrofit2
* Default `failOnUnknownProperties` to false for all Java Client libraries
* Fix integration tests
Add the `failOnUnknownProperties: true` additional properties to generate the
expected mapper
* [java] Use @JsonFormat instead of @JsonSerialize so that JsonGenerator.Feature.WRITE_BIGDECIMAL_AS_PLAIN is respected and generates a String using BigDecimal#toPlainString instead of BigDecimal#toString
* Only add Jackson @JsonFormat if properties serializeBigDecimalAsString and jackson are enabled
* Do not verify if jackson is available when mapping imports as the property is not evaluated yet
* Removed unused JsonSerialize and ToStringSerializer
* Add global token based auth support (basic, bearer) for k6
* config files and generated code files after the changes
* Handle empty or null auth at path level
* files changed after update with master and run build
* [Rust Server] Add auto-generated CLI tool
* [Rust Server] Test multiple path parameters
* [Rust Server] Test boolean parameters and apostrophes
* [Rust Server] Test operation with two boolean parameters with same first letter
* [Rust Server] Test apostrophes in operation summary
* Update samples
* [Rust Server] Fix build errors with OpenSSL
* Update samples
* Update samples
* [typescript][angular] move app description from header license info to readme
* [typescript][angular] move app description from header license info to readme
* [Rust Server] Fix up model generation
- Correctly generate anyOf/oneOf models
- Fix up ToString / FromStr support
- Disable PartialOrd generation for anyOf/oneOf models
- Generate models for inline enums
- Support enums in headers, and vectors of models in headers
* [Rust Server] Add test for anyOf with additional properties
* Update samples
* [Rust Server] Tidy up logging
* test: fix broken python test
* fix: handle multiple file parameters
Previously an array of files was not handled correctly, despite the type
annotation implying it was.
* feat: handle filename,filedata tuples in file param
This allows for users to pass filenames with their data in file params,
which is useful for multipart formdata requests. Without this, the list
of files added in the previous commit would have the same filename for
all files (the parameter name).
* [Rust Server] Allow configuration of multipart/form attachment size limit
multipart 0.14+ imposes a 8MB size limit on multipart/form bodies.
This allows that limit to be configured. The default is left as is.
This also improves error messages produced when handling multipart/form bodies.
* Update samples
* Add externCrateName property to rust hyper client
This is follows the lead of the rust hyper server generator and provides
an externCrateName. This is because the crate name used for importing
can be different from the package name, because dashes `-` get converted
to underscores `_`.
This allows us to write example code in rustdoc that compiles
successfully.
* Get the rustdoc examples to actually compile
* Make rust hyper client thread safe
* Fix compile time issue with reqwest client test
* Add a test for thread safety
* Generate rust hyper samples
* Use https for petstore api to fix client tests
http://petstore.swagger.io/v2 is 301 redirecting to
https://petstore.swagger.io/v2 and this is breaking posts to the API.
When the client recieves a redirect it does not resend the POST data,
instead it switches to GET. This is in line with how browsers behave
when encountering a 301 redirect on a POST request.
* Make rust hyper client structs `Sync` too
This trait is also helpful in making the api work well with threads.
* Use a getCrateName function instead of adding more state
* update samples
---------
Co-authored-by: Krishna Rajendran <krishna@emptybox.org>
* Fix server-writing docs for rust-server
Fix broken link in generated README for rust-server.
* Update samples
---------
Co-authored-by: Keith Wansbrough <Keith.Wansbrough@metaswitch.com>
* Suppress Pattern annotation on property of type byte array
Signed-off-by: Tim Quinn <tim.quinn@oracle.com>
* Straggler files from generated samples
* Add new format test to workflows
---------
Signed-off-by: Tim Quinn <tim.quinn@oracle.com>
* manually update version in documentation, remove camel.xml
... because it has the wrong generator version, it has the wrong generator name (should be "java-camel"), the generated code doesn't compile - and then I didn't check further
* improve automatic version updating
* fix one more Readme link
* update docker stats again
* Fix#16362
* Update samples
* Undo formatting changes
* Revert whitespace changes in samples
* make it work
---------
Co-authored-by: Jason Boileau <jason@boileau.dk>
Co-authored-by: Jason Boileau <spraot@users.noreply.github.com>
This allows overriders to have full access to the response object and
more finely control the error handling behavior.
For example, this enables the specification of a proper Content-Type in
case of custom format responses (application/json, ...)
* python-asyncio: update retry factors for actual exponential retries
As per the `aiohttp-retry` library's code[^1], the timeout is
```python
timeout = self._start_timeout * (self._factor ** attempt)
```
This means the previous setting with "start_timeout=0.0" would have
always just retried right away (0 timeout) regardless of the "factor" value,
and also, "factor=0.0" would never have increased the timeout, rather it
would have resulted in a 0 timeout regardless of the value of "start_timeout".
This double-zeroing effectively rendered exponential backoff to nothing (rather than
"retries" number of retries in quick succession.
The update is a quick fix to set the same default as in `aiohttp-retry`. In
the future this should likely be configurable (through extra Configuration settings perhaps?),
as not all APIs are created equal, but this works as a quick fix for making retries more effective.
[^1]: ba2169891f/aiohttp_retry/retry_options.py (L38-L65)
* updated example
* [Rust Server] Fix code so examples compile
Zero length arrays don't correctly type infer, so if we have no scopes, we need to not create a empty array
We need an authentication middleware - without it the code doesn't compile.
* Update samples
* [Rust Server] Remove trailing whitespace
* Update samples
* [Rust Server] [CI] Build all targets
* [Rust] Fix reqwest test
* [typescript][angular] move api version from header license info to readme
* [typescript][angular] move api version from header license info to readme
* Update HttpRequest.cpp.mustache
Use stable 4-parameter connect
* add generated files
* Revert "add generated files"
This reverts commit 1d4e78aa0d.
* catch download progress in HttpRequest and pass it to api
* Update HttpRequest.cpp.mustache - clean mixed in changes
Removed additional changes from other PullRequest
* Update HttpRequest.cpp.mustache - replaced tabs by spaces
* Update api-header.mustache - replaced tabs by spaces
* Update HttpRequest.h.mustache - replaced tab by spaces
* ran step 3 from Linux
* changed downloadProgress to -nickname-DownloadProgress and added it to all regions where execution finish is connected
* ran step 3
* replaced tab by spaces
* ran step 3
* activate tracing to detect link issue
* removed redundant connects and encapsulated changes in {{addDownloadProgress}}
* added generated files from step 3
* remove cli-option for httprequest - this should be always there
* added files from step 3
* improved name
* Update samples-cpp-qt-client.yaml - fix parameter order
* Update samples-cpp-qt-client.yaml
* Save work-in-progress
* Incoming param handling generating well exc. for file upload
* Revise generated test for v3 vs v4 differences
* Leave details of multi-part handling to the user for now
* change default version to use the highest version known
* SE client changes for Helidon 4
* A few fixes; add new v4 SE samples
* Fix v3/v4 routing prep
* Improve version handling if web site is inaccessible; add test
* Reworking parameter conversion and required and validation handling
* Add generation of a return value record per response for each operation
* Improvements to the result record generation
* More changes
* Remove change in whitespace in v3 output
* More progress on parameter handling
* WIP - refactor parameter-returning methods to inner class along with return records
* Reorg of op helpers
* Use no-op for handling map in path, query, header, cookie - need to revise later
* Binary form param handling
* Clean-up and consistency check bt useAbstractClass and not
* Improve result builders
* Add new samples files
* Fix a few issues
* Update samples after rebase; add build steps for v3 and v4 uac github actions
* Remove v3 se useAbstractClass test - creates some bad code
* Generated doc updates
* Fix missing newline
* Improve Javadoc for generated Result; add convenience Result.send method
* Add bean val. for body param if needed
* Restructure generated records for declared responses; add Generated annotation selectively
* Fix typo
* In sample generation, force a stable generatorVersion value to avoid confusing builds and up-to-date samples checking
* Fix up white space in older generation
* Generate PartsUtils only with useAbstractClass = true
* Adopt some review comments; more to come
* Review comments; notably, switch to using the first path segment to group operations rather than the tags items
* Improve status handling a bit
* Add new generated sample files
* Add missing new samples files
* Quite a few updates, esp. to generated samples
* New config file for sample
* Updates samples
* Add updates to .openapi-generator/FILES contents
- async should never be blocked on the ApiClient
To fix we invert the logic and use Task as base and keep consistency, we expect and wait result only on synchronous calls.
* [Go] Fix deepObject serialization that are anyOf
Updates the go client generator to have the generated struct for anyOf types conform to `MappedNullable` interface.
Fixes query params serialization for deepObjects that are of `anyOf` type.
Implements the suggestion in https://github.com/OpenAPITools/openapi-generator/issues/19085
* check parameter style for deepObject serialization
* generate samples for go-echo-external-refs-test
* move test back to http port
* restrict to anyof models with discriminator
* update test
* add some tests
added some tests to `modules/openapi-generator/src/test/resources/3_0/go/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml` and regenerated the samples
* fix oneOf var names when no discriminator is used
* add OneOfWithComplexType to Go petstore schema
- an array of strings variant should end up with the same valid name
whether `useOneOfDiscriminatorLookup` is `true` or `false`
I have not been active in the project for nearly 4 years, but remain
as a pingable maintainer on the readme. This is updating the readme to be
accurate. I only spend around 1-3 hours every other month lately on open-source,
so it's just an issue of time/availability.
* use default values for required vars when available
* update tests to existing config file
* cleanup OAS test
* Remove setting value in Get.
* Use Pascal Case for variable naming in Getter Function
* add a CLI option
* add a CLI option
* add a CLI option
* rust: support repr(int) enum
* Regen APIS
* remove the extra lines
* merge most recent commits from master
* update tests to ensure that enum compiles correctly
* drop changes to kotlin files
---------
Co-authored-by: Jihyun Yu <yjh0502@gmail.com>
This commit updates the access modifier of the ExtendedCodegenModel class from its default (package-private) to public, allowing it to be accessible from outside its package.
Co-authored-by: Paulo Da Rocha Filho <paulo.darochafilho@wnco.com>
* fix#19211 kotlin-spring flag delegatePattern together with skipDefaultInterface generates broken code
* add kotlin-springboot-delegate-nodefaults to the workflow
* fix Platform declaration clash
* move kotlin-springboot-delegate-nodefaults to the kotlin-server-jdk17 file
* fixed empty line
* Adding decimal to template for Python generator
* Rerunning the build steps
* Add tests for decimal serialization and deserialization.
* Move test to python not legacy pydantic sample
* readd old imports
---------
Co-authored-by: Adam <abolfik@pollyex.com>
* Add samples using `oneOf` without discriminator
* Fix typescript-fetch code gen for `oneOf` without discriminator
* Return `{}` instead of original `json`
* [python-fastapi] Added some tests for FastAPI generator
1. Checks the generation of the implementation package.
2. Checks if the endpoints with and without descriptions generate correct
output.
Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>
* [python-fastapi] Raise 500 if there is no implementation
Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>
---------
Signed-off-by: Nikita Vakula <programmistov.programmist@gmail.com>
* test (JAVA SPRING RESTTEMPLATE) 17571: Add echo-api multipart form single file test
* feat (JAVA SPRING RESTCLIENT) 18522: Add RestClient to README
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo all of Pet test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo body free form object response string test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo body pet test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo body pet response string test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo body string enum test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo body tag response test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo form tests
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo header test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo path test
* test (JAVA SPRING RESTCLIENT) 18522: Add RestClient echo query tests
* feat (JAVA SPRING RESTCLIENT) 18522: Regenerasted API Clients for RestClient with fixed import indentation
The unit tests in the following directories are written to unittest, not
pytest:
* `samples/client/echo_api/python/`
* `samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent/`
If pytest is told to execute these tests, it will log warnings about
being unable to collect certain tests.
* Add global auth parsing including headers and cookies for k6.
* Add global auth statements.
* Generate samples.
* Revert "Generate samples."
This reverts commit b8cff8691b.
* Copy petstore-with-fake-endpoints-models-for-testing.yaml to a seperate k6 path as its example yaml file.
* Add global security statement in k6 example yaml instead of using the generic one.
* javax.ws.rs:javax.ws.rs-api package was renamed on maven
* update dependencies for java okhttp pom, build.sbt
* update
* update dep
---------
Co-authored-by: Andres Aguilar <andresesfm@gmail.com>
* codegen: add == -> 'Double_Equal' to specialCharReplacements
The double equal '==' is a common operator in a few contexts (specific use case for me is haystack operators). Currently if this value appears in an enum its name gets sanitized to empty and generates invalid syntax. Very similar to https://github.com/OpenAPITools/openapi-generator/pull/12801
* makes java underscore test more flexible
Given the name and purpose of this test, maybe it is better to test that the generated value is not an underscore rather than to test that it _is_ a specific (and possibly arbitrary) substitute value.
* feat(typescript-axios): allow configuration of axios version
* docs(typescript-axios): add readme docs for axiosVersion config option
* test(typescript-axios): add unit tests for custom axios version
* docs(typescript-axios): fix up typescript-axios generator docs
* added test with external-ref ("external dependency" installed before actual usage)
* fixed test with resource on classpath
added test with resource on classpath with external-ref.
Test with profile 'resource' was wrong as it took JAR into account, but there was no 'petstore.yaml' on classpath.
* Remove dependency scan and do not modify inputSpec provided by user
It is still possible to provide JARs as inputSpec, however the user has to provide it by hand.
Providing dependencies in plugin section still allows correct inputSpec resolution on classpath.
* remove thread unsafe statusCode and responseHeaders instance variables
* re-add status code and header getters for backwards compatibility
* add import
* whitespace cleanup
* use deprecated thread id getter for backwards compatibility with pre-19 java
* Add bytestring package to dependencies of generated haskell code
This broke in https://github.com/OpenAPITools/openapi-generator/pull/18047
where tvh introduced an import of Data.ByteString.Lazy. The added
bytestring package was available in some but not all cases.
* update workflow to test haskell servant ping
* update samples
---------
Co-authored-by: Bastian Senst <senst@cp-med.com>
* [cpp-qt-client] Just for test
* Fix samples-cpp-qt-client github workflows
* Use only 6.7.1 in CI
* Revert "[cpp-qt-client] Just for test"
This reverts commit c7e19aeb6c.
* fix#18005: Prevent adding 2 times the "?" when not required and nullable = true
* fix#18005: Fix carriage return diff
* update samples
---------
Co-authored-by: William Cheng <wing328hk@gmail.com>
* [kotlin][client] fix temp file name and remove old deprecated jvm-okhttp3
* [kotlin][client] fix temp file name and remove old deprecated jvm-okhttp3
* [kotlin][client] fix temp file name and remove old deprecated jvm-okhttp3
When using the JVM implementation of OkHttp with a Kotlin client, you may encounter issues with the toString() method of enum parameters. By default, the toString() method of an enum returns the name of the enum value, not its value.
To fix this issue, you can override the toString() method of your enum to return its value instead of its name.
As mentioned in #13841, date-time parameters in request bodies are not ISO formatted, which breaks with certain webservers. This commit invokes `toISOString()` for date-time body parameters like it is done for queryParameters.
Fixes#13841.
* Add type annotations to raw types for jersey2 and jersey3 templates
* Update samples
* Add type parameters to anyof_model.mustache and oneof_model.mustache
---------
Co-authored-by: Kasper S. Nielsen <kasper.s.nielsen@secata.com>
Causes failures like:
Configuration `:debugUnitTestRuntimeClasspath` contains AndroidX dependencies, but the `android.useAndroidX` property is not enabled, which may cause runtime issues.
- [ ] 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.
- [ ] Run the following to [build the project](https://github.com/OpenAPITools/openapi-generator#14---build-projects) and update samples:
(For Windows users, please run the script in [Git BASH](https://gitforwindows.org/))
Commit all changed files.
@@ -17,5 +17,5 @@
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*`.
IMPORTANT: Do **NOT** purge/delete any folders/files (e.g. tests) when regenerating the samples as manually written tests may be removed.
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (upcoming 7.6.0 minor release - breaking changes with fallbacks), `8.0.x` (breaking changes without fallbacks)
- [ ] File the PR against the [correct branch](https://github.com/OpenAPITools/openapi-generator/wiki/Git-Branches): `master` (upcoming `7.x.0` minor release - breaking changes with fallbacks), `8.0.x` (breaking changes without fallbacks)
- [ ] If your PR is targeting a particular programming language, @mention the [technical committee](https://github.com/openapitools/openapi-generator/#62---openapi-generator-technical-committee) members, so they are more likely to review the pull request.
[](http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.openapitools%22%20AND%20a%3A%22openapi-generator%22)
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-12jxxd7p2-XUeQM~4pzsU9x~eGLQqX2g)
[](https://join.slack.com/t/openapi-generator/shared_invite/zt-2uoef5v0g-XGwo8~2oJ3EoziDSO1CmdQ)
[](https://twitter.com/oas_generator)
[](https://gitpod.io/#https://github.com/OpenAPITools/openapi-generator)
#### Thank you GoDaddy for sponsoring the domain names, Linode for sponsoring the VPS, Checkly for sponsoring the API monitoring and Gradle for sponsoring Develocity
@@ -84,13 +85,13 @@ If you find OpenAPI Generator useful for work, please consider asking your compa
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an [OpenAPI Spec](https://github.com/OAI/OpenAPI-Specification) (both 2.0 and 3.0 are supported). Currently, the following languages/frameworks are supported:
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.
You can use [locally built JARs](https://github.com/OpenAPITools/openapi-generator-cli?tab=readme-ov-file#use-locally-built-jar) or [`SNAPSHOT` versions](https://github.com/OpenAPITools/openapi-generator-cli?tab=readme-ov-file#use-nightly-snapshot-build) as well.
## [2 - Getting Started](#table-of-contents)
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/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/7.0.1/openapi-generator-cli-7.0.1.jar)
You can also download the JAR (latest release) directly from [maven.org](https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/7.10.0/openapi-generator-cli-7.10.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`
@@ -576,9 +580,9 @@ Please refer to [online.md](docs/online.md) on how to run and use the `openapi-g
### [3.4 - License information on Generated Code](#table-of-contents)
The OpenAPI Generator project is intended as a benefit for users of the Open API Specification. The project itself has the [License](#license) as specified. In addition, please understand the following points:
The OpenAPI Generator project is intended as a benefit for users of the Open API Specification. The project itself has the [License](#7---license) as specified. In addition, please understand the following points:
* The templates included with this project are subject to the [License](#license).
* The templates included with this project are subject to the [License](#7---license).
* Generated code is intentionally _not_ subject to the parent project license
When code is generated from this project, it shall be considered **AS IS** and owned by the user of the software. There are no warranties--expressed or implied--for generated code. You can do what you wish with it, and once generated, the code is your responsibility and subject to the licensing terms that you deem appropriate.
@@ -599,6 +603,7 @@ Here is a list of community-contributed IDE plug-ins that integrate with OpenAPI
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.
@@ -932,6 +940,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
- 2023-06-28 - [Generate API contract using OpenAPI Generator Maven plugin](https://huongdanjava.com/generate-api-contract-using-openapi-generator-maven-plugin.html) by [Khanh Nguyen](https://huongdanjava.com/)
- 2023-06-30 - [Generate Client SDKs with OpenApi Generator in Springboot](https://medium.com/@ramavathvinayak/generate-client-sdks-with-openapi-generator-in-springboot-f9f012e73c0b) by [Vinayak Ramavath](https://medium.com/@ramavathvinayak)
- 2023-12-10 - [UnityでOpenAPI Generatorを使う](https://www.youtube.com/watch?v=CbNwKVV5LRM) by [Soup Tori](https://www.youtube.com/@souptori8417)
- 2024-01-24 - [Comment générer des stubs wiremock avec openapi generator](https://www.youtube.com/watch?v=0jhONfBrcKw) by [Alexis Couvreur](https://github.com/acouvreur)
- 2024-03-04 - [Generating TypeScript Types with OpenAPI for REST API Consumption](https://www.pullrequest.com/blog/generating-typescript-types-with-openapi-for-rest-api-consumption/) by [PullRequest](https://www.pullrequest.com/)
- 2024-03-07 - [Fully typed Web Apps with OpenAPI (Part 1)](https://medium.com/@gfox1984/fully-typed-web-apps-with-openapi-part-1-595d55766670) by [Guillaume Renard](https://medium.com/@gfox1984)
- 2024-03-08 - [Laravel OpenAPIによる "辛くない" スキーマ駆動開発](https://fortee.jp/phperkaigi-2024/proposal/9e2e6c38-d078-4efa-99b4-83ebf9033b34) by [KentarouTakeda](https://twitter.com/KentarouTakeda)
@@ -940,7 +949,7 @@ Here are some companies/projects (alphabetical order) using OpenAPI Generator in
What's the design philosophy or principle behind OpenAPI Generator?
We focus on developer experience. The generators should produce code, config, documentation, and more that are easily understandable and consumable by users. We focused on simple use cases to start with (bottom-up approach). Since then the project and the community have grown a lot: 300k weekly downloads via NPM CLI wrapper, 20M downloads via openapi-generator-cli docker image just to highlight a few. We've gradually supported more features (e.g. oneOf, anyOf introduced in OpenAPI 3.0) in various generators and we will continue this approach to deliver something based on our understanding of user demand and what they want, and continue to add support of new features introduced in OpenAPI specification (such as v3.1 and future versions of the OpenAPI specification).
We focus on developer experience. The generators should produce code, config, documentation, and more that are easily understandable and consumable by users. We focused on simple use cases to start with (bottom-up approach). Since then the project and the community have grown a lot: 600k weekly downloads via NPM CLI wrapper, 30M downloads via openapi-generator-cli docker image just to highlight a few. We've gradually supported more features (e.g. oneOf, anyOf introduced in OpenAPI 3.0) in various generators and we will continue this approach to deliver something based on our understanding of user demand and what they want, and continue to add support of new features introduced in OpenAPI specification (such as v3.1 and future versions of the OpenAPI specification).
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.