v7.24.0 stable release (breaking changes with fallbacks) comes with 170+ enhancements and bug fixes.
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- fix(docker): update base image to eclipse-temurin 17.0.19 on Ubuntu 24.04 (noble) #24230
- fix(InlineModelResolver): do not merge untitled inline schemas differing only by description #24192
- Fix vulnerable dependency CVE-2026-54512 #24166
- [core] Add introspection support for discovering the discriminator type in a oneOf allOf polymorphic structure #24158
- refactor: introduce DiscriminatorUtils to separate handling of discriminator discoverability #24143
- fix: normalize OAS 3.1 schemas with type:[object,"null"] to set nullable:true correctly #24140
- feat(spec-merge): add alternative DEEP merge mode with by-method path merging and configurable conflict resolution strategy #24100
- [core] Restore sibling example for allOf with a single $ref (#23335) #24081
- [core] Fix UnsupportedOperationException for oneOf members declaring x-implements (#23577) #24076
- [CORE] - Feature: forcedGenerateSchemas — Force generation of schema-mapped or import-mapped schemas #24066
- [Core] bug - fix OAS 3.1 nullable validation when using older "nullable: true" syntax instead of type: [null, ...] #24026
- fix(online): thread-safe fileMap with TTL cleanup, SLF4J logging, and Content-Length header #24011
- [BUG][core] Normalize OAS 3.1 type: null map value (additionalProperties) under NORMALIZE_31SPEC #23967
- Add validate Mojo to Maven Plugin #23911
- feat: add quiet mode to suppress verbose generation output #23831
asciidoc
- fix(asciidoc): escape table cell pipes in generated docs #24184
avro
- fix(avro): order "null" first in union when default is null #24135
C++
- fix(cpp-httplib-server): serialize enums using spec values #24187
- C++ Boost.Beast client generator with OpenAPI 3.1 support #24335
C#
- fix(aspnetcore): remove obsolete wwwroot README #24283
- [csharp][generichost] Refactor duplicate apis #24273
- [csharp][generichost] Revert to DropWrite #24080
- [csharp][generichost] Add OnCreated to JsonConverter #24079
Crystal
- [Crystal] Add request-signing seam (Configuration#sign_request) #24221
- [Crystal] idiomatic api redesign #24070
Dart
- Dart2 class and enum improvements #24286
- [dart-dio][built_value] Register BuilderFactory for nested additionalProperties shapes #24154
- [dart-dio][built_value] Honor optional non-nullable properties in deserialize_properties.mustache #23661
- [dart-dio] Fix webhook imports generating Map-style strings #22611
Go
- fix(golang): make object values nullable when specified #24265
- fix(go-server): allow zero values for required request body fields #24262
- fix(go-server): skip readOnly fields in AssertXxxRequired #24257
- fix(go-server): use operationId consistently to fix uncompilable output for duplicate operationIds #24169
- [Go] Honor generateUnmarshalJSON=false for oneOf models #24062
Java
- [Java][apache-httpclient] Apply connect timeout to requests, add read timeout support #24284
- [java][microprofile] Extend useSealedOneOfInterfaces support to the microprofile library #24267
- [java][microprofile] Extend support for useOneOfInterfaces to the microprofile library when Jackson serialisation is enabled #24190
- [java][jaxrs-spec] - Add support for sealed classes and interfaces with useSealed flag #24189
- [KOTLIN-SPRING;JAVA-SPRING] bugfix: update JsonInclude annotations for optional+nullable fields to handle serialization correctly when openApiNullable = true #24185
- [java][jaxrs-spec][quarkus] - Add support for OneOfInterfaces & fix JsonTypeName value resolution #24174
- Convert maintained JAX-RS samples to JUnit 5 #24173
- fix: normalize Java annotation vendor extension lists #24171
- [jaxrs-spec] Add @JsonIgnoreProperties on the discriminator to avoid duplicated keys during serialisation #24132
- [java] honor useJspecify in restclient/webclient ApiClient support class #24055
- [Java][vertx] Apply Vert.x pool defaults in buildWebClient for useVertx5 #24017
- [Java] Render object default for composed ($ref + default) schemas (#23795) #23971
Julia
- [julia-server] Use req.headers for HTTP.jl 2.x compatibility #24102
Kotlin
- [KOTLIN-SPRING;JAVA-SPRING] bugfix: update JsonInclude annotations for optional+nullable fields to handle serialization correctly when openApiNullable = true #24185
- [Kotlin][Spring] fix option useSpringBuiltInValidation not implemented #24115
- [KOTLIN-SPRING/KOTLIN-CLIENT] BUG - fix json deserialization when kotlin attribute name differs from json attribute name #24036
- [kotlin] Fix boolean const enum literal generation #24022
- [kotlin-spring, java-spring] - gate @JsonSetter on openApiNullable for optional non-nullable fields #23993
openapi, openapi-yaml
- [openapi, openapi-yaml] feature - add sortOutput option to deterministically sort paths and schemas, http methods, etc... #24037
PHP
- [PHP] Skip length validation for DateTime model properties #24254
- Update php-laravel to newer versions #24196
- [php-nextgen] Fix undefined variable $queryParams #24136
- [php-nextgen] Code improvements #23986
- [php-nextgen] oneof polymorphism #23985
- [php-nextgen] Fix for enum allowed values #23814
Python
- [python] support legacy model dictionaries #24290
- fix(python-fastapi): map binary response type file to bytes #24285
- [python] bump generated client dependency floors above vulnerable ranges #24186
- feat(python-flask): add opt-in Connexion 3 support #24181
- [python] Set API key cookie as key-value pair #24149
- [python] centralize the Python constraint rules #24141
- [python] preserve public model field names #24131
- [python] isolate implicit API clients #24129
- [python] add supportHttpxSync option for sync httpx methods #24128
- [python] separate property and parameter mappings #24121
- [python] escape model wire names #24120
- [python] serialize structured YAML bodies #24084
- [python] honor proxy environment settings #24082
- [python] Run regex pattern validators in mode="before" so they see the wire value #24072
- fix(python): remove redundant debug setter call in deepcopy #23958
- [python][client] Add Decimal support to mapNumberTo functionality #23916
- fix(python-flask): validate byte length for format:byte fields #23177
Ruby
- [Ruby] Add new ruby-nextgen client generator (opt-in idiomatic redesign) #24220
- fix(ruby): JSON-encode query params with content:application/json #24126
Rust
- fix(rust-server): Handle multiple content-types in responses #24179
- [rust-server] Fix panic on binary request bodies coerced to UTF-8 #24116
- [Rust-Axum] Fix generating error upon special model name #23994
- [Rust-Axum] Support Server-Sent Events (SSE) #23977
Scala
- [scala-sttp4-jsoniter] support set parameters (uniqueItems arrays) in query, header, path and cookie parameters #24301
TypeScript
- fix(typescript-fetch): allow null for required nullable parameters #24292
- [typescript-fetch] Fix Omit generic using baseName for readOnly fields #24275
- typescript-fetch: default to es6 support #24226
- fix(typescript-fetch): skip scalar enum comparison for array-typed properties in instanceOf #24217
- fix(typescript-fetch): add anyToJSON to runtime.ts #24216
- fix(typescript-fetch): optional nullable fields return null instead of undefined #24215
- [typescript] Align multipart file array handling #24133
- fix(typescript-nestjs-server): import generic return types #24005
- [typescript-fetch] Fix TS2590 in instanceOf guards for wide sanitized-name models #23982