v7.23.0 stable release (breaking changes with fallbacks) comes with 170+ enhancements and bug fixes.
This release comes with 2 breaking changes (with fallback):
- [jaxrs-spec][quarkus] Emit @RolesAllowed({"**"}) for HTTP Basic, Bearer, api-key and OAuth2 or OpenID with empty scopes and rename "useQuarkusSecurityAnnotations" to "useJakartaSecurityAnnotations" (Breaking change (with fallback)) #23680
- fix(Kotlin): use the global apiNamePrefix and apiNameSuffix settings instead of apiSuffix (generator's option) (Breaking change (with fallback)) #23926
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- Normalizer: new rule LOOSE_NULL_DEFINITIONS to allow more null definitions in 3.0 spec. #23932
- fix(InlineModelResolver): prevent numbered duplicate models from multi-file OAS 3.1 specs #23856
- fix(core): normalize OAS 3.1 content media schemas #23851
- [GRADLE-WRAPPER] feat: add configurable worker isolation and max heap size for code generation #23648 by
- [GRADLE-WRAPPER] bug fix - pass maven java_home to gradle correctly #23646
- Add security schemes filter normalizer option #23174
C#
- [csharp][generichost] Deserialize present-but-null nullable enums #23912
- [csharp] Fix HTTP signature auth failure on .NET 8 when query params contain special characters #23714
- [csharp][restsharp] add throwOnAnyError option to surface client errors #23663
- Fix/csharp reserved headers and file parameter not serialising correctly #23593
- [csharp] Extend HostConfiguration with additional AddApiHttpClients signatures #22500
Dart
- feat(dart): make requests abortable #23930
- [Dart] Preserve uppercase names with trailing digits #23894
- [BUG][DART] fix nullable nested array item handling #23365
Go
- fix(go): avoid duplicate unknown enum defaults #23909
- [go] support io.Reader and []byte response types in client decode #23789
Java
- [Java][restclient] Build XmlMapper via builder when useJackson3=true #23872
- [Java] [vertx] Allow PoolOptions configuration when vertx 5 #23829
- feat(java/jersey3): add jackson 3 support #23819
- feat(java/jersey3): Update jakarta annotation and validation libs #23810
- [JAVA-SPRING] spring http interface library should support 'useBeanValidation' #23803
- [jaxrs-spec][quarkus] Emit @permitAll for unauthenticated operations (op/global empty security, anonymous OR alternative, no security defined) #23782
- [JavaJaxRS] [CXF] Add Support for Jackson3 #23767
- [jaxrs-spec][quarkus] Emit @RolesAllowed({scope}) for OAuth2 and OpenID Connect operations with explicit scopes #23752
- [jaxrs-spec][quarkus] - Add CLI flag (useQuarkusSecurityAnnotations) to enable emitting security annotation (@authenticated, @RolesAllowed, @permitAll) #23699
- [JAVA-SPRING;KOTLIN-SPRING] feature - add support for 'substituteGenericPagedModel' also for 'spring-cloud' libraries #23690
- [jaxrs-spec][quarkus] Emit @RolesAllowed({"**"}) for HTTP Basic, Bearer, api-key and OAuth2 or OpenID with empty scopes and rename "useQuarkusSecurityAnnotations" to "useJakartaSecurityAnnotations" (Breaking change (with fallback)) #23680
- [jaxrs-spec][quarkus]: Emit @ResponseStatus annotation for 2XX success codes #23673
- [Java] [vertx] Make supportVertxFuture compatible with vertx 5 #23660
- Fix Jspecify nullable issue with spring boot 4 #23649
- [java][spring] fix: disableDiscriminatorJsonIgnoreProperties not working #23640
- [java] Support 'time-local' format #23555
- [java] Support 'date-time-local' format #23395
- [Spring] Add clientRegistrationId option for OAuth2 HTTP Interface #22726
Kotlin
- fix(Kotlin): use the global apiNamePrefix and apiNameSuffix settings instead of apiSuffix (generator's option) (Breaking change (with fallback)) #23926
- [kotlin-client][jvm-ktor] Support nullable response types #23870
- feat(kotlin-client): support dynamic auth credentials for okhttp client (#23835) #23836
- [KOTLIN-SPRING] - add support for 'openApiNullable' - jackson nullable library to handle non-required AND nullable: true properties #23804
- [Kotlin] Fix explicitApi/nonPublicApi/generateOneOfAnyOfWrappers generation for kotlinx_serialization #23796
- [Kotlin][ktor] add delegate pattern support #23756
- [JAVA-SPRING;KOTLIN-SPRING] feature - add support for 'substituteGenericPagedModel' also for 'spring-cloud' libraries #23690
- [KOTLIN-SPRING] Feature - add support for 'useDeductionForOneOfInterfaces' #23677
- [KOTLIN]: add 'bestEffortBacktick' naming option for Kotlin enums #23620
- feat(kotlin-spring): add suspendFunctions option for coroutine support #23444
Python
- [Python] fix constraint settings for decimalType #23928
- [python] Fix invalid pip syntax for httpx/tornado in requirements.txt #23889
- [python-fastapi] type binary multipart fields as UploadFile #23793
- Fix Python (e.g. FastApi) example generation #23537
PHP
- [php-nextgen] Check for $openApiType === "string" instead of "\DateTime" in ObjectSerializer #23937
PowerShell
- PowerShell: fix enum string starting with a number #23715
Rust
- [rust-salvo] Add Rust server generator targeting the Salvo web framework (New Generator) #23772
Scala
- [scala-http4s] Fix name mapping of discriminator property #23853
- [scala-http4s] Preserve underscores in enum names #23842
- [scala-sttp4-jsoniter] extend Primitive type with UUID, LocalDate and OffsetDateTime #23801
- [Fix][scala-sttp] Register JSON value type in importMapping to avoid model-package-prefixed import #23652
- feat: add support for oneOf in sttp4 client #22916
Swift
- [swift5][swift6] Add additionalModelObjectAttributes/EnumAttributes/Imports #23773
- [BUG][SWIFT6] unalias additionalProperties before building map type declaration #23668
- [swift5/swift6] Fix oneOf decoding when enumUnknownDefaultCase is enabled #23496
TypeScript
- [Typescript] Enum types (#18531) #23921
- [typescript-nestjs] Use paramName for URL path substitution (fixes #16668) #23868
- [typescript-fetch] Fix nested oneOf generating uncompilable interface extends on union type #23501
- [typescript-fetch] Fix oneOf with mixed array types causing TypeScript compile error #23500
- [typescript-fetch] Fix instanceOf type guards for discriminated unions #23497
- [typescript-fetch] Bugfix additional properties in multipart requests