Skip to content

v7.24.0 released

Latest

Choose a tag to compare

@wing328 wing328 released this 20 Jul 07:45
203d486

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