* [go-experimental] Add oneOf support
* Fix docs for the oneOf models
* isOneOfInterface => x-is-one-of-interface
* Add proper warnings when inline models are used in oneOf choices
* Add a convenience method to oneOf implementing structs to cast them as the oneOf interface
* Update modules/openapi-generator/src/main/resources/go-experimental/model.mustache
Co-Authored-By: Jiri Kuncar <jiri.kuncar@gmail.com>
* Fix retrieving data from additionalDataMap
* Add basic tests
Co-authored-by: Jiri Kuncar <jiri.kuncar@gmail.com>
* [typescript-fetch] Make additional properties access safer
Instead of asserting that any key access returns a valid property, force
the consumer to check that the value is defined.
* Update tests
* Put null-safe additional props behind and flag and share
* Undo over copy
* Update docs
* Rearrange code
* Move to unit tests
This fixes issue #3796 for JavaSpring. It's a very straightfoward extension
of #5120 for the JavaSpring generator (that PR was just for the Java generator).
* Reduce redundancy in python docs
This is a followup to PR #5094, which had a few unresolved comments at
merge time. This reduces the amount of redundant lines in the api
example doc templates, and ensures that referenced Configuration objects
are actually instantiated.
* Regenerate samples
* Add real assertions in DefaultCodegenTest.java testAllOfXXX methods
* Add test to DefaultCodegenTest for an allOf composition with a single ref and no own props
* Ensure model.parent is also added to model.allParents when multipleInheritance is supported
* Cleanup: remove LOGGER.debug, renamed refedParentNames to refedWithoutDiscriminator
* [core] Normalizing vendor extension naming
According to [OAS 2.0][1] and [OAS 3.0][2] Specifications:
> Allows extensions to the OpenAPI Schema. The field name MUST begin with x-,
> for example, x-internal-id. The value can be null, a primitive, an array or an object.
> Can have any valid JSON format value.
This commit attempts to define a [clear identifier design format][3] of
maintaining lower-kebab casing and following the x- prefix defined by
OAI Specification.
Following a convention that matches that used by others (see [autorest][4]), we will remove
any confusion about naming strategies for template authors and
customizers. Following the lower-kebab convention will allow us to
convert from camelCase and missing prefixes to the desired format. For
example, these conversions are simple to make for template consistency:
* customValue => x-custom-value
* x-customValue => x-custom-value
* x-custom-value => x-custom-value
This convention also allows us to define a single standard for use
across all generators. This means no occurrence of x-operationId in one
generator and x-operation-id in another.
[1]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#patterned-objects
[2]: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#specificationExtensions
[3]: https://tools.ietf.org/html/draft-wilde-registries-01#section-3.4
[4]: https://github.com/Azure/autorest/tree/master/docs/extensions
* Incorporate feedback to avoid race/blocking in OnceLogger
* Remove unnecessary additional log config
* Add tests,comments for OnceLogger
* Test caffeine cache with FakeTicker
* [kotlin] Fix compile of reserved word in client
A number of places in the client code need to be escaped for reserved
words.
That is, this should be:
(git log formatted): `as` rather than as
(markdown formatted): \`as\` rather than `as`
There are only a handful of places using `{{paramName}}` which HTML
encodes backticks, rather than `{{{paramName}}}` which outputs literal
values.
Added unit test to maintain the reserved word standard for Kotlin.
* don't use kotlin-codegen-escaped parameters in parameter-map
Co-authored-by: Andreas Müller <andreas@stapelspeicher.org>
* fix map as query parameter, use RequestPart instead of RequestParam in
FormParams, add filename for parameters of type file
* fix brace
* fix tests
* run bin/windows bat files
* test if this solves linending problem part 1
* test if this solves linending problem part 2
* test if this solves linending problem part 3
* test if this solves linending problem part 4
* test if this solves linending problem part 5
* test if this solves linending problem part 6
* manually set back version in pom
* update spring samples
Co-authored-by: William Cheng <wing328hk@gmail.com>
* improve python documentation and add import to __init__package.mustache
* improve python documentation and add import to __init__package.mustache
* add signing_info parameter conditionally
* add code comments and remove 'Content-Length' header from example
* Remove debug log statement
* set access_token to None by default
* set access_token to None by default
* fix unit tests for Python experimental
* fix trailing space
* add support for ECDSA keys
* Add support for HTTP signature
* use bytes.Buffer instead of strings.Builder
* Add unit tests, compliance with HTTP signature draft version 12
* Support (expires) parameter
* Validate list of signed headers does not have duplicate values
* move method to ProcessUtils
* Add http-signature security scheme
* add http_signature_test to security scheme
* remove http signature from petapi
* Add separate OAS file with support for HTTP signature
* Include HTTP signature in README file
* Add generated files for HTTP signature
* Add helper function to return public key, and add more unit tests for signature validation
* some people save their private key with file extensions other than .pem, so I am relaxing the validation of the private key suffix
* Fixes issue with templates loading via classpath
The templating engines were originally written to load templates via the
classpath, but this functionality was blocked by file-only checks
further up the stack. This loosens those file-only checks, allowing
files and relatively imported files to be included via classpath.
* [docs] Add details about classpath-level templates
* [feat][maven] templateResourcePath for template on classpath
- NOTE templateResourcePath is not needed for gradle, as it accepts
a string for the target template directory, which supports classpath
* [core] Extracting recommendations to validation framework
This is work to extract recommendation logic out of the CLI validate command
into a shared evaluation instance which can be used elsewhere (such as Gradle,
or the Online tool).
For now, these validations are in addition to those provided by swagger-parser and
are only the following recommendations:
* Apache/Nginx warning that header values with underscore are dropped by default
* Unused models/schemas
* Use of properties with oneOf, which is ambiguous in OpenAPI Specification
I've allowed for disabling recommendations via System properties, since this is
something that has been requested a few times by users. System properties in this
commit include:
* openapi.generator.rule.recommendations=false
- Allows for disabling recommendations completely. This wouldn't include all warnings
and errors, only those we deem to be suggestions
* openapi.generator.rule.apache-nginx-underscore=false
- Allows for disabling the Apache/Nginx warning when header names have underscore
- This is a legacy CGI configuration, and doesn't affect all web servers
* openapi.generator.rule.oneof-properties-ambiguity=false
- We support this functionality, but the specification may not intend for it
- This is more to reduce noise
* openapi.generator.rule.unused-schemas=false
- We will warn when a schema is not referenced outside of Components, which
users have requested to be able to turn off
* openapi.generator.rule.anti-patterns.uri-unexpected-body=false
* Move recommendation/validations to oas package and add javadoc comments
* Refactor and test recommendation validations
* Refactor validation function signatures to return explicit state rather than boolean
* Add operation recommendation for GET/HEAD w/body
* [typescript] Generate enum name independently on model name, ignoring modelSuffix
* Add `enumSufix` cli option for all typescript generators
* Add ENUM_NAME_SUFFIX to to TypeScript***ClientOptionsProvider
* Add a typeMapping for OAS2 built-in "file" type
* Re-generate samples
* Introduce `v4-compat` mode for enumNamePrefix
* Update TypeScriptFetchModelTest - make sure codegen options are processed before running assertions
* Regenerate samples
* Regenerate docs
* Regenerate docs
* Add enumPropertyNaming option to typescript generators
* Regenerate docs
* Add Locale.ROOT to toUpperCase() call
* Use actual enum values in an error message, instead of hardcoding them
* Add tests for "UPPERCASE" and "snake_case" enum var namings
* Add LOCALE.ROOT to String#format call
* Updates ap.mustache for python-experimental, adds test test_test_endpoint_enums_length_one
* Removes sortParamsByRequiredFlag from python-experimental
* Removes duplicate params from docstring
* add Deprecated in kotlin dataClass
* add deprecated in CodegenProperty
* format (Column limit: 100)
* set property.deprecated
* add test
* run ./bin/kotlin-springboot-petstore-all.sh
* trim space