Releases: OpenAPITools/openapi-generator
Release list
v7.25.0 released
v7.25.0 stable release (breaking changes with fallbacks) comes with 240+ 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
- Update parser to newer version (2.1.46) #24731
- Fix missing imports for schemaMapping in API interfaces #24672
- [GRADLE-WRAPPER] Generator status message visibility update #24670
- Stable hash for determining if input specification changed (Maven Plugin) #24645
- fix(normalizer): restore behavior of clearing a oneOf if the schema content cannot currently be used by the generator #24585
- [generators] Give clients a way to inject vendor overrides #24571
- Fix response isArray, isMap flags #24566
- Move shared git push template to _common #24565
- Add logic to handle any type (3.1) with additional properties #24559
- Normalize map schema (3.1 spec) #24558
- fix: keep allOf members that have properties alongside a validation keyword #24551
- feat(core): add splitOperationsByContentType option to divide operations #23935
C#
- fix(csharp): make generichost oneOf constructors public #24700
- [csharp][generichost] Allow property accessor overrides #24652
- [csharp][generichost] Refactor AsModel template #24650
- [csharp][generichost] Make host configuration optional #24451
- [csharp][generichost] Update partial to create HttpClient #24354
C++
- fix(cpp-boost-beast): validate request components #24351
Crystal
- fix(crystal): support Crystal 1.21 #24748
Dart
- Fix nullable query param #24738
- [dart] Do not convert format: date to UTC before formatting #24706
- Fix anyOf serialization in dart-dio #24605
- Fix Dart native nullable number deserialization (#20238) #24386
- [BUG][DART] PATCH tri-state optional handling #23696
Go
- fix(go): emit the oneOf no-match error once instead of once per member #24683
- Update go-server deps #24527
- Fix Golang pattern validation with regex fails on commas #24349
- fix(golang): use datatype only for enums instead of format #24337
Java
- [SPRING;KOTLIN-SPRING] Fix: enhance pageable parameter detection with OpenAPI reference resolution #24758
- [JAVA] [Spring] JSpecify, fix nullable + required field #24711
- Add support for interface only with vertx #24655
- [Java] Fix generated build.gradle incompatible with Gradle 9 #24649
- [Java][jaxrs] support disableDiscriminatorJsonIgnoreProperties in typeInfoAnnotation #24532
- [jaxrs-spec][quarkus] Migrate the Jakarta path to Quarkus REST and fix file upload types #24455
- [java][spring][kotlin-spring] Make @JsonInclude/@JsonSetter opt-in to stop overriding global ObjectMapper #24428
- [spring-boot]: generate PreAuthorize from OpenAPI security scopes #24380
- [BUG] [JavaSpring] Change Dangling package JavaDoc into Regular Comment Block #24278
- [Java] Generate nullability annotations on all-args constructor parameters #24114
- [Java] [Spring Client] Add an exception provider interface to allow for exception redefinition #23878
Kotlin
- [SPRING;KOTLIN-SPRING] Fix: enhance pageable parameter detection with OpenAPI reference resolution #24758
- [FIX][KOTLIN][SPRING] mark @PARAM:JsonProperty as required in generated models when required in open api spec #24754
- feat(kotlin): Add support for Jackson3 and SpringBoot 4 #24709
- [kotlin-spring] feature: Add x-extra-imports vendor extension #24638
- [kotlin] Add = null default for optional parameters in jvm-ktor and javalin templates #24556
- refactor(kotlin): remove unknown default enum case for inline operation enums in multiplatform library #24521
- [java][spring][kotlin-spring] Make @JsonInclude/@JsonSetter opt-in to stop overriding global ObjectMapper #24428
- [KOTLIN-SPRING] fix: use spring-cloud-dependencies BOM in Spring Boot 4 spring-cloud pom #24326
PHP
- [PHP] Replace deprecated Guzzle Utils::jsonEncode with native json_encode #24688
- [php-laravel] Use baseName instead of paramName for request lookup & validation keys #24400
- [php-nextgen] Add Flag to Allow Ignoring Operation Servers #24328
- [php-nextgen] Fix Nested oneOf/anyOf Behavior #24318
- [php-nextgen] Add anyof Support #24306
PowerShell
- fix(powershell): replace UrlEncode with System.Uri EscapeDataString for path parameter encoding #24604
Python
- [python] Deserialize Optional[...] response types #24718
- Decommission tornado support in python generators #24564
- python: replace third-party lazy imports with the standard library #24402
- fix(python-fastapi): multipart array files and Form/File wire-name aliases #24381
- [python] reserve generated helper and pydantic model_* property names #24358
- [python] require Python >= 3.10 and restore full dependency floors #24280
- [python-fastapi] Use ... as default value rather than None (#22494) #23398
Ruby
- [ruby-nextgen] Let Configuration carry Faraday SSL options #24536
Rust
- [rust-server] Generate the auth scheme precedence tests #24690
- [rust-server] Restrict from_headers matches to the intended auth scheme #24607
- [Rust] Apply the isAnyType param fallback to operations without path params #24570
- fix: Updates to take latest serde_valid in rust-server generator #24334
Scala
- [scala-sttp4] Model named Request shadows sttp.client4.Request #24682
- [scala-sttp4] fix Circe codecs not preserving original JSON property names #24681
- [scala-sttp4] Omit optional fields set to None instead of serializing null (circe) #24362
- [scala-sttp4] Fix enum operation parameters: type import and wire-value toString #24346
- [scala-sttp4-jsoniter] add generic Option and Seq codecs for jsoniter-scala #23800
Swift
- [swift6] Emit enum description for query parameters #24639
TypeScript
v7.24.0 released
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
v7.23.0 released
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
v7.22.0 released
v7.22.0 stable release comes with 150+ 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
- refactor: centralize common schema checks in ModelUtils #23608
- [CORE] : BUGFIX - prevent Stream closed on concurrent JAR access in TemplateManager #23596
- Improve OneOf handling with new normalizer REPLACE_ONE_OF_BY_DISCRIMINATOR_MAPPING #23543
- ci: upload openapi-generator-cli.jar as GitHub Release asset #23524
- fix: preserve parent description when simplifying nullable anyOf/oneOf #23361
- [GRADLE-PLUGIN] - Modernize plugin to use Lazy Configuration API #23042
C#
- [csharp][generichost] Fix TokenBase race condition #23356
- [csharp][generichost] Fix possible concatentation bug #23355
- [csharp][generichost] Fix invalid implicit cast #23344
- [csharp][generichost] Treat warnings as errors #23343
- [csharp][generichost] Fix dateTimeOffset bug #23342
- Marking a class abstract should not mark the methods abstract as well #23291
- [csharp][generichost] Multiple oauth tokens #23264
- [csharp] Support null types #23260
Crystal
- [crystal] Fix empty auth_settings Hash literal #23625
Dart
- [dart-dio] Fix json_serializable serialize template to support hasFormParams #23579
- Fix wrong import statements in dart-dio when using import-mappings #23571
- fix: Change Dart Serializer for MapBuilder to be nullable #23460
- feat(dart-dio): add methods to remove auth tokens in api client #23386
Go
- feat(go): add enumUnknownDefaultCase config option #23417
Java
- Correct imports for RxJava2 and RxJava3. Add support for Vert.x 5. #23563
- add support for sealed response interfaces for spring-declarative-http-interface #23549
- [Java][jersey3] Add error entity deserialization to ApiException #23542
- [Java] [apache-httpclient] Add support for Jackson3 for apache httpclient generator #23446
- [Java][WebClient][RestClient] Standardize useAbstractionForFiles behavior to use Resource interface #23382
- feat(spring): enable openApiNullable with useJackson3 #23331
- [java] [Spring] useJspecify for java clients and spring generator #23256
Kotlin
- [KOTLIN-SPRING;JAVA-SPRING] chore: upgrade spring boot 3 to 3.3.13 version #23591
- [KOTLIN-SPRING] Add oneOf sealed interface support with discriminator #23574
- fix [Kotlin]: handle nullable response.body in jvm-okhttp ApiClient #23515
- [kotlin-server] Fix class names for useTags #23441
- fix(kotlin-spring): use Jackson 3 annotation package in model imports #23406
PHP
- [PHP] Support map/object format for x-enum-varnames and x-enum-descriptions #23540
- fix(php-symfony): enum $ref query params — short types and imports (#23521) #23525
- [php-nextgen] Fix validity checks for nullable properties that are required #23419
- [php-nextgen] Remove invalid @implements ArrayAccess tag in models with parents #23418
- [Php] Fix form data field names to use spec-defined baseName #23347
- [php-nextgen]: Fix imports for models with parent schema #23317
- [php-nextgen]: Fix ArrayAccess parameter types #23315
PowerShell
- [POWERSHELL] fix: single-quote DTO property names to prevent $-variable interpolation #23624
- [PowerShell] Correct comment syntax in array query parameters #23491
Python
- [PYTHON][bugfix] Fix python model dict array generation #23538
- [PYTHON][bugfix] Fix missing post-params when content type is json #23526
- [python] Add buildSystem option to support hatchling #23483
- fix(python): Fix sanitize_for_serialization code generation for python client #23415
- Drop python 3.9 and support python 3.14 in python generator #22926
Rust
- fix(rust): use serde_repr for integer property enums #23580
- [rust-axum] Fix uint32/uint64 type mapping #23547
- feat(rust-server): refactor server module templates to avoid a monolithic run function. #23432
- Feat: (Rust) Added chrono (date/date-time) support for Rust Generator #23451
Scala
- [Fix][scala-sttp][circe] Add Base64OrArrayByteDecoder for format:byte and format:binary JSON properties #23619
- [Fix][scala-sttp][circe] Add NaN-tolerant Decoder[Double] for non-finite values #23611
- [feat][scala-sttp] Add oneOf and allOf discriminator support with sealed traits for circe generator #23510
- Mark scala-finch generator as deprecated #23484
- [Fix][scala-sttp][circe] Circe codecs do not preserve original JSON field names for non-camelCase properties #23465
Swift
- [swift6] fix map nullable values #23629
TypeScript
- Update axios to 1.15.2 #23637
- fix(typescript-angular): handle Set in query parameter serialization #23442
- fix(typescript-fetch): prevent HTML-escaping of pattern in validationAttributes #23420
- [typescript-*]: Improve literal regexp for JSON MIME-type #23319
- fix(typescript-fetch): remove barrel imports #22706
v7.21.0 released
v7.21.0 stable release (breaking changes with fallbacks) comes with 190+ enhancements and bug fixes.
This release comes with 3 breaking changes (with fallback):
- Use Spring Boot 3.x by default (useSpringBoot3=true) #23318
- Add option to fallback to non-pointer number, boolean types #23197
- fix c-libcurl generator for int and boolean values by moving to int* #23052
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- Update jackson dependencies to newer versions #23152
- fix: core: preserve OAS 3.1 numeric exclusive validation constraints in composed schemas #23053
- fix: OAS3.1 deprecated property for array properties #23019
- openapi-generator-gradle-plugin: upgrade Gradle to v8 #22864
- (OpenAPINormalizer): Removed reset of OAS content #22573
C
- Add option to fallback to non-pointer number, boolean types #23197 (Breaking change (with fallback))
- fix c-libcurl generator for int and boolean values by moving to int* (Breaking change (with fallback)) #23052
C#
- [C#] Fix invalid implicit casts #23192
- [csharp] Fix/override central package versions for csharp test projects #23092
- [csharp][generichost] Better file support #22806
C++
- [cpp-qt-client] Remove deprecated SignalE/SignalEFull signals in API classes #23113
- [cpp-qt-client] Optimize generated code #23089
- [cpp-qt-client]Fix variable redeclarations in the api-body.mustache #22982
- Move C++ virtual destructor definition to .cpp files #21530
Dart
- [dart] Fix enum defaults, Object arrays, and nullable required assertions in native serialization #23027
- [dart] Preserve inner generic type for Map<String, List> deserialization #22717
- Add support for Optional in Dart generator (both dart and dart-dio) to distinguish absent, null, and present states #22257
Go
- Update go client README to match modern module support #23292
Java
- Use Spring Boot 3.x by default (useSpringBoot3=true) (Breaking change (with fallback)) #23318
- Decommission springfox from spring generator #23280
- fix(jaxrs): correct add/remove methods for JsonNullable<List> fields #23258
- [Java] Optimize All Enum fromValue Mustache Templates #23165
- Update jackson core in Java restclient to newer version #23151
- [java][resttemplate] Add support for Jackson 3 and Spring Boot 4 in Java resttemplate #23144
- [spring] Add an option "additionalNotNullAnnotations" to include additional NotNull annotations #23096
- feature/jackson3 native #23071
- feat(jackson3): add jackson3 support for Java Client generator - WebClient #23031
- feature(jackson3) add jackson3 support for Java Client generator - Restclient #23023
- fixes(spring) add JsonProperty on setter #22978
- [java-spring] - add 'includeHttpRequestContext' additional property (option) defaulting to "true" for reactive and "false" for blocking to include ServerWebExchange/HttpServletRequest #22910
- spring-http-interface: introduce springHttpClientAdapter, fix paramDoc.mustache #19710
JavaScript
- [JS] Fix handling of oneOf when you have explicitly used a discriminator #23026
Kotlin
- Decommission springfox from kotlin-spring generator #23283
- [kotlin-client] Support for integer enums for multiplatform with custom serializer #23211
- Bring Kotlin client code up-to-speed with changes #23188
- [kotlin][kotlin-spring] Add companionObject option to generate companion objects in data classes #23176
- Upgrade ktor to 3.4.0, kotlin to 2.3.0 #23164
- fix(kotlin): support non-discriminator oneOf/anyOf model and array types with kotlinx_serialization #23007
- Type safe error handling in kotlin spring server with useSealedResponseInterfaces flag #23003
OCaml
- [OCaml][Fix] Unreferenced enum + Direct recursive types #23005
PHP
- [php-nextgen]: Inherit model method docs and fix interface types #23307
- [php-nextgen]: Fix array defaults #23290
- [php-nextgen] Discriminator class detection uses wrong namespace #23287
- PHP NextGen: address PSR-12 formatting violations #23271
- PHP Generator: address PSR-12 formatting violations #23250
- [php-symfony] use baseName for query param lookup in generated controllers #23222
Postman
Python
- [python] Fix deserialization of UUID JSON type in template #23295
- Use Pydantic for json serialization in .to_json method #23210
- [Python] Some fixes for pydantic v1 templates for nested dicts #23162
- [Python] Fix python template for list and dicts of dicts #23112
- feat(python): expose all config properties in constructor #23021
- [PYTHON] switch from mutable bytearray to immutable bytes to avoid pydantic error #22988
- fix(python): missing field_validator import for UUID properties with pattern #22947
- python(pydantic): Use validate_by_name config; populate_by_name will be deprecated #22931
Ruby
- [Ruby] Minor code improvement #23196
Rust
- [rust] Fix array enums for generated object types #23279
- [rust-server] Update mockall to 0.14 #23048
- Rust-server: implement ValidateComposited traits for complex types and add integer enum support #23045
Scala
- Add scalafmt (plugin) to scala-http4s client generator #23300
- feat: support date-time-local in scala generators #22990
- feat: Add oneOf for scala-http4s client #22969
Swift
- [Swift6] Fix TSan race condition in Swift6 SynchronizedDictionary #23091
- fix(swift): disable use of group separator #23062
TypeScript
- [typescript-fetch] Add option to exclude RequestOpts from API interfaces #23181
- fix(typescript-fetch): generate validationAttributes when withoutRuntimeChecks=true #23107
- [typescript-angular] Include OIDC credential headers #23065
- fix(typescript-fetch): ResponseError prototype chain #23010
- [typescript-nestjs-server] improve request parameter handling #22960
v7.20.0 released
v7.20.0 stable release comes with 140+ enhancements, bug fixes. Once again thanks for all the contributions from the community.
This release comes with 2 new generators:
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- feat: Make model property generation deterministic by sorting alphabetically #22836
- [Normalizer] add type information to an error message #22742
C#
- [csharp][generichost] Added xml comments and restrict some access #22796
- C# GenericHost Support multi targetting #22234
- C# GenericHost remove state from TokenProvider abstract base class so it makes more sense for JIT requested tokens (for long lived ApiClients with OAuth security schemes) #22233
- [csharp][generichost] Add HTTP client name to fix client duplicity #22118
C++
- [cpp-qt-client]Prefix signal argument types with namespace #22921
- [cpp-qt] Add global server index setter for all operations #22760
- C++ Httplib server codegen (New Generator) #21724
Go
- [go] Fix text escaping in example code generation #22841
Java
- [java][jackson] fix double serialization of discriminator #22924
- [BUG] [JAVA] fix validateJsonElement failing for required nullable fields #22912
- [JAVA][FEIGN] Put back hardcoded HTTP Client but without the performance issue #22905
- feature(jackson3) add jackson3 support for spring generator #22854
- [JAVA-SPRING;KOTLIN-SPRING] - add possibility to override x-implements and x-kotlin-implements via config options. #22839
- Fix Jackson Serialization of additionalProperties on java and jaxrs-spec #22366
Kotlin
- [KOTLIN;SPRING] - add support for 'x-spring-paginated' to get closer to feature parity with java-spring codegen add 'autoXSpringPaginated' option; support x-operation-extra-annotation #22958
- [BUG] [KOTLIN-SPRING] @HttpExchange in declarative interface does not support property placeholders #22882
- [kotlin][jvm-okhttp4] Fix multipart/form-data with JSON content-type #22856
- [Kotlin][Client] Migrate Enum.values() to Enum.entities #22852
- [KOTLIN-CLIENT] fix Parent interface class having incorrect collection property type List instead of Set #22850
- [JAVA-SPRING][KOTLIN-SPRING] - add possibility to override x-implements and x-kotlin-implements via config options. #22839
- [kotlin-server] Add polymorphism, oneOf and allOf support #22610
PHP
- [php-symfony] fix sequencial escape when validating a class type #22906
- [php][php-nextgen] Fix nullability when multiple response types are possible #22827
Protobuf
- [Protobuf] Fix Discriminator Issue and add capability Enum Extraction #22740
Python
- Update python sdk to strip any directory traversal in filename #22965
- Remove coding: utf-8 as that's the default already #22934
- feat(python): enhance retry configuration in REST client #22867
- [python-fastapi] Set python version to 3.10 #22823
R
- [R] avoid to-JSON issues when R6 classes contain lists of R6 classes #22828
- [R] optionally skip parsing responses to R6 objects #22705
Rust
- Add support for ApiKey auth to rust-server #22950
- Add support for enums of integers in rust-server generator #22915
- fix: apply integer type fitting for Rust params #22853
- feat: Support selective ssl/tls backend in rust-server to optionally remove openssl #22825
- [Rust] Update reqwest to 0.13 and reqwest-middleware to 0.5 #22816
- fix: Fix rust-server model generation following serde_valid upgrade #22737
Swift
- [swift6][client] Remove unnecessary Combine checks #22810
- [swift6] fix Vapor build, disable swift 5 tests on CI and enable more swift 6 tests on CI #22805
- [swift6][client] Increase minimum supported SDK to accommodate swift concurrency #22802
- [swift6][client] improve swift 6 thread safety #22801
- [swift6][client] Add new hooks to OpenAPIInterceptor #22800
- [swift6][client] mark PromiseKit as deprecated #22792
- [swift6][client] make api calls concurrent #22790
- [swift5][client] soft deprecate Swift 5 generator #22789
- [swift6][client] mark some closures as sendable #22776
Terraform
- [Terraform] New Terraform Provider generator (New Generator) #22949
TypeScript
- fix(typescript-axios): Ignore unused parameter on JSON serializer replacer function #22858
- [BUG][Typescript] Fix isRelativeUrl incorrectly detecting URLs containing @, -, ~, . as not relative. #22768
- [typescript-angular] Fix inner enum reference in multi-map property type #22748
- Add create requestOpts method to {{classname}}Interface #21709
- [typescript] make TypeScript version configurable and default to v5 #20064
v7.19.0 released
v7.19.0 stable release comes with 60+ enhancements, bug fixes. Once again thanks for all the contributions from the community.
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- Update parser to newer version v2.1.37 #22729
- Fix DevContainer by switching from moby to docker #22725
- Resolve vendor extensions on schemas referenced in parameters #22690
- Better null check in normalizeSchema #22671
- [Fix] [Regression] Resolve the discriminator type from a 3.1 sibling #22634
C#
- [REQ][CSHARP] Make TokenProvider abstract method GetAsync protected for override #22615
C++
- [cpp] Fix Nested Map & Additional Properties Support #22639
Crystal
- [CRYSTAL] object_id method should be a reserved words #22577
Go
- [go] fix default value for array type #22584
Java
- [Java][Native] Fix request compression #22688
- fix: [JAVA][SPRING] Nullaways warn with JSpecify => add missing annotation to parameter of method toIndentedString #22685
- [BUG][JAVA][SPRING] api util must test variable nullity #22679
- [java][jackson] fix: conditionally add jackson JsonIgnoreProperties for base class polymorphism #22528
Kotlin
- [kotlin-spring] Revert nested property placeholder in @RequestMapping that Spring cannot resolve #22625
Nim
- [Nim] Fix nested map support #22643
PHP
- [php][php-nextgen] Mark nullable things as nullable in phpdoc #22650
ProtoBuf
- [Protobuf] Improve oneOf Handling by Unwrapping allOf for Complex Types #22700
Python
- Update python fastapi urllib3 to newer version #22644
R
Rust
- Refresh dependencies in the Rust server generator #22710
- [Rust] Enum Query Parameter Serialization Fixes #22683
Swift
- [swift][client] Update CI to use Xcode 26 #22648
- Fix Swift oneOf discriminator decoding with enumUnknownDefaultCase #22635
- [Swift6] Remove ParameterConvertible for models #21150
TypeScript
v7.18.0 released
v7.18.0 stable release comes with 70+ enhancements, bug fixes. Once again thanks for all the contributions from the community.
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- feat: prevent variable resolution when prefixed with $ in server URL templates #22550
- Fix siblings of $ref using allOf in openapi normalizer #22364
C++
- fix(cpp-qt): Fix enum query parameter serialization for both inline and referenced enums #22559
- [cpp-rest] Fixes segfault for nullable strings #22405
- Add Basic and Bearer Authorization to the CPP Pistache generator #22337
- Fixes oatpp generator to expose network server on 0.0.0.0 instead of localhost #22330
- [cpp-rest] Fixing Incorrect Header Name Used #22298
C#
- [csharp] Patch dependencies with vulnerabilities #22262
Crystal
- fix(generator): fix java.lang.NullPointerException in constructing example code #22545
- [crystal] fix Model#to_h method #22508
- [crystal] Add option to set params_encoder #22484
- [crystal-lang] Various fixes for Crystal client #22465
Go
- [GO] Generate imports for UnmarshalJSON func only when it's present #22524
- fix: missing imports for array of files and date-time parameters #22390
Java
- [BUG][JAVA][Spring] fix Lombok @Getter disables validation #22544
- Fix Spring Framework 7 compatibility in jvm-spring-restclient and jvm-spring-webclient #22467
- [Java] Support JsonNullable in JaxRS-spec #22412
- [JAVA][native] Add support for UnaryInterceptors #22381
- Add support for custom tls server names. #22372
- [JAVA] [NATIVE] Add gzip capability #22358
- [Java] Use Fully Qualified Name for java.util.Locale in Generated Classes #22342
- [JAXRS] Partial revert changing path generation if interface, fixes #22279 #22316
- [JAVA jaxrs-spec gen] add option for generating swagger V3 annotations #22300
- [REQ-22001] Add MCP server support to apiService.mustache #22197
Kotlin
- fix(kotlin): add JsonCreator/JsonValue to Jackson enums #22535
- [kotlin][client] Deprecate jvm-volley support #22521
- [kotlin] fix query parameter encoding #22512
- [kotlin-client] Vert.x: Fix enum class name template for default operation parameters #22504
- [kotlin] Make API classes open (non-final) unless nonPublicApi is used #22461
- [kotlin-spring][server] Feat: Return from controllers without ResponseEntity wrapper #22377
- Add support for oneOf with discriminator when using kotlinx.serialization #22373
- Fix Kotlin codegen for enum with int items (issue #15204) #22324
- [kotlin-spring][server] Feat: Add Spring Declarative HTTP Interface support for easy client instantiation #22302
Nim
- [nim] Nim Generator Fixes #22385
PHP
- [php][php-nextgen] Cleanup api authentication code when using api keys in cookies or supporting multiple authentication methods #22433
- [php][php-nextgen] fix return type if empty and non-empty responses are mixed #22322
- [php][php-nextgen] fix array enum query parameters #22320
- [php] Fix PHP generator validation for nullable required properties #22292
ProtoBuf
- [Protobuf] Add isEnumSchema check in generateNestedSchema #22384
Python
- python-fastapi: avoid log message in constructor #22522
- Make python code compatible with urllib3 v2.6.0+ #22520
- fix: use httpx in generated configuration.py #22418
- [python] Fix pyproject (poetry 2.x) for httpx #22289
Ruby
- [Ruby] Fixes anyOf Support in Responses #22392
Rust
- [rust-server] feat: Add serde_validate support #22553
- Update rust-server Cargo.toml to fix client feature compile #22511
- fix: Rust-server bytes response fixed to not attempt string conversion #22471
- [Rust-Axum] FIX: do not generate Partial Ord/Ord for Any type #22469
- [Rust] Implement support for multipart file uploads for reqwest-async and reqwest-trait #22454
- Ensure rust-server compiles with no-default-features #22445
- Add support for trait mocking in rust-server generator #22332
- Fixups for rust-server hyper1 support #22321
- [Rust-Axum] Fix: incorrect regex pattern validation #22277
Scala
- Fixed scala-sttp4-jsoniter compilation error: replace .getRight with .orFail #22536
TypeScript
- [typescript-fetch]: fix logic when stringEnums is explicitly set to false #22466
- Typescript-Angular: Fix several query parameters serialization issues #22459
- [typescript-rxjs] Feat: Add @deprecated JSDoc tag to API operations #22419
- [typescript-nestjs-server] Fix #21842 by updating api.module.mustache #22403
- [typescript-node] Fixes generation when parent contains TypeScript primitive #22401
- [typescript] replace headers with same case-insensitive key to match http spec #22393
- [typescript-axios] add support for accept headers #22318
- fix: Format Date/DateTime Query Parameters in exploded, non-container Parameter #22268
v7.17.0 released
v7.17.0 stable release comes with 60+ enhancements, bug fixes. Once again thanks for all the contributions from the community.
This release comes with 1 breaking change (with fallback):
- Set REFACTOR_ALLOF_WITH_PROPERTIES_ONLY to true by default (Breaking change (with fallback)) #22180
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- openapi-normalizer: Add REMOVE_PROPERTIES_FROM_TYPE_OTHER_THAN_OBJECT normalize option #22236
- Set REFACTOR_ALLOF_WITH_PROPERTIES_ONLY to true by default (Breaking change (with fallback)) #22180
- OpenApiNormalizer FILTER improvements. Multi filters + filter on path #22128
- Fix additional properties handling in 3.1 spec #22056
C
- Update c curl generator to support float #21103
C#
- [CSHARP] Add cache to efficiently lookup CodegenModel in csharp codegen to make csharp generator faster #22094
- [CSHARP] Fix how the array type is set when using NULLABLE_REFERENCE_TYPES #22071
- [csharp][httpclient] do not use deprecated HttpRequestMessage.Properties #20737
Dart
- [dart] Fix compile error in inline enum properties with "default" values #22165
Elixir
- [fix][elixir] missing type mapping for AnyType #22081
Java
- [jaxrs] Support jackson option (true by default) #22169
- [Java][jaxrs-spec] withXml support #22140
- Jersey2/3: Fixes a bug in OAuth token renewal, where the previous HTTP 401 code is reused even after the retry succeeds #22134
- [Spring] Remove unnecessary modifiers from API interface templates #22132
- Custom error messages for size, length, min & max validations in Spring & Spring-Kotlin #22090
- Spring 7 WebClient Compatibility #22030
- [Spring] add support for api versioning #22028
Julia
- [Julia] Fix docstring parameter formatting with backticks #22190
Kotlin
- Custom error messages for size, length, min & max validations in Spring & Spring-Kotlin #22090
PHP
- Expose mtls certificate config params in python and php configuration templates #22229
- fix(php,php-nextgen): remove useless string cast from ObjectSerializer.mustache #22121
Python
- Expose mtls certificate config params in python and php configuration templates #22229
- [python-fastapi] Fix: Skip sorting of path operations #22166
Ruby
- [ruby] Introduce ApiModelBase to reduce code duplication #22052
Rust
- [rust-axum] don't include quotes in output string from Display trait for string types #22161
- [Rust-Axum] Fix wrong validation for non-model Body #22155
- feat(rust-axum): make the Object value public #22144
- Removed a duplicate binding for an address for rust-server #22116
TypeScript
- [Typescript-fetch] Add isBoolean blocks to modelOneOf.mustache #22220
- [typescript-axios] Add support for AWSv4 Signature #22174
- fix: typescript docs not being put in a docs directory #22124
- feat(typescript-fetch): add docs support #22110
- [typescript-fetch] Fix infinite recursion with self-referencing discriminator mappings #21956
v7.16.0 released
v7.16.0 stable release comes with 100+ enhancements, bug fixes. Once again thanks for all the contributions from the community.
The community also contributed 3 new generators in this release:
- [python] add async httpx support Client: Python #22021
- feat: Add Java Dubbo code generator for Apache Dubbo microservices #21968
- New generator for Scala3 + sttp4 + jsoniter-scala #21908
Below are the highlights of the changes. For a full list of changes, please refer to the "Pull Request" tab.
General
- Update commons related dependencies to newer versions #21980
- Correctly annotate Gradle task in- & outputs and enable stricter plugin validation #21957
- Support normalizing anyof/oneof enum constraints to a single enum #21917
- feat: add support for minimal-update option in maven plugin #21872
- Update swagger parser to 2.1.32 #21818
- Fix bug in ModelUtils.getParentName resulting in wrong inner Models for oneOf-composed schemas #21799
- [3.1] Fixed lack of check for booleanSchemaValue #21742
Bash
- [bash] Drop old client.sh from petstore sample #21987
- [bash] Fix issue where paste command doesn't work on Mac #21986
C#
- Fix visibility for enum in C# generator #21984
- [C#] Fixes array TypeDeclaration parsing order to fix deep aliases #21600
Dart
- [dart-dio][timemachine] Bugfix: saving offset_date_serializer instead of local_date_serialize #21974
- Add skipCopyWith option for dart-dio #21816
Kotlin
- fix(kotlin-spring): add missing constructor parentheses for hashmap models #22029
- [kotlin] Fix enum defaultValue in query parameters with schema reference #22002
- [kotlin][client] remove old deprecated apis #21988
- [kotlin-spring][server] Feat: Allow implementation of arbitrary interface in DTOs (similar to x-implements from java-spring) #21950
- Fix missing @serializable on enums for kotlin/jvm-retrofit2 #21907
- [kotlin-client] Fix string comparison in discriminator post-processing #21881
- [kotlin-client] update Kotlin and libraries versions #21866
- Kotlin Multiplatform polymorphism with custom discriminator support #21772
Go
- go: Fix missing imports for optional body params #22014
- feat(golang): support for wrapped and xml name #21899
Java
- [JAVA] Add vendorExtensions.x-class-extra-annotation to oneOf interfaces #22020
- [cxf] add support for Swagger2 #22010
- [java] Fix annotationLibrary option being ignored #21992
- [Java] [Spring-client] Exclude discriminator from nullable annotation #21981
- feat: Add Java Dubbo code generator for Apache Dubbo microservices #21968
- [jaxrs-spec][quarkus] Feat: Add an option to use "org.jboss.resteasy.reactive.RestResponse" #21877
- [Java] [Spring] Use deduction configOptions for oneOfInterfaces #20919
OCaml
- [Fix][OCaml] Incorrect encoding/decoding for required free-form objects; Odoc for record fields #21819
- [OCaml] Generate .ocamlformat file; format all generated OCaml files #21809
- [OCaml] Introduce support for oneOf/anyOf, fix default value for non-required maps #21798
PHP
- Fix php-slim4 API key authentication throwing exception #21962
- Setup void type for PHP Symfony CompilerpassInterface #21808
- [php] Fixed typing of offsetGet/offsetSet/offsetUnset #21583
ProtoBuf
- [protobuf] fix generation of enums with UNSPECIFIED values #21774
Python
- [python] add async httpx (new library option) support #22021
- [python] api client type checks #21935
- fix(python): update pyproject.toml license format with poetry1 fallback #21931
- [python] fix default value when enum is a reference #21923
- python: feature flag for lazy imports #21885
Ruby
- fix(ruby-client): Fix incorrect boolean parsing in OneOf/AnyOf #21943
Rust
- [Rust-Axum] Support AnyOf, AllOf #21948
- [Rust] Add support for native-tls and rustls-tls Cargo features for the reqwest library #21925
- [BUG][rust-axum] Fix duplicate route operations when supplying multiple tags on a path with a camelCase param #21873
- [rust] set useAsyncFileStream only for files in the body #21839
Scala
- Mark scala-lagom-server as deprecated #21977
- New generator for Scala3 + sttp4 + jsoniter-scala #21908
Swift
- [Swift6][client]Make Swift 6 generator stable #21846