Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
9276ef8
fix(core): warn instead of silently dropping unrecognized path-item o…
khayashi4337 Sep 20, 2026
c83850f
feat(core): generate OpenAPI 3.2 query/additionalOperations and in:qu…
khayashi4337 Sep 22, 2026
a52ebe2
fix(core): gate OpenAPI 3.2 operations behind generator capability
khayashi4337 Sep 22, 2026
87fa468
feat(go): generate OpenAPI 3.2 query/additionalOperations and in:quer…
khayashi4337 Sep 22, 2026
78308cc
Add OpenAPI 3.2 support to Python client, harden Go method emission
khayashi4337 Sep 22, 2026
e2b405d
feat(typescript-fetch): generate OpenAPI 3.2 query/additionalOperatio…
khayashi4337 Sep 22, 2026
c901798
feat(rust): generate OpenAPI 3.2 query/additionalOperations and in:qu…
khayashi4337 Sep 22, 2026
d0e1935
feat(ruby): generate OpenAPI 3.2 query/additionalOperations and in:qu…
khayashi4337 Sep 22, 2026
043b37a
test: delete generated temp dirs deterministically, fix probe hang
khayashi4337 Sep 22, 2026
ef3f821
feat(php): generate OpenAPI 3.2 query/additionalOperations and in:que…
khayashi4337 Sep 22, 2026
f30e9f3
feat(csharp): generate OpenAPI 3.2 query/additionalOperations and in:…
khayashi4337 Sep 22, 2026
5ca6a5e
feat(kotlin): generate OpenAPI 3.2 query/additionalOperations and in:…
khayashi4337 Sep 22, 2026
51fa9b9
fix(ruby): keep bodies on 3.2 verbs, preserve '//' in querystring, ga…
khayashi4337 Sep 22, 2026
62a98c2
fix(php): require psr/http-message ^2.10, avoid \$uri collision in 3.…
khayashi4337 Sep 22, 2026
e49e09e
fix(csharp): scan webhooks for operation-input models, skip normalize…
khayashi4337 Sep 22, 2026
6b82674
fix(kotlin): rename params colliding with template locals, body set f…
khayashi4337 Sep 22, 2026
9f2676e
fix(php): rename spec params that collide with generated function locals
khayashi4337 Sep 23, 2026
910b590
fix(kotlin): clone shared deepObject vars, guard normalized name coll…
khayashi4337 Sep 23, 2026
2f0ffbf
test(rust): delete temp dirs reliably in all codegen tests
khayashi4337 Sep 23, 2026
bc20a2c
fix(codegen): match allOf-inherited form required flags by baseName
khayashi4337 Sep 23, 2026
a00d51c
test(php): pin unique signature under prependFormOrBodyParameters
khayashi4337 Sep 23, 2026
94aca3a
fix(kotlin-client): prevent template-local/member collisions with spe…
khayashi4337 Sep 23, 2026
1cf67f2
chore(samples): regenerate ruby/php samples for earlier template fixes
khayashi4337 Sep 24, 2026
7ab9da5
fix(codegen): limit form required flags to the allOf chain
khayashi4337 Sep 24, 2026
19694ac
fix(kotlin-client): qualify inherited member refs and revert spring d…
khayashi4337 Sep 24, 2026
9074531
fix(kotlin-client): escape $ in wire names for all libraries
khayashi4337 Sep 24, 2026
f1575f3
fix(kotlin-client): qualify multiplatform wrap-map receiver as this.v…
khayashi4337 Sep 24, 2026
07530ab
fix(kotlin-client): name the form-body ParametersBuilder lambda param
khayashi4337 Sep 24, 2026
75be8f4
fix(kotlin-client): actually send the vertx form body
khayashi4337 Sep 24, 2026
3a953e5
fix(kotlin-client): append whole FormPart values in multipart bodies
khayashi4337 Sep 24, 2026
a274eae
chore(samples): regenerate kotlin samples for the existing-bug fixes
khayashi4337 Sep 24, 2026
2ea2e94
fix(core): skip in:querystring operations for generators without support
khayashi4337 Sep 30, 2026
caf09b5
fix(go): restore query-parameter ordering when combining raw and enco…
khayashi4337 Sep 30, 2026
da17511
fix(python): preserve verbatim casing for OpenAPI 3.2 method names
khayashi4337 Sep 30, 2026
b769bf9
fix(typescript-fetch): warn on fetch-forbidden methods regardless of …
khayashi4337 Sep 30, 2026
19cf404
test(core): pin root-security propagation to OpenAPI 3.2 additionalOp…
khayashi4337 Sep 30, 2026
e5ec5f4
fix(core): tighten and widen dropped-operation detection regex
khayashi4337 Sep 30, 2026
5bf2f8d
fix(rust): drain cargo's output pipe concurrently to avoid a deadlock
khayashi4337 Sep 30, 2026
7df495f
fix(core): honor supportsAdditionalOperations() when discovering call…
khayashi4337 Sep 30, 2026
06cef26
fix(typescript-fetch): don't treat a '?' inside the URL fragment as a…
khayashi4337 Sep 30, 2026
4ec1d58
test(core): update webhook-operations.yaml references after rename
khayashi4337 Sep 30, 2026
7f1bcb8
fix(kotlin-client): fix 4 pre-existing defects found while reviewing …
khayashi4337 Sep 30, 2026
571b164
test(core): pin allOf-chain required-collection edge cases
khayashi4337 Sep 30, 2026
0841d62
fix(core): stop additionalOperations from overwriting fixed methods i…
khayashi4337 Sep 30, 2026
06b0735
Merge remote-tracking branch 'upstream/master' into openapi-3.2-codegen
khayashi4337 Oct 1, 2026
e9d413c
fix(k6): skip OpenAPI 3.2 query operations instead of generating http…
khayashi4337 Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
105 changes: 105 additions & 0 deletions modules/openapi-generator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,111 @@
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
<!-- jars for the kotlin-okhttp generated-client compile/capture
test (versions mirror the jvm-okhttp4 template). Kept off the
test classpath: their Kotlin 1.8+/2.x metadata breaks the
embedded 1.6 compiler used by KotlinTestUtils. -->
<execution>
<id>kotlin-capture-deps</id>
<phase>process-test-classes</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp-jvm</artifactId>
<version>5.4.0</version>
</artifactItem>
<artifactItem>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-jvm</artifactId>
<version>3.17.0</version>
</artifactItem>
<artifactItem>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi</artifactId>
<version>1.15.2</version>
</artifactItem>
<artifactItem>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi-kotlin</artifactId>
<version>1.15.2</version>
</artifactItem>
<artifactItem>
<groupId>com.squareup.moshi</groupId>
<artifactId>moshi-adapters</artifactId>
<version>1.15.2</version>
</artifactItem>
<!-- jars for the kotlin spring-restclient/webclient
generated-client compile checks (same reason:
keep 2.x-metadata jars off the shared test
classpath). -->
<artifactItem>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>6.2.10</version>
</artifactItem>
<artifactItem>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>6.2.10</version>
</artifactItem>
<artifactItem>
<groupId>org.springframework</groupId>
<artifactId>spring-jcl</artifactId>
<version>6.2.10</version>
</artifactItem>
<artifactItem>
<groupId>org.springframework</groupId>
<artifactId>spring-webflux</artifactId>
<version>6.2.10</version>
</artifactItem>
<artifactItem>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.7.10</version>
</artifactItem>
<artifactItem>
<groupId>org.reactivestreams</groupId>
<artifactId>reactive-streams</artifactId>
<version>1.0.4</version>
</artifactItem>
<artifactItem>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-observation</artifactId>
<version>1.14.10</version>
</artifactItem>
<artifactItem>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-commons</artifactId>
<version>1.14.10</version>
</artifactItem>
<artifactItem>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.22.1</version>
</artifactItem>
<artifactItem>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.22.1</version>
</artifactItem>
<artifactItem>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.22</version>
</artifactItem>
<artifactItem>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
<version>2.21.5</version>
</artifactItem>
</artifactItems>
<outputDirectory>${project.build.directory}/kotlin-capture-deps</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -397,4 +397,32 @@ default List<Operation> divideOperationsByContentType(OpenAPI openAPI, String pa

Set<String> getOpenapiGeneratorIgnoreList();

/**
* Whether this generator can emit operations defined through OpenAPI 3.2's
* {@code query} fixed field and {@code additionalOperations} map, i.e. HTTP
* methods outside the original eight fixed methods. Generators whose
* templates embed enumerated method constants (e.g. {@code HttpMethod.QUERY})
* must keep the default {@code false}: the affected operations are then
* skipped with a warning instead of producing uncompilable code.
*
* @return true if the generator supports OpenAPI 3.2 query/additional operations
*/
default boolean supportsAdditionalOperations() {
return false;
}

/**
* Whether the generator can serialize an OpenAPI 3.2 {@code in: querystring}
* parameter (the caller supplies the whole, already-encoded query string).
* Generators that cannot must keep the default {@code false}: operations
* declaring such a parameter are then skipped with a warning instead of
* emitting it through the ordinary name=value query serialization, which
* would corrupt the encoded value on the wire.
*
* @return true if the generator supports {@code in: querystring} parameters
*/
default boolean supportsQueryStringParameters() {
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,11 @@ public class CodegenParameter implements IJsonSchemaValidationProperties {
* If a query parameter should be serialized as json
*/
public boolean queryIsJsonMimeType;
/**
* OpenAPI 3.2 {@code in: querystring} parameter: the parameter value describes
* the entire query string (via {@code content}), not a single name=value pair.
*/
public boolean isQueryStringParam;
/**
* datatype is the generic inner parameter of a std::optional for C++, or Optional (Java)
*/
Expand Down Expand Up @@ -270,6 +275,7 @@ public CodegenParameter copy() {
output.isArray = this.isArray;
output.isMap = this.isMap;
output.queryIsJsonMimeType = this.queryIsJsonMimeType;
output.isQueryStringParam = this.isQueryStringParam;
output.isOptional = this.isOptional;
output.isExplode = this.isExplode;
output.style = this.style;
Expand All @@ -294,7 +300,7 @@ public int hashCode() {
isFormStyle, isSpaceDelimited, isPipeDelimited,
jsonSchema, isString, isNumeric, isInteger, isLong, isNumber, isFloat, isDouble, isDecimal,
isByteArray, isBinary, isBoolean, isDate, isDateTime, isUuid, isUri, isEmail, isPassword,
isFreeFormObject, isAnyType, isArray, isMap, queryIsJsonMimeType, isOptional, isFile, isEnum, isEnumRef, _enum, allowableValues,
isFreeFormObject, isAnyType, isArray, isMap, queryIsJsonMimeType, isQueryStringParam, isOptional, isFile, isEnum, isEnumRef, _enum, allowableValues,
items, mostInnerItems, additionalProperties, vars, requiredVars, vendorExtensions, hasValidation,
getMaxProperties(), getMinProperties(), isNullable, isDeprecated, required, getMaximum(),
getExclusiveMaximum(), getMinimum(), getExclusiveMinimum(), getMaxLength(), getMinLength(),
Expand All @@ -312,6 +318,7 @@ public boolean equals(Object o) {
CodegenParameter that = (CodegenParameter) o;
return isFormParam == that.isFormParam &&
isQueryParam == that.isQueryParam &&
isQueryStringParam == that.isQueryStringParam &&
isPathParam == that.isPathParam &&
isHeaderParam == that.isHeaderParam &&
isCookieParam == that.isCookieParam &&
Expand Down Expand Up @@ -429,6 +436,7 @@ public String toString() {
final StringBuilder sb = new StringBuilder("CodegenParameter{");
sb.append("isFormParam=").append(isFormParam);
sb.append(", isQueryParam=").append(isQueryParam);
sb.append(", isQueryStringParam=").append(isQueryStringParam);
sb.append(", isPathParam=").append(isPathParam);
sb.append(", isHeaderParam=").append(isHeaderParam);
sb.append(", isCookieParam=").append(isCookieParam);
Expand Down
Loading