Skip to content

[Java] Render object default for composed ($ref + default) schemas (#23795) - #23971

Merged
wing328 merged 1 commit into
OpenAPITools:masterfrom
seonwooj0810:fix/issue-23795-composed-default-value
Jun 25, 2026
Merged

[Java] Render object default for composed ($ref + default) schemas (#23795)#23971
wing328 merged 1 commit into
OpenAPITools:masterfrom
seonwooj0810:fix/issue-23795-composed-default-value

Conversation

@seonwooj0810

@seonwooj0810 seonwooj0810 commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Fixes #23795

Problem

When a property is declared as a $ref to an object schema with a sibling default (or, equivalently, an explicit allOf), the swagger-parser represents it as a composed schema — the object's properties live in the allOf members rather than directly on the schema.

AbstractJavaCodegen.toDefaultValue(...) handled this in the isComposedSchema(...) branch by falling through to super.toDefaultValue(schema), which emits the raw default value as Java:

private Nested test = {"one":"one","two":"two"};   // does not compile

The semantically-equivalent inline-object spec already rendered correctly:

private DtoTest test = new DtoTest().one("one").two("two");

Change

  • Extracted the existing object-default rendering into a private toObjectDefaultValue(cp, defaultValue, propertySchemas) helper (behaviour-preserving for the plain isObjectSchema path).
  • In the composed-schema branch, resolve the effective property schemas from the allOf members (dereferencing $refs) via a new getComposedSchemaProperties(...) helper, then render the default through the same fluent-builder logic.
  • When no object properties can be resolved, return null instead of emitting uncompilable output — so the previously broken cases now at worst omit the default rather than producing code that fails to compile.

For the reporter's spec this now generates:

private Nested test = new Nested().one("one").two("two");

Tests

Added AbstractJavaCodegenTest.toDefaultValueForComposedObjectWithDefaultTest, which builds a composed (allOf$ref) schema with an object default and asserts the rendered fluent-builder expression.

Tests run: 66, Failures: 0, Errors: 0, Skipped: 0
  -- in org.openapitools.codegen.java.AbstractJavaCodegenTest

Verification done: ran the modules/openapi-generator module test class AbstractJavaCodegenTest (JDK 21) — all 66 tests pass, including the pre-existing toDefaultValueTest that exercises the refactored object-default path, confirming no behaviour change there.

I did not run the full ./bin/generate-samples.sh regeneration: this code path only triggers for the composed-$ref-plus-default pattern, which previously produced uncompilable output, so no committed sample relies on the old behaviour and a regeneration is not expected to change any sample. Happy to regenerate any specific generator samples if a maintainer would like that included.

PR checklist

  • Read the contribution guidelines.
  • Ran full ./mvnw clean package + sample regeneration (see note above — targeted module tests run instead).
  • Filed against master.

Summary by cubic

Fix Java generator to render object defaults for composed ($ref + default or allOf) schemas as fluent builder expressions instead of raw JSON, preventing uncompilable code. Addresses #23795.

  • Bug Fixes
    • Resolve properties from allOf (dereferencing $ref) and render defaults via the object builder path; now generates new Nested().one("one").two("two").
    • Extracted toObjectDefaultValue(...) and getComposedSchemaProperties(...); plain object behavior unchanged.
    • If no properties are resolved, omit the default (return null) instead of emitting invalid Java.
    • Added AbstractJavaCodegenTest.toDefaultValueForComposedObjectWithDefaultTest; existing tests remain green.

Written for commit a279155. Summary will update on new commits.

Review in cubic

A property declared as a $ref to an object schema with a sibling default
(or an explicit allOf) is parsed as a composed schema, so its properties
live in the allOf members rather than directly on the schema. The composed
branch of AbstractJavaCodegen.toDefaultValue fell through to
super.toDefaultValue, which emits the raw default (e.g. {"one":"one"})
as Java and does not compile.

Resolve the composed schema's effective properties from its allOf members
and render the default through the same fluent-builder logic used for plain
object schemas (extracted into toObjectDefaultValue). When no object
properties can be resolved, return null instead of emitting uncompilable
output.

Fixes OpenAPITools#23795

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 2 files

Re-trigger cubic

@Mattias-Sehlstedt

Copy link
Copy Markdown
Contributor

I would argue that it would be more logical to entirely opt-out of generating a default value for these scenarios that do not work rather than attempting to fix them. Default values should not be sent by a client. Default values are strictly values that the server applies itself if the client has entirely omitted a value for an optional field.

So in order for the client to auto-adjust for any changes to the default, then it needs to not send anything, because if it does, then it will drift from the actual server default.

@seonwooj0810

Copy link
Copy Markdown
Contributor Author

Thanks for the thoughtful point.

I agree with the API semantics you described: a server-side default is what the server applies when the client omits the value, and clients generally should not send generated defaults just to mirror the server.

My reason for keeping this PR in the “fix the rendered default” direction is that Java generation already has an existing behavior for object defaults: plain object schemas are rendered as a compilable fluent-builder expression. The bug here is that the same effective object schema becomes a composed schema when it is expressed as $ref + sibling default / allOf, and that path currently falls through to raw JSON that does not compile. So this PR tries to make the composed-object path consistent with the existing plain-object path, while returning null rather than emitting invalid Java when the object properties cannot be resolved.

If maintainers prefer to opt out of generating model defaults for this category altogether, I can adjust the PR. I would lean toward doing that as a broader Java default-generation policy change rather than only disabling the composed-schema case, otherwise $ref + default and equivalent inline object defaults would behave differently.

@wing328

wing328 commented Jun 25, 2026

Copy link
Copy Markdown
Member

I prefer fixing the default values as some use cases simply generate the models (not the API files).

@wing328
wing328 merged commit 7542652 into OpenAPITools:master Jun 25, 2026
15 checks passed
@wing328 wing328 added this to the 7.24.0 milestone Jun 25, 2026
wing328 pushed a commit that referenced this pull request Jul 27, 2026
)

A property using the standard OAS 3.0 idiom of a $ref to an enum plus a
sibling default (parsed as a composed allOf schema) no longer emitted the
field initializer, so deserializing a payload without the property yielded
null instead of the declared default.

AbstractJavaCodegen.toDefaultValue's composed-schema branch (added in
#23971 to render object defaults) returned null whenever
getComposedSchemaProperties resolved no object properties, which is the
case for a composition wrapping an enum or scalar. Restore the pre-#23971
behavior for that case by deferring to super.toDefaultValue, which emits
the raw default for later enum var-name conversion.

Fixes #24384
MDoevenspeck added a commit to smals-belgium/openapi-generator that referenced this pull request Aug 25, 2026
* Prepare 7.24.0 snapshot (#23972)

* Revert "v7.23.0 release (#23970)"

This reverts commit b9d967acc9a3850cefb961da323ca12ae8125121.

* add mill plugin to release script

* 7.24.0 snapshot

* update samples

* update doc

* fix(python): remove redundant debug setter call in __deepcopy__ (#23958)

The `__deepcopy__` method copies all `__dict__` items (including
`_Configuration__debug`) via the for-loop, then calls
`result.debug = self.debug` which fires the property setter with the
same value already present. On Python 3.12+, the setter's
`logger.setLevel()` call triggers `logging.Manager._clear_cache()`
which iterates every registered logger — O(n_loggers) per deepcopy.

In applications with many loggers (kubernetes, boto3, django, etc.),
this causes severe performance degradation when Configuration objects
are deepcopied frequently (e.g., per-request in API clients).

Benchmark with 2000 registered loggers, 1000 deepcopy calls:
  Before: 0.190s
  After:  0.004s (45x faster)

The logger_file setter is kept because `logger_file_handler` is
explicitly excluded from the __dict__ copy loop and needs to be
re-created via the setter.

* [Rust-Axum] Support Server-Sent Events (SSE) (#23977)

* [kotlin-server][Java][JAX-RS] Fix path shadowing (#23414) (#23871)

* Add tests to demonstrate the bug

* Fix cross-tag path shadowing in JAX-RS common path extraction

* Regenerate samples

* [haskell-http-client] update stack resolver to lts-24.42 (#23981)

* build(deps-dev): bump shell-quote (#23984)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.7.2 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.7.2...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump shell-quote from 1.8.0 to 1.8.4 in /website (#23983)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.0 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.0...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [php-nextgen] Code improvements (#23986)

* [php-nextgen] Remove whitespace

* [php-nextgen]: Fix content types type

* [Rust-Axum] Fix generating error upon special model name (#23994)

* [Rust-Axum] Fix generating error upon special model name

* Update

* build(deps): bump qs, body-parser and express (#23852)

Bumps [qs](https://github.com/ljharb/qs), [body-parser](https://github.com/expressjs/body-parser) and [express](https://github.com/expressjs/express). These dependencies needed to be updated together.

Updates `qs` from 6.14.1 to 6.15.2
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.14.1...v6.15.2)

Updates `body-parser` from 1.20.3 to 1.20.5
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/1.20.5/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.3...1.20.5)

Updates `express` from 4.21.2 to 4.22.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.2)

---
updated-dependencies:
- dependency-name: body-parser
  dependency-version: 1.20.5
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.2
  dependency-type: indirect
- dependency-name: qs
  dependency-version: 6.15.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump shell-quote (#23996)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.1 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.1...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* update parser to 2.1.43 (#23999)

* build(deps-dev): bump shell-quote (#23989)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump shell-quote (#24001)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [php-nextgen] Remove request body handling if no request body exists (#23995)

* [php-nextgen] Remove request body handling if there is none

* [php-nextgen]: Regenerate to remove request body handling

* [php-nextgen] Add test for request body handling

* [php-nextgen] Don't import formpreocessor

* [php-nextgen] Regenerate code

* [php-nextge]: Move MultipartStream to inline use

* [php-nextgen]: Regenerate for imports

* [php-nextgen]: Remove whitespace

* [php-nextgen] Regenerate code to remove whitespace

* [php-nextgen] Remove form params and query params if not used

* [php-nextgen] Regenerate code

* Add validate Mojo to Maven Plugin (#23911)

* Add ValidateMojo as a new target to enable OpenAPI definition validation with the Maven plugin
Add validation harness both unit and integration tests for the 'validate' goal

* Add missing 'validate' goal to lifecycle mapping and refine execution ordering in ValidateMojo to fix "Skip flags are checked too late; input validation should come after the skip check." issue

---------

Co-authored-by: istvan.verhas <istvan.verhas@meta-inf.hu>

* [BUG][TYPESCRIPT-FETCH] Fix #23998: Form data requests with mime type parameters use URLSearchParams instead of FormData (#24000)

* Replace equality check with startsWith call

* Update examples

* [php-nextgen] oneof polymorphism (#23985)

* [php-nextgen]: Add oneof polymorphism

* [php-nextgen]: Regenerate sample with new models

* [php-nextgen]: Update generated files file

* [php-nextgen]: add polymorphism to docs

* [php-nextgen]: Add oneOf properties (currently not working)

* [php-nextgen]: Unify doc and signature types for params, properties and returns

* [php-nextgen]: Make api responses nullable only on nullable SUCCESS responses

* [php-nextgen]: Try to use correct model for api documentation

* [php-nextgen] Regenerate docs

* [php-nextgen] Improve and link javadocs

* update PHP samples

* build(deps): bump joi from 17.7.0 to 17.13.4 in /website (#24016)

Bumps [joi](https://github.com/hapijs/joi) from 17.7.0 to 17.13.4.
- [Commits](https://github.com/hapijs/joi/compare/v17.7.0...v17.13.4)

---
updated-dependencies:
- dependency-name: joi
  dependency-version: 17.13.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump shell-quote (#24018)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.3 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.3...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump shell-quote (#24019)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.2 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.2...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* fix(typescript-fetch): support non-default file names (#24006)

* use class file name instead of just class name

* use correct case of variable

* go back

* reset all

* add another test case

* add correct fileName property to generator

* generate new sample

* update typescript samples

* [Java][vertx] Apply Vert.x pool defaults in buildWebClient for useVertx5 (#24015) (#24017)

PoolOptions(JsonObject) does not initialize defaults first, unlike its
no-arg constructor and unlike WebClientOptions(JsonObject). The vertx
template's two-arg ApiClient constructor delegates with an empty pool
config, so buildWebClient built PoolOptions(new JsonObject()), leaving
maxLifetimeUnit null (and pool sizes 0). The first API call then threw
a NullPointerException from HttpClientImpl via WebClient.create.

Overlay poolConfig on the serialized no-arg defaults so absent keys keep
their documented values while explicit pool settings still apply.
Regenerated the vertx5 and vertx5-supportVertxFuture samples.

* build(deps-dev): bump shell-quote (#24020)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.1 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.1...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fix Kotlin boolean const enum literals (#24022)

* [kotlin-spring, java-spring] -  gate @JsonSetter on openApiNullable for optional non-nullable fields (#23993)

* fix(kotlin-spring, java-spring): gate @JsonSetter on openApiNullable for optional non-nullable fields

   For optional + non-nullable properties (required: false, nullable: false):
   - openApiNullable=false → @JsonSetter(nulls = Nulls.SKIP): silently ignores
     explicit JSON null, protecting any defined default from being overridden
   - openApiNullable=true → @JsonSetter(nulls = Nulls.FAIL): rejects explicit
     JSON null, enforcing the non-nullable contract (useful for PATCH semantics)

   Previously, Nulls.FAIL was unconditionally generated for all optional
   non-nullable fields regardless of openApiNullable, causing a breaking change
   for users on openApiNullable=false.

   Java Spring now also emits @JsonSetter(nulls = Nulls.SKIP) for the same case
   (previously it emitted nothing).

   Fixes #23976

   Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix documentation

* fix(kotlin-spring, java-spring): add @JsonInclude(NON_NULL) for optional non-nullable fields to prevent serializing them as explicit null in JSON

* simplify implementation

* gate by jackson config

* update samples

* build(deps-dev): bump shell-quote (#23979)

Bumps [shell-quote](https://github.com/ljharb/shell-quote) from 1.8.1 to 1.8.4.
- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.1...v1.8.4)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-version: 1.8.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump tmp in /samples/client/petstore/typescript-angular-v19 (#24031)

Bumps [tmp](https://github.com/raszi/node-tmp) from 0.2.6 to 0.2.7.
- [Changelog](https://github.com/raszi/node-tmp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/raszi/node-tmp/compare/v0.2.6...v0.2.7)

---
updated-dependencies:
- dependency-name: tmp
  dependency-version: 0.2.7
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump js-yaml from 4.1.1 to 4.2.0 in /website (#24035)

Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 4.1.1 to 4.2.0.
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/commits)

---
updated-dependencies:
- dependency-name: js-yaml
  dependency-version: 4.2.0
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump ws (#24034)

Bumps [ws](https://github.com/websockets/ws) from 6.2.3 to 6.2.4.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.3...6.2.4)

---
updated-dependencies:
- dependency-name: ws
  dependency-version: 6.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump @angular/common, @angular/forms, @angular/platform-browser, @angular/platform-browser-dynamic and @angular/router (#24032)

Bumps [@angular/common](https://github.com/angular/angular/tree/HEAD/packages/common), [@angular/forms](https://github.com/angular/angular/tree/HEAD/packages/forms), [@angular/platform-browser](https://github.com/angular/angular/tree/HEAD/packages/platform-browser), [@angular/platform-browser-dynamic](https://github.com/angular/angular/tree/HEAD/packages/platform-browser-dynamic) and [@angular/router](https://github.com/angular/angular/tree/HEAD/packages/router). These dependencies needed to be updated together.

Updates `@angular/common` from 19.0.1 to 22.0.1
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v22.0.1/packages/common)

Updates `@angular/forms` from 19.0.1 to 22.0.1
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v22.0.1/packages/forms)

Updates `@angular/platform-browser` from 19.0.1 to 22.0.1
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v22.0.1/packages/platform-browser)

Updates `@angular/platform-browser-dynamic` from 19.0.1 to 22.0.1
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v22.0.1/packages/platform-browser-dynamic)

Updates `@angular/router` from 19.0.1 to 22.0.1
- [Release notes](https://github.com/angular/angular/releases)
- [Changelog](https://github.com/angular/angular/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular/commits/v22.0.1/packages/router)

---
updated-dependencies:
- dependency-name: "@angular/common"
  dependency-version: 22.0.1
  dependency-type: direct:production
- dependency-name: "@angular/forms"
  dependency-version: 22.0.1
  dependency-type: direct:production
- dependency-name: "@angular/platform-browser"
  dependency-version: 22.0.1
  dependency-type: direct:production
- dependency-name: "@angular/platform-browser-dynamic"
  dependency-version: 22.0.1
  dependency-type: direct:production
- dependency-name: "@angular/router"
  dependency-version: 22.0.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [KOTLIN-SPRING/KOTLIN-CLIENT] BUG - fix json deserialization when kotlin attribute name differs from json attribute name (#24036)

* add @param:JsonProperty

* add fix also for kotlin-client and add unit tests

* add test open api spec

* fix failing test by extending the lookup window

* [JAVA] Add logic and test case to avoid stackOverflow exception for circular allOf (#23968)

* Add logic and test case to avoid stackOverflow exception for circular allOf

* Add new test and fixes for sibling cases

* update python-fastapi multipart dep to newer version (#24043)

* build(deps-dev): bump hono (#24044)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.18...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump hono (#24041)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.18...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump hono (#24046)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.18...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump hono in /samples/client/others/typescript-angular (#24049)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.18...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump webpack-dev-server and @angular-devkit/build-angular (#24056)

Bumps [webpack-dev-server](https://github.com/webpack/webpack-dev-server) to 5.2.5 and updates ancestor dependency [@angular-devkit/build-angular](https://github.com/angular/angular-cli). These dependencies need to be updated together.


Updates `webpack-dev-server` from 5.1.0 to 5.2.5
- [Release notes](https://github.com/webpack/webpack-dev-server/releases)
- [Changelog](https://github.com/webpack/webpack-dev-server/blob/main/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-dev-server/compare/v5.1.0...v5.2.5)

Updates `@angular-devkit/build-angular` from 19.0.2 to 21.2.16
- [Release notes](https://github.com/angular/angular-cli/releases)
- [Changelog](https://github.com/angular/angular-cli/blob/main/CHANGELOG.md)
- [Commits](https://github.com/angular/angular-cli/compare/19.0.2...v21.2.16)

---
updated-dependencies:
- dependency-name: webpack-dev-server
  dependency-version: 5.2.5
  dependency-type: indirect
- dependency-name: "@angular-devkit/build-angular"
  dependency-version: 21.2.16
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add files via upload (#24073)

* Add files via upload

Added Carmatec Logo

* Delete website/static/img/companies/carmatec logo.png

Deleted

* Added Logo

Added Logo

* Update users.yml

Please check

* fix link to carmatec.com

* feat: add quiet mode to suppress verbose generation output (#11211) (#23831)

Implement a `--quiet` / `-q` flag to suppress donation banners and contributor
messages during code generation. This addresses issue #11211 by providing users
a way to reduce noisy console output while maintaining full generation semantics.

Changes:
- Add quiet mode configuration to WorkflowSettings (core module)
- Wire quiet setting through CodegenConfigurator
- Implement CLI option: `-q`, `--quiet` in Generate command
- Add Maven plugin parameter: `<quiet>true</quiet>`
- Add Gradle extension property: `openApiGenerator.quiet = true`
- Refactor postProcess() in DefaultCodegen and 19 language generators to wrap
  println statements with `if (!isQuietMode())` guard, ensuring all other
  lifecycle activities execute normally regardless of quiet mode
- Add GlobalSettings lookup utility `isQuietMode()` to language-specific codegen
- Update documentation for usage.md, Maven plugin README, Gradle plugin README
- Add comprehensive test coverage across all modules:
  * WorkflowSettingsTest: quiet setting serialization
  * GenerateTest: CLI quiet flag parsing
  * DefaultGeneratorTest: postProcess execution verification
  * GenerateTaskDslTest: Gradle quiet output suppression
  * CodeGenMojoTest: Maven plugin quiet behavior

Verification:
- DefaultGeneratorTest: 24 tests, 0 failures
- GenerateTaskDslTest: all tests pass
- Build: EXIT 0

This implementation maintains backward compatibility (quiet defaults to false)
and ensures semantic correctness by always invoking postProcess(), affecting
only the console output suppression behavior.

Closes #11211

* add OnCreated to JsonConverter (#24079)

* revert to DropWrite (#24080)

* [core] Allow oneOf members that declare x-implements (#23577) (#24076)

OneOfImplementorAdditionalData.addToImplementor used putIfAbsent + List.add
on the model's x-implements vendor extension. When a oneOf member schema
already declares x-implements in the spec, the parsed value is a scalar
string or an immutable list, so appending the oneOf interface threw
java.lang.UnsupportedOperationException during model post-processing.

Normalize the existing value into a fresh mutable list (preserving any
user-supplied interfaces) before appending. No behavior change for models
without a pre-existing x-implements.

* update ujson to newer version (python-fastapi) (#24086)

* build(deps-dev): bump hono (#24051)

Bumps [hono](https://github.com/honojs/hono) from 4.12.18 to 4.12.25.
- [Release notes](https://github.com/honojs/hono/releases)
- [Commits](https://github.com/honojs/hono/compare/v4.12.18...v4.12.25)

---
updated-dependencies:
- dependency-name: hono
  dependency-version: 4.12.25
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [openapi, openapi-yaml] feature - add sortOutput option to deterministically sort paths and schemas, http methods, etc... (#24037)

* feat(openapi, openapi-yaml): add sortOutput option

Add a new 'sortOutput' generator option to the 'openapi' (JSON) and
'openapi-yaml' (YAML) documentation generators that produces a
deterministically ordered spec:

- Paths are sorted alphabetically by URL
- Schemas, parameters, requestBodies, responses, headers, examples,
  links, callbacks and securitySchemes are sorted alphabetically by name
- HTTP methods within each path are ordered by the classical convention:
  GET, PUT, POST, DELETE, OPTIONS, HEAD, PATCH, TRACE

Implementation details:
- OpenAPISorter: replaces Paths and all Components maps with TreeMaps
- PathItemSerializer: custom Jackson serializer writing operations in
  classical HTTP method order (only registered when sortOutput=true)
- SerializerUtils: overloaded toJsonString/toYamlString with sortOutput
  flag; createModule(boolean) registers PathItemSerializer when true
- OpenAPIGenerator / OpenAPIYamlGenerator: wire the new option through
  to the serializer

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test(openapi, openapi-yaml): enhance output ordering tests for paths, schemas, and HTTP methods

* remove forbidden method invocations

* feat(openapi, openapi-yaml): add documentation. Remove factually not-working features from documentation

* improve documentation

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* [Core] bug - fix OAS 3.1 nullable validation when using older "nullable: true" syntax instead of type: [null, ...] (#24026)

* add (for now failing) tests

* fix check nullable implementation to trigger the warning

* Revert "fix check nullable implementation to trigger the warning"

This reverts commit 5e8ab244dbe1be33c7ad6c251d963d1522b06d95.

* Reapply "fix check nullable implementation to trigger the warning"

This reverts commit 5507fecc70dc48a3f2dffc7b406fdd9b1055e5d5.

* remove one test

* trigger warning on any value of nullable: in open api 3.1.0 version

* [CORE] - Feature: `forcedGenerateSchemas` — Force generation of schema-mapped or import-mapped schemas (#24066)

* feat: add support for forced schema generation to override schemaMappings or importMappings

* feat: enhance forced schema generation with detailed configuration options and wildcard support

* feat: refactor forced schema generation logic to improve clarity and functionality

* feat: backwards-compatibility with configOptions

* Added Service Cost (#24089)

* Add files via upload

* Add Service Cost entry to users.yml

* minor fix to users.yml

* Update python pydantic v1 workflow to test with supported python versions (#24091)

* update python pydantic v1 workflow to test with supported python versions

* update python pydantic v1 workflow to test with supported python versions

* [java] honor useJspecify in restclient/webclient ApiClient support class (#24055)

The restclient and webclient ApiClient support classes hardcoded
'import {javaxPackage}.annotation.Nullable;' regardless of useJspecify, so
generated clients used org.jspecify everywhere except ApiClient, which kept
jakarta/javax. Guard the import on useJspecify; @Nullable is used as a simple
name so only the import changes. Regenerated the two affected jspecify samples.

* [python] fix uniqueItems validation tests (#24092)

Pydantic 2 removed conlist(unique_items=True). The migration in
04fa53b6 kept OpenAPI arrays as lists because sets would lose ordering
and complicate JSON serialization, but left the old validation tests in
the synchronous and lazy-import samples.

Those tests do not require an exception, so they normally pass after
making a Petstore request and fail only when that request produces an
unrelated response validation error. Remove them from the Pydantic 2
samples.

Pydantic 1 still enforces uniqueItems. Make its test require the expected
validation error so a regression cannot silently pass.

* [python] run Petstore CI for lazy imports (#24093)

The Python Petstore workflow tests python-lazyImports in its matrix, but
its pull-request path filter does not include that directory. A change
confined to the lazy-import sample therefore receives no Python
Petstore coverage.

Add the missing path so the workflow runs whenever that sample changes.

* Remove @multani from Python's technical committee (#24099)

I'm no longer reviewing changes for the Python client, removing myself from the list.

* build(deps): bump actions/checkout from 4 to 7 (#24061)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [python] serialize structured YAML bodies (#24084)

The urllib3 client only serializes structured bodies when Content-Type
contains json. Kubernetes server-side apply uses
application/apply-patch+yaml, so dict bodies instead reach the
unsupported-content fallback.

JSON is valid YAML 1.2. Use the existing JSON serializer for structured
YAML bodies while preserving the pass-through behavior for serialized
str and bytes values.

* [julia-server] Use req.headers for HTTP.jl 2.x compatibility (#24102)

HTTP.jl 2.x removed the single-arg HTTP.headers(req) accessor, so
generated server read-handlers with header params throw a MethodError
(500) under HTTP 2. Use req.headers instead, which works on both
HTTP.jl 1.x and 2.x.

Regenerated the julia-server petstore sample to match.

* [Crystal] idiomatic api redesign (#24070)

* [crystal] Idiomatic redesign: namespaced client, single request path, leaner models

Overhaul the beta `crystal` client generator to emit idiomatic, DRY, multi-instance Crystal.

API layer:
- Namespaced sub-clients: `client.dcim.cable_terminations.list` (path-based routing via a
  CrystalApiRouting helper + addOperationToGroup) instead of a flat `DcimApi` with prefixed methods.
- A single generic `Connection#request(T) forall T` choke point (crest transport); operations are
  short declarative calls returning a typed `Response(T)` (no `_with_http_info` twins).
- Native multi-instance via a `Client` facade owning a per-instance `Connection`/`Configuration`
  (no global singleton). Operation header params wired through; array query params encoded as
  `key=a&key=b` via a configurable Crest params encoder.

Models:
- Trim ignored `@[JSON::Field]` args; `valid?` delegates to `list_invalid_properties`.
- Shared `Serializable` mixin for `to_h`/`to_body`/`to_s`/`eql?`; `==`/`hash` via the stdlib
  `def_equals_and_hash` macro.
- One declarative `validates(name, type, nilable, **rules)` macro replaces the per-model
  EnumAttributeValidator hierarchy and the duplicated min/max/length/pattern/items + enum checks.
  ~-39% model LOC on a large real-world spec; eager (rescuable) validation now actually fires.

Generated specs are meaningful (JSON round-trip / required enforcement / facade reachability)
instead of empty `skip` stubs.

Also fixes latent bugs: numeric enums quoted as strings, validating setters shadowed by property
setters, BigDecimal JSON, ::File-in-model, unresolved Array(Array), stale RecursiveHash references,
blank shard.yml authors, and a maxItems/minItems paren typo.

petstore `crystal spec` and the codegen unit tests pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* [crystal] Add crystal-qdrant sample (real-world anyOf / named-enum coverage)

Generated from the Qdrant REST API 4.4.10 spec (~320 models incl. anyOf unions and named
enums) with moduleName=Qdrant::Api and apiNamespace="" (api classes nest directly under the
module). Serves as a real, large integration gate: compiles and `crystal spec` runs green.

- bin/configs/crystal-qdrant.yaml
- modules/openapi-generator/src/test/resources/3_0/crystal/qdrant.json (embedded spec)
- samples/client/others/crystal-qdrant (generated client)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

* [core] Restore sibling example for allOf with a single $ref (#23335) (#24081)

When a property is declared as `allOf: [ $ref ]` with a sibling `example`,
fromProperty() reassigns the working schema to the inner $ref schema before
computing the example, so toExampleValue() runs against a schema that has no
example and returns the literal string "null". The subsequent
"restore original schema" block re-applies the outer schema's nullable,
description, min/max, title, etc. but not the example.

Restore the example from the original (outer) schema in that block, mirroring
the existing handling of the other sibling attributes. Regression from 6.x.

Fixes #23335

* build(deps): bump http-proxy-middleware from 2.0.7 to 2.0.10 in /website (#24103)

Bumps [http-proxy-middleware](https://github.com/chimurai/http-proxy-middleware) from 2.0.7 to 2.0.10.
- [Release notes](https://github.com/chimurai/http-proxy-middleware/releases)
- [Changelog](https://github.com/chimurai/http-proxy-middleware/blob/v2.0.10/CHANGELOG.md)
- [Commits](https://github.com/chimurai/http-proxy-middleware/compare/v2.0.7...v2.0.10)

---
updated-dependencies:
- dependency-name: http-proxy-middleware
  dependency-version: 2.0.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [Java] ensure JsonTypeName not generated for class implementing oneOf with discriminator (#24024)

* fix 23997: ensure that no JsonTypeName is created when the parent interface has a discriminator mapping

* add test for @JsonTypeInfo

* Fix Cubic findings

* [python] honor proxy environment settings (#24082)

urllib3 does not read proxy environment variables, so generated clients
require users to copy them into Configuration.proxy. 97e079fd added
no_proxy handling, but 01ed5975 replaced the Python templates without
carrying it forward.

Resolve scheme-specific proxy and no-proxy defaults through
urllib.request while preserving explicit empty values as opt-outs.
Match domain, port, IPv4 CIDR, and IPv6 CIDR bypass entries without
adding requests to generated clients.

* build(deps): bump actions/cache from 5 to 6 (#24111)

Bumps [actions/cache](https://github.com/actions/cache) from 5 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [Kotlin][Spring] fix option useSpringBuiltInValidation not implemented (#24115)

* fix(kotlin-spring): documented option `useSpringBuiltInValidation` has no effect (#23950)

* update doc, template

* fix

---------

Co-authored-by: Tomáš Pecsérke <tomas.pecserke@gmail.com>

* remove rust-server-deprecated samples, workflow tests (#24117)

* [python] separate property and parameter mappings (#24121)

Unmapped Python operation parameters currently fall back from
`toParamName()` to `toVarName()`, which also applies model property
`nameMappings`. A mapping intended for a model property can therefore
rename an unrelated operation parameter with the same source name.

Apply explicit mappings to operation parameters only through
`parameterNameMappings` in the `python` and `python-pydantic-v1`
generators. Continue to normalize unmapped parameter names as Python
identifiers. This gives `nameMappings` and `parameterNameMappings` their
documented property and parameter scopes.

Configurations that intentionally used `nameMappings` to rename
parameters must add the same entries to `parameterNameMappings`. Retain
the `nameMappings` entries when they are also needed for model
properties.

* [rust-server] Fix panic on binary request bodies coerced to UTF-8 (#24116)

Co-authored-by: William Cheng <wing328hk@gmail.com>

* [python] Run regex pattern validators in mode="before" (#24065) (#24072)

The Python (pydantic v2) generator emitted regex `@field_validator`s
without a mode, so they defaulted to `mode="after"` and ran *after*
pydantic had already coerced the wire value to its declared Python type.

Consequences:
- A `string` with `format: date-time` reached the validator as a
  `datetime`; the template stringified it (`str(value)`), producing a
  non-RFC-3339 form that could no longer match the declared `pattern`,
  so valid responses were rejected.
- A `string` with `format: uuid` was coerced to `UUID`, then the
  validator returned `str(value)`, leaving the field value a `str`
  despite the `UUID` annotation.

Run the pattern check in `mode="before"` against the raw wire value and
only when it is a `str`, then let pydantic perform the normal
conversion. Already-typed Python values are passed through untouched.

Regenerated affected python samples (python, python-aiohttp,
python-httpx, python-lazyImports).

* [Java] Render object default for composed ($ref + default) schemas (#23971)

A property declared as a $ref to an object schema with a sibling default
(or an explicit allOf) is parsed as a composed schema, so its properties
live in the allOf members rather than directly on the schema. The composed
branch of AbstractJavaCodegen.toDefaultValue fell through to
super.toDefaultValue, which emits the raw default (e.g. {"one":"one"})
as Java and does not compile.

Resolve the composed schema's effective properties from its allOf members
and render the default through the same fluent-builder logic used for plain
object schemas (extracted into toObjectDefaultValue). When no object
properties can be resolved, return null instead of emitting uncompilable
output.

Fixes #23795

* [python] add supportHttpxSync option for sync httpx methods (#24128)

* [python] add supportHttpxSync option for sync httpx methods (#23032)

Add a new `supportHttpxSync` option to the Python generator (httpx library only) that generates synchronous `_sync` variants of each API method inside the same API class, instead of a separate `httpx-sync` library.

Following the maintainer's review feedback on #23044, each generated `_sync` method simply calls its asynchronous counterpart and waits for completion, so both synchronous and asynchronous methods are available from the same SDK (matching the sync/async layout already used by other generators).

- PythonClientCodegen: new `supportHttpxSync` CLI option, wired for the httpx library only (ignored with a warning otherwise)
- httpx/sync_helper.mustache: `run_sync()` helper running coroutines to completion on a dedicated, reused background event loop so the httpx AsyncClient stays bound to a single loop across calls
- api.mustache: generate `_sync`, `_sync_with_http_info` and `_sync_without_preload_content` variants under `{{#supportHttpxSync}}`
- api_doc / api_test: document and stub the sync variants
- new sample petstore python-httpx-sync (bin/configs/python-httpx-sync.yaml)
- docs/generators/python.md regenerated

* #23032 :

Fix FILES

* test new samples in github workflow

* copy tests

* update samples

---------

Co-authored-by: Antoine <antoine@lecomptoirdespharmacies.fr>

* [python] escape model wire names (#24120)

* [python] escape model wire names

Python model templates in the modern and Pydantic v1 clients
interpolate OpenAPI property names and discriminator names and values
directly into string literals. Quotes, backslashes, and control
characters can therefore produce invalid generated modules.

Render field aliases, dictionary keys, discriminator lookups, and
discriminator mappings through Python string-literal escaping in both
generators. Stop generation if a value cannot be encoded rather than
emitting unsafe source.

* [python] regenerate client samples

Regenerate the checked-in modern and Pydantic v1 Python petstore
clients after escaping model wire names. Existing inherited, oneOf,
anyOf, and nested models exercise quotes, backslashes, and control
characters in wire keys and discriminator values.

* [Java] Skip wildcard media types when selecting request Content-Type (#24118) (#24127)

selectHeaderContentType() could return a wildcard media type (e.g.
"application/*" or "*/*"). isJsonMime() reports such wildcards as
JSON-compatible, so the JSON branch returned the wildcard unchanged, and
the no-JSON fallback returned contentTypes[0] verbatim. Spring's
MediaType then throws IllegalArgumentException("Content-Type cannot
contain wildcard type '*'") when the value is used as a request header.

Now JSON-compatible wildcards fall back to concrete application/json, and
the no-JSON path returns the first non-wildcard media type (or
application/json if every candidate is a wildcard). Fixes restclient,
resttemplate and webclient ApiClient templates plus regenerated samples;
adds ApiClientTest covering wildcard handling.

* update python samples

* fix(ruby): JSON-encode query params with content:application/json (#24126)

* fix(ruby): JSON-encode query params with content:application/json

Parameters declared with `content: { "application/json": ... }` must be
serialized as JSON strings per the OpenAPI 3 spec. The core model field
`queryIsJsonMimeType` was already set correctly by DefaultCodegen; the Ruby
template was simply not using it, causing raw Ruby object representations to
be sent instead of JSON.

Adds `{{#queryIsJsonMimeType}}...to_json{{/queryIsJsonMimeType}}` branches to
api.mustache for both required and optional query params, updates the three
ruby echo_api samples accordingly, and adds a RubyClientCodegenTest to assert
the flag is set on content:application/json parameters.

Fixes: #2519 (partially — same root cause, jaxrs-cxf generator)
Related: #6367, #21934 (same bug in TypeScript generators)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Update samples/client/echo_api/ruby-httpx/lib/openapi_client/api/query_api.rb

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* Regenerate samples after Cubic's suggested change

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* [python] test HTTPX sync wire names (#24130)

Commit 2b6b544f brings the HTTPX sync generated models in line with
3a307ab7. The handwritten oneOf and anyOf tests still construct payloads
with sanitized Python names, so the sample jobs now fail while
deserializing BasquePig.

Update those tests to send and assert the exact wire names. This keeps
the regression coverage aligned with the generated fields and catches
future sample drift.

* [jaxrs-spec] Add @JsonIgnoreProperties on the discriminator to avoid duplicated keys during serialisation  (#24132)

* [jaxrs-spec] add @JsonIgnoreProperties on discriminator to avoid duplicate key

Models with a discriminator emitted @JsonTypeInfo(As.PROPERTY) but also
declared the discriminator property as a regular @JsonProperty field, so
Jackson serialized the discriminator twice, producing a duplicate key in
the response body.

Mirror the Spring generator by emitting
@JsonIgnoreProperties(value = "<prop>", allowSetters = true) on the
discriminator-carrying model. allowSetters = true preserves the field
during deserialization. The JsonIgnoreProperties import was already added
unconditionally by AbstractJavaCodegen, so no Java change is required.

Regenerated the affected jaxrs-spec samples.

* [jaxrs-spec] test @JsonIgnoreProperties on discriminator children with legacyDiscriminatorBehavior=false

Add a dedicated fixture (discriminator-mapping-children.yaml) and test
asserting that when legacyDiscriminatorBehavior=false the discriminator is
propagated onto the allOf children reachable via the discriminator mapping,
so @JsonIgnoreProperties is emitted on the parent and every child, ensuring
the discriminator property is not serialized twice in either case.

* build(deps): bump actions/setup-dotnet from 5.3.0 to 5.4.0 (#24142)

Bumps [actions/setup-dotnet](https://github.com/actions/setup-dotnet) from 5.3.0 to 5.4.0.
- [Release notes](https://github.com/actions/setup-dotnet/releases)
- [Commits](https://github.com/actions/setup-dotnet/compare/v5.3.0...v5.4.0)

---
updated-dependencies:
- dependency-name: actions/setup-dotnet
  dependency-version: 5.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* [python] centralize the Python constraint rules (#24141)

* fix: normalize OAS 3.1 schemas with type:[object,"null"] to set nullable:true correctly (#24140)

* fix: normalize OAS 3.1 schemas with type:[object,"null"] to set nullable:true correctly

* fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties

* Revert "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties"

This reverts commit cb5aa4917299ccce88cb1867e8e646f0bf2651ae.

* Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties"

This reverts commit b0d188d9c44f8e653e15acf9b5bced72f0b7fa38.

* add whitespace to retrigger tests

* Revert "add whitespace to retrigger tests"

This reverts commit 6a4bd103ecd3b98834816e9e94ad0f07bcd62762.

* Revert "Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties""

This reverts commit 74eb333a3a551aff06c9353c0492616941f0c90d.

* Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties"

This reverts commit b0d188d9c44f8e653e15acf9b5bced72f0b7fa38.

* Revert "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties"

This reverts commit cb5aa4917299ccce88cb1867e8e646f0bf2651ae.

* Revert "fix: normalize OAS 3.1 schemas with type:[object,"null"] to set nullable:true correctly"

This reverts commit 29c620709dc60c932b382d022f4506925e17a8c8.

* Reapply "fix: normalize OAS 3.1 schemas with type:[object,"null"] to set nullable:true correctly"

This reverts commit f741e48e29a2fc8634d038ebcb9e7760cf405d93.

* Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties"

This reverts commit cf56cf5c3107cbaa969b535b49faa4e3d890b53d.

* Revert "Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties""

This reverts commit 500d93a500f910679b227063aeaab133f3ed0598.

* Reapply "Reapply "fix: ensure OAS 3.1 schemas with type array including "null" set nullable:true correctly and preserve properties""

This reverts commit 7f0b9a6006ba58ba73b4e9aa33c6d0991ff8ea30.

* Reapply "add whitespace to retrigger tests"

This reverts commit 68e6dfffafcd0578de9cd370f00fd9a4dd2d222d.

* ci: replace setup-cpp with apt-get in node2 to fix transient GPG key failures

setup-cpp internally adds ppa:ubuntu-toolchain-r/test, which fetches an
external GPG key. This occasionally times out in CI, causing the node2 job
to fail with 'Failed to install the llvm' even though the code is fine.

Replace the wget/setup-cpp/source chain with a single apt-get install of
clang, cmake, and ninja-build from Ubuntu's own repositories.  No PPAs, no
external GPG key fetches, no transient network failures.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: add explicit source directory '.' to cmake invocation in cpp-restsdk pom.xml

CMake warns 'No source or binary directory provided' when called without
a positional source-dir argument or -S/-B flags. The warning notes this
will become a fatal error in future CMake releases.

Add '.' as the first cmake argument to explicitly set the source directory
to the current directory, which matches the implicit behaviour and silences
the warning.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: force clang compiler in cpp-restsdk cmake invocation

The CI node2 job installs clang via apt, but cmake was defaulting to GCC
because no compiler was explicitly specified. Add CMAKE_C_COMPILER=clang
and CMAKE_CXX_COMPILER=clang++ to match the original intent of the setup,
which previously used setup-cpp --compiler llvm.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* ci: remove unnecessary ninja-build from node2 apt install

The cpp-restsdk pom.xml uses cmake + make (Unix Makefiles generator).
Ninja is never invoked, so ninja-build serves no purpose here.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix(avro): order "null" first in union when default is null (#24135)

The avro-schema generator emitted an invalid union when a property combined a non-null type with an explicit `default: null` (commonly produced by `nullable: true` + `allOf` composition), e.g. `["model.Foo", "null"]` with `"default": null`.
Per the Avro specification, a union's default value must match the FIRST branch of the union, so the default `null` is only valid when `"null"` is the first branch. The invalid ordering is accepted by most schema parsers but fails at read time when the default is applied during schema evolution, crashing consumers.

The Swagger Parser represents an explicit `default: null` as a Jackson `NullNode` (a non-null Java object) rather than a Java `null`, so `toDefaultValue` returned the string "null" and the field was rendered through the concrete-default branch (`[<type>, "null"]`). Treat an explicit null default as "no default" so the field falls through to the existing nullable-union form (`["null", <type>]` with `"default": null`), which is valid. Real (non-null) defaults are unaffected.

Extends the issue6268 test spec with a nullable scalar and an allOf-composed
model reference, both using `default: null`, and regenerates the sample.

* fix(online): thread-safe fileMap with TTL cleanup, SLF4J logging, and Content-Length header (#24011)

* fix : thread safety, logging, and Content-Length in openapi-generator-online

* fix : thread-safe fileMap with 24h TTL cleanup in openapi-generator-online

* fix(online): enforce TTL at download time and make createdAt immutable

* fix : updated the failing test cases for GenApiControllerTest

* fix: Add GenApiServiceTest with TTL cleanup and concurrent generation tests

* fix(online): retain fileMap entry when temp directory deletion fails

* test(online): make GenApiServiceTest hermetic and leak-free

* [php-nextgen] Fix undefined variable $queryParams (#24136)

* [python][client] Add Decimal support to mapNumberTo functionality (#23916)

* [php-nextgen] Test with phpstan (#24146)

* test with phpstan

* update

* build(deps-dev): bump @sigstore/core (#24144)

Bumps [@sigstore/core](https://github.com/sigstore/sigstore-js) from 3.1.0 to 3.2.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/sigstore@3.1.0...@sigstore/core@3.2.1)

---
updated-dependencies:
- dependency-name: "@sigstore/core"
  dependency-version: 3.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump @sigstore/core (#24145)

Bumps [@sigstore/core](https://github.com/sigstore/sigstore-js) from 3.1.0 to 3.2.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/sigstore@3.1.0...@sigstore/core@3.2.1)

---
updated-dependencies:
- dependency-name: "@sigstore/core"
  dependency-version: 3.2.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* refactor: introduce DiscriminatorUtils to separate handling of discriminator discoverability and construction (#24143)

* [php-nextgen] Fix for enum allowed values, fixes #23813 (#23814)

* Add test for issue #23813

* fix(php-nextgen): First iteration to fix enums

* fix(php-nextgen): Re-add discriminator static properties

* fix(test): Rename the test file

* [dart-dio][built_value] Honor optional non-nullable properties in deserialize_properties.mustache (#23661)

* honor optional non-nullable in deserialize_properties

`class_members.mustache` makes the Dart getter `String?` whenever
`isNullable || !required` (the only sane Dart mapping: an optional
field can always be observably `null`), but
`deserialize_properties.mustache` only honored `isNullable`. The two
templates therefore disagreed: getter was `String?` but the
deserializer cast the value as non-nullable `String`, throwing
`type 'Null' is not a subtype of type 'String'` the moment the API
returned the field as `null`. The throw bubbled up through any
enclosing container, so a single null leaf could tank the entire
parent payload -- and most call paths swallowed the error silently.

Fix: in `deserialize_properties.mustache` the cast and the FullType
now key on the same condition as the getter: nullable when
`isNullable || !required`. The null-skip guard
(`if (valueDes == null) continue;`) is also extended to optional
non-nullable properties so we never reach the builder assignment
with a null on the wire.

Required + non-nullable, required + explicitly nullable, and
optional + explicitly nullable all keep their existing behavior --
only the previously-broken optional non-nullable path changes.

A new fixture `built_value_optional_nullable.yaml` exercises every
shape, and a new test
`DartDioClientCodegenTest.testOptionalNonNullablePropertyDeserializesAsNullable`
asserts the generated `watch_provider_entry.dart` contains the
expected lines for each.

Full Dart suite: 115 tests, 0 failures, 0 regressions.

* regenerate petstore sample with optional non-nullable fix

* fix regenerated samples and remove template trailing newline

  - Remove trailing newline in deserialize_properties.mustache that caused
    double blank lines in generated output
  - Regenerate all dart-dio samples (oneof, oneof_polymorphism_and_inheritance,
    oneof_primitive, petstore-timemachine) with optional non-nullable fix
  - Fix corrupt serializers.dart that had empty addBuilderFactory() calls
    causing compilation errors

---------

Co-authored-by: Antoine Le Dû <antoine@skypher.co>

* fix(python-flask): validate byte length for format:byte fields (#23177)

When a string field has format:byte with minLength/maxLength constraints,
the generated validation code incorrectly checks string length instead
of base64-decoded byte length.

Added conditional logic using isByteArray flag to validate decoded
byte length for byte array fields. Maintains existing string length
validation for non-byte fields.

Fixes #450

* [dart-dio] Fix webhook imports generating Map-style strings (#22611)

* Fix dart-dio webhook imports generating Map-style strings (issue #22586)

Webhook operations were generating broken import statements with Map-style
representation and HTML entity encoding:
  import '{import&#x3D;model.Pet, classname&#x3D;Pet}';

Instead of proper Dart package imports:
  import 'package:my-package/src/model/pet.dart';

This occurred because DartDioClientCodegen.postProcessOperationsWithModels()
applied import processing to regular operations, but postProcessWebhooksWithModels()
was missing the same logic.

Fix:
- Extracted shared import processing logic into processImports() method
- Added postProcessWebhooksWithModels() override to apply same logic
- Both operations and webhooks now use consistent import generation

Test:
- Added verifyWebhookImports() test using existing webhooks.yaml resource
- Verifies generated code does not contain Map-style imports
- Verifies generated code does not contain HTML entity encoding

* Refactor DartDio imports processing

* Update DartDioClientCodegenTest.java for doc clarity

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Ignore php-nextgen (oneof discriminatoar enum test) (#24152)

* ignore php nextgen oneof discriminatoar enum test

* ignore php nextgen oneof discriminatoar enum test

* [dart-dio][built_value] Register BuilderFactory for nested additionalProperties shapes (#24154)

* register BuilderFactory for nested additionalProperties shapes

For a property like
`{ additionalProperties: { type: array, items: { $ref: ... } } }` the
generator emits `Map<String, BuiltList<X>>` in the Dart class but never
registers the `BuiltList<X>` BuilderFactory. The only
factory-registration path that ran for additionalProperties looked at
`items.getAdditionalProperties()`, which is null for this very common
shape (a region map of arrays of $ref). built_value then fails at
runtime with `Bad state: No builder factory for BuiltList<X>` on the
first deserialization that touches the property.

Fix:
- `postProcessModelProperty` now also calls `registerNestedBuilderFactories`,
  which walks the property's `items` tree top-down and registers a
  factory for every container layer. Three small helpers
  (`renderInnerFullType`, `renderDartType`, `renderBuilderFactory`)
  compute the corresponding `FullType(...)` argument list and the
  matching `XBuilder<...>` instantiation for arbitrary nesting:
  `Map<String, List<X>>`, `List<Map<String, X>>`,
  `Map<String, Map<String, X>>`, `List<List<X>>`, `Set<...>`, etc.
- `BuiltValueSerializer` gets a new `composite(fullTypeArgs,
  builderInstantiation)` constructor that carries the pre-rendered
  expressions. The existing `(isArray, uniqueItems, isMap,
  isNullable, dataType)` form is unchanged -- needed because the
  original model can't represent something like
  `BuiltMap<String, BuiltList<X>>` (the `FullType` argument is
  recursive and isn't expressible with a single `dataType` string).
  `equals`/`hashCode` are extended so composite serializers dedup on
  `(fullTypeArgs, builderInstantiation)` and never collide with simple
  ones.
- `serializers.mustache` gets a new branch that emits the composite
  fields verbatim when present; otherwise the existing
  `isArray`/`isMap` dispatch runs unchanged.

Existing simple cases (direct return / parameter container types,
single-level additionalProperties already handled by the prior
branch) keep producing byte-identical output.

A new fixture `built_value_additional_properties_factory.yaml`
exercises the canonical `Map<String, List<$ref>>` shape, and a new
test
`DartDioClientCodegenTest.testNestedAdditionalPropertiesGetBuilderFactories`
asserts both the inner `BuiltList<WatchProviderEntry>` and the outer
`BuiltMap<String, BuiltList<WatchProviderEntry>>` factories appear in
the generated `serializers.dart`.

Full Dart suite: 115 tests, 0 failures, 0 regressions.

* fix duplicate builder factories and regenerate petstore sample

* regenerate petstore-timemachine serializers after rebase on master

---------

Co-authored-by: Antoine Le Dû <antoine@skypher.co>

* [typescript-fetch] Fix TS2590 in instanceOf guards for wide sanitized-name models (#23980) (#23982)

* [typescript-fetch] Fix TS2590 in instanceOf guards for wide sanitized-name models

The dual name/baseName membership check added in #23497 narrows the
`object` parameter on every clause of the type-predicate function. For
models with many required properties whose sanitized TS name differs
from the JSON baseName (e.g. snake_case APIs), the accumulated candidate
union grows past the compiler limit and trips TS2590 ("union type too
complex"), introduced in 7.23.0.

Read the membership/index-access checks through `value as Record<string,
any>` so TypeScript no longer narrows the predicate on each clause,
keeping the dual-key behavior from #23497 while restoring compilable
guards. Regenerated affected typescript-fetch samples.

Fixes #23980

* [typescript-fetch] Update test expectations for Record<string, any> casts in instanceOf guards

* [typescript] Align multipart file array handling (#24133)

* Align TypeScript multipart file array handling

* Add TypeScript fetch multipart file array sample

* Document TypeScript binary form array helper

* Fix TypeScript fetch multipart docs example

* Limit TypeScript fetch multipart docs examples

* chore: update typescript samples (#24159)

* Add note to mapping options (#24162)

* add note to mapping options

* add note to mapping options

* fix(kotlin): emit @get:JsonValue on nested Jackson enums (#24047)

Nested (inline) enum classes generated into Kotlin data classes were
missing the @get:JsonValue annotation that top-level enum classes already
carry. Without it, Jackson serializes an Int-valued nested enum by its
constant name instead of its numeric value, producing wrong JSON output.

Add @get:JsonValue (and the JsonValue import, guarded by hasEnums) to the
nested enum declaration in the kotlin-client data_class template, mirroring
enum_class.mustache. Regenerate affected Kotlin Jackson client samples and
add a regression test.

Fixes #23886

* Update pom.xml (#24166)

Dependency update for CVE-2026-54512

https://github.com/OpenAPITools/openapi-generator/issues/24165

* build: migrate to OSS Community Develocity Instance (#24050)

- Point Develocity server to https://community.develocity.cloud with project ID OpenAPITools
- Upgrade develocity-maven-extension to 2.4.1 and common-custom-user-data-maven-extension to 2.2.0
- Trim develocity.xml to remove keys with default values
- Rename GRADLE_ENTERPRISE_ACCESS_KEY to DEVELOCITY_ACCESS_KEY across all CI workflow files
- Update Revved up by Develocity badge in README to link to the community instance

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* build(deps-dev): bump @sigstore/verify (#24182)

Bumps [@sigstore/verify](https://github.com/sigstore/sigstore-js) from 3.1.0 to 3.1.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/sigstore@3.1.0...@sigstore/verify@3.1.1)

---
updated-dependencies:
- dependency-name: "@sigstore/verify"
  dependency-version: 3.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps-dev): bump sigstore (#24183)

Bumps [sigstore](https://github.com/sigstore/sigstore-js) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/sigstore/sigstore-js/releases)
- [Commits](https://github.com/sigstore/sigstore-js/compare/sigstore@4.1.0...sigstore@4.1.1)

---
updated-dependencies:
- dependency-name: sigstore
  dependency-version: 4.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat(python-flask): add opt-in Connexion 3 support (#24181)

* feat(python-flask): add opt-in Connexion 3 support

Adds a new `useConnexion3` boolean generator option (default: false) to
the python-flask server generator, addressing #17303. Connexion 3 has
been out since 2023, but requirements.mustache explicitly pinned
`connexion<=2.14.2` and `Flask==2.1.1` to avoid it, blocking users from
picking up newer Flask/Werkzeug (one comment on the issue specifically
cited this as blocking a CVE fix in werkzeug). The maintainer has
repeatedly invited a contribution on the thread since Dec 2023, and
several community members had already prototyped working fixes in the
comments.

Kept as an opt-in flag rather than a default bump, following this
repo's existing convention for breaking generator-output changes
(useJackson3, useSpringBoot3/4).

What changes under the flag, and why:
- requirements.mustache / setup.mustache: swap the Connexion 2/Flask
  2.1.1 pins for `connexion[flask,swagger-ui,uvicorn]>=3.3.0,<4.0.0` +
  `Flask>=2.2.0,<4.0.0`. The uvicorn extra is required because
  Connexion 3's `FlaskApp.run()` launches via uvicorn even for Flask
  apps -- confirmed by actually running the generated server, which
  fails at startup without it. The connexion floor is 3.3.0 (not just
  the first 3.0.0 release) because that's the only version we've
  actually run and verified, and it's also the first release with
  official Python 3.13/3.14 support per Connexion's own release notes.
  swagger-ui-bundle is bumped to >=1.1.0 to match the floor Connexion's
  own swagger-ui extra already silently requires.
- __main__.mustache: `connexion.App` -> `connexion.FlaskApp`, and the
  JSON encoder moves from a `F…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG][Java] adding default with a reference using allOf (implicitely) results in uncompileable code

3 participants