diff --git a/.github/workflows/samples-java-client-jdk17.yaml b/.github/workflows/samples-java-client-jdk17.yaml
index 4f6dd5ceda59..9d4b7159b6d8 100644
--- a/.github/workflows/samples-java-client-jdk17.yaml
+++ b/.github/workflows/samples-java-client-jdk17.yaml
@@ -18,6 +18,7 @@ on:
- samples/client/others/java/restclient-sealedInterface/**
- samples/client/others/java/restclient-useAbstractionForFiles/**
- samples/client/petstore/java/jersey3-oneOf/**
+ - samples/client/petstore/java/jersey3-jackson3/**
pull_request:
paths:
- samples/client/petstore/java/resttemplate-jakarta/**
@@ -35,6 +36,7 @@ on:
- samples/client/others/java/restclient-sealedInterface/**
- samples/client/others/java/restclient-useAbstractionForFiles/**
- samples/client/petstore/java/jersey3-oneOf/**
+ - samples/client/petstore/java/jersey3-jackson3/**
jobs:
build:
name: Build Java Client JDK17
@@ -67,6 +69,7 @@ jobs:
- samples/client/others/java/restclient-sealedInterface
- samples/client/others/java/restclient-useAbstractionForFiles
- samples/client/petstore/java/jersey3-oneOf
+ - samples/client/petstore/java/jersey3-jackson3
steps:
- uses: actions/checkout@v5
- uses: actions/setup-java@v5
diff --git a/bin/configs/java-jersey3-jackson3.yaml b/bin/configs/java-jersey3-jackson3.yaml
new file mode 100644
index 000000000000..4254328fa93d
--- /dev/null
+++ b/bin/configs/java-jersey3-jackson3.yaml
@@ -0,0 +1,17 @@
+generatorName: java
+outputDir: samples/client/petstore/java/jersey3-jackson3
+library: jersey3
+inputSpec: modules/openapi-generator/src/test/resources/3_0/java/petstore-with-fake-endpoints-models-for-testing-with-http-signature.yaml
+templateDir: modules/openapi-generator/src/main/resources/Java
+additionalProperties:
+ useBeanValidation: true
+ artifactId: petstore-jersey3-jackson3
+ hideGenerationTimestamp: true
+ serverPort: "8082"
+ dateLibrary: java8
+ useOneOfDiscriminatorLookup: true
+ disallowAdditionalPropertiesIfNotPresent: false
+ gradleProperties: "\n# JVM arguments\norg.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m\n# set timeout\norg.gradle.daemon.idletimeout=3600000\n# show all warnings\norg.gradle.warning.mode=all"
+ failOnUnknownProperties: true
+ useReflectionEqualsHashCode: true
+ useJackson3: true
diff --git a/docs/generators/java-microprofile.md b/docs/generators/java-microprofile.md
index 1f7f33c0b8b1..f6a93340b5b0 100644
--- a/docs/generators/java-microprofile.md
+++ b/docs/generators/java-microprofile.md
@@ -64,7 +64,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|implicitHeadersRegex|Skip header parameters that matches given regex in the generated API methods using @ApiImplicitParams annotation. Note: this parameter is ignored when implicitHeaders=true| |null|
|invokerPackage|root package for generated code| |org.openapitools.client|
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|
**true** The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document. **false** The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing. |true|
-|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.2.x if `useJakartaEe=true`, 7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.x (3.x if `useJackson3=true`) **webclient** HTTP client: Spring WebClient 5.1.18 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **restclient** HTTP client: Spring RestClient 6.1.6 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`). Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) |okhttp-gson|
+|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.11. JSON processing: Jackson 2.x (3.x if `useJackson3=true`, requires Java 17+) **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.2.x if `useJakartaEe=true`, 7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.x (3.x if `useJackson3=true`) **webclient** HTTP client: Spring WebClient 5.1.18 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **restclient** HTTP client: Spring RestClient 6.1.6 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`). Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) |okhttp-gson|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|microprofileFramework|Framework for microprofile. Possible values "kumuluzee"| |null|
@@ -98,7 +98,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false|
|useEnumCaseInsensitive|Use `equalsIgnoreCase` when String for enum comparison| |false|
|useGzipFeature|Send gzip-encoded requests| |false|
-|useJackson3|Use Jackson 3 instead of Jackson 2. Supported for 'native' and 'apache-httpclient' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).| |false|
+|useJackson3|Use Jackson 3 instead of Jackson 2. Supported for 'native', 'apache-httpclient', and 'jersey3' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).| |false|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|useJspecify|Use Jspecify for null checks. Only supported for [native, restclient, resttemplate, webclient]| |false|
|useOneOfDiscriminatorLookup|Use the discriminator's mapping in oneOf to speed up the model lookup. IMPORTANT: Validation (e.g. one and only one match in oneOf's schemas) will be skipped. Only jersey2, jersey3, native, okhttp-gson support this option.| |false|
diff --git a/docs/generators/java.md b/docs/generators/java.md
index f8a8c5a74019..780b1aca9bf6 100644
--- a/docs/generators/java.md
+++ b/docs/generators/java.md
@@ -64,7 +64,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|implicitHeadersRegex|Skip header parameters that matches given regex in the generated API methods using @ApiImplicitParams annotation. Note: this parameter is ignored when implicitHeaders=true| |null|
|invokerPackage|root package for generated code| |org.openapitools.client|
|legacyDiscriminatorBehavior|Set to false for generators with better support for discriminators. (Python, Java, Go, PowerShell, C# have this enabled by default).|**true** The mapping in the discriminator includes descendent schemas that allOf inherit from self and the discriminator mapping schemas in the OAS document. **false** The mapping in the discriminator includes any descendent schemas that allOf inherit from self, any oneOf schemas, any anyOf schemas, any x-discriminator-values, and the discriminator mapping schemas in the OAS document AND Codegen validates that oneOf and anyOf schemas contain the required discriminator and throws an error if the discriminator is missing. |true|
-|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1 **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.2.x if `useJakartaEe=true`, 7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.x (3.x if `useJackson3=true`) **webclient** HTTP client: Spring WebClient 5.1.18 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **restclient** HTTP client: Spring RestClient 6.1.6 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`). Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) |okhttp-gson|
+|library|library template (sub-template) to use|**jersey2** HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1 **jersey3** HTTP client: Jersey client 3.1.11. JSON processing: Jackson 2.x (3.x if `useJackson3=true`, requires Java 17+) **feign** HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **feign-hc5** HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1 **okhttp-gson** [DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'. **retrofit2** HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1 (Retrofit 2.5.0) or Jackson 2.17.1. Enable the RxJava adapter using '-DuseRxJava[2/3]=true'. (RxJava 1.x or 2.x or 3.x) **resttemplate** HTTP client: Spring RestTemplate 5.3.33 (6.2.x if `useJakartaEe=true`, 7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.x (3.x if `useJackson3=true`) **webclient** HTTP client: Spring WebClient 5.1.18 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **restclient** HTTP client: Spring RestClient 6.1.6 (7.x.x if `useSpringBoot4=true`). JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) **resteasy** HTTP client: Resteasy client 4.7.6. JSON processing: Jackson 2.17.1 **vertx** HTTP client: VertX client 3.5.2. JSON processing: Jackson 2.17.1 **google-api-client** HTTP client: Google API client 2.2.0. JSON processing: Jackson 2.17.1 **rest-assured** HTTP client: rest-assured 5.3.2. JSON processing: Gson 2.10.1 or Jackson 2.17.1. Only for Java 8 **native** HTTP client: Java native HttpClient. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`). Only for Java11+ **microprofile** HTTP client: Microprofile client 2.0 (default, set desired version via `microprofileRestClientVersion=x.x.x`). JSON processing: JSON-B 1.0.2 or Jackson 2.17.1 **apache-httpclient** HTTP client: Apache httpclient 5.2.1. JSON processing: Jackson 2.17.1 (3.x if `useJackson3=true`) |okhttp-gson|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
|microprofileFramework|Framework for microprofile. Possible values "kumuluzee"| |null|
@@ -98,7 +98,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|useDeductionForOneOfInterfaces|Annotate discriminator-free oneOf interfaces with Jackson's @JsonTypeInfo(use = Id.DEDUCTION) and @JsonSubTypes so the concrete subtype is resolved from the JSON field set rather than a type-tag property. Has no effect when a discriminator is present (name-based resolution is used instead). Requires subtypes to have structurally distinct sets of properties.| |false|
|useEnumCaseInsensitive|Use `equalsIgnoreCase` when String for enum comparison| |false|
|useGzipFeature|Send gzip-encoded requests| |false|
-|useJackson3|Use Jackson 3 instead of Jackson 2. Supported for 'native' and 'apache-httpclient' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).| |false|
+|useJackson3|Use Jackson 3 instead of Jackson 2. Supported for 'native', 'apache-httpclient', and 'jersey3' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).| |false|
|useJakartaEe|whether to use Jakarta EE namespace instead of javax| |false|
|useJspecify|Use Jspecify for null checks. Only supported for [native, restclient, resttemplate, webclient]| |false|
|useOneOfDiscriminatorLookup|Use the discriminator's mapping in oneOf to speed up the model lookup. IMPORTANT: Validation (e.g. one and only one match in oneOf's schemas) will be skipped. Only jersey2, jersey3, native, okhttp-gson support this option.| |false|
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
index 1cad2361a810..f779be9ed183 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/JavaClientCodegen.java
@@ -280,7 +280,7 @@ public JavaClientCodegen() {
cliOptions.add(CliOption.newBoolean(SUPPORT_URL_QUERY, "Generate toUrlQueryString in POJO (default to true). Available on `native`, `apache-httpclient` libraries."));
cliOptions.add(CliOption.newBoolean(USE_ENUM_CASE_INSENSITIVE, "Use `equalsIgnoreCase` when String for enum comparison", useEnumCaseInsensitive));
cliOptions.add(CliOption.newBoolean(FAIL_ON_UNKNOWN_PROPERTIES, "Fail Jackson de-serialization on unknown properties", this.failOnUnknownProperties));
- cliOptions.add(CliOption.newBoolean(USE_JACKSON_3, "Use Jackson 3 instead of Jackson 2. Supported for 'native' and 'apache-httpclient' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).", this.useJackson3));
+ cliOptions.add(CliOption.newBoolean(USE_JACKSON_3, "Use Jackson 3 instead of Jackson 2. Supported for 'native', 'apache-httpclient', and 'jersey3' libraries (requires Java 17+) and for Spring 'resttemplate', 'webclient', and 'restclient' libraries (require useSpringBoot4=true).", this.useJackson3));
cliOptions.add(CliOption.newBoolean(SUPPORT_VERTX_FUTURE, "Also generate api methods that return a vertx Future instead of taking a callback. Only `vertx` supports this option. Requires vertx 4 or greater.", this.supportVertxFuture));
cliOptions.add(CliOption.newBoolean(USE_SEALED_ONE_OF_INTERFACES, "Generate the oneOf interfaces as sealed interfaces. Only supported for WebClient and RestClient.", this.useSealedOneOfInterfaces));
cliOptions.add(CliOption.newBoolean(USE_UNARY_INTERCEPTOR, "If true it will generate ResponseInterceptors using a UnaryOperator. This can be usefull for manipulating the request before it gets passed, for example doing your own decryption", this.useUnaryInterceptor));
@@ -288,7 +288,7 @@ public JavaClientCodegen() {
cliOptions.add(CliOption.newBoolean(USE_DEDUCTION_FOR_ONE_OF_INTERFACES, USE_DEDUCTION_FOR_ONE_OF_INTERFACES_DESC, useDeductionForOneOfInterfaces));
supportedLibraries.put(JERSEY2, "HTTP client: Jersey client 2.25.1. JSON processing: Jackson 2.17.1");
- supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.1. JSON processing: Jackson 2.17.1");
+ supportedLibraries.put(JERSEY3, "HTTP client: Jersey client 3.1.11. JSON processing: Jackson 2.x (3.x if `useJackson3=true`, requires Java 17+)");
supportedLibraries.put(FEIGN, "HTTP client: OpenFeign 13.2.1. JSON processing: Jackson 2.17.1 or Gson 2.10.1");
supportedLibraries.put(FEIGN_HC5, "HTTP client: OpenFeign 13.2.1/HttpClient5 5.4.2. JSON processing: Jackson 2.17.1 or Gson 2.10.1");
supportedLibraries.put(OKHTTP_GSON, "[DEFAULT] HTTP client: OkHttp 4.11.0. JSON processing: Gson 2.10.1. Enable Parcelable models on Android using '-DparcelableModel=true'. Enable gzip request encoding using '-DuseGzipFeature=true'.");
@@ -402,8 +402,8 @@ public void processOpts() {
convertPropertyToBooleanAndWriteBack(USE_SPRING_BOOT4, this::setUseSpringBoot4);
if (useJackson3 && (libRestClient || libRestTemplate || libWebClient) && !useSpringBoot4) {
throw new IllegalArgumentException("useJackson3 for the restclient, resttemplate, and webclient libraries requires useSpringBoot4=true");
- } else if (useJackson3 && !libNative && !libApache && !libRestClient && !libRestTemplate && !libWebClient) {
- throw new IllegalArgumentException("useJackson3 is only supported for the 'native', 'apache-httpclient', 'restclient', 'resttemplate', and 'webclient' libraries. " +
+ } else if (useJackson3 && !libNative && !libApache && !libJersey3 && !libRestClient && !libRestTemplate && !libWebClient) {
+ throw new IllegalArgumentException("useJackson3 is only supported for the 'native', 'apache-httpclient', 'jersey3', 'restclient', 'resttemplate', and 'webclient' libraries. " +
"The Spring libraries also require useSpringBoot4=true.");
}
@@ -846,7 +846,7 @@ public void processOpts() {
additionalProperties.remove(SERIALIZATION_LIBRARY_GSON);
additionalProperties.remove(SERIALIZATION_LIBRARY_JSONB);
supportingFiles.add(new SupportingFile("RFC3339DateFormat.mustache", invokerFolder, "RFC3339DateFormat.java"));
- if (!useJackson3 || libNative || libApache || libRestTemplate || libWebClient) {
+ if (!useJackson3 || libNative || libApache || libJersey3 || libRestTemplate || libWebClient) {
supportingFiles.add(new SupportingFile("RFC3339InstantDeserializer.mustache", invokerFolder, "RFC3339InstantDeserializer.java"));
supportingFiles.add(new SupportingFile("RFC3339JavaTimeModule.mustache", invokerFolder, "RFC3339JavaTimeModule.java"));
}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache
index 67b0ca6f0ab9..c5d1cbcb64b5 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/ApiClient.mustache
@@ -19,7 +19,12 @@ import com.github.scribejava.core.model.OAuth2AccessToken;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.client.HttpUrlConnectorProvider;
+{{^useJackson3}}
import org.glassfish.jersey.jackson.JacksonFeature;
+{{/useJackson3}}
+{{#useJackson3}}
+import tools.jackson.jakarta.rs.json.JacksonJsonProvider;
+{{/useJackson3}}
import org.glassfish.jersey.media.multipart.FormDataBodyPart;
import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
import org.glassfish.jersey.media.multipart.MultiPart;
@@ -1436,7 +1441,12 @@ public class ApiClient{{#jsr310}} extends JavaTimeFormatter{{/jsr310}} {
ClientConfig clientConfig = new ClientConfig();
clientConfig.register(MultiPartFeature.class);
clientConfig.register(json);
+ {{^useJackson3}}
clientConfig.register(JacksonFeature.class);
+ {{/useJackson3}}
+ {{#useJackson3}}
+ clientConfig.register(new JacksonJsonProvider((tools.jackson.databind.json.JsonMapper) json.getMapper()));
+ {{/useJackson3}}
clientConfig.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
// turn off compliance validation to be able to send payloads with DELETE calls
clientConfig.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/JSON.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/JSON.mustache
index 55b6e232c74e..6d47db24cc00 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/JSON.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/JSON.mustache
@@ -3,14 +3,23 @@
package {{invokerPackage}};
import com.fasterxml.jackson.annotation.*;
-import com.fasterxml.jackson.databind.*;
-import com.fasterxml.jackson.databind.json.JsonMapper;
+import {{jacksonPackage}}.databind.*;
+import {{jacksonPackage}}.databind.json.JsonMapper;
+{{^useJackson3}}
{{#openApiNullable}}
import org.openapitools.jackson.nullable.JsonNullableModule;
{{/openApiNullable}}
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+{{/useJackson3}}
+{{#useJackson3}}
+import tools.jackson.databind.cfg.DateTimeFeature;
+import tools.jackson.databind.cfg.EnumFeature;
+{{#openApiNullable}}
+import org.openapitools.jackson.nullable.JsonNullableJackson3Module;
+{{/openApiNullable}}
+{{/useJackson3}}
{{#joda}}
-import com.fasterxml.jackson.datatype.joda.JodaModule;
+import {{jacksonPackage}}.datatype.joda.JodaModule;
{{/joda}}
import java.text.DateFormat;
@@ -27,6 +36,7 @@ public class JSON implements ContextResolver {
private ObjectMapper mapper;
public JSON() {
+ {{^useJackson3}}
mapper = JsonMapper.builder()
.serializationInclusion(JsonInclude.Include.NON_NULL)
.configure(MapperFeature.ALLOW_COERCION_OF_SCALARS, false)
@@ -45,6 +55,31 @@ public class JSON implements ContextResolver {
{{/openApiNullable}}
.addModule(new RFC3339JavaTimeModule())
.build();
+ {{/useJackson3}}
+ {{#useJackson3}}
+ JsonMapper.Builder jsonMapperBuilder = JsonMapper.builder()
+ .changeDefaultPropertyInclusion(v -> v.withValueInclusion(JsonInclude.Include.NON_NULL))
+ .disable(MapperFeature.ALLOW_COERCION_OF_SCALARS)
+ {{#failOnUnknownProperties}}
+ .enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ {{/failOnUnknownProperties}}
+ {{^failOnUnknownProperties}}
+ .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ {{/failOnUnknownProperties}}
+ .enable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE)
+ .disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
+ .enable(EnumFeature.WRITE_ENUMS_USING_TO_STRING)
+ .enable(EnumFeature.READ_ENUMS_USING_TO_STRING)
+ .defaultDateFormat(new RFC3339DateFormat());
+ {{#joda}}
+ jsonMapperBuilder.addModule(new JodaModule());
+ {{/joda}}
+ {{#openApiNullable}}
+ jsonMapperBuilder.addModule(new JsonNullableJackson3Module());
+ {{/openApiNullable}}
+ jsonMapperBuilder.addModule(new RFC3339JavaTimeModule());
+ mapper = jsonMapperBuilder.build();
+ {{/useJackson3}}
}
/**
@@ -52,7 +87,12 @@ public class JSON implements ContextResolver {
* @param dateFormat Date format
*/
public void setDateFormat(DateFormat dateFormat) {
+ {{^useJackson3}}
mapper.setDateFormat(dateFormat);
+ {{/useJackson3}}
+ {{#useJackson3}}
+ mapper = ((JsonMapper) mapper).rebuild().defaultDateFormat(dateFormat).build();
+ {{/useJackson3}}
}
@Override
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/anyof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/anyof_model.mustache
index 803d3ee62c8b..b47799493dfe 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/anyof_model.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/anyof_model.mustache
@@ -1,24 +1,33 @@
import {{javaxPackage}}.ws.rs.core.GenericType;
import {{javaxPackage}}.ws.rs.core.Response;
+{{^useJackson3}}
import java.io.IOException;
+{{/useJackson3}}
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
+{{^useJackson3}}
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+{{/useJackson3}}
+{{#useJackson3}}
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.DatabindException;
+import tools.jackson.databind.SerializationContext;
+{{/useJackson3}}
+import {{jacksonPackage}}.core.JsonGenerator;
+import {{jacksonPackage}}.core.JsonParser;
+import {{jacksonPackage}}.core.type.TypeReference;
+import {{jacksonPackage}}.databind.DeserializationContext;
+import {{jacksonPackage}}.databind.JsonNode;
+import {{jacksonPackage}}.databind.annotation.JsonDeserialize;
+import {{jacksonPackage}}.databind.annotation.JsonSerialize;
+import {{jacksonPackage}}.databind.deser.std.StdDeserializer;
+import {{jacksonPackage}}.databind.ser.std.StdSerializer;
import {{invokerPackage}}.JSON;
{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>xmlAnnotation}}
@@ -37,8 +46,13 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
}
@Override
- public void serialize({{classname}} value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
+ public void serialize({{classname}} value, JsonGenerator jgen, {{^useJackson3}}SerializerProvider provider{{/useJackson3}}{{#useJackson3}}SerializationContext serializationContext{{/useJackson3}}) throws {{^useJackson3}}IOException, JsonProcessingException{{/useJackson3}}{{#useJackson3}}JacksonException{{/useJackson3}} {
+{{^useJackson3}}
jgen.writeObject(value.getActualInstance());
+{{/useJackson3}}
+{{#useJackson3}}
+ serializationContext.writeValue(jgen, value.getActualInstance());
+{{/useJackson3}}
}
}
@@ -52,7 +66,7 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
}
@Override
- public {{classname}} deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ public {{classname}} deserialize(JsonParser jp, DeserializationContext ctxt) throws {{^useJackson3}}IOException, JsonProcessingException{{/useJackson3}}{{#useJackson3}}JacksonException{{/useJackson3}} {
JsonNode tree = ctxt.readTree(jp);
Object deserialized = null;
@@ -62,7 +76,12 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
// When the OAS schema includes a discriminator, use the discriminator value to
// discriminate the anyOf schemas.
// Get the discriminator mapping value to get the class.
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs(cls);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, ctxt.constructType(cls));
+{{/useJackson3}}
{{classname}} ret = new {{classname}}();
ret.setActualInstance(deserialized);
return ret;
@@ -74,16 +93,31 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
try {
{{^isArray}}
{{^isMap}}
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs({{{dataType}}}.class);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, {{{dataType}}}.class);
+{{/useJackson3}}
{{/isMap}}
{{/isArray}}
{{#isArray}}
final TypeReference<{{{dataType}}}> ref = new TypeReference<{{{dataType}}}>(){};
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs(ref);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, ctxt.getTypeFactory().constructType(ref));
+{{/useJackson3}}
{{/isArray}}
{{#isMap}}
final TypeReference<{{{dataType}}}> ref = new TypeReference<{{{dataType}}}>(){};
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs(ref);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, ctxt.getTypeFactory().constructType(ref));
+{{/useJackson3}}
{{/isMap}}
{{classname}} ret = new {{classname}}();
ret.setActualInstance(deserialized);
@@ -95,19 +129,34 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
{{/anyOf}}
{{/composedSchemas}}
+{{^useJackson3}}
throw new IOException("Failed deserialization for {{classname}}: no match found");
+{{/useJackson3}}
+{{#useJackson3}}
+ throw DatabindException.from(jp, "Failed deserialization for {{classname}}: no match found");
+{{/useJackson3}}
}
/**
* Handle deserialization of the 'null' value.
*/
@Override
+{{^useJackson3}}
public {{classname}} getNullValue(DeserializationContext ctxt) throws JsonMappingException {
+{{/useJackson3}}
+{{#useJackson3}}
+ public {{classname}} getNullValue(DeserializationContext ctxt) {
+{{/useJackson3}}
{{#isNullable}}
return null;
{{/isNullable}}
{{^isNullable}}
+{{^useJackson3}}
throw new JsonMappingException(ctxt.getParser(), "{{classname}} cannot be null");
+{{/useJackson3}}
+{{#useJackson3}}
+ throw DatabindException.from(ctxt.getParser(), "{{classname}} cannot be null");
+{{/useJackson3}}
{{/isNullable}}
}
}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache
index 01cb55a9abf6..f0742b8282dc 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/build.gradle.mustache
@@ -99,9 +99,15 @@ if(hasProperty('target') && target == 'android') {
ext {
swagger_annotations_version = "1.6.5"
+ {{^useJackson3}}
jackson_version = "2.21.1"
jackson_annotations_version = "2.21"
jackson_databind_version = "2.21.1"
+ {{/useJackson3}}
+ {{#useJackson3}}
+ jackson3_version = "3.1.0"
+ jackson_annotations_version = "2.21"
+ {{/useJackson3}}
{{#openApiNullable}}
jackson_databind_nullable_version = "0.2.10"
{{/openApiNullable}}
@@ -128,18 +134,35 @@ dependencies {
implementation "org.glassfish.jersey.core:jersey-client:$jersey_version"
implementation "org.glassfish.jersey.inject:jersey-hk2:$jersey_version"
implementation "org.glassfish.jersey.media:jersey-media-multipart:$jersey_version"
+ {{^useJackson3}}
implementation "org.glassfish.jersey.media:jersey-media-json-jackson:$jersey_version"
+ {{/useJackson3}}
implementation "org.glassfish.jersey.connectors:jersey-apache-connector:$jersey_version"
+ {{^useJackson3}}
implementation "com.fasterxml.jackson.core:jackson-core:$jackson_version"
implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_annotations_version"
implementation "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version"
+ {{/useJackson3}}
+ {{#useJackson3}}
+ implementation "tools.jackson.core:jackson-core:$jackson3_version"
+ implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_annotations_version"
+ implementation "tools.jackson.core:jackson-databind:$jackson3_version"
+ implementation "tools.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$jackson3_version"
+ {{/useJackson3}}
{{#openApiNullable}}
implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version"
{{/openApiNullable}}
{{#joda}}
+ {{^useJackson3}}
implementation "com.fasterxml.jackson.datatype:jackson-datatype-joda:$jackson_version"
+ {{/useJackson3}}
+ {{#useJackson3}}
+ implementation "tools.jackson.datatype:jackson-datatype-joda:$jackson3_version"
+ {{/useJackson3}}
{{/joda}}
+ {{^useJackson3}}
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:$jackson_version"
+ {{/useJackson3}}
{{#hasOAuthMethods}}
implementation "com.github.scribejava:scribejava-apis:$scribejava_apis_version"
{{/hasOAuthMethods}}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/model.mustache
index 2758278aceed..55d31a2d2d94 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/model.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/model.mustache
@@ -54,7 +54,7 @@ import {{invokerPackage}}.JSON;
{{#model}}
{{#oneOf}}
{{#-first}}
-import com.fasterxml.jackson.core.type.TypeReference;
+import {{jacksonPackage}}.core.type.TypeReference;
{{/-first}}
{{/oneOf}}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/oneof_model.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/oneof_model.mustache
index dcbfdf49f678..0d289cc52d1e 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/oneof_model.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/oneof_model.mustache
@@ -1,26 +1,37 @@
import {{javaxPackage}}.ws.rs.core.GenericType;
import {{javaxPackage}}.ws.rs.core.Response;
+{{^useJackson3}}
import java.io.IOException;
+{{/useJackson3}}
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
-import com.fasterxml.jackson.core.JsonGenerator;
-import com.fasterxml.jackson.core.JsonParser;
+{{^useJackson3}}
import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.SerializerProvider;
-import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
-import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.deser.std.StdDeserializer;
-import com.fasterxml.jackson.databind.ser.std.StdSerializer;
+{{/useJackson3}}
+{{#useJackson3}}
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.DatabindException;
+import tools.jackson.databind.SerializationContext;
+{{/useJackson3}}
+import {{jacksonPackage}}.core.JsonGenerator;
+import {{jacksonPackage}}.core.JsonParser;
+import {{jacksonPackage}}.core.JsonToken;
+import {{jacksonPackage}}.core.type.TypeReference;
+import {{jacksonPackage}}.databind.DeserializationContext;
+import {{jacksonPackage}}.databind.JsonNode;
+{{^useJackson3}}
+import com.fasterxml.jackson.databind.MapperFeature;
+{{/useJackson3}}
+import {{jacksonPackage}}.databind.annotation.JsonDeserialize;
+import {{jacksonPackage}}.databind.annotation.JsonSerialize;
+import {{jacksonPackage}}.databind.deser.std.StdDeserializer;
+import {{jacksonPackage}}.databind.ser.std.StdSerializer;
import {{invokerPackage}}.JSON;
{{>additionalModelTypeAnnotations}}{{>generatedAnnotation}}{{>xmlAnnotation}}
@@ -39,8 +50,13 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
}
@Override
- public void serialize({{classname}} value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException {
+ public void serialize({{classname}} value, JsonGenerator jgen, {{^useJackson3}}SerializerProvider provider{{/useJackson3}}{{#useJackson3}}SerializationContext serializationContext{{/useJackson3}}) throws {{^useJackson3}}IOException, JsonProcessingException{{/useJackson3}}{{#useJackson3}}JacksonException{{/useJackson3}} {
+{{^useJackson3}}
jgen.writeObject(value.getActualInstance());
+{{/useJackson3}}
+{{#useJackson3}}
+ serializationContext.writeValue(jgen, value.getActualInstance());
+{{/useJackson3}}
}
}
@@ -54,18 +70,28 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
}
@Override
- public {{classname}} deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
+ public {{classname}} deserialize(JsonParser jp, DeserializationContext ctxt) throws {{^useJackson3}}IOException, JsonProcessingException{{/useJackson3}}{{#useJackson3}}JacksonException{{/useJackson3}} {
JsonNode tree = ctxt.readTree(jp);
Object deserialized = null;
{{#useOneOfDiscriminatorLookup}}
{{#discriminator}}
{{classname}} new{{classname}} = new {{classname}}();
+{{^useJackson3}}
Map result2 = tree.traverse(jp.getCodec()).readValueAs(new TypeReference>() {});
+{{/useJackson3}}
+{{#useJackson3}}
+ Map result2 = ctxt.readTreeAsValue(tree, ctxt.getTypeFactory().constructType(new TypeReference>() {}));
+{{/useJackson3}}
String discriminatorValue = (String)result2.get("{{{propertyBaseName}}}");
switch (discriminatorValue) {
{{#mappedModels}}
case "{{{mappingName}}}":
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs({{{modelName}}}.class);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, {{{modelName}}}.class);
+{{/useJackson3}}
new{{classname}}.setActualInstance(deserialized);
return new{{classname}};
{{/mappedModels}}
@@ -75,9 +101,19 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
{{/discriminator}}
{{/useOneOfDiscriminatorLookup}}
+{{^useJackson3}}
boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS);
+{{/useJackson3}}
+{{#useJackson3}}
+ boolean typeCoercion = false; // MapperFeature.ALLOW_COERCION_OF_SCALARS was removed in Jackson 3
+{{/useJackson3}}
int match = 0;
+{{^useJackson3}}
JsonToken token = tree.traverse(jp.getCodec()).nextToken();
+{{/useJackson3}}
+{{#useJackson3}}
+ JsonToken token = tree.asToken();
+{{/useJackson3}}
{{#composedSchemas}}
{{#oneOf}}
// deserialize {{{dataType}}}{{#isNullable}} (nullable){{/isNullable}}
@@ -122,10 +158,20 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
if (attemptParsing) {
{{#isMap}}
final TypeReference<{{{dataType}}}> ref = new TypeReference<{{{dataType}}}>(){};
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs(ref);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, ctxt.getTypeFactory().constructType(ref));
+{{/useJackson3}}
{{/isMap}}
{{^isMap}}
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs({{{dataType}}}.class);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, {{{dataType}}}.class);
+{{/useJackson3}}
{{/isMap}}
// TODO: there is no validation against JSON schema constraints
// (min, max, enum, pattern...), this does not perform a strict JSON
@@ -137,7 +183,12 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
{{#isArray}}
if (token == JsonToken.START_ARRAY) {
final TypeReference<{{{dataType}}}> ref = new TypeReference<{{{dataType}}}>(){};
+{{^useJackson3}}
deserialized = tree.traverse(jp.getCodec()).readValueAs(ref);
+{{/useJackson3}}
+{{#useJackson3}}
+ deserialized = ctxt.readTreeAsValue(tree, ctxt.getTypeFactory().constructType(ref));
+{{/useJackson3}}
// TODO: there is no validation against JSON schema constraints
// (min, max, enum, pattern...), this does not perform a strict JSON
// validation, which means the 'match' count may be higher than it should be.
@@ -157,19 +208,34 @@ public class {{classname}} extends AbstractOpenApiSchema{{#vendorExtensions.x-im
ret.setActualInstance(deserialized);
return ret;
}
+{{^useJackson3}}
throw new IOException(String.format(java.util.Locale.ROOT, "Failed deserialization for {{classname}}: %d classes match result, expected 1", match));
+{{/useJackson3}}
+{{#useJackson3}}
+ throw DatabindException.from(jp, String.format(java.util.Locale.ROOT, "Failed deserialization for {{classname}}: %d classes match result, expected 1", match));
+{{/useJackson3}}
}
/**
* Handle deserialization of the 'null' value.
*/
@Override
+{{^useJackson3}}
public {{classname}} getNullValue(DeserializationContext ctxt) throws JsonMappingException {
+{{/useJackson3}}
+{{#useJackson3}}
+ public {{classname}} getNullValue(DeserializationContext ctxt) {
+{{/useJackson3}}
{{#isNullable}}
return null;
{{/isNullable}}
{{^isNullable}}
+{{^useJackson3}}
throw new JsonMappingException(ctxt.getParser(), "{{classname}} cannot be null");
+{{/useJackson3}}
+{{#useJackson3}}
+ throw DatabindException.from(ctxt.getParser(), "{{classname}} cannot be null");
+{{/useJackson3}}
{{/isNullable}}
}
}
diff --git a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache
index 063c932664a8..264ec8f551b3 100644
--- a/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache
+++ b/modules/openapi-generator/src/main/resources/Java/libraries/jersey3/pom.mustache
@@ -296,13 +296,16 @@
jersey-media-multipart
${jersey-version}
+ {{^useJackson3}}
org.glassfish.jersey.media
jersey-media-json-jackson
${jersey-version}
+ {{/useJackson3}}
+ {{^useJackson3}}
com.fasterxml.jackson.core
jackson-core
@@ -318,6 +321,30 @@
jackson-databind
${jackson-databind-version}
+ {{/useJackson3}}
+ {{#useJackson3}}
+
+ tools.jackson.core
+ jackson-core
+ ${jackson3-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson-annotations-version}
+
+
+ tools.jackson.core
+ jackson-databind
+ ${jackson3-version}
+
+
+
+ tools.jackson.jakarta.rs
+ jackson-jakarta-rs-json-provider
+ ${jackson3-version}
+
+ {{/useJackson3}}
{{#openApiNullable}}
org.openapitools
@@ -334,17 +361,29 @@
{{/withXml}}
{{#joda}}
+ {{^useJackson3}}
com.fasterxml.jackson.datatype
jackson-datatype-joda
${jackson-version}
+ {{/useJackson3}}
+ {{#useJackson3}}
+
+ tools.jackson.datatype
+ jackson-datatype-joda
+ ${jackson3-version}
+
+ {{/useJackson3}}
{{/joda}}
+ {{^useJackson3}}
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
${jackson-version}
+ {{/useJackson3}}
+
{{#hasHttpSignatureMethods}}
org.tomitribe
@@ -405,9 +444,15 @@
2.2.15
{{/swagger2AnnotationLibrary}}
3.1.11
+ {{^useJackson3}}
2.21.1
2.21
2.21.1
+ {{/useJackson3}}
+ {{#useJackson3}}
+ 3.1.0
+ 2.21
+ {{/useJackson3}}
0.2.10
{{#useJakartaEe}}
3.0.0
diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jersey3/JavaJersey3Jackson3Test.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jersey3/JavaJersey3Jackson3Test.java
new file mode 100644
index 000000000000..9227fe14a69f
--- /dev/null
+++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jersey3/JavaJersey3Jackson3Test.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright 2018 OpenAPI-Generator Contributors (https://openapi-generator.tech)
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openapitools.codegen.java.jersey3;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import org.openapitools.codegen.ClientOptInput;
+import org.openapitools.codegen.DefaultGenerator;
+import org.openapitools.codegen.TestUtils;
+import org.openapitools.codegen.config.CodegenConfigurator;
+import org.openapitools.codegen.languages.JavaClientCodegen;
+import org.testng.annotations.Test;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.List;
+
+import static org.testng.Assert.assertThrows;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
+
+/**
+ * Verifies that the jersey3 library generates Jackson-3-compatible code
+ * when {@code useJackson3=true} is set.
+ */
+public class JavaJersey3Jackson3Test {
+
+ private static final String PETSTORE_SPEC = "src/test/resources/3_0/petstore.yaml";
+
+ /**
+ * useJackson3=true combined with library=jersey3 should succeed (regression guard).
+ * Before this feature, JavaClientCodegen.processOpts threw IllegalArgumentException
+ * for any library other than native/apache-httpclient/spring-*.
+ */
+ @Test
+ public void jersey3WithJackson3DoesNotThrow() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson3-positive");
+ output.toFile().deleteOnExit();
+
+ List files = generate(output, true);
+ assertTrue(!files.isEmpty(), "Generation should produce files");
+ }
+
+ /**
+ * useJackson3=true with an unsupported library should still throw. Sanity check that
+ * we didn't accidentally open the gate too wide.
+ */
+ @Test
+ public void jackson3WithUnsupportedLibraryStillThrows() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson3-negative");
+ output.toFile().deleteOnExit();
+
+ final OpenAPI openAPI = TestUtils.parseFlattenSpec(PETSTORE_SPEC);
+ final JavaClientCodegen codegen = new JavaClientCodegen();
+ codegen.setLibrary(JavaClientCodegen.JERSEY2);
+ codegen.setOpenAPI(openAPI);
+ codegen.setOutputDir(output.toAbsolutePath().toString());
+ codegen.additionalProperties().put(JavaClientCodegen.USE_JACKSON_3, "true");
+
+ ClientOptInput input = new ClientOptInput().openAPI(openAPI).config(codegen);
+ DefaultGenerator generator = new DefaultGenerator();
+ generator.setGenerateMetadata(false);
+
+ assertThrows(IllegalArgumentException.class, () -> generator.opts(input).generate());
+ }
+
+ /**
+ * Generated pom.xml should pull tools.jackson.* artifacts (not com.fasterxml.jackson.core)
+ * and add the Jackson 3 JAX-RS provider (jackson-jakarta-rs-json-provider) instead of
+ * jersey-media-json-jackson (which is Jackson 2 only).
+ */
+ @Test
+ public void pomReferencesJackson3Artifacts() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson3-pom");
+ output.toFile().deleteOnExit();
+ generate(output, true);
+
+ String pom = Files.readString(output.resolve("pom.xml"));
+ assertTrue(pom.contains("tools.jackson.core "),
+ "pom.xml should depend on tools.jackson.core artifacts");
+ assertTrue(pom.contains("jackson-jakarta-rs-json-provider"),
+ "pom.xml should pull the Jackson 3 JAX-RS provider");
+ assertTrue(!pom.contains("jersey-media-json-jackson "),
+ "pom.xml should not pull Jackson-2-only jersey-media-json-jackson");
+ assertTrue(pom.contains(""),
+ "pom.xml should declare a jackson3-version property");
+ }
+
+ /**
+ * Generated JSON.java should import {@code tools.jackson.databind.*} and register the
+ * {@link tools.jackson.databind.json.JsonMapper}-style builder, plus
+ * {@code JsonNullableJackson3Module} (not the Jackson-2 one).
+ */
+ @Test
+ public void jsonClassUsesJackson3Apis() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson3-json");
+ output.toFile().deleteOnExit();
+ generate(output, true);
+
+ Path jsonJava = findFirst(output, "JSON.java");
+ String contents = Files.readString(jsonJava);
+ assertTrue(contents.contains("import tools.jackson.databind."),
+ "JSON.java should import tools.jackson.databind.*");
+ assertTrue(contents.contains("import tools.jackson.databind.json.JsonMapper;"),
+ "JSON.java should import JsonMapper from tools.jackson");
+ assertTrue(!contents.contains("import com.fasterxml.jackson.databind.json.JsonMapper;"),
+ "JSON.java should not import the Jackson 2 JsonMapper");
+ assertTrue(!contents.contains("import org.openapitools.jackson.nullable.JsonNullableModule;"),
+ "JSON.java should not import the Jackson 2 JsonNullableModule");
+ }
+
+ /**
+ * Generated ApiClient.java should register the Jackson 3 JAX-RS provider in place of
+ * Jersey's JacksonFeature (which is hard-wired to Jackson 2).
+ */
+ @Test
+ public void apiClientRegistersJackson3Provider() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson3-apiclient");
+ output.toFile().deleteOnExit();
+ generate(output, true);
+
+ Path apiClient = findFirst(output, "ApiClient.java");
+ String contents = Files.readString(apiClient);
+ assertTrue(contents.contains("tools.jackson.jakarta.rs.json.JacksonJsonProvider"),
+ "ApiClient.java should import the Jackson 3 JAX-RS JsonProvider");
+ assertTrue(!contents.contains("org.glassfish.jersey.jackson.JacksonFeature"),
+ "ApiClient.java should not import Jersey's Jackson 2-only JacksonFeature");
+ }
+
+ /**
+ * With useJackson3=false (the default), generated code should remain on Jackson 2 —
+ * guards against silently flipping the default.
+ */
+ @Test
+ public void defaultIsJackson2() throws Exception {
+ Path output = Files.createTempDirectory("jersey3-jackson2-default");
+ output.toFile().deleteOnExit();
+ generate(output, false);
+
+ Path apiClient = findFirst(output, "ApiClient.java");
+ String contents = Files.readString(apiClient);
+ assertTrue(contents.contains("org.glassfish.jersey.jackson.JacksonFeature"),
+ "Default (useJackson3=false) should still use Jersey's Jackson 2 JacksonFeature");
+ assertTrue(!contents.contains("tools.jackson"),
+ "Default ApiClient.java should not reference tools.jackson");
+ }
+
+ private List generate(Path outputDir, boolean useJackson3) throws Exception {
+ CodegenConfigurator configurator = new CodegenConfigurator()
+ .setGeneratorName("java")
+ .setLibrary(JavaClientCodegen.JERSEY3)
+ .setInputSpec(PETSTORE_SPEC)
+ .setOutputDir(outputDir.toAbsolutePath().toString());
+ configurator.addAdditionalProperty(JavaClientCodegen.USE_JACKSON_3, useJackson3);
+ DefaultGenerator generator = new DefaultGenerator();
+ generator.setGenerateMetadata(false);
+ return generator.opts(configurator.toClientOptInput()).generate();
+ }
+
+ private Path findFirst(Path root, String fileName) throws Exception {
+ try (var stream = Files.walk(root)) {
+ return stream.filter(p -> p.getFileName().toString().equals(fileName))
+ .findFirst()
+ .orElseThrow(() -> new AssertionError(fileName + " not generated under " + root));
+ }
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/.github/workflows/maven.yml b/samples/client/petstore/java/jersey3-jackson3/.github/workflows/maven.yml
new file mode 100644
index 000000000000..460f78bfd1b2
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.github/workflows/maven.yml
@@ -0,0 +1,30 @@
+# This workflow will build a Java project with Maven, and cache/restore any dependencies to improve the workflow execution time
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+#
+# This file is auto-generated by OpenAPI Generator (https://openapi-generator.tech)
+
+name: Java CI with Maven
+
+on:
+ push:
+ branches: [ main, master ]
+ pull_request:
+ branches: [ main, master ]
+
+jobs:
+ build:
+ name: Build OpenAPI Petstore
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 17, 21 ]
+ steps:
+ - uses: actions/checkout@v4
+ - name: Set up JDK
+ uses: actions/setup-java@v4
+ with:
+ java-version: ${{ matrix.java }}
+ distribution: 'temurin'
+ cache: maven
+ - name: Build with Maven
+ run: mvn -B package --no-transfer-progress --file pom.xml
diff --git a/samples/client/petstore/java/jersey3-jackson3/.gitignore b/samples/client/petstore/java/jersey3-jackson3/.gitignore
new file mode 100644
index 000000000000..a530464afa1b
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.gitignore
@@ -0,0 +1,21 @@
+*.class
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+*.jar
+*.war
+*.ear
+
+# exclude jar for gradle wrapper
+!gradle/wrapper/*.jar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+# build files
+**/target
+target
+.gradle
+build
diff --git a/samples/client/petstore/java/jersey3-jackson3/.openapi-generator-ignore b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator-ignore
new file mode 100644
index 000000000000..7484ee590a38
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/FILES b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/FILES
new file mode 100644
index 000000000000..a5e9fa6f120e
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/FILES
@@ -0,0 +1,207 @@
+.github/workflows/maven.yml
+.gitignore
+.travis.yml
+README.md
+api/openapi.yaml
+build.gradle
+build.sbt
+docs/AdditionalPropertiesClass.md
+docs/AllOfRefToDouble.md
+docs/AllOfRefToFloat.md
+docs/AllOfRefToLong.md
+docs/Animal.md
+docs/AnotherFakeApi.md
+docs/Apple.md
+docs/AppleReq.md
+docs/ArrayOfArrayOfNumberOnly.md
+docs/ArrayOfNumberOnly.md
+docs/ArrayTest.md
+docs/Banana.md
+docs/BananaReq.md
+docs/BasquePig.md
+docs/Capitalization.md
+docs/Cat.md
+docs/Category.md
+docs/ChildCat.md
+docs/ClassModel.md
+docs/Client.md
+docs/ComplexQuadrilateral.md
+docs/DanishPig.md
+docs/DefaultApi.md
+docs/DeprecatedObject.md
+docs/Dog.md
+docs/Drawing.md
+docs/EnumArrays.md
+docs/EnumClass.md
+docs/EnumTest.md
+docs/EquilateralTriangle.md
+docs/FakeApi.md
+docs/FakeClassnameTags123Api.md
+docs/FileSchemaTestClass.md
+docs/Foo.md
+docs/FooGetDefaultResponse.md
+docs/FormatTest.md
+docs/Fruit.md
+docs/FruitReq.md
+docs/GmFruit.md
+docs/GrandparentAnimal.md
+docs/HasOnlyReadOnly.md
+docs/HealthCheckResult.md
+docs/IsoscelesTriangle.md
+docs/Mammal.md
+docs/MammalAnyof.md
+docs/MapTest.md
+docs/MixedPropertiesAndAdditionalPropertiesClass.md
+docs/Model200Response.md
+docs/ModelApiResponse.md
+docs/ModelFile.md
+docs/ModelList.md
+docs/ModelReturn.md
+docs/Name.md
+docs/NullableClass.md
+docs/NullableShape.md
+docs/NumberOnly.md
+docs/ObjectWithDeprecatedFields.md
+docs/Order.md
+docs/OuterComposite.md
+docs/OuterEnum.md
+docs/OuterEnumDefaultValue.md
+docs/OuterEnumInteger.md
+docs/OuterEnumIntegerDefaultValue.md
+docs/ParentPet.md
+docs/Pet.md
+docs/PetApi.md
+docs/Pig.md
+docs/Quadrilateral.md
+docs/QuadrilateralInterface.md
+docs/ReadOnlyFirst.md
+docs/ScaleneTriangle.md
+docs/Shape.md
+docs/ShapeInterface.md
+docs/ShapeOrNull.md
+docs/SimpleQuadrilateral.md
+docs/SpecialModelName.md
+docs/StoreApi.md
+docs/Tag.md
+docs/TestInlineFreeformAdditionalPropertiesRequest.md
+docs/Triangle.md
+docs/TriangleInterface.md
+docs/User.md
+docs/UserApi.md
+docs/Whale.md
+docs/Zebra.md
+git_push.sh
+gradle.properties
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+pom.xml
+settings.gradle
+src/main/AndroidManifest.xml
+src/main/java/org/openapitools/client/ApiClient.java
+src/main/java/org/openapitools/client/ApiException.java
+src/main/java/org/openapitools/client/ApiResponse.java
+src/main/java/org/openapitools/client/Configuration.java
+src/main/java/org/openapitools/client/JSON.java
+src/main/java/org/openapitools/client/JavaTimeFormatter.java
+src/main/java/org/openapitools/client/Pair.java
+src/main/java/org/openapitools/client/RFC3339DateFormat.java
+src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
+src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
+src/main/java/org/openapitools/client/ServerConfiguration.java
+src/main/java/org/openapitools/client/ServerVariable.java
+src/main/java/org/openapitools/client/StringUtil.java
+src/main/java/org/openapitools/client/api/AnotherFakeApi.java
+src/main/java/org/openapitools/client/api/DefaultApi.java
+src/main/java/org/openapitools/client/api/FakeApi.java
+src/main/java/org/openapitools/client/api/FakeClassnameTags123Api.java
+src/main/java/org/openapitools/client/api/PetApi.java
+src/main/java/org/openapitools/client/api/StoreApi.java
+src/main/java/org/openapitools/client/api/UserApi.java
+src/main/java/org/openapitools/client/auth/ApiKeyAuth.java
+src/main/java/org/openapitools/client/auth/Authentication.java
+src/main/java/org/openapitools/client/auth/HttpBasicAuth.java
+src/main/java/org/openapitools/client/auth/HttpBearerAuth.java
+src/main/java/org/openapitools/client/auth/HttpSignatureAuth.java
+src/main/java/org/openapitools/client/auth/OAuth.java
+src/main/java/org/openapitools/client/auth/OAuthFlow.java
+src/main/java/org/openapitools/client/model/AbstractOpenApiSchema.java
+src/main/java/org/openapitools/client/model/AdditionalPropertiesClass.java
+src/main/java/org/openapitools/client/model/AllOfRefToDouble.java
+src/main/java/org/openapitools/client/model/AllOfRefToFloat.java
+src/main/java/org/openapitools/client/model/AllOfRefToLong.java
+src/main/java/org/openapitools/client/model/Animal.java
+src/main/java/org/openapitools/client/model/Apple.java
+src/main/java/org/openapitools/client/model/AppleReq.java
+src/main/java/org/openapitools/client/model/ArrayOfArrayOfNumberOnly.java
+src/main/java/org/openapitools/client/model/ArrayOfNumberOnly.java
+src/main/java/org/openapitools/client/model/ArrayTest.java
+src/main/java/org/openapitools/client/model/Banana.java
+src/main/java/org/openapitools/client/model/BananaReq.java
+src/main/java/org/openapitools/client/model/BasquePig.java
+src/main/java/org/openapitools/client/model/Capitalization.java
+src/main/java/org/openapitools/client/model/Cat.java
+src/main/java/org/openapitools/client/model/Category.java
+src/main/java/org/openapitools/client/model/ChildCat.java
+src/main/java/org/openapitools/client/model/ClassModel.java
+src/main/java/org/openapitools/client/model/Client.java
+src/main/java/org/openapitools/client/model/ComplexQuadrilateral.java
+src/main/java/org/openapitools/client/model/DanishPig.java
+src/main/java/org/openapitools/client/model/DeprecatedObject.java
+src/main/java/org/openapitools/client/model/Dog.java
+src/main/java/org/openapitools/client/model/Drawing.java
+src/main/java/org/openapitools/client/model/EnumArrays.java
+src/main/java/org/openapitools/client/model/EnumClass.java
+src/main/java/org/openapitools/client/model/EnumTest.java
+src/main/java/org/openapitools/client/model/EquilateralTriangle.java
+src/main/java/org/openapitools/client/model/FileSchemaTestClass.java
+src/main/java/org/openapitools/client/model/Foo.java
+src/main/java/org/openapitools/client/model/FooGetDefaultResponse.java
+src/main/java/org/openapitools/client/model/FormatTest.java
+src/main/java/org/openapitools/client/model/Fruit.java
+src/main/java/org/openapitools/client/model/FruitReq.java
+src/main/java/org/openapitools/client/model/GmFruit.java
+src/main/java/org/openapitools/client/model/GrandparentAnimal.java
+src/main/java/org/openapitools/client/model/HasOnlyReadOnly.java
+src/main/java/org/openapitools/client/model/HealthCheckResult.java
+src/main/java/org/openapitools/client/model/IsoscelesTriangle.java
+src/main/java/org/openapitools/client/model/Mammal.java
+src/main/java/org/openapitools/client/model/MammalAnyof.java
+src/main/java/org/openapitools/client/model/MapTest.java
+src/main/java/org/openapitools/client/model/MixedPropertiesAndAdditionalPropertiesClass.java
+src/main/java/org/openapitools/client/model/Model200Response.java
+src/main/java/org/openapitools/client/model/ModelApiResponse.java
+src/main/java/org/openapitools/client/model/ModelFile.java
+src/main/java/org/openapitools/client/model/ModelList.java
+src/main/java/org/openapitools/client/model/ModelReturn.java
+src/main/java/org/openapitools/client/model/Name.java
+src/main/java/org/openapitools/client/model/NullableClass.java
+src/main/java/org/openapitools/client/model/NullableShape.java
+src/main/java/org/openapitools/client/model/NumberOnly.java
+src/main/java/org/openapitools/client/model/ObjectWithDeprecatedFields.java
+src/main/java/org/openapitools/client/model/Order.java
+src/main/java/org/openapitools/client/model/OuterComposite.java
+src/main/java/org/openapitools/client/model/OuterEnum.java
+src/main/java/org/openapitools/client/model/OuterEnumDefaultValue.java
+src/main/java/org/openapitools/client/model/OuterEnumInteger.java
+src/main/java/org/openapitools/client/model/OuterEnumIntegerDefaultValue.java
+src/main/java/org/openapitools/client/model/ParentPet.java
+src/main/java/org/openapitools/client/model/Pet.java
+src/main/java/org/openapitools/client/model/Pig.java
+src/main/java/org/openapitools/client/model/Quadrilateral.java
+src/main/java/org/openapitools/client/model/QuadrilateralInterface.java
+src/main/java/org/openapitools/client/model/ReadOnlyFirst.java
+src/main/java/org/openapitools/client/model/ScaleneTriangle.java
+src/main/java/org/openapitools/client/model/Shape.java
+src/main/java/org/openapitools/client/model/ShapeInterface.java
+src/main/java/org/openapitools/client/model/ShapeOrNull.java
+src/main/java/org/openapitools/client/model/SimpleQuadrilateral.java
+src/main/java/org/openapitools/client/model/SpecialModelName.java
+src/main/java/org/openapitools/client/model/Tag.java
+src/main/java/org/openapitools/client/model/TestInlineFreeformAdditionalPropertiesRequest.java
+src/main/java/org/openapitools/client/model/Triangle.java
+src/main/java/org/openapitools/client/model/TriangleInterface.java
+src/main/java/org/openapitools/client/model/User.java
+src/main/java/org/openapitools/client/model/Whale.java
+src/main/java/org/openapitools/client/model/Zebra.java
diff --git a/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/VERSION b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/VERSION
new file mode 100644
index 000000000000..ca7bf6e46889
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.23.0-SNAPSHOT
diff --git a/samples/client/petstore/java/jersey3-jackson3/.travis.yml b/samples/client/petstore/java/jersey3-jackson3/.travis.yml
new file mode 100644
index 000000000000..1b6741c083c7
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/.travis.yml
@@ -0,0 +1,22 @@
+#
+# Generated by OpenAPI Generator: https://openapi-generator.tech
+#
+# Ref: https://docs.travis-ci.com/user/languages/java/
+#
+language: java
+jdk:
+ - openjdk12
+ - openjdk11
+ - openjdk10
+ - openjdk9
+ - openjdk8
+before_install:
+ # ensure gradlew has proper permission
+ - chmod a+x ./gradlew
+script:
+ # test using maven
+ #- mvn test
+ # test using gradle
+ - gradle test
+ # test using sbt
+ # - sbt test
diff --git a/samples/client/petstore/java/jersey3-jackson3/README.md b/samples/client/petstore/java/jersey3-jackson3/README.md
new file mode 100644
index 000000000000..5b37f35032af
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/README.md
@@ -0,0 +1,303 @@
+# petstore-jersey3-jackson3
+
+OpenAPI Petstore
+
+- API version: 1.0.0
+
+- Generator version: 7.23.0-SNAPSHOT
+
+This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+
+
+*Automatically generated by the [OpenAPI Generator](https://openapi-generator.tech)*
+
+## Requirements
+
+Building the API client library requires:
+
+1. Java 1.8+
+2. Maven/Gradle
+
+## Installation
+
+To install the API client library to your local Maven repository, simply execute:
+
+```shell
+mvn clean install
+```
+
+To deploy it to a remote Maven repository instead, configure the settings of the repository and execute:
+
+```shell
+mvn clean deploy
+```
+
+Refer to the [OSSRH Guide](http://central.sonatype.org/pages/ossrh-guide.html) for more information.
+
+### Maven users
+
+Add this dependency to your project's POM:
+
+```xml
+
+ org.openapitools
+ petstore-jersey3-jackson3
+ 1.0.0
+ compile
+
+```
+
+### Gradle users
+
+Add this dependency to your project's build file:
+
+```groovy
+ repositories {
+ mavenCentral() // Needed if the 'petstore-jersey3-jackson3' jar has been published to maven central.
+ mavenLocal() // Needed if the 'petstore-jersey3-jackson3' jar has been published to the local maven repo.
+ }
+
+ dependencies {
+ implementation "org.openapitools:petstore-jersey3-jackson3:1.0.0"
+ }
+```
+
+### Others
+
+At first generate the JAR by executing:
+
+```shell
+mvn clean package
+```
+
+Then manually install the following JARs:
+
+- `target/petstore-jersey3-jackson3-1.0.0.jar`
+- `target/lib/*.jar`
+
+## Getting Started
+
+Please follow the [installation](#installation) instruction and execute the following Java code:
+
+```java
+
+import org.openapitools.client.*;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.AnotherFakeApi;
+
+public class AnotherFakeApiExample {
+
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ AnotherFakeApi apiInstance = new AnotherFakeApi(defaultClient);
+ Client client = new Client(); // Client | client model
+ try {
+ Client result = apiInstance.call123testSpecialTags(client);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling AnotherFakeApi#call123testSpecialTags");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*AnotherFakeApi* | [**call123testSpecialTags**](docs/AnotherFakeApi.md#call123testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags
+*DefaultApi* | [**fooGet**](docs/DefaultApi.md#fooGet) | **GET** /foo |
+*FakeApi* | [**fakeHealthGet**](docs/FakeApi.md#fakeHealthGet) | **GET** /fake/health | Health check endpoint
+*FakeApi* | [**fakeOuterBooleanSerialize**](docs/FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean |
+*FakeApi* | [**fakeOuterCompositeSerialize**](docs/FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite |
+*FakeApi* | [**fakeOuterNumberSerialize**](docs/FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number |
+*FakeApi* | [**fakeOuterStringSerialize**](docs/FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string |
+*FakeApi* | [**getArrayOfEnums**](docs/FakeApi.md#getArrayOfEnums) | **GET** /fake/array-of-enums | Array of Enums
+*FakeApi* | [**postArrayOfString**](docs/FakeApi.md#postArrayOfString) | **POST** /fake/request-array-string | Array of string
+*FakeApi* | [**testAdditionalPropertiesReference**](docs/FakeApi.md#testAdditionalPropertiesReference) | **POST** /fake/additionalProperties-reference | test referenced additionalProperties
+*FakeApi* | [**testBodyWithFileSchema**](docs/FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema |
+*FakeApi* | [**testBodyWithQueryParams**](docs/FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params |
+*FakeApi* | [**testClientModel**](docs/FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model
+*FakeApi* | [**testEndpointParameters**](docs/FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+*FakeApi* | [**testEnumParameters**](docs/FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters
+*FakeApi* | [**testGroupParameters**](docs/FakeApi.md#testGroupParameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional)
+*FakeApi* | [**testInlineAdditionalProperties**](docs/FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties
+*FakeApi* | [**testInlineFreeformAdditionalProperties**](docs/FakeApi.md#testInlineFreeformAdditionalProperties) | **POST** /fake/inline-freeform-additionalProperties | test inline free-form additionalProperties
+*FakeApi* | [**testJsonFormData**](docs/FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data
+*FakeApi* | [**testQueryParameterCollectionFormat**](docs/FakeApi.md#testQueryParameterCollectionFormat) | **PUT** /fake/test-query-parameters |
+*FakeApi* | [**testStringMapReference**](docs/FakeApi.md#testStringMapReference) | **POST** /fake/stringMap-reference | test referenced string map
+*FakeClassnameTags123Api* | [**testClassname**](docs/FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case
+*PetApi* | [**addPet**](docs/PetApi.md#addPet) | **POST** /pet | Add a new pet to the store
+*PetApi* | [**deletePet**](docs/PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet
+*PetApi* | [**findPetsByStatus**](docs/PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status
+*PetApi* | [**findPetsByTags**](docs/PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags
+*PetApi* | [**getPetById**](docs/PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID
+*PetApi* | [**updatePet**](docs/PetApi.md#updatePet) | **PUT** /pet | Update an existing pet
+*PetApi* | [**updatePetWithForm**](docs/PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data
+*PetApi* | [**uploadFile**](docs/PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image
+*PetApi* | [**uploadFileWithRequiredFile**](docs/PetApi.md#uploadFileWithRequiredFile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required)
+*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID
+*StoreApi* | [**getInventory**](docs/StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+*StoreApi* | [**getOrderById**](docs/StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID
+*StoreApi* | [**placeOrder**](docs/StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+*UserApi* | [**createUser**](docs/UserApi.md#createUser) | **POST** /user | Create user
+*UserApi* | [**createUsersWithArrayInput**](docs/UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array
+*UserApi* | [**createUsersWithListInput**](docs/UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array
+*UserApi* | [**deleteUser**](docs/UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user
+*UserApi* | [**getUserByName**](docs/UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name
+*UserApi* | [**loginUser**](docs/UserApi.md#loginUser) | **GET** /user/login | Logs user into the system
+*UserApi* | [**logoutUser**](docs/UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session
+*UserApi* | [**updateUser**](docs/UserApi.md#updateUser) | **PUT** /user/{username} | Updated user
+
+
+## Documentation for Models
+
+ - [AdditionalPropertiesClass](docs/AdditionalPropertiesClass.md)
+ - [AllOfRefToDouble](docs/AllOfRefToDouble.md)
+ - [AllOfRefToFloat](docs/AllOfRefToFloat.md)
+ - [AllOfRefToLong](docs/AllOfRefToLong.md)
+ - [Animal](docs/Animal.md)
+ - [Apple](docs/Apple.md)
+ - [AppleReq](docs/AppleReq.md)
+ - [ArrayOfArrayOfNumberOnly](docs/ArrayOfArrayOfNumberOnly.md)
+ - [ArrayOfNumberOnly](docs/ArrayOfNumberOnly.md)
+ - [ArrayTest](docs/ArrayTest.md)
+ - [Banana](docs/Banana.md)
+ - [BananaReq](docs/BananaReq.md)
+ - [BasquePig](docs/BasquePig.md)
+ - [Capitalization](docs/Capitalization.md)
+ - [Cat](docs/Cat.md)
+ - [Category](docs/Category.md)
+ - [ChildCat](docs/ChildCat.md)
+ - [ClassModel](docs/ClassModel.md)
+ - [Client](docs/Client.md)
+ - [ComplexQuadrilateral](docs/ComplexQuadrilateral.md)
+ - [DanishPig](docs/DanishPig.md)
+ - [DeprecatedObject](docs/DeprecatedObject.md)
+ - [Dog](docs/Dog.md)
+ - [Drawing](docs/Drawing.md)
+ - [EnumArrays](docs/EnumArrays.md)
+ - [EnumClass](docs/EnumClass.md)
+ - [EnumTest](docs/EnumTest.md)
+ - [EquilateralTriangle](docs/EquilateralTriangle.md)
+ - [FileSchemaTestClass](docs/FileSchemaTestClass.md)
+ - [Foo](docs/Foo.md)
+ - [FooGetDefaultResponse](docs/FooGetDefaultResponse.md)
+ - [FormatTest](docs/FormatTest.md)
+ - [Fruit](docs/Fruit.md)
+ - [FruitReq](docs/FruitReq.md)
+ - [GmFruit](docs/GmFruit.md)
+ - [GrandparentAnimal](docs/GrandparentAnimal.md)
+ - [HasOnlyReadOnly](docs/HasOnlyReadOnly.md)
+ - [HealthCheckResult](docs/HealthCheckResult.md)
+ - [IsoscelesTriangle](docs/IsoscelesTriangle.md)
+ - [Mammal](docs/Mammal.md)
+ - [MammalAnyof](docs/MammalAnyof.md)
+ - [MapTest](docs/MapTest.md)
+ - [MixedPropertiesAndAdditionalPropertiesClass](docs/MixedPropertiesAndAdditionalPropertiesClass.md)
+ - [Model200Response](docs/Model200Response.md)
+ - [ModelApiResponse](docs/ModelApiResponse.md)
+ - [ModelFile](docs/ModelFile.md)
+ - [ModelList](docs/ModelList.md)
+ - [ModelReturn](docs/ModelReturn.md)
+ - [Name](docs/Name.md)
+ - [NullableClass](docs/NullableClass.md)
+ - [NullableShape](docs/NullableShape.md)
+ - [NumberOnly](docs/NumberOnly.md)
+ - [ObjectWithDeprecatedFields](docs/ObjectWithDeprecatedFields.md)
+ - [Order](docs/Order.md)
+ - [OuterComposite](docs/OuterComposite.md)
+ - [OuterEnum](docs/OuterEnum.md)
+ - [OuterEnumDefaultValue](docs/OuterEnumDefaultValue.md)
+ - [OuterEnumInteger](docs/OuterEnumInteger.md)
+ - [OuterEnumIntegerDefaultValue](docs/OuterEnumIntegerDefaultValue.md)
+ - [ParentPet](docs/ParentPet.md)
+ - [Pet](docs/Pet.md)
+ - [Pig](docs/Pig.md)
+ - [Quadrilateral](docs/Quadrilateral.md)
+ - [QuadrilateralInterface](docs/QuadrilateralInterface.md)
+ - [ReadOnlyFirst](docs/ReadOnlyFirst.md)
+ - [ScaleneTriangle](docs/ScaleneTriangle.md)
+ - [Shape](docs/Shape.md)
+ - [ShapeInterface](docs/ShapeInterface.md)
+ - [ShapeOrNull](docs/ShapeOrNull.md)
+ - [SimpleQuadrilateral](docs/SimpleQuadrilateral.md)
+ - [SpecialModelName](docs/SpecialModelName.md)
+ - [Tag](docs/Tag.md)
+ - [TestInlineFreeformAdditionalPropertiesRequest](docs/TestInlineFreeformAdditionalPropertiesRequest.md)
+ - [Triangle](docs/Triangle.md)
+ - [TriangleInterface](docs/TriangleInterface.md)
+ - [User](docs/User.md)
+ - [Whale](docs/Whale.md)
+ - [Zebra](docs/Zebra.md)
+
+
+
+## Documentation for Authorization
+
+
+Authentication schemes defined for the API:
+
+### petstore_auth
+
+
+- **Type**: OAuth
+- **Flow**: implicit
+- **Authorization URL**: http://petstore.swagger.io/api/oauth/dialog
+- **Scopes**:
+ - write:pets: modify pets in your account
+ - read:pets: read your pets
+
+
+### api_key
+
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+
+### api_key_query
+
+
+- **Type**: API key
+- **API key parameter name**: api_key_query
+- **Location**: URL query string
+
+
+### http_basic_test
+
+
+- **Type**: HTTP basic authentication
+
+
+### bearer_test
+
+
+- **Type**: HTTP Bearer Token authentication (JWT)
+
+
+### http_signature_test
+
+
+- **Type**: HTTP signature authentication
+
+
+## Recommendation
+
+It's recommended to create an instance of `ApiClient` per thread in a multithreaded environment to avoid any potential issues.
+
+## Author
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/api/openapi.yaml b/samples/client/petstore/java/jersey3-jackson3/api/openapi.yaml
new file mode 100644
index 000000000000..c336960b860c
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/api/openapi.yaml
@@ -0,0 +1,2510 @@
+openapi: 3.0.0
+info:
+ description: "This spec is mainly for testing Petstore server and contains fake\
+ \ endpoints, models. Please do not use this for any other purpose. Special characters:\
+ \ \" \\"
+ license:
+ name: Apache-2.0
+ url: https://www.apache.org/licenses/LICENSE-2.0.html
+ title: OpenAPI Petstore
+ version: 1.0.0
+servers:
+- description: petstore server
+ url: "http://{server}.swagger.io:{port}/v2"
+ variables:
+ server:
+ default: petstore
+ enum:
+ - petstore
+ - qa-petstore
+ - dev-petstore
+ port:
+ default: "80"
+ enum:
+ - "80"
+ - "8080"
+- description: The local server
+ url: "https://localhost:8080/{version}"
+ variables:
+ version:
+ default: v2
+ enum:
+ - v1
+ - v2
+- description: The local server without variables
+ url: https://127.0.0.1/no_variable
+tags:
+- description: Everything about your Pets
+ name: pet
+- description: Access to Petstore orders
+ name: store
+- description: Operations about user
+ name: user
+paths:
+ /foo:
+ get:
+ responses:
+ default:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/_foo_get_default_response"
+ description: response
+ x-accepts:
+ - application/json
+ /pet:
+ post:
+ description: ""
+ operationId: addPet
+ requestBody:
+ $ref: "#/components/requestBodies/Pet"
+ responses:
+ "405":
+ description: Invalid input
+ security:
+ - http_signature_test: []
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Add a new pet to the store
+ tags:
+ - pet
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ put:
+ description: ""
+ operationId: updatePet
+ requestBody:
+ $ref: "#/components/requestBodies/Pet"
+ responses:
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Pet not found
+ "405":
+ description: Validation exception
+ security:
+ - http_signature_test: []
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Update an existing pet
+ tags:
+ - pet
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ servers:
+ - url: http://petstore.swagger.io/v2
+ - url: http://path-server-test.petstore.local/v2
+ /pet/findByStatus:
+ get:
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ parameters:
+ - deprecated: true
+ description: Status values that need to be considered for filter
+ explode: false
+ in: query
+ name: status
+ required: true
+ schema:
+ items:
+ default: available
+ enum:
+ - available
+ - pending
+ - sold
+ type: string
+ type: array
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ items:
+ $ref: "#/components/schemas/Pet"
+ type: array
+ application/json:
+ schema:
+ items:
+ $ref: "#/components/schemas/Pet"
+ type: array
+ description: successful operation
+ "400":
+ description: Invalid status value
+ security:
+ - http_signature_test: []
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Finds Pets by status
+ tags:
+ - pet
+ x-accepts:
+ - application/json
+ - application/xml
+ /pet/findByTags:
+ get:
+ deprecated: true
+ description: "Multiple tags can be provided with comma separated strings. Use\
+ \ tag1, tag2, tag3 for testing."
+ operationId: findPetsByTags
+ parameters:
+ - description: Tags to filter by
+ explode: false
+ in: query
+ name: tags
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ items:
+ $ref: "#/components/schemas/Pet"
+ type: array
+ application/json:
+ schema:
+ items:
+ $ref: "#/components/schemas/Pet"
+ type: array
+ description: successful operation
+ "400":
+ description: Invalid tag value
+ security:
+ - http_signature_test: []
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Finds Pets by tags
+ tags:
+ - pet
+ x-accepts:
+ - application/json
+ - application/xml
+ /pet/{petId}:
+ delete:
+ description: ""
+ operationId: deletePet
+ parameters:
+ - explode: false
+ in: header
+ name: api_key
+ required: false
+ schema:
+ type: string
+ style: simple
+ - description: Pet id to delete
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ responses:
+ "400":
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Deletes a pet
+ tags:
+ - pet
+ x-accepts:
+ - application/json
+ get:
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - description: ID of pet to return
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Pet"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Pet"
+ description: successful operation
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Pet not found
+ security:
+ - api_key: []
+ summary: Find pet by ID
+ tags:
+ - pet
+ x-accepts:
+ - application/json
+ - application/xml
+ post:
+ description: ""
+ operationId: updatePetWithForm
+ parameters:
+ - description: ID of pet that needs to be updated
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/updatePetWithForm_request"
+ responses:
+ "405":
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: Updates a pet in the store with form data
+ tags:
+ - pet
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /pet/{petId}/uploadImage:
+ post:
+ description: ""
+ operationId: uploadFile
+ parameters:
+ - description: ID of pet to update
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ $ref: "#/components/schemas/uploadFile_request"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ApiResponse"
+ description: successful operation
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: uploads an image
+ tags:
+ - pet
+ x-content-type: multipart/form-data
+ x-accepts:
+ - application/json
+ /store/inventory:
+ get:
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ additionalProperties:
+ format: int32
+ type: integer
+ type: object
+ description: successful operation
+ security:
+ - api_key: []
+ summary: Returns pet inventories by status
+ tags:
+ - store
+ x-accepts:
+ - application/json
+ /store/order:
+ post:
+ description: ""
+ operationId: placeOrder
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Order"
+ description: order placed for purchasing the pet
+ required: true
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Order"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Order"
+ description: successful operation
+ "400":
+ description: Invalid Order
+ summary: Place an order for a pet
+ tags:
+ - store
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ - application/xml
+ /store/order/{order_id}:
+ delete:
+ description: For valid response try integer IDs with value < 1000. Anything
+ above 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ parameters:
+ - description: ID of the order that needs to be deleted
+ explode: false
+ in: path
+ name: order_id
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Order not found
+ summary: Delete purchase order by ID
+ tags:
+ - store
+ x-accepts:
+ - application/json
+ get:
+ description: For valid response try integer IDs with value <= 5 or > 10. Other
+ values will generate exceptions
+ operationId: getOrderById
+ parameters:
+ - description: ID of pet that needs to be fetched
+ explode: false
+ in: path
+ name: order_id
+ required: true
+ schema:
+ format: int64
+ maximum: 5
+ minimum: 1
+ type: integer
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Order"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Order"
+ description: successful operation
+ "400":
+ description: Invalid ID supplied
+ "404":
+ description: Order not found
+ summary: Find purchase order by ID
+ tags:
+ - store
+ x-accepts:
+ - application/json
+ - application/xml
+ /user:
+ post:
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/User"
+ description: Created user object
+ required: true
+ responses:
+ default:
+ description: successful operation
+ summary: Create user
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/createWithArray:
+ post:
+ description: ""
+ operationId: createUsersWithArrayInput
+ requestBody:
+ $ref: "#/components/requestBodies/UserArray"
+ responses:
+ default:
+ description: successful operation
+ summary: Creates list of users with given input array
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/createWithList:
+ post:
+ description: ""
+ operationId: createUsersWithListInput
+ requestBody:
+ $ref: "#/components/requestBodies/UserArray"
+ responses:
+ default:
+ description: successful operation
+ summary: Creates list of users with given input array
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /user/login:
+ get:
+ description: ""
+ operationId: loginUser
+ parameters:
+ - description: The user name for login
+ explode: true
+ in: query
+ name: username
+ required: true
+ schema:
+ type: string
+ style: form
+ - description: The password for login in clear text
+ explode: true
+ in: query
+ name: password
+ required: true
+ schema:
+ type: string
+ style: form
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ type: string
+ application/json:
+ schema:
+ type: string
+ description: successful operation
+ headers:
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ explode: false
+ schema:
+ format: int32
+ type: integer
+ style: simple
+ X-Expires-After:
+ description: date in UTC when token expires
+ explode: false
+ schema:
+ format: date-time
+ type: string
+ style: simple
+ "400":
+ description: Invalid username/password supplied
+ summary: Logs user into the system
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ - application/xml
+ /user/logout:
+ get:
+ description: ""
+ operationId: logoutUser
+ responses:
+ default:
+ description: successful operation
+ summary: Logs out current logged in user session
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ /user/{username}:
+ delete:
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ parameters:
+ - description: The name that needs to be deleted
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ summary: Delete user
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ get:
+ description: ""
+ operationId: getUserByName
+ parameters:
+ - description: The name that needs to be fetched. Use user1 for testing.
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ responses:
+ "200":
+ content:
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/User"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/User"
+ description: successful operation
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ summary: Get user by user name
+ tags:
+ - user
+ x-accepts:
+ - application/json
+ - application/xml
+ put:
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ parameters:
+ - description: name that need to be deleted
+ explode: false
+ in: path
+ name: username
+ required: true
+ schema:
+ type: string
+ style: simple
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/User"
+ description: Updated user object
+ required: true
+ responses:
+ "400":
+ description: Invalid user supplied
+ "404":
+ description: User not found
+ summary: Updated user
+ tags:
+ - user
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake_classname_test:
+ patch:
+ description: To test class name in snake case
+ operationId: testClassname
+ requestBody:
+ $ref: "#/components/requestBodies/Client"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Client"
+ description: successful operation
+ security:
+ - api_key_query: []
+ summary: To test class name in snake case
+ tags:
+ - fake_classname_tags 123#$%^
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake:
+ delete:
+ description: Fake endpoint to test group parameters (optional)
+ operationId: testGroupParameters
+ parameters:
+ - description: Required String in group parameters
+ explode: true
+ in: query
+ name: required_string_group
+ required: true
+ schema:
+ type: integer
+ style: form
+ - description: Required Boolean in group parameters
+ explode: false
+ in: header
+ name: required_boolean_group
+ required: true
+ schema:
+ type: boolean
+ style: simple
+ - description: Required Integer in group parameters
+ explode: true
+ in: query
+ name: required_int64_group
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: form
+ - description: String in group parameters
+ explode: true
+ in: query
+ name: string_group
+ required: false
+ schema:
+ type: integer
+ style: form
+ - description: Boolean in group parameters
+ explode: false
+ in: header
+ name: boolean_group
+ required: false
+ schema:
+ type: boolean
+ style: simple
+ - description: Integer in group parameters
+ explode: true
+ in: query
+ name: int64_group
+ required: false
+ schema:
+ format: int64
+ type: integer
+ style: form
+ responses:
+ "400":
+ description: Something wrong
+ security:
+ - bearer_test: []
+ summary: Fake endpoint to test group parameters (optional)
+ tags:
+ - fake
+ x-group-parameters: true
+ x-accepts:
+ - application/json
+ get:
+ description: To test enum parameters
+ operationId: testEnumParameters
+ parameters:
+ - description: Header parameter enum test (string array)
+ explode: false
+ in: header
+ name: enum_header_string_array
+ required: false
+ schema:
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ style: simple
+ - description: Header parameter enum test (string)
+ explode: false
+ in: header
+ name: enum_header_string
+ required: false
+ schema:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ style: simple
+ - description: Query parameter enum test (string array)
+ explode: true
+ in: query
+ name: enum_query_string_array
+ required: false
+ schema:
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ style: form
+ - description: Query parameter enum test (string)
+ explode: true
+ in: query
+ name: enum_query_string
+ required: false
+ schema:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ style: form
+ - description: Query parameter enum test (double)
+ explode: true
+ in: query
+ name: enum_query_integer
+ required: false
+ schema:
+ enum:
+ - 1
+ - -2
+ format: int32
+ type: integer
+ style: form
+ - description: Query parameter enum test (double)
+ explode: true
+ in: query
+ name: enum_query_double
+ required: false
+ schema:
+ enum:
+ - 1.1
+ - -1.2
+ format: double
+ type: number
+ style: form
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/testEnumParameters_request"
+ responses:
+ "400":
+ description: Invalid request
+ "404":
+ description: Not found
+ summary: To test enum parameters
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ patch:
+ description: To test "client" model
+ operationId: testClientModel
+ requestBody:
+ $ref: "#/components/requestBodies/Client"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Client"
+ description: successful operation
+ summary: To test "client" model
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ post:
+ description: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ operationId: testEndpointParameters
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/testEndpointParameters_request"
+ responses:
+ "400":
+ description: Invalid username supplied
+ "404":
+ description: User not found
+ security:
+ - http_basic_test: []
+ summary: |
+ Fake endpoint for testing various parameters
+ 假端點
+ 偽のエンドポイント
+ 가짜 엔드 포인트
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /fake/outer/number:
+ post:
+ description: Test serialization of outer number types
+ operationId: fakeOuterNumberSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OuterNumber"
+ description: Input number as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: "#/components/schemas/OuterNumber"
+ description: Output number
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/string:
+ post:
+ description: Test serialization of outer string types
+ operationId: fakeOuterStringSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OuterString"
+ description: Input string as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: "#/components/schemas/OuterString"
+ description: Output string
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/boolean:
+ post:
+ description: Test serialization of outer boolean types
+ operationId: fakeOuterBooleanSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OuterBoolean"
+ description: Input boolean as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: "#/components/schemas/OuterBoolean"
+ description: Output boolean
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/outer/composite:
+ post:
+ description: Test serialization of object with outer number type
+ operationId: fakeOuterCompositeSerialize
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/OuterComposite"
+ description: Input composite as post body
+ responses:
+ "200":
+ content:
+ '*/*':
+ schema:
+ $ref: "#/components/schemas/OuterComposite"
+ description: Output composite
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - '*/*'
+ /fake/jsonFormData:
+ get:
+ description: ""
+ operationId: testJsonFormData
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/testJsonFormData_request"
+ responses:
+ "200":
+ description: successful operation
+ summary: test json serialization of form data
+ tags:
+ - fake
+ x-content-type: application/x-www-form-urlencoded
+ x-accepts:
+ - application/json
+ /fake/additionalProperties-reference:
+ post:
+ description: ""
+ operationId: testAdditionalPropertiesReference
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FreeFormObject"
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test referenced additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/stringMap-reference:
+ post:
+ description: ""
+ operationId: testStringMapReference
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/MapOfString"
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test referenced string map
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/inline-additionalProperties:
+ post:
+ description: ""
+ operationId: testInlineAdditionalProperties
+ requestBody:
+ content:
+ application/json:
+ schema:
+ additionalProperties:
+ type: string
+ type: object
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test inline additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/inline-freeform-additionalProperties:
+ post:
+ description: ""
+ operationId: testInlineFreeformAdditionalProperties
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/testInlineFreeformAdditionalProperties_request"
+ description: request body
+ required: true
+ responses:
+ "200":
+ description: successful operation
+ summary: test inline free-form additionalProperties
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/body-with-query-params:
+ put:
+ operationId: testBodyWithQueryParams
+ parameters:
+ - explode: true
+ in: query
+ name: query
+ required: true
+ schema:
+ type: string
+ style: form
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/User"
+ required: true
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /another-fake/dummy:
+ patch:
+ description: To test special tags and operation ID starting with number
+ operationId: 123_test_@#$%_special_tags
+ requestBody:
+ $ref: "#/components/requestBodies/Client"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Client"
+ description: successful operation
+ summary: To test special tags
+ tags:
+ - $another-fake?
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/body-with-file-schema:
+ put:
+ description: "For this test, the body for this request much reference a schema\
+ \ named `File`."
+ operationId: testBodyWithFileSchema
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/FileSchemaTestClass"
+ required: true
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+ /fake/test-query-parameters:
+ put:
+ description: To test the collection format in query parameters
+ operationId: testQueryParameterCollectionFormat
+ parameters:
+ - explode: true
+ in: query
+ name: pipe
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: false
+ in: query
+ name: ioutil
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: false
+ in: query
+ name: http
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: spaceDelimited
+ - explode: false
+ in: query
+ name: url
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ - explode: true
+ in: query
+ name: context
+ required: true
+ schema:
+ items:
+ type: string
+ type: array
+ style: form
+ responses:
+ "200":
+ description: Success
+ tags:
+ - fake
+ x-accepts:
+ - application/json
+ /fake/{petId}/uploadImageWithRequiredFile:
+ post:
+ description: ""
+ operationId: uploadFileWithRequiredFile
+ parameters:
+ - description: ID of pet to update
+ explode: false
+ in: path
+ name: petId
+ required: true
+ schema:
+ format: int64
+ type: integer
+ style: simple
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ $ref: "#/components/schemas/uploadFileWithRequiredFile_request"
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ApiResponse"
+ description: successful operation
+ security:
+ - petstore_auth:
+ - write:pets
+ - read:pets
+ summary: uploads an image (required)
+ tags:
+ - pet
+ x-content-type: multipart/form-data
+ x-accepts:
+ - application/json
+ /fake/health:
+ get:
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/HealthCheckResult"
+ description: The instance started successfully
+ summary: Health check endpoint
+ tags:
+ - fake
+ x-accepts:
+ - application/json
+ /fake/array-of-enums:
+ get:
+ operationId: getArrayOfEnums
+ responses:
+ "200":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ArrayOfEnums"
+ description: Got named array of enums
+ summary: Array of Enums
+ tags:
+ - fake
+ x-accepts:
+ - application/json
+ /fake/request-array-string:
+ post:
+ operationId: postArrayOfString
+ requestBody:
+ content:
+ application/json:
+ schema:
+ items:
+ pattern: "[A-Z0-9]+"
+ type: string
+ type: array
+ responses:
+ "200":
+ description: ok
+ summary: Array of string
+ tags:
+ - fake
+ x-content-type: application/json
+ x-accepts:
+ - application/json
+components:
+ requestBodies:
+ UserArray:
+ content:
+ application/json:
+ examples:
+ simple-list:
+ description: Should not get into code examples
+ summary: Simple list example
+ value:
+ - username: foo
+ - username: bar
+ schema:
+ items:
+ $ref: "#/components/schemas/User"
+ type: array
+ description: List of user object
+ required: true
+ Client:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Client"
+ description: client model
+ required: true
+ Pet:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Pet"
+ application/xml:
+ schema:
+ $ref: "#/components/schemas/Pet"
+ description: Pet object that needs to be added to the store
+ required: true
+ schemas:
+ Foo:
+ example:
+ bar: bar
+ properties:
+ bar:
+ default: bar
+ type: string
+ type: object
+ Bar:
+ default: bar
+ type: string
+ Order:
+ example:
+ id: 0
+ petId: 6
+ quantity: 1
+ shipDate: 2020-02-02T20:20:20.000222Z
+ status: placed
+ complete: false
+ properties:
+ id:
+ format: int64
+ type: integer
+ petId:
+ format: int64
+ type: integer
+ quantity:
+ format: int32
+ type: integer
+ shipDate:
+ example: 2020-02-02T20:20:20.000222Z
+ format: date-time
+ type: string
+ status:
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ type: string
+ complete:
+ default: false
+ type: boolean
+ type: object
+ xml:
+ name: Order
+ Category:
+ example:
+ id: 6
+ name: default-name
+ properties:
+ id:
+ format: int64
+ type: integer
+ name:
+ default: default-name
+ type: string
+ required:
+ - name
+ type: object
+ xml:
+ name: Category
+ User:
+ example:
+ id: 0
+ username: username
+ firstName: firstName
+ lastName: lastName
+ email: email
+ password: password
+ phone: phone
+ userStatus: 6
+ objectWithNoDeclaredProps: "{}"
+ objectWithNoDeclaredPropsNullable: "{}"
+ anyTypeProp: ""
+ anyTypePropNullable: ""
+ properties:
+ id:
+ format: int64
+ type: integer
+ x-is-unique: true
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ description: User Status
+ format: int32
+ type: integer
+ objectWithNoDeclaredProps:
+ description: test code generation for objects Value must be a map of strings
+ to values. It cannot be the 'null' value.
+ type: object
+ objectWithNoDeclaredPropsNullable:
+ description: test code generation for nullable objects. Value must be a
+ map of strings to values or the 'null' value.
+ nullable: true
+ type: object
+ anyTypeProp:
+ description: "test code generation for any type Here the 'type' attribute\
+ \ is not specified, which means the value can be anything, including the\
+ \ null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389"
+ anyTypePropNullable:
+ description: "test code generation for any type Here the 'type' attribute\
+ \ is not specified, which means the value can be anything, including the\
+ \ null value, string, number, boolean, array or object. The 'nullable'\
+ \ attribute does not change the allowed values."
+ nullable: true
+ type: object
+ xml:
+ name: User
+ Tag:
+ example:
+ id: 1
+ name: name
+ properties:
+ id:
+ format: int64
+ type: integer
+ name:
+ type: string
+ type: object
+ xml:
+ name: Tag
+ Pet:
+ example:
+ id: 0
+ category:
+ id: 6
+ name: default-name
+ name: doggie
+ photoUrls:
+ - photoUrls
+ - photoUrls
+ tags:
+ - id: 1
+ name: name
+ - id: 1
+ name: name
+ status: available
+ properties:
+ id:
+ format: int64
+ type: integer
+ x-is-unique: true
+ category:
+ $ref: "#/components/schemas/Category"
+ name:
+ example: doggie
+ type: string
+ photoUrls:
+ items:
+ type: string
+ type: array
+ xml:
+ name: photoUrl
+ wrapped: true
+ tags:
+ items:
+ $ref: "#/components/schemas/Tag"
+ type: array
+ xml:
+ name: tag
+ wrapped: true
+ status:
+ description: pet status in the store
+ enum:
+ - available
+ - pending
+ - sold
+ type: string
+ required:
+ - name
+ - photoUrls
+ type: object
+ xml:
+ name: Pet
+ ApiResponse:
+ example:
+ code: 0
+ type: type
+ message: message
+ properties:
+ code:
+ format: int32
+ type: integer
+ type:
+ type: string
+ message:
+ type: string
+ type: object
+ Return:
+ description: Model for testing reserved words
+ properties:
+ return:
+ format: int32
+ type: integer
+ xml:
+ name: Return
+ Name:
+ description: Model for testing model name same as property name
+ properties:
+ name:
+ format: int32
+ type: integer
+ snake_case:
+ format: int32
+ readOnly: true
+ type: integer
+ property:
+ type: string
+ "123Number":
+ readOnly: true
+ type: integer
+ required:
+ - name
+ xml:
+ name: Name
+ "200_response":
+ description: Model for testing model name starting with number
+ properties:
+ name:
+ format: int32
+ type: integer
+ class:
+ type: string
+ xml:
+ name: Name
+ ClassModel:
+ description: Model for testing model with "_class" property
+ properties:
+ _class:
+ type: string
+ Dog:
+ allOf:
+ - $ref: "#/components/schemas/Animal"
+ - properties:
+ breed:
+ type: string
+ type: object
+ Cat:
+ allOf:
+ - $ref: "#/components/schemas/Animal"
+ - $ref: "#/components/schemas/Address"
+ - properties:
+ declawed:
+ type: boolean
+ type: object
+ Address:
+ additionalProperties:
+ type: integer
+ type: object
+ Animal:
+ discriminator:
+ propertyName: className
+ properties:
+ className:
+ type: string
+ color:
+ default: red
+ type: string
+ required:
+ - className
+ type: object
+ AnimalFarm:
+ items:
+ $ref: "#/components/schemas/Animal"
+ type: array
+ format_test:
+ properties:
+ integer:
+ maximum: 100
+ minimum: 10
+ multipleOf: 2
+ type: integer
+ int32:
+ format: int32
+ maximum: 200
+ minimum: 20
+ type: integer
+ int64:
+ format: int64
+ type: integer
+ number:
+ maximum: 543.2
+ minimum: 32.1
+ multipleOf: 32.5
+ type: number
+ float:
+ format: float
+ maximum: 987.6
+ minimum: 54.3
+ type: number
+ double:
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ type: number
+ decimal:
+ format: number
+ type: string
+ string:
+ pattern: "/[a-z]/i"
+ type: string
+ byte:
+ format: byte
+ type: string
+ binary:
+ format: binary
+ type: string
+ date:
+ example: 2020-02-02
+ format: date
+ type: string
+ dateTime:
+ example: 2007-12-03T10:15:30+01:00
+ format: date-time
+ type: string
+ uuid:
+ example: 72f98069-206d-4f12-9f12-3d1e525a8e84
+ format: uuid
+ type: string
+ password:
+ format: password
+ maxLength: 64
+ minLength: 10
+ type: string
+ pattern_with_digits:
+ description: A string that is a 10 digit number. Can have leading zeros.
+ pattern: "^\\d{10}$"
+ type: string
+ pattern_with_digits_and_delimiter:
+ description: A string starting with 'image_' (case insensitive) and one
+ to three digits following i.e. Image_01.
+ pattern: "/^image_\\d{1,3}$/i"
+ type: string
+ required:
+ - byte
+ - date
+ - number
+ - password
+ type: object
+ EnumClass:
+ default: -efg
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ Enum_Test:
+ properties:
+ enum_string:
+ enum:
+ - UPPER
+ - lower
+ - ""
+ type: string
+ enum_string_required:
+ enum:
+ - UPPER
+ - lower
+ - ""
+ type: string
+ enum_integer:
+ enum:
+ - 1
+ - -1
+ format: int32
+ type: integer
+ enum_integer_only:
+ enum:
+ - 2
+ - -2
+ type: integer
+ enum_number:
+ enum:
+ - 1.1
+ - -1.2
+ format: double
+ type: number
+ outerEnum:
+ $ref: "#/components/schemas/OuterEnum"
+ outerEnumInteger:
+ $ref: "#/components/schemas/OuterEnumInteger"
+ outerEnumDefaultValue:
+ $ref: "#/components/schemas/OuterEnumDefaultValue"
+ outerEnumIntegerDefaultValue:
+ $ref: "#/components/schemas/OuterEnumIntegerDefaultValue"
+ required:
+ - enum_string_required
+ type: object
+ AdditionalPropertiesClass:
+ properties:
+ map_property:
+ additionalProperties:
+ type: string
+ type: object
+ map_of_map_property:
+ additionalProperties:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ anytype_1: {}
+ map_with_undeclared_properties_anytype_1:
+ type: object
+ map_with_undeclared_properties_anytype_2:
+ properties: {}
+ type: object
+ map_with_undeclared_properties_anytype_3:
+ additionalProperties: true
+ type: object
+ empty_map:
+ additionalProperties: false
+ description: "an object with no declared properties and no undeclared properties,\
+ \ hence it's an empty map."
+ type: object
+ map_with_undeclared_properties_string:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ MixedPropertiesAndAdditionalPropertiesClass:
+ properties:
+ uuid:
+ format: uuid
+ type: string
+ dateTime:
+ format: date-time
+ type: string
+ map:
+ additionalProperties:
+ $ref: "#/components/schemas/Animal"
+ type: object
+ type: object
+ List:
+ properties:
+ "123-list":
+ type: string
+ type: object
+ Client:
+ example:
+ client: client
+ properties:
+ client:
+ type: string
+ type: object
+ ReadOnlyFirst:
+ properties:
+ bar:
+ readOnly: true
+ type: string
+ baz:
+ type: string
+ type: object
+ hasOnlyReadOnly:
+ properties:
+ bar:
+ readOnly: true
+ type: string
+ foo:
+ readOnly: true
+ type: string
+ type: object
+ Capitalization:
+ properties:
+ smallCamel:
+ type: string
+ CapitalCamel:
+ type: string
+ small_Snake:
+ type: string
+ Capital_Snake:
+ type: string
+ SCA_ETH_Flow_Points:
+ type: string
+ ATT_NAME:
+ description: |
+ Name of the pet
+ type: string
+ type: object
+ MapTest:
+ properties:
+ map_map_of_string:
+ additionalProperties:
+ additionalProperties:
+ type: string
+ type: object
+ type: object
+ map_of_enum_string:
+ additionalProperties:
+ enum:
+ - UPPER
+ - lower
+ type: string
+ type: object
+ direct_map:
+ additionalProperties:
+ type: boolean
+ type: object
+ indirect_map:
+ additionalProperties:
+ type: boolean
+ type: object
+ type: object
+ ArrayTest:
+ properties:
+ array_of_string:
+ items:
+ type: string
+ type: array
+ array_array_of_integer:
+ items:
+ items:
+ format: int64
+ type: integer
+ type: array
+ type: array
+ array_array_of_model:
+ items:
+ items:
+ $ref: "#/components/schemas/ReadOnlyFirst"
+ type: array
+ type: array
+ type: object
+ NumberOnly:
+ properties:
+ JustNumber:
+ type: number
+ type: object
+ ArrayOfNumberOnly:
+ properties:
+ ArrayNumber:
+ items:
+ type: number
+ type: array
+ type: object
+ ArrayOfArrayOfNumberOnly:
+ properties:
+ ArrayArrayNumber:
+ items:
+ items:
+ type: number
+ type: array
+ type: array
+ type: object
+ EnumArrays:
+ properties:
+ just_symbol:
+ enum:
+ - '>='
+ - $
+ type: string
+ array_enum:
+ items:
+ enum:
+ - fish
+ - crab
+ type: string
+ type: array
+ type: object
+ FreeFormObject:
+ additionalProperties: true
+ description: A schema consisting only of additional properties
+ type: object
+ MapOfString:
+ additionalProperties:
+ type: string
+ description: A schema consisting only of additional properties of type string
+ type: object
+ OuterEnum:
+ enum:
+ - placed
+ - approved
+ - delivered
+ nullable: true
+ type: string
+ OuterEnumInteger:
+ enum:
+ - 0
+ - 1
+ - 2
+ type: integer
+ OuterEnumDefaultValue:
+ default: placed
+ enum:
+ - placed
+ - approved
+ - delivered
+ type: string
+ OuterEnumIntegerDefaultValue:
+ default: 0
+ enum:
+ - 0
+ - 1
+ - 2
+ type: integer
+ OuterComposite:
+ example:
+ my_number: 0.8008281904610115
+ my_string: my_string
+ my_boolean: true
+ properties:
+ my_number:
+ type: number
+ my_string:
+ type: string
+ my_boolean:
+ type: boolean
+ x-codegen-body-parameter-name: boolean_post_body
+ type: object
+ OuterNumber:
+ type: number
+ OuterString:
+ type: string
+ OuterBoolean:
+ type: boolean
+ x-codegen-body-parameter-name: boolean_post_body
+ StringBooleanMap:
+ additionalProperties:
+ type: boolean
+ type: object
+ FileSchemaTestClass:
+ example:
+ file:
+ sourceURI: sourceURI
+ files:
+ - sourceURI: sourceURI
+ - sourceURI: sourceURI
+ properties:
+ file:
+ $ref: "#/components/schemas/File"
+ files:
+ items:
+ $ref: "#/components/schemas/File"
+ type: array
+ type: object
+ File:
+ description: Must be named `File` for test.
+ example:
+ sourceURI: sourceURI
+ properties:
+ sourceURI:
+ description: Test capitalization
+ type: string
+ type: object
+ _special_model.name_:
+ properties:
+ $special[property.name]:
+ format: int64
+ type: integer
+ _special_model.name_:
+ type: string
+ xml:
+ name: "$special[model.name]"
+ HealthCheckResult:
+ description: Just a string to inform instance is up and running. Make it nullable
+ in hope to get it as pointer in generated model.
+ example:
+ NullableMessage: NullableMessage
+ properties:
+ NullableMessage:
+ nullable: true
+ type: string
+ type: object
+ NullableClass:
+ additionalProperties:
+ nullable: true
+ type: object
+ properties:
+ integer_prop:
+ nullable: true
+ type: integer
+ number_prop:
+ nullable: true
+ type: number
+ boolean_prop:
+ nullable: true
+ type: boolean
+ string_prop:
+ nullable: true
+ type: string
+ date_prop:
+ format: date
+ nullable: true
+ type: string
+ datetime_prop:
+ format: date-time
+ nullable: true
+ type: string
+ array_nullable_prop:
+ items:
+ type: object
+ nullable: true
+ type: array
+ array_and_items_nullable_prop:
+ items:
+ nullable: true
+ type: object
+ nullable: true
+ type: array
+ array_items_nullable:
+ items:
+ nullable: true
+ type: object
+ type: array
+ object_nullable_prop:
+ additionalProperties:
+ type: object
+ nullable: true
+ type: object
+ object_and_items_nullable_prop:
+ additionalProperties:
+ nullable: true
+ type: object
+ nullable: true
+ type: object
+ object_items_nullable:
+ additionalProperties:
+ nullable: true
+ type: object
+ type: object
+ type: object
+ fruit:
+ additionalProperties: false
+ oneOf:
+ - $ref: "#/components/schemas/apple"
+ - $ref: "#/components/schemas/banana"
+ properties:
+ color:
+ type: string
+ apple:
+ nullable: true
+ properties:
+ cultivar:
+ pattern: "^[a-zA-Z\\s]*$"
+ type: string
+ origin:
+ pattern: "/^[A-Z\\s]*$/i"
+ type: string
+ type: object
+ banana:
+ properties:
+ lengthCm:
+ type: number
+ type: object
+ mammal:
+ discriminator:
+ propertyName: className
+ oneOf:
+ - $ref: "#/components/schemas/whale"
+ - $ref: "#/components/schemas/zebra"
+ - $ref: "#/components/schemas/Pig"
+ mammal_anyof:
+ anyOf:
+ - $ref: "#/components/schemas/whale"
+ - $ref: "#/components/schemas/zebra"
+ - $ref: "#/components/schemas/Pig"
+ discriminator:
+ propertyName: className
+ whale:
+ properties:
+ hasBaleen:
+ type: boolean
+ hasTeeth:
+ type: boolean
+ className:
+ type: string
+ required:
+ - className
+ type: object
+ zebra:
+ additionalProperties: true
+ properties:
+ type:
+ enum:
+ - plains
+ - mountain
+ - grevys
+ type: string
+ className:
+ type: string
+ required:
+ - className
+ type: object
+ Pig:
+ discriminator:
+ propertyName: className
+ oneOf:
+ - $ref: "#/components/schemas/BasquePig"
+ - $ref: "#/components/schemas/DanishPig"
+ BasquePig:
+ properties:
+ className:
+ type: string
+ required:
+ - className
+ type: object
+ DanishPig:
+ properties:
+ className:
+ type: string
+ required:
+ - className
+ type: object
+ gmFruit:
+ additionalProperties: false
+ anyOf:
+ - $ref: "#/components/schemas/apple"
+ - $ref: "#/components/schemas/banana"
+ properties:
+ color:
+ type: string
+ fruitReq:
+ additionalProperties: false
+ nullable: true
+ oneOf:
+ - $ref: "#/components/schemas/appleReq"
+ - $ref: "#/components/schemas/bananaReq"
+ appleReq:
+ additionalProperties: false
+ properties:
+ cultivar:
+ type: string
+ mealy:
+ type: boolean
+ required:
+ - cultivar
+ type: object
+ bananaReq:
+ additionalProperties: false
+ properties:
+ lengthCm:
+ type: number
+ sweet:
+ type: boolean
+ required:
+ - lengthCm
+ type: object
+ Drawing:
+ additionalProperties:
+ $ref: "#/components/schemas/fruit"
+ properties:
+ mainShape:
+ $ref: "#/components/schemas/Shape"
+ shapeOrNull:
+ $ref: "#/components/schemas/ShapeOrNull"
+ nullableShape:
+ $ref: "#/components/schemas/NullableShape"
+ shapes:
+ items:
+ $ref: "#/components/schemas/Shape"
+ type: array
+ type: object
+ Shape:
+ discriminator:
+ propertyName: shapeType
+ oneOf:
+ - $ref: "#/components/schemas/Triangle"
+ - $ref: "#/components/schemas/Quadrilateral"
+ ShapeOrNull:
+ description: The value may be a shape or the 'null' value. This is introduced
+ in OAS schema >= 3.1.
+ discriminator:
+ propertyName: shapeType
+ nullable: true
+ oneOf:
+ - $ref: "#/components/schemas/Triangle"
+ - $ref: "#/components/schemas/Quadrilateral"
+ NullableShape:
+ description: The value may be a shape or the 'null' value. The 'nullable' attribute
+ was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema
+ >= 3.1.
+ discriminator:
+ propertyName: shapeType
+ nullable: true
+ oneOf:
+ - $ref: "#/components/schemas/Triangle"
+ - $ref: "#/components/schemas/Quadrilateral"
+ ShapeInterface:
+ properties:
+ shapeType:
+ type: string
+ required:
+ - shapeType
+ TriangleInterface:
+ properties:
+ triangleType:
+ type: string
+ required:
+ - triangleType
+ Triangle:
+ discriminator:
+ propertyName: triangleType
+ oneOf:
+ - $ref: "#/components/schemas/EquilateralTriangle"
+ - $ref: "#/components/schemas/IsoscelesTriangle"
+ - $ref: "#/components/schemas/ScaleneTriangle"
+ EquilateralTriangle:
+ allOf:
+ - $ref: "#/components/schemas/ShapeInterface"
+ - $ref: "#/components/schemas/TriangleInterface"
+ IsoscelesTriangle:
+ additionalProperties: false
+ allOf:
+ - $ref: "#/components/schemas/ShapeInterface"
+ - $ref: "#/components/schemas/TriangleInterface"
+ ScaleneTriangle:
+ allOf:
+ - $ref: "#/components/schemas/ShapeInterface"
+ - $ref: "#/components/schemas/TriangleInterface"
+ QuadrilateralInterface:
+ properties:
+ quadrilateralType:
+ type: string
+ required:
+ - quadrilateralType
+ Quadrilateral:
+ discriminator:
+ propertyName: quadrilateralType
+ oneOf:
+ - $ref: "#/components/schemas/SimpleQuadrilateral"
+ - $ref: "#/components/schemas/ComplexQuadrilateral"
+ SimpleQuadrilateral:
+ allOf:
+ - $ref: "#/components/schemas/ShapeInterface"
+ - $ref: "#/components/schemas/QuadrilateralInterface"
+ ComplexQuadrilateral:
+ allOf:
+ - $ref: "#/components/schemas/ShapeInterface"
+ - $ref: "#/components/schemas/QuadrilateralInterface"
+ GrandparentAnimal:
+ discriminator:
+ propertyName: pet_type
+ properties:
+ pet_type:
+ type: string
+ required:
+ - pet_type
+ type: object
+ ParentPet:
+ allOf:
+ - $ref: "#/components/schemas/GrandparentAnimal"
+ type: object
+ ChildCat:
+ allOf:
+ - $ref: "#/components/schemas/ParentPet"
+ - properties:
+ name:
+ type: string
+ pet_type:
+ default: ChildCat
+ enum:
+ - ChildCat
+ type: string
+ x-enum-as-string: true
+ type: object
+ ArrayOfEnums:
+ items:
+ $ref: "#/components/schemas/OuterEnum"
+ type: array
+ DateTimeTest:
+ default: 2010-01-01T10:10:10.000111+01:00
+ example: 2010-01-01T10:10:10.000111+01:00
+ format: date-time
+ type: string
+ DeprecatedObject:
+ deprecated: true
+ properties:
+ name:
+ type: string
+ type: object
+ ObjectWithDeprecatedFields:
+ properties:
+ uuid:
+ type: string
+ id:
+ deprecated: true
+ type: number
+ deprecatedRef:
+ $ref: "#/components/schemas/DeprecatedObject"
+ bars:
+ deprecated: true
+ items:
+ $ref: "#/components/schemas/Bar"
+ type: array
+ type: object
+ LongId:
+ description: Id as long
+ format: int64
+ type: integer
+ Weight:
+ description: Weight as float
+ format: float
+ type: number
+ Height:
+ description: Height as double
+ format: double
+ type: number
+ AllOfRefToLong:
+ description: Object with allOf ref to long
+ properties:
+ id:
+ allOf:
+ - $ref: "#/components/schemas/LongId"
+ default: 10
+ type: object
+ AllOfRefToFloat:
+ description: Object with allOf ref to float
+ properties:
+ weight:
+ allOf:
+ - $ref: "#/components/schemas/Weight"
+ default: 7.89
+ type: object
+ AllOfRefToDouble:
+ description: Object with allOf ref to double
+ properties:
+ height:
+ allOf:
+ - $ref: "#/components/schemas/Height"
+ default: 32.1
+ type: object
+ _foo_get_default_response:
+ example:
+ string:
+ bar: bar
+ properties:
+ string:
+ $ref: "#/components/schemas/Foo"
+ type: object
+ updatePetWithForm_request:
+ properties:
+ name:
+ description: Updated name of the pet
+ type: string
+ status:
+ description: Updated status of the pet
+ type: string
+ type: object
+ uploadFile_request:
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ file:
+ description: file to upload
+ format: binary
+ type: string
+ type: object
+ testEnumParameters_request:
+ properties:
+ enum_form_string_array:
+ description: Form parameter enum test (string array)
+ items:
+ default: $
+ enum:
+ - '>'
+ - $
+ type: string
+ type: array
+ enum_form_string:
+ default: -efg
+ description: Form parameter enum test (string)
+ enum:
+ - _abc
+ - -efg
+ - (xyz)
+ type: string
+ type: object
+ testEndpointParameters_request:
+ properties:
+ integer:
+ description: None
+ maximum: 100
+ minimum: 10
+ type: integer
+ int32:
+ description: None
+ format: int32
+ maximum: 200
+ minimum: 20
+ type: integer
+ int64:
+ description: None
+ format: int64
+ type: integer
+ number:
+ description: None
+ maximum: 543.2
+ minimum: 32.1
+ type: number
+ float:
+ description: None
+ format: float
+ maximum: 987.6
+ type: number
+ double:
+ description: None
+ format: double
+ maximum: 123.4
+ minimum: 67.8
+ type: number
+ string:
+ description: None
+ pattern: "/[a-z]/i"
+ type: string
+ pattern_without_delimiter:
+ description: None
+ pattern: "^[A-Z].*"
+ type: string
+ byte:
+ description: None
+ format: byte
+ type: string
+ binary:
+ description: None
+ format: binary
+ type: string
+ date:
+ description: None
+ format: date
+ type: string
+ dateTime:
+ default: 2010-02-01T10:20:10.11111+01:00
+ description: None
+ example: 2020-02-02T20:20:20.22222Z
+ format: date-time
+ type: string
+ password:
+ description: None
+ format: password
+ maxLength: 64
+ minLength: 10
+ type: string
+ callback:
+ description: None
+ type: string
+ required:
+ - byte
+ - double
+ - number
+ - pattern_without_delimiter
+ type: object
+ testJsonFormData_request:
+ properties:
+ param:
+ description: field1
+ type: string
+ param2:
+ description: field2
+ type: string
+ required:
+ - param
+ - param2
+ type: object
+ testInlineFreeformAdditionalProperties_request:
+ additionalProperties: true
+ properties:
+ someProperty:
+ type: string
+ type: object
+ uploadFileWithRequiredFile_request:
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ requiredFile:
+ description: file to upload
+ format: binary
+ type: string
+ required:
+ - requiredFile
+ type: object
+ securitySchemes:
+ petstore_auth:
+ flows:
+ implicit:
+ authorizationUrl: http://petstore.swagger.io/api/oauth/dialog
+ scopes:
+ write:pets: modify pets in your account
+ read:pets: read your pets
+ type: oauth2
+ api_key:
+ in: header
+ name: api_key
+ type: apiKey
+ api_key_query:
+ in: query
+ name: api_key_query
+ type: apiKey
+ http_basic_test:
+ scheme: basic
+ type: http
+ bearer_test:
+ bearerFormat: JWT
+ scheme: bearer
+ type: http
+ http_signature_test:
+ scheme: signature
+ type: http
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/build.gradle b/samples/client/petstore/java/jersey3-jackson3/build.gradle
new file mode 100644
index 000000000000..6fc82e30133a
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/build.gradle
@@ -0,0 +1,165 @@
+apply plugin: 'idea'
+apply plugin: 'eclipse'
+apply plugin: 'com.diffplug.spotless'
+
+group = 'org.openapitools'
+version = '1.0.0'
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:2.3.+'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
+ classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.3.0'
+ }
+}
+
+repositories {
+ mavenCentral()
+}
+
+if(hasProperty('target') && target == 'android') {
+
+ apply plugin: 'com.android.library'
+ apply plugin: 'com.github.dcendents.android-maven'
+
+ android {
+ compileSdkVersion 25
+ buildToolsVersion '25.0.2'
+ defaultConfig {
+ minSdkVersion 14
+ targetSdkVersion 25
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ // Rename the aar correctly
+ libraryVariants.all { variant ->
+ variant.outputs.each { output ->
+ def outputFile = output.outputFile
+ if (outputFile != null && outputFile.name.endsWith('.aar')) {
+ def fileName = "${project.name}-${variant.baseName}-${version}.aar"
+ output.outputFile = new File(outputFile.parent, fileName)
+ }
+ }
+ }
+
+ dependencies {
+ provided "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
+ }
+ }
+
+ afterEvaluate {
+ android.libraryVariants.all { variant ->
+ def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
+ task.description = "Create jar artifact for ${variant.name}"
+ task.dependsOn variant.javaCompile
+ task.from variant.javaCompile.destinationDirectory
+ task.destinationDirectory = project.file("${project.buildDir}/outputs/jar")
+ task.archiveFileName = "${project.name}-${variant.baseName}-${version}.jar"
+ artifacts.add('archives', task);
+ }
+ }
+
+ task sourcesJar(type: Jar) {
+ from android.sourceSets.main.java.srcDirs
+ classifier = 'sources'
+ }
+
+ artifacts {
+ archives sourcesJar
+ }
+
+} else {
+
+ apply plugin: 'java'
+ apply plugin: 'maven-publish'
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+
+ publishing {
+ publications {
+ maven(MavenPublication) {
+ artifactId = 'petstore-jersey3-jackson3'
+
+ from components.java
+ }
+ }
+ }
+
+ task execute(type:JavaExec) {
+ main = System.getProperty('mainClass')
+ classpath = sourceSets.main.runtimeClasspath
+ }
+}
+
+ext {
+ swagger_annotations_version = "1.6.5"
+ jackson3_version = "3.1.0"
+ jackson_annotations_version = "2.21"
+ jackson_databind_nullable_version = "0.2.10"
+ jakarta_annotation_version = "3.0.0"
+ bean_validation_version = "3.1.1"
+ jersey_version = "3.0.4"
+ junit_version = "5.8.2"
+ scribejava_apis_version = "8.3.1"
+ tomitribe_http_signatures_version = "1.7"
+ commons_lang3_version = "3.17.0"
+}
+
+dependencies {
+ implementation "io.swagger:swagger-annotations:$swagger_annotations_version"
+ implementation "com.google.code.findbugs:jsr305:3.0.2"
+ implementation "org.glassfish.jersey.core:jersey-client:$jersey_version"
+ implementation "org.glassfish.jersey.inject:jersey-hk2:$jersey_version"
+ implementation "org.glassfish.jersey.media:jersey-media-multipart:$jersey_version"
+ implementation "org.glassfish.jersey.connectors:jersey-apache-connector:$jersey_version"
+ implementation "tools.jackson.core:jackson-core:$jackson3_version"
+ implementation "com.fasterxml.jackson.core:jackson-annotations:$jackson_annotations_version"
+ implementation "tools.jackson.core:jackson-databind:$jackson3_version"
+ implementation "tools.jackson.jakarta.rs:jackson-jakarta-rs-json-provider:$jackson3_version"
+ implementation "org.openapitools:jackson-databind-nullable:$jackson_databind_nullable_version"
+ implementation "com.github.scribejava:scribejava-apis:$scribejava_apis_version"
+ implementation "org.tomitribe:tomitribe-http-signatures:$tomitribe_http_signatures_version"
+ implementation "jakarta.annotation:jakarta.annotation-api:$jakarta_annotation_version"
+ implementation "jakarta.validation:jakarta.validation-api:$bean_validation_version"
+ implementation "org.apache.commons:commons-lang3:$commons_lang3_version"
+ testImplementation "org.junit.jupiter:junit-jupiter-api:$junit_version"
+ testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version"
+}
+
+test {
+ useJUnitPlatform()
+}
+
+javadoc {
+ options.tags = [ "http.response.details:a:Http Response Details" ]
+}
+
+// Use spotless plugin to automatically format code, remove unused import, etc
+// To apply changes directly to the file, run `gradlew spotlessApply`
+// Ref: https://github.com/diffplug/spotless/tree/main/plugin-gradle
+spotless {
+ // comment out below to run spotless as part of the `check` task
+ enforceCheck false
+
+ format 'misc', {
+ // define the files (e.g. '*.gradle', '*.md') to apply `misc` to
+ target '.gitignore'
+ // define the steps to apply to those files
+ trimTrailingWhitespace()
+ indentWithSpaces() // Takes an integer argument if you don't like 4
+ endWithNewline()
+ }
+ java {
+ // don't need to set target, it is inferred from java
+ // apply a specific flavor of google-java-format
+ googleJavaFormat('1.8').aosp().reflowLongStrings()
+ removeUnusedImports()
+ importOrder()
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/build.sbt b/samples/client/petstore/java/jersey3-jackson3/build.sbt
new file mode 100644
index 000000000000..247b300e7581
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/build.sbt
@@ -0,0 +1,30 @@
+lazy val root = (project in file(".")).
+ settings(
+ organization := "org.openapitools",
+ name := "petstore-jersey3-jackson3",
+ version := "1.0.0",
+ scalaVersion := "2.11.12",
+ scalacOptions ++= Seq("-feature"),
+ Compile / javacOptions ++= Seq("-Xlint:deprecation"),
+ Compile / packageDoc / publishArtifact := false,
+ resolvers += Resolver.mavenLocal,
+ libraryDependencies ++= Seq(
+ "com.google.code.findbugs" % "jsr305" % "3.0.0",
+ "io.swagger" % "swagger-annotations" % "1.6.5",
+ "org.glassfish.jersey.core" % "jersey-client" % "3.0.4",
+ "org.glassfish.jersey.inject" % "jersey-hk2" % "3.0.4",
+ "org.glassfish.jersey.media" % "jersey-media-multipart" % "3.0.4",
+ "org.glassfish.jersey.media" % "jersey-media-json-jackson" % "3.0.4",
+ "org.glassfish.jersey.connectors" % "jersey-apache-connector" % "3.0.4",
+ "com.fasterxml.jackson.core" % "jackson-core" % "2.21.1" % "compile",
+ "com.fasterxml.jackson.core" % "jackson-annotations" % "2.21" % "compile",
+ "com.fasterxml.jackson.core" % "jackson-databind" % "2.21.1" % "compile",
+ "com.fasterxml.jackson.datatype" % "jackson-datatype-jsr310" % "2.21.1" % "compile",
+ "org.openapitools" % "jackson-databind-nullable" % "0.2.10" % "compile",
+ "com.github.scribejava" % "scribejava-apis" % "8.3.1" % "compile",
+ "org.tomitribe" % "tomitribe-http-signatures" % "1.7" % "compile",
+ "jakarta.annotation" % "jakarta.annotation-api" % "2.1.0" % "compile",
+ "org.apache.commons" % "commons-lang3" % "3.17.0" % "compile",
+ "org.junit.jupiter" % "junit-jupiter-api" % "5.8.2" % "test"
+ )
+ )
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AdditionalPropertiesClass.md b/samples/client/petstore/java/jersey3-jackson3/docs/AdditionalPropertiesClass.md
new file mode 100644
index 000000000000..83051d9be44b
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AdditionalPropertiesClass.md
@@ -0,0 +1,20 @@
+
+
+# AdditionalPropertiesClass
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**mapProperty** | **Map<String, String>** | | [optional] |
+|**mapOfMapProperty** | **Map<String, Map<String, String>>** | | [optional] |
+|**anytype1** | **Object** | | [optional] |
+|**mapWithUndeclaredPropertiesAnytype1** | **Object** | | [optional] |
+|**mapWithUndeclaredPropertiesAnytype2** | **Object** | | [optional] |
+|**mapWithUndeclaredPropertiesAnytype3** | **Map<String, Object>** | | [optional] |
+|**emptyMap** | **Object** | an object with no declared properties and no undeclared properties, hence it's an empty map. | [optional] |
+|**mapWithUndeclaredPropertiesString** | **Map<String, String>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToDouble.md b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToDouble.md
new file mode 100644
index 000000000000..516584f74348
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToDouble.md
@@ -0,0 +1,14 @@
+
+
+# AllOfRefToDouble
+
+Object with allOf ref to double
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**height** | **Double** | Height as double | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToFloat.md b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToFloat.md
new file mode 100644
index 000000000000..9a60af8a2ea4
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToFloat.md
@@ -0,0 +1,14 @@
+
+
+# AllOfRefToFloat
+
+Object with allOf ref to float
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**weight** | **Float** | Weight as float | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToLong.md b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToLong.md
new file mode 100644
index 000000000000..0f32d49b0857
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AllOfRefToLong.md
@@ -0,0 +1,14 @@
+
+
+# AllOfRefToLong
+
+Object with allOf ref to long
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | Id as long | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Animal.md b/samples/client/petstore/java/jersey3-jackson3/docs/Animal.md
new file mode 100644
index 000000000000..d9b32f14c88a
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Animal.md
@@ -0,0 +1,14 @@
+
+
+# Animal
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**className** | **String** | | |
+|**color** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AnotherFakeApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/AnotherFakeApi.md
new file mode 100644
index 000000000000..3cd7cd99f71f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AnotherFakeApi.md
@@ -0,0 +1,74 @@
+# AnotherFakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**call123testSpecialTags**](AnotherFakeApi.md#call123testSpecialTags) | **PATCH** /another-fake/dummy | To test special tags |
+
+
+
+## call123testSpecialTags
+
+> Client call123testSpecialTags(client)
+
+To test special tags
+
+To test special tags and operation ID starting with number
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.AnotherFakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ AnotherFakeApi apiInstance = new AnotherFakeApi(defaultClient);
+ Client client = new Client(); // Client | client model
+ try {
+ Client result = apiInstance.call123testSpecialTags(client);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling AnotherFakeApi#call123testSpecialTags");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **client** | [**Client**](Client.md)| client model | |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Apple.md b/samples/client/petstore/java/jersey3-jackson3/docs/Apple.md
new file mode 100644
index 000000000000..0ef7a92c74d6
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Apple.md
@@ -0,0 +1,14 @@
+
+
+# Apple
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**cultivar** | **String** | | [optional] |
+|**origin** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/AppleReq.md b/samples/client/petstore/java/jersey3-jackson3/docs/AppleReq.md
new file mode 100644
index 000000000000..989e1cfedd1e
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/AppleReq.md
@@ -0,0 +1,14 @@
+
+
+# AppleReq
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**cultivar** | **String** | | |
+|**mealy** | **Boolean** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfArrayOfNumberOnly.md b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfArrayOfNumberOnly.md
new file mode 100644
index 000000000000..0188db3eb131
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfArrayOfNumberOnly.md
@@ -0,0 +1,13 @@
+
+
+# ArrayOfArrayOfNumberOnly
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**arrayArrayNumber** | **List<List<BigDecimal>>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfNumberOnly.md b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfNumberOnly.md
new file mode 100644
index 000000000000..a5753530aada
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayOfNumberOnly.md
@@ -0,0 +1,13 @@
+
+
+# ArrayOfNumberOnly
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**arrayNumber** | **List<BigDecimal>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ArrayTest.md b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayTest.md
new file mode 100644
index 000000000000..ae2672809aa9
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ArrayTest.md
@@ -0,0 +1,15 @@
+
+
+# ArrayTest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**arrayOfString** | **List<String>** | | [optional] |
+|**arrayArrayOfInteger** | **List<List<Long>>** | | [optional] |
+|**arrayArrayOfModel** | **List<List<@Valid ReadOnlyFirst>>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Banana.md b/samples/client/petstore/java/jersey3-jackson3/docs/Banana.md
new file mode 100644
index 000000000000..5356d17ee700
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Banana.md
@@ -0,0 +1,13 @@
+
+
+# Banana
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**lengthCm** | **BigDecimal** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/BananaReq.md b/samples/client/petstore/java/jersey3-jackson3/docs/BananaReq.md
new file mode 100644
index 000000000000..22ebe1a7105f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/BananaReq.md
@@ -0,0 +1,14 @@
+
+
+# BananaReq
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**lengthCm** | **BigDecimal** | | |
+|**sweet** | **Boolean** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/BasquePig.md b/samples/client/petstore/java/jersey3-jackson3/docs/BasquePig.md
new file mode 100644
index 000000000000..160cb71c321f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/BasquePig.md
@@ -0,0 +1,13 @@
+
+
+# BasquePig
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**className** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Capitalization.md b/samples/client/petstore/java/jersey3-jackson3/docs/Capitalization.md
new file mode 100644
index 000000000000..82a812711de2
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Capitalization.md
@@ -0,0 +1,18 @@
+
+
+# Capitalization
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**smallCamel** | **String** | | [optional] |
+|**capitalCamel** | **String** | | [optional] |
+|**smallSnake** | **String** | | [optional] |
+|**capitalSnake** | **String** | | [optional] |
+|**scAETHFlowPoints** | **String** | | [optional] |
+|**ATT_NAME** | **String** | Name of the pet | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Cat.md b/samples/client/petstore/java/jersey3-jackson3/docs/Cat.md
new file mode 100644
index 000000000000..390dd519c8ce
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Cat.md
@@ -0,0 +1,13 @@
+
+
+# Cat
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**declawed** | **Boolean** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Category.md b/samples/client/petstore/java/jersey3-jackson3/docs/Category.md
new file mode 100644
index 000000000000..ab6d1ec334dc
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Category.md
@@ -0,0 +1,14 @@
+
+
+# Category
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | | [optional] |
+|**name** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ChildCat.md b/samples/client/petstore/java/jersey3-jackson3/docs/ChildCat.md
new file mode 100644
index 000000000000..258d87e56998
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ChildCat.md
@@ -0,0 +1,22 @@
+
+
+# ChildCat
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | | [optional] |
+|**petType** | [**String**](#String) | | [optional] |
+
+
+
+## Enum: String
+
+| Name | Value |
+|---- | -----|
+| CHILD_CAT | "ChildCat" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ClassModel.md b/samples/client/petstore/java/jersey3-jackson3/docs/ClassModel.md
new file mode 100644
index 000000000000..af46dea1f6c8
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ClassModel.md
@@ -0,0 +1,14 @@
+
+
+# ClassModel
+
+Model for testing model with \"_class\" property
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**propertyClass** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Client.md b/samples/client/petstore/java/jersey3-jackson3/docs/Client.md
new file mode 100644
index 000000000000..ef07b4ab8b9d
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Client.md
@@ -0,0 +1,13 @@
+
+
+# Client
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**client** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ComplexQuadrilateral.md b/samples/client/petstore/java/jersey3-jackson3/docs/ComplexQuadrilateral.md
new file mode 100644
index 000000000000..d0a4b1a0a758
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ComplexQuadrilateral.md
@@ -0,0 +1,14 @@
+
+
+# ComplexQuadrilateral
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+|**quadrilateralType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/DanishPig.md b/samples/client/petstore/java/jersey3-jackson3/docs/DanishPig.md
new file mode 100644
index 000000000000..0b366d3cf2ff
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/DanishPig.md
@@ -0,0 +1,13 @@
+
+
+# DanishPig
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**className** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/DefaultApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/DefaultApi.md
new file mode 100644
index 000000000000..f4502a6aa629
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/DefaultApi.md
@@ -0,0 +1,68 @@
+# DefaultApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**fooGet**](DefaultApi.md#fooGet) | **GET** /foo | |
+
+
+
+## fooGet
+
+> FooGetDefaultResponse fooGet()
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.DefaultApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ DefaultApi apiInstance = new DefaultApi(defaultClient);
+ try {
+ FooGetDefaultResponse result = apiInstance.fooGet();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling DefaultApi#fooGet");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**FooGetDefaultResponse**](FooGetDefaultResponse.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **0** | response | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/DeprecatedObject.md b/samples/client/petstore/java/jersey3-jackson3/docs/DeprecatedObject.md
new file mode 100644
index 000000000000..48de1d624425
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/DeprecatedObject.md
@@ -0,0 +1,13 @@
+
+
+# DeprecatedObject
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Dog.md b/samples/client/petstore/java/jersey3-jackson3/docs/Dog.md
new file mode 100644
index 000000000000..972c981c0d05
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Dog.md
@@ -0,0 +1,13 @@
+
+
+# Dog
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**breed** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Drawing.md b/samples/client/petstore/java/jersey3-jackson3/docs/Drawing.md
new file mode 100644
index 000000000000..6b815fc4131b
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Drawing.md
@@ -0,0 +1,16 @@
+
+
+# Drawing
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**mainShape** | [**Shape**](Shape.md) | | [optional] |
+|**shapeOrNull** | [**ShapeOrNull**](ShapeOrNull.md) | | [optional] |
+|**nullableShape** | [**NullableShape**](NullableShape.md) | | [optional] |
+|**shapes** | [**List<Shape>**](Shape.md) | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/EnumArrays.md b/samples/client/petstore/java/jersey3-jackson3/docs/EnumArrays.md
new file mode 100644
index 000000000000..b2222d5beb25
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/EnumArrays.md
@@ -0,0 +1,32 @@
+
+
+# EnumArrays
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**justSymbol** | [**JustSymbolEnum**](#JustSymbolEnum) | | [optional] |
+|**arrayEnum** | [**List<ArrayEnumEnum>**](#List<ArrayEnumEnum>) | | [optional] |
+
+
+
+## Enum: JustSymbolEnum
+
+| Name | Value |
+|---- | -----|
+| GREATER_THAN_OR_EQUAL_TO | ">=" |
+| DOLLAR | "$" |
+
+
+
+## Enum: List<ArrayEnumEnum>
+
+| Name | Value |
+|---- | -----|
+| FISH | "fish" |
+| CRAB | "crab" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/EnumClass.md b/samples/client/petstore/java/jersey3-jackson3/docs/EnumClass.md
new file mode 100644
index 000000000000..b314590a7591
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/EnumClass.md
@@ -0,0 +1,15 @@
+
+
+# EnumClass
+
+## Enum
+
+
+* `_ABC` (value: `"_abc"`)
+
+* `_EFG` (value: `"-efg"`)
+
+* `_XYZ_` (value: `"(xyz)"`)
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/EnumTest.md b/samples/client/petstore/java/jersey3-jackson3/docs/EnumTest.md
new file mode 100644
index 000000000000..3e226e18b50b
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/EnumTest.md
@@ -0,0 +1,68 @@
+
+
+# EnumTest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**enumString** | [**EnumStringEnum**](#EnumStringEnum) | | [optional] |
+|**enumStringRequired** | [**EnumStringRequiredEnum**](#EnumStringRequiredEnum) | | |
+|**enumInteger** | [**EnumIntegerEnum**](#EnumIntegerEnum) | | [optional] |
+|**enumIntegerOnly** | [**EnumIntegerOnlyEnum**](#EnumIntegerOnlyEnum) | | [optional] |
+|**enumNumber** | [**EnumNumberEnum**](#EnumNumberEnum) | | [optional] |
+|**outerEnum** | **OuterEnum** | | [optional] |
+|**outerEnumInteger** | **OuterEnumInteger** | | [optional] |
+|**outerEnumDefaultValue** | **OuterEnumDefaultValue** | | [optional] |
+|**outerEnumIntegerDefaultValue** | **OuterEnumIntegerDefaultValue** | | [optional] |
+
+
+
+## Enum: EnumStringEnum
+
+| Name | Value |
+|---- | -----|
+| UPPER | "UPPER" |
+| LOWER | "lower" |
+| EMPTY | "" |
+
+
+
+## Enum: EnumStringRequiredEnum
+
+| Name | Value |
+|---- | -----|
+| UPPER | "UPPER" |
+| LOWER | "lower" |
+| EMPTY | "" |
+
+
+
+## Enum: EnumIntegerEnum
+
+| Name | Value |
+|---- | -----|
+| NUMBER_1 | 1 |
+| NUMBER_MINUS_1 | -1 |
+
+
+
+## Enum: EnumIntegerOnlyEnum
+
+| Name | Value |
+|---- | -----|
+| NUMBER_2 | 2 |
+| NUMBER_MINUS_2 | -2 |
+
+
+
+## Enum: EnumNumberEnum
+
+| Name | Value |
+|---- | -----|
+| NUMBER_1_DOT_1 | 1.1 |
+| NUMBER_MINUS_1_DOT_2 | -1.2 |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/EquilateralTriangle.md b/samples/client/petstore/java/jersey3-jackson3/docs/EquilateralTriangle.md
new file mode 100644
index 000000000000..eade817feb3e
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/EquilateralTriangle.md
@@ -0,0 +1,14 @@
+
+
+# EquilateralTriangle
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+|**triangleType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FakeApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/FakeApi.md
new file mode 100644
index 000000000000..7d45cd6a51b8
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FakeApi.md
@@ -0,0 +1,1325 @@
+# FakeApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**fakeHealthGet**](FakeApi.md#fakeHealthGet) | **GET** /fake/health | Health check endpoint |
+| [**fakeOuterBooleanSerialize**](FakeApi.md#fakeOuterBooleanSerialize) | **POST** /fake/outer/boolean | |
+| [**fakeOuterCompositeSerialize**](FakeApi.md#fakeOuterCompositeSerialize) | **POST** /fake/outer/composite | |
+| [**fakeOuterNumberSerialize**](FakeApi.md#fakeOuterNumberSerialize) | **POST** /fake/outer/number | |
+| [**fakeOuterStringSerialize**](FakeApi.md#fakeOuterStringSerialize) | **POST** /fake/outer/string | |
+| [**getArrayOfEnums**](FakeApi.md#getArrayOfEnums) | **GET** /fake/array-of-enums | Array of Enums |
+| [**postArrayOfString**](FakeApi.md#postArrayOfString) | **POST** /fake/request-array-string | Array of string |
+| [**testAdditionalPropertiesReference**](FakeApi.md#testAdditionalPropertiesReference) | **POST** /fake/additionalProperties-reference | test referenced additionalProperties |
+| [**testBodyWithFileSchema**](FakeApi.md#testBodyWithFileSchema) | **PUT** /fake/body-with-file-schema | |
+| [**testBodyWithQueryParams**](FakeApi.md#testBodyWithQueryParams) | **PUT** /fake/body-with-query-params | |
+| [**testClientModel**](FakeApi.md#testClientModel) | **PATCH** /fake | To test \"client\" model |
+| [**testEndpointParameters**](FakeApi.md#testEndpointParameters) | **POST** /fake | Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트 |
+| [**testEnumParameters**](FakeApi.md#testEnumParameters) | **GET** /fake | To test enum parameters |
+| [**testGroupParameters**](FakeApi.md#testGroupParameters) | **DELETE** /fake | Fake endpoint to test group parameters (optional) |
+| [**testInlineAdditionalProperties**](FakeApi.md#testInlineAdditionalProperties) | **POST** /fake/inline-additionalProperties | test inline additionalProperties |
+| [**testInlineFreeformAdditionalProperties**](FakeApi.md#testInlineFreeformAdditionalProperties) | **POST** /fake/inline-freeform-additionalProperties | test inline free-form additionalProperties |
+| [**testJsonFormData**](FakeApi.md#testJsonFormData) | **GET** /fake/jsonFormData | test json serialization of form data |
+| [**testQueryParameterCollectionFormat**](FakeApi.md#testQueryParameterCollectionFormat) | **PUT** /fake/test-query-parameters | |
+| [**testStringMapReference**](FakeApi.md#testStringMapReference) | **POST** /fake/stringMap-reference | test referenced string map |
+
+
+
+## fakeHealthGet
+
+> HealthCheckResult fakeHealthGet()
+
+Health check endpoint
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ try {
+ HealthCheckResult result = apiInstance.fakeHealthGet();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#fakeHealthGet");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**HealthCheckResult**](HealthCheckResult.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | The instance started successfully | - |
+
+
+## fakeOuterBooleanSerialize
+
+> Boolean fakeOuterBooleanSerialize(body)
+
+
+
+Test serialization of outer boolean types
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Boolean body = true; // Boolean | Input boolean as post body
+ try {
+ Boolean result = apiInstance.fakeOuterBooleanSerialize(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#fakeOuterBooleanSerialize");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **body** | **Boolean**| Input boolean as post body | [optional] |
+
+### Return type
+
+**Boolean**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Output boolean | - |
+
+
+## fakeOuterCompositeSerialize
+
+> OuterComposite fakeOuterCompositeSerialize(outerComposite)
+
+
+
+Test serialization of object with outer number type
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ OuterComposite outerComposite = new OuterComposite(); // OuterComposite | Input composite as post body
+ try {
+ OuterComposite result = apiInstance.fakeOuterCompositeSerialize(outerComposite);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#fakeOuterCompositeSerialize");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **outerComposite** | [**OuterComposite**](OuterComposite.md)| Input composite as post body | [optional] |
+
+### Return type
+
+[**OuterComposite**](OuterComposite.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Output composite | - |
+
+
+## fakeOuterNumberSerialize
+
+> BigDecimal fakeOuterNumberSerialize(body)
+
+
+
+Test serialization of outer number types
+
+### Example
+
+```java
+import java.math.BigDecimal;
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ BigDecimal body = new BigDecimal(78); // BigDecimal | Input number as post body
+ try {
+ BigDecimal result = apiInstance.fakeOuterNumberSerialize(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#fakeOuterNumberSerialize");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **body** | **BigDecimal**| Input number as post body | [optional] |
+
+### Return type
+
+[**BigDecimal**](BigDecimal.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Output number | - |
+
+
+## fakeOuterStringSerialize
+
+> String fakeOuterStringSerialize(body)
+
+
+
+Test serialization of outer string types
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ String body = "body_example"; // String | Input string as post body
+ try {
+ String result = apiInstance.fakeOuterStringSerialize(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#fakeOuterStringSerialize");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **body** | **String**| Input string as post body | [optional] |
+
+### Return type
+
+**String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: */*
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Output string | - |
+
+
+## getArrayOfEnums
+
+> List<OuterEnum> getArrayOfEnums()
+
+Array of Enums
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ try {
+ List result = apiInstance.getArrayOfEnums();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#getArrayOfEnums");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+[**List<OuterEnum>**](OuterEnum.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Got named array of enums | - |
+
+
+## postArrayOfString
+
+> postArrayOfString(requestBody)
+
+Array of string
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ List<@Pattern(regexp = "[A-Z0-9]+")String> requestBody = Arrays.asList(); // List<@Pattern(regexp = "[A-Z0-9]+")String> |
+ try {
+ apiInstance.postArrayOfString(requestBody);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#postArrayOfString");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requestBody** | **List<String>**| | [optional] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | ok | - |
+
+
+## testAdditionalPropertiesReference
+
+> testAdditionalPropertiesReference(requestBody)
+
+test referenced additionalProperties
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Map requestBody = null; // Map | request body
+ try {
+ apiInstance.testAdditionalPropertiesReference(requestBody);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testAdditionalPropertiesReference");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requestBody** | **Map<String,Object>**| request body | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## testBodyWithFileSchema
+
+> testBodyWithFileSchema(fileSchemaTestClass)
+
+
+
+For this test, the body for this request much reference a schema named `File`.
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ FileSchemaTestClass fileSchemaTestClass = new FileSchemaTestClass(); // FileSchemaTestClass |
+ try {
+ apiInstance.testBodyWithFileSchema(fileSchemaTestClass);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testBodyWithFileSchema");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **fileSchemaTestClass** | [**FileSchemaTestClass**](FileSchemaTestClass.md)| | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Success | - |
+
+
+## testBodyWithQueryParams
+
+> testBodyWithQueryParams(query, user)
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ String query = "query_example"; // String |
+ User user = new User(); // User |
+ try {
+ apiInstance.testBodyWithQueryParams(query, user);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testBodyWithQueryParams");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **query** | **String**| | |
+| **user** | [**User**](User.md)| | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Success | - |
+
+
+## testClientModel
+
+> Client testClientModel(client)
+
+To test \"client\" model
+
+To test "client" model
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Client client = new Client(); // Client | client model
+ try {
+ Client result = apiInstance.testClientModel(client);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testClientModel");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **client** | [**Client**](Client.md)| client model | |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## testEndpointParameters
+
+> testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback)
+
+Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+
+Fake endpoint for testing various parameters
+假端點
+偽のエンドポイント
+가짜 엔드 포인트
+
+
+### Example
+
+```java
+import java.io.File;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure HTTP basic authorization: http_basic_test
+ HttpBasicAuth http_basic_test = (HttpBasicAuth) defaultClient.getAuthentication("http_basic_test");
+ http_basic_test.setUsername("YOUR USERNAME");
+ http_basic_test.setPassword("YOUR PASSWORD");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ BigDecimal number = new BigDecimal(78); // BigDecimal | None
+ Double _double = 3.4D; // Double | None
+ String patternWithoutDelimiter = "patternWithoutDelimiter_example"; // String | None
+ byte[] _byte = null; // byte[] | None
+ Integer integer = 56; // Integer | None
+ Integer int32 = 56; // Integer | None
+ Long int64 = 56L; // Long | None
+ Float _float = 3.4F; // Float | None
+ String string = "string_example"; // String | None
+ File binary = new File("/path/to/file"); // File | None
+ LocalDate date = LocalDate.now(); // LocalDate | None
+ OffsetDateTime dateTime = OffsetDateTime.parse("2010-02-01T10:20:10.111110+01:00"); // OffsetDateTime | None
+ String password = "password_example"; // String | None
+ String paramCallback = "paramCallback_example"; // String | None
+ try {
+ apiInstance.testEndpointParameters(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testEndpointParameters");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **number** | **BigDecimal**| None | |
+| **_double** | **Double**| None | |
+| **patternWithoutDelimiter** | **String**| None | |
+| **_byte** | **byte[]**| None | |
+| **integer** | **Integer**| None | [optional] |
+| **int32** | **Integer**| None | [optional] |
+| **int64** | **Long**| None | [optional] |
+| **_float** | **Float**| None | [optional] |
+| **string** | **String**| None | [optional] |
+| **binary** | **File**| None | [optional] |
+| **date** | **LocalDate**| None | [optional] |
+| **dateTime** | **OffsetDateTime**| None | [optional] [default to 2010-02-01T10:20:10.111110+01:00] |
+| **password** | **String**| None | [optional] |
+| **paramCallback** | **String**| None | [optional] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[http_basic_test](../README.md#http_basic_test)
+
+### HTTP request headers
+
+- **Content-Type**: application/x-www-form-urlencoded
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid username supplied | - |
+| **404** | User not found | - |
+
+
+## testEnumParameters
+
+> testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString)
+
+To test enum parameters
+
+To test enum parameters
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ List enumHeaderStringArray = Arrays.asList("$"); // List | Header parameter enum test (string array)
+ String enumHeaderString = "_abc"; // String | Header parameter enum test (string)
+ List enumQueryStringArray = Arrays.asList("$"); // List | Query parameter enum test (string array)
+ String enumQueryString = "_abc"; // String | Query parameter enum test (string)
+ Integer enumQueryInteger = 1; // Integer | Query parameter enum test (double)
+ Double enumQueryDouble = 1.1D; // Double | Query parameter enum test (double)
+ List enumFormStringArray = Arrays.asList("$"); // List | Form parameter enum test (string array)
+ String enumFormString = "_abc"; // String | Form parameter enum test (string)
+ try {
+ apiInstance.testEnumParameters(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testEnumParameters");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **enumHeaderStringArray** | **List<String>**| Header parameter enum test (string array) | [optional] [enum: >, $] |
+| **enumHeaderString** | **String**| Header parameter enum test (string) | [optional] [default to -efg] [enum: _abc, -efg, (xyz)] |
+| **enumQueryStringArray** | **List<String>**| Query parameter enum test (string array) | [optional] [enum: >, $] |
+| **enumQueryString** | **String**| Query parameter enum test (string) | [optional] [default to -efg] [enum: _abc, -efg, (xyz)] |
+| **enumQueryInteger** | **Integer**| Query parameter enum test (double) | [optional] [enum: 1, -2] |
+| **enumQueryDouble** | **Double**| Query parameter enum test (double) | [optional] [enum: 1.1, -1.2] |
+| **enumFormStringArray** | **List<String>**| Form parameter enum test (string array) | [optional] [enum: >, $] |
+| **enumFormString** | **String**| Form parameter enum test (string) | [optional] [default to -efg] [enum: _abc, -efg, (xyz)] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/x-www-form-urlencoded
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid request | - |
+| **404** | Not found | - |
+
+
+## testGroupParameters
+
+> testGroupParameters().requiredStringGroup(requiredStringGroup).requiredBooleanGroup(requiredBooleanGroup).requiredInt64Group(requiredInt64Group).stringGroup(stringGroup).booleanGroup(booleanGroup).int64Group(int64Group).execute();
+
+Fake endpoint to test group parameters (optional)
+
+Fake endpoint to test group parameters (optional)
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure HTTP bearer authorization: bearer_test
+ HttpBearerAuth bearer_test = (HttpBearerAuth) defaultClient.getAuthentication("bearer_test");
+ bearer_test.setBearerToken("BEARER TOKEN");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Integer requiredStringGroup = 56; // Integer | Required String in group parameters
+ Boolean requiredBooleanGroup = true; // Boolean | Required Boolean in group parameters
+ Long requiredInt64Group = 56L; // Long | Required Integer in group parameters
+ Integer stringGroup = 56; // Integer | String in group parameters
+ Boolean booleanGroup = true; // Boolean | Boolean in group parameters
+ Long int64Group = 56L; // Long | Integer in group parameters
+ try {
+ api.testGroupParameters()
+ .requiredStringGroup(requiredStringGroup)
+ .requiredBooleanGroup(requiredBooleanGroup)
+ .requiredInt64Group(requiredInt64Group)
+ .stringGroup(stringGroup)
+ .booleanGroup(booleanGroup)
+ .int64Group(int64Group)
+ .execute();
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testGroupParameters");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requiredStringGroup** | **Integer**| Required String in group parameters | |
+| **requiredBooleanGroup** | **Boolean**| Required Boolean in group parameters | |
+| **requiredInt64Group** | **Long**| Required Integer in group parameters | |
+| **stringGroup** | **Integer**| String in group parameters | [optional] |
+| **booleanGroup** | **Boolean**| Boolean in group parameters | [optional] |
+| **int64Group** | **Long**| Integer in group parameters | [optional] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[bearer_test](../README.md#bearer_test)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Something wrong | - |
+
+
+## testInlineAdditionalProperties
+
+> testInlineAdditionalProperties(requestBody)
+
+test inline additionalProperties
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Map requestBody = new HashMap(); // Map | request body
+ try {
+ apiInstance.testInlineAdditionalProperties(requestBody);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testInlineAdditionalProperties");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requestBody** | **Map<String,String>**| request body | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## testInlineFreeformAdditionalProperties
+
+> testInlineFreeformAdditionalProperties(testInlineFreeformAdditionalPropertiesRequest)
+
+test inline free-form additionalProperties
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest = new TestInlineFreeformAdditionalPropertiesRequest(); // TestInlineFreeformAdditionalPropertiesRequest | request body
+ try {
+ apiInstance.testInlineFreeformAdditionalProperties(testInlineFreeformAdditionalPropertiesRequest);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testInlineFreeformAdditionalProperties");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **testInlineFreeformAdditionalPropertiesRequest** | [**TestInlineFreeformAdditionalPropertiesRequest**](TestInlineFreeformAdditionalPropertiesRequest.md)| request body | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## testJsonFormData
+
+> testJsonFormData(param, param2)
+
+test json serialization of form data
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ String param = "param_example"; // String | field1
+ String param2 = "param2_example"; // String | field2
+ try {
+ apiInstance.testJsonFormData(param, param2);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testJsonFormData");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **param** | **String**| field1 | |
+| **param2** | **String**| field2 | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/x-www-form-urlencoded
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## testQueryParameterCollectionFormat
+
+> testQueryParameterCollectionFormat(pipe, ioutil, http, url, context)
+
+
+
+To test the collection format in query parameters
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ List pipe = Arrays.asList(); // List |
+ List ioutil = Arrays.asList(); // List |
+ List http = Arrays.asList(); // List |
+ List url = Arrays.asList(); // List |
+ List context = Arrays.asList(); // List |
+ try {
+ apiInstance.testQueryParameterCollectionFormat(pipe, ioutil, http, url, context);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testQueryParameterCollectionFormat");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **pipe** | **List<String>**| | |
+| **ioutil** | **List<String>**| | |
+| **http** | **List<String>**| | |
+| **url** | **List<String>**| | |
+| **context** | **List<String>**| | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | Success | - |
+
+
+## testStringMapReference
+
+> testStringMapReference(requestBody)
+
+test referenced string map
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ FakeApi apiInstance = new FakeApi(defaultClient);
+ Map requestBody = new HashMap(); // Map | request body
+ try {
+ apiInstance.testStringMapReference(requestBody);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeApi#testStringMapReference");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **requestBody** | **Map<String,String>**| request body | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FakeClassnameTags123Api.md b/samples/client/petstore/java/jersey3-jackson3/docs/FakeClassnameTags123Api.md
new file mode 100644
index 000000000000..c0534bcf0439
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FakeClassnameTags123Api.md
@@ -0,0 +1,81 @@
+# FakeClassnameTags123Api
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**testClassname**](FakeClassnameTags123Api.md#testClassname) | **PATCH** /fake_classname_test | To test class name in snake case |
+
+
+
+## testClassname
+
+> Client testClassname(client)
+
+To test class name in snake case
+
+To test class name in snake case
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.FakeClassnameTags123Api;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure API key authorization: api_key_query
+ ApiKeyAuth api_key_query = (ApiKeyAuth) defaultClient.getAuthentication("api_key_query");
+ api_key_query.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key_query.setApiKeyPrefix("Token");
+
+ FakeClassnameTags123Api apiInstance = new FakeClassnameTags123Api(defaultClient);
+ Client client = new Client(); // Client | client model
+ try {
+ Client result = apiInstance.testClassname(client);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling FakeClassnameTags123Api#testClassname");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **client** | [**Client**](Client.md)| client model | |
+
+### Return type
+
+[**Client**](Client.md)
+
+### Authorization
+
+[api_key_query](../README.md#api_key_query)
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FileSchemaTestClass.md b/samples/client/petstore/java/jersey3-jackson3/docs/FileSchemaTestClass.md
new file mode 100644
index 000000000000..85d1a0636694
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FileSchemaTestClass.md
@@ -0,0 +1,14 @@
+
+
+# FileSchemaTestClass
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**_file** | [**ModelFile**](ModelFile.md) | | [optional] |
+|**files** | [**List<ModelFile>**](ModelFile.md) | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Foo.md b/samples/client/petstore/java/jersey3-jackson3/docs/Foo.md
new file mode 100644
index 000000000000..6b3f0556528a
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Foo.md
@@ -0,0 +1,13 @@
+
+
+# Foo
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**bar** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FooGetDefaultResponse.md b/samples/client/petstore/java/jersey3-jackson3/docs/FooGetDefaultResponse.md
new file mode 100644
index 000000000000..ff3d7a3a56c3
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FooGetDefaultResponse.md
@@ -0,0 +1,13 @@
+
+
+# FooGetDefaultResponse
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**string** | [**Foo**](Foo.md) | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FormatTest.md b/samples/client/petstore/java/jersey3-jackson3/docs/FormatTest.md
new file mode 100644
index 000000000000..01b8c777ae06
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FormatTest.md
@@ -0,0 +1,28 @@
+
+
+# FormatTest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**integer** | **Integer** | | [optional] |
+|**int32** | **Integer** | | [optional] |
+|**int64** | **Long** | | [optional] |
+|**number** | **BigDecimal** | | |
+|**_float** | **Float** | | [optional] |
+|**_double** | **Double** | | [optional] |
+|**decimal** | **BigDecimal** | | [optional] |
+|**string** | **String** | | [optional] |
+|**_byte** | **byte[]** | | |
+|**binary** | **File** | | [optional] |
+|**date** | **LocalDate** | | |
+|**dateTime** | **OffsetDateTime** | | [optional] |
+|**uuid** | **UUID** | | [optional] |
+|**password** | **String** | | |
+|**patternWithDigits** | **String** | A string that is a 10 digit number. Can have leading zeros. | [optional] |
+|**patternWithDigitsAndDelimiter** | **String** | A string starting with 'image_' (case insensitive) and one to three digits following i.e. Image_01. | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Fruit.md b/samples/client/petstore/java/jersey3-jackson3/docs/Fruit.md
new file mode 100644
index 000000000000..41b3152250e1
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Fruit.md
@@ -0,0 +1,37 @@
+
+
+# Fruit
+
+## oneOf schemas
+* [Apple](Apple.md)
+* [Banana](Banana.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Fruit;
+import org.openapitools.client.model.Apple;
+import org.openapitools.client.model.Banana;
+
+public class Example {
+ public static void main(String[] args) {
+ Fruit exampleFruit = new Fruit();
+
+ // create a new Apple
+ Apple exampleApple = new Apple();
+ // set Fruit to Apple
+ exampleFruit.setActualInstance(exampleApple);
+ // to get back the Apple set earlier
+ Apple testApple = (Apple) exampleFruit.getActualInstance();
+
+ // create a new Banana
+ Banana exampleBanana = new Banana();
+ // set Fruit to Banana
+ exampleFruit.setActualInstance(exampleBanana);
+ // to get back the Banana set earlier
+ Banana testBanana = (Banana) exampleFruit.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/FruitReq.md b/samples/client/petstore/java/jersey3-jackson3/docs/FruitReq.md
new file mode 100644
index 000000000000..9d9c875cd39a
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/FruitReq.md
@@ -0,0 +1,39 @@
+
+
+# FruitReq
+
+## oneOf schemas
+* [AppleReq](AppleReq.md)
+* [BananaReq](BananaReq.md)
+
+NOTE: this class is nullable.
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.FruitReq;
+import org.openapitools.client.model.AppleReq;
+import org.openapitools.client.model.BananaReq;
+
+public class Example {
+ public static void main(String[] args) {
+ FruitReq exampleFruitReq = new FruitReq();
+
+ // create a new AppleReq
+ AppleReq exampleAppleReq = new AppleReq();
+ // set FruitReq to AppleReq
+ exampleFruitReq.setActualInstance(exampleAppleReq);
+ // to get back the AppleReq set earlier
+ AppleReq testAppleReq = (AppleReq) exampleFruitReq.getActualInstance();
+
+ // create a new BananaReq
+ BananaReq exampleBananaReq = new BananaReq();
+ // set FruitReq to BananaReq
+ exampleFruitReq.setActualInstance(exampleBananaReq);
+ // to get back the BananaReq set earlier
+ BananaReq testBananaReq = (BananaReq) exampleFruitReq.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/GmFruit.md b/samples/client/petstore/java/jersey3-jackson3/docs/GmFruit.md
new file mode 100644
index 000000000000..c9dc50b92cb7
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/GmFruit.md
@@ -0,0 +1,37 @@
+
+
+# GmFruit
+
+## anyOf schemas
+* [Apple](Apple.md)
+* [Banana](Banana.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.GmFruit;
+import org.openapitools.client.model.Apple;
+import org.openapitools.client.model.Banana;
+
+public class Example {
+ public static void main(String[] args) {
+ GmFruit exampleGmFruit = new GmFruit();
+
+ // create a new Apple
+ Apple exampleApple = new Apple();
+ // set GmFruit to Apple
+ exampleGmFruit.setActualInstance(exampleApple);
+ // to get back the Apple set earlier
+ Apple testApple = (Apple) exampleGmFruit.getActualInstance();
+
+ // create a new Banana
+ Banana exampleBanana = new Banana();
+ // set GmFruit to Banana
+ exampleGmFruit.setActualInstance(exampleBanana);
+ // to get back the Banana set earlier
+ Banana testBanana = (Banana) exampleGmFruit.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/GrandparentAnimal.md b/samples/client/petstore/java/jersey3-jackson3/docs/GrandparentAnimal.md
new file mode 100644
index 000000000000..9737408f2724
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/GrandparentAnimal.md
@@ -0,0 +1,13 @@
+
+
+# GrandparentAnimal
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**petType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/HasOnlyReadOnly.md b/samples/client/petstore/java/jersey3-jackson3/docs/HasOnlyReadOnly.md
new file mode 100644
index 000000000000..29da5205dbba
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/HasOnlyReadOnly.md
@@ -0,0 +1,14 @@
+
+
+# HasOnlyReadOnly
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**bar** | **String** | | [optional] [readonly] |
+|**foo** | **String** | | [optional] [readonly] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/HealthCheckResult.md b/samples/client/petstore/java/jersey3-jackson3/docs/HealthCheckResult.md
new file mode 100644
index 000000000000..4885e6f1cada
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/HealthCheckResult.md
@@ -0,0 +1,14 @@
+
+
+# HealthCheckResult
+
+Just a string to inform instance is up and running. Make it nullable in hope to get it as pointer in generated model.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**nullableMessage** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/IsoscelesTriangle.md b/samples/client/petstore/java/jersey3-jackson3/docs/IsoscelesTriangle.md
new file mode 100644
index 000000000000..0bd5045bc68f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/IsoscelesTriangle.md
@@ -0,0 +1,14 @@
+
+
+# IsoscelesTriangle
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+|**triangleType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Mammal.md b/samples/client/petstore/java/jersey3-jackson3/docs/Mammal.md
new file mode 100644
index 000000000000..11bbff5e2ba9
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Mammal.md
@@ -0,0 +1,46 @@
+
+
+# Mammal
+
+## oneOf schemas
+* [Pig](Pig.md)
+* [Whale](Whale.md)
+* [Zebra](Zebra.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Mammal;
+import org.openapitools.client.model.Pig;
+import org.openapitools.client.model.Whale;
+import org.openapitools.client.model.Zebra;
+
+public class Example {
+ public static void main(String[] args) {
+ Mammal exampleMammal = new Mammal();
+
+ // create a new Pig
+ Pig examplePig = new Pig();
+ // set Mammal to Pig
+ exampleMammal.setActualInstance(examplePig);
+ // to get back the Pig set earlier
+ Pig testPig = (Pig) exampleMammal.getActualInstance();
+
+ // create a new Whale
+ Whale exampleWhale = new Whale();
+ // set Mammal to Whale
+ exampleMammal.setActualInstance(exampleWhale);
+ // to get back the Whale set earlier
+ Whale testWhale = (Whale) exampleMammal.getActualInstance();
+
+ // create a new Zebra
+ Zebra exampleZebra = new Zebra();
+ // set Mammal to Zebra
+ exampleMammal.setActualInstance(exampleZebra);
+ // to get back the Zebra set earlier
+ Zebra testZebra = (Zebra) exampleMammal.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/MammalAnyof.md b/samples/client/petstore/java/jersey3-jackson3/docs/MammalAnyof.md
new file mode 100644
index 000000000000..3fb117e293e2
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/MammalAnyof.md
@@ -0,0 +1,46 @@
+
+
+# MammalAnyof
+
+## anyOf schemas
+* [Pig](Pig.md)
+* [Whale](Whale.md)
+* [Zebra](Zebra.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.MammalAnyof;
+import org.openapitools.client.model.Pig;
+import org.openapitools.client.model.Whale;
+import org.openapitools.client.model.Zebra;
+
+public class Example {
+ public static void main(String[] args) {
+ MammalAnyof exampleMammalAnyof = new MammalAnyof();
+
+ // create a new Pig
+ Pig examplePig = new Pig();
+ // set MammalAnyof to Pig
+ exampleMammalAnyof.setActualInstance(examplePig);
+ // to get back the Pig set earlier
+ Pig testPig = (Pig) exampleMammalAnyof.getActualInstance();
+
+ // create a new Whale
+ Whale exampleWhale = new Whale();
+ // set MammalAnyof to Whale
+ exampleMammalAnyof.setActualInstance(exampleWhale);
+ // to get back the Whale set earlier
+ Whale testWhale = (Whale) exampleMammalAnyof.getActualInstance();
+
+ // create a new Zebra
+ Zebra exampleZebra = new Zebra();
+ // set MammalAnyof to Zebra
+ exampleMammalAnyof.setActualInstance(exampleZebra);
+ // to get back the Zebra set earlier
+ Zebra testZebra = (Zebra) exampleMammalAnyof.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/MapTest.md b/samples/client/petstore/java/jersey3-jackson3/docs/MapTest.md
new file mode 100644
index 000000000000..54380188e1d6
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/MapTest.md
@@ -0,0 +1,25 @@
+
+
+# MapTest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**mapMapOfString** | **Map<String, Map<String, String>>** | | [optional] |
+|**mapOfEnumString** | [**Map<String, InnerEnum>**](#Map<String, InnerEnum>) | | [optional] |
+|**directMap** | **Map<String, Boolean>** | | [optional] |
+|**indirectMap** | **Map<String, Boolean>** | | [optional] |
+
+
+
+## Enum: Map<String, InnerEnum>
+
+| Name | Value |
+|---- | -----|
+| UPPER | "UPPER" |
+| LOWER | "lower" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/MixedPropertiesAndAdditionalPropertiesClass.md b/samples/client/petstore/java/jersey3-jackson3/docs/MixedPropertiesAndAdditionalPropertiesClass.md
new file mode 100644
index 000000000000..a5ddf0faa6a9
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/MixedPropertiesAndAdditionalPropertiesClass.md
@@ -0,0 +1,15 @@
+
+
+# MixedPropertiesAndAdditionalPropertiesClass
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**uuid** | **UUID** | | [optional] |
+|**dateTime** | **OffsetDateTime** | | [optional] |
+|**map** | [**Map<String, Animal>**](Animal.md) | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Model200Response.md b/samples/client/petstore/java/jersey3-jackson3/docs/Model200Response.md
new file mode 100644
index 000000000000..109411580c62
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Model200Response.md
@@ -0,0 +1,15 @@
+
+
+# Model200Response
+
+Model for testing model name starting with number
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **Integer** | | [optional] |
+|**propertyClass** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ModelApiResponse.md b/samples/client/petstore/java/jersey3-jackson3/docs/ModelApiResponse.md
new file mode 100644
index 000000000000..e374c2dd2dec
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ModelApiResponse.md
@@ -0,0 +1,15 @@
+
+
+# ModelApiResponse
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**code** | **Integer** | | [optional] |
+|**type** | **String** | | [optional] |
+|**message** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ModelFile.md b/samples/client/petstore/java/jersey3-jackson3/docs/ModelFile.md
new file mode 100644
index 000000000000..adcde984f527
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ModelFile.md
@@ -0,0 +1,14 @@
+
+
+# ModelFile
+
+Must be named `File` for test.
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**sourceURI** | **String** | Test capitalization | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ModelList.md b/samples/client/petstore/java/jersey3-jackson3/docs/ModelList.md
new file mode 100644
index 000000000000..f93ab7dde8d4
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ModelList.md
@@ -0,0 +1,13 @@
+
+
+# ModelList
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**_123list** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ModelReturn.md b/samples/client/petstore/java/jersey3-jackson3/docs/ModelReturn.md
new file mode 100644
index 000000000000..0bd356861eb7
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ModelReturn.md
@@ -0,0 +1,14 @@
+
+
+# ModelReturn
+
+Model for testing reserved words
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**_return** | **Integer** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Name.md b/samples/client/petstore/java/jersey3-jackson3/docs/Name.md
new file mode 100644
index 000000000000..c901d9435309
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Name.md
@@ -0,0 +1,17 @@
+
+
+# Name
+
+Model for testing model name same as property name
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**name** | **Integer** | | |
+|**snakeCase** | **Integer** | | [optional] [readonly] |
+|**property** | **String** | | [optional] |
+|**_123number** | **Integer** | | [optional] [readonly] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/NullableClass.md b/samples/client/petstore/java/jersey3-jackson3/docs/NullableClass.md
new file mode 100644
index 000000000000..fa98c5c6d984
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/NullableClass.md
@@ -0,0 +1,24 @@
+
+
+# NullableClass
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**integerProp** | **Integer** | | [optional] |
+|**numberProp** | **BigDecimal** | | [optional] |
+|**booleanProp** | **Boolean** | | [optional] |
+|**stringProp** | **String** | | [optional] |
+|**dateProp** | **LocalDate** | | [optional] |
+|**datetimeProp** | **OffsetDateTime** | | [optional] |
+|**arrayNullableProp** | **List<Object>** | | [optional] |
+|**arrayAndItemsNullableProp** | **List<Object>** | | [optional] |
+|**arrayItemsNullable** | **List<Object>** | | [optional] |
+|**objectNullableProp** | **Map<String, Object>** | | [optional] |
+|**objectAndItemsNullableProp** | **Map<String, Object>** | | [optional] |
+|**objectItemsNullable** | **Map<String, Object>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/NullableShape.md b/samples/client/petstore/java/jersey3-jackson3/docs/NullableShape.md
new file mode 100644
index 000000000000..60c45b268406
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/NullableShape.md
@@ -0,0 +1,41 @@
+
+
+# NullableShape
+
+The value may be a shape or the 'null' value. The 'nullable' attribute was introduced in OAS schema >= 3.0 and has been deprecated in OAS schema >= 3.1.
+
+## oneOf schemas
+* [Quadrilateral](Quadrilateral.md)
+* [Triangle](Triangle.md)
+
+NOTE: this class is nullable.
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.NullableShape;
+import org.openapitools.client.model.Quadrilateral;
+import org.openapitools.client.model.Triangle;
+
+public class Example {
+ public static void main(String[] args) {
+ NullableShape exampleNullableShape = new NullableShape();
+
+ // create a new Quadrilateral
+ Quadrilateral exampleQuadrilateral = new Quadrilateral();
+ // set NullableShape to Quadrilateral
+ exampleNullableShape.setActualInstance(exampleQuadrilateral);
+ // to get back the Quadrilateral set earlier
+ Quadrilateral testQuadrilateral = (Quadrilateral) exampleNullableShape.getActualInstance();
+
+ // create a new Triangle
+ Triangle exampleTriangle = new Triangle();
+ // set NullableShape to Triangle
+ exampleNullableShape.setActualInstance(exampleTriangle);
+ // to get back the Triangle set earlier
+ Triangle testTriangle = (Triangle) exampleNullableShape.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/NumberOnly.md b/samples/client/petstore/java/jersey3-jackson3/docs/NumberOnly.md
new file mode 100644
index 000000000000..b8ed1a4cfae1
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/NumberOnly.md
@@ -0,0 +1,13 @@
+
+
+# NumberOnly
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**justNumber** | **BigDecimal** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ObjectWithDeprecatedFields.md b/samples/client/petstore/java/jersey3-jackson3/docs/ObjectWithDeprecatedFields.md
new file mode 100644
index 000000000000..f1cf571f4c09
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ObjectWithDeprecatedFields.md
@@ -0,0 +1,16 @@
+
+
+# ObjectWithDeprecatedFields
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**uuid** | **String** | | [optional] |
+|**id** | **BigDecimal** | | [optional] |
+|**deprecatedRef** | [**DeprecatedObject**](DeprecatedObject.md) | | [optional] |
+|**bars** | **List<String>** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Order.md b/samples/client/petstore/java/jersey3-jackson3/docs/Order.md
new file mode 100644
index 000000000000..27af32855c5c
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Order.md
@@ -0,0 +1,28 @@
+
+
+# Order
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | | [optional] |
+|**petId** | **Long** | | [optional] |
+|**quantity** | **Integer** | | [optional] |
+|**shipDate** | **OffsetDateTime** | | [optional] |
+|**status** | [**StatusEnum**](#StatusEnum) | Order Status | [optional] |
+|**complete** | **Boolean** | | [optional] |
+
+
+
+## Enum: StatusEnum
+
+| Name | Value |
+|---- | -----|
+| PLACED | "placed" |
+| APPROVED | "approved" |
+| DELIVERED | "delivered" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/OuterComposite.md b/samples/client/petstore/java/jersey3-jackson3/docs/OuterComposite.md
new file mode 100644
index 000000000000..98b56e0763ff
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/OuterComposite.md
@@ -0,0 +1,15 @@
+
+
+# OuterComposite
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**myNumber** | **BigDecimal** | | [optional] |
+|**myString** | **String** | | [optional] |
+|**myBoolean** | **Boolean** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnum.md b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnum.md
new file mode 100644
index 000000000000..1f9b723eb8e7
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnum.md
@@ -0,0 +1,15 @@
+
+
+# OuterEnum
+
+## Enum
+
+
+* `PLACED` (value: `"placed"`)
+
+* `APPROVED` (value: `"approved"`)
+
+* `DELIVERED` (value: `"delivered"`)
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumDefaultValue.md b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumDefaultValue.md
new file mode 100644
index 000000000000..cbc7f4ba54d2
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumDefaultValue.md
@@ -0,0 +1,15 @@
+
+
+# OuterEnumDefaultValue
+
+## Enum
+
+
+* `PLACED` (value: `"placed"`)
+
+* `APPROVED` (value: `"approved"`)
+
+* `DELIVERED` (value: `"delivered"`)
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumInteger.md b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumInteger.md
new file mode 100644
index 000000000000..f71dea30ad00
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumInteger.md
@@ -0,0 +1,15 @@
+
+
+# OuterEnumInteger
+
+## Enum
+
+
+* `NUMBER_0` (value: `0`)
+
+* `NUMBER_1` (value: `1`)
+
+* `NUMBER_2` (value: `2`)
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumIntegerDefaultValue.md b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumIntegerDefaultValue.md
new file mode 100644
index 000000000000..99e6389f4278
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/OuterEnumIntegerDefaultValue.md
@@ -0,0 +1,15 @@
+
+
+# OuterEnumIntegerDefaultValue
+
+## Enum
+
+
+* `NUMBER_0` (value: `0`)
+
+* `NUMBER_1` (value: `1`)
+
+* `NUMBER_2` (value: `2`)
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ParentPet.md b/samples/client/petstore/java/jersey3-jackson3/docs/ParentPet.md
new file mode 100644
index 000000000000..4992b88a6710
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ParentPet.md
@@ -0,0 +1,12 @@
+
+
+# ParentPet
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Pet.md b/samples/client/petstore/java/jersey3-jackson3/docs/Pet.md
new file mode 100644
index 000000000000..08dfd8623602
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Pet.md
@@ -0,0 +1,28 @@
+
+
+# Pet
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | | [optional] |
+|**category** | [**Category**](Category.md) | | [optional] |
+|**name** | **String** | | |
+|**photoUrls** | **List<String>** | | |
+|**tags** | [**List<Tag>**](Tag.md) | | [optional] |
+|**status** | [**StatusEnum**](#StatusEnum) | pet status in the store | [optional] |
+
+
+
+## Enum: StatusEnum
+
+| Name | Value |
+|---- | -----|
+| AVAILABLE | "available" |
+| PENDING | "pending" |
+| SOLD | "sold" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/PetApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/PetApi.md
new file mode 100644
index 000000000000..b6096623c133
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/PetApi.md
@@ -0,0 +1,671 @@
+# PetApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**addPet**](PetApi.md#addPet) | **POST** /pet | Add a new pet to the store |
+| [**deletePet**](PetApi.md#deletePet) | **DELETE** /pet/{petId} | Deletes a pet |
+| [**findPetsByStatus**](PetApi.md#findPetsByStatus) | **GET** /pet/findByStatus | Finds Pets by status |
+| [**findPetsByTags**](PetApi.md#findPetsByTags) | **GET** /pet/findByTags | Finds Pets by tags |
+| [**getPetById**](PetApi.md#getPetById) | **GET** /pet/{petId} | Find pet by ID |
+| [**updatePet**](PetApi.md#updatePet) | **PUT** /pet | Update an existing pet |
+| [**updatePetWithForm**](PetApi.md#updatePetWithForm) | **POST** /pet/{petId} | Updates a pet in the store with form data |
+| [**uploadFile**](PetApi.md#uploadFile) | **POST** /pet/{petId}/uploadImage | uploads an image |
+| [**uploadFileWithRequiredFile**](PetApi.md#uploadFileWithRequiredFile) | **POST** /fake/{petId}/uploadImageWithRequiredFile | uploads an image (required) |
+
+
+
+## addPet
+
+> addPet(pet)
+
+Add a new pet to the store
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store
+ try {
+ apiInstance.addPet(pet);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#addPet");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth), [http_signature_test](../README.md#http_signature_test)
+
+### HTTP request headers
+
+- **Content-Type**: application/json, application/xml
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **405** | Invalid input | - |
+
+
+## deletePet
+
+> deletePet(petId, apiKey)
+
+Deletes a pet
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Long petId = 56L; // Long | Pet id to delete
+ String apiKey = "apiKey_example"; // String |
+ try {
+ apiInstance.deletePet(petId, apiKey);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#deletePet");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **petId** | **Long**| Pet id to delete | |
+| **apiKey** | **String**| | [optional] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid pet value | - |
+
+
+## findPetsByStatus
+
+> List<Pet> findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ List status = Arrays.asList("available"); // List | Status values that need to be considered for filter
+ try {
+ List result = apiInstance.findPetsByStatus(status);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#findPetsByStatus");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **status** | **List<String>**| Status values that need to be considered for filter | [enum: available, pending, sold] |
+
+### Return type
+
+[**List<Pet>**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth), [http_signature_test](../README.md#http_signature_test)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid status value | - |
+
+
+## findPetsByTags
+
+> List<Pet> findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ List tags = Arrays.asList(); // List | Tags to filter by
+ try {
+ List result = apiInstance.findPetsByTags(tags);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#findPetsByTags");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **tags** | **List<String>**| Tags to filter by | |
+
+### Return type
+
+[**List<Pet>**](Pet.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth), [http_signature_test](../README.md#http_signature_test)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid tag value | - |
+
+
+## getPetById
+
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure API key authorization: api_key
+ ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key");
+ api_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key.setApiKeyPrefix("Token");
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Long petId = 56L; // Long | ID of pet to return
+ try {
+ Pet result = apiInstance.getPetById(petId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#getPetById");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **petId** | **Long**| ID of pet to return | |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid ID supplied | - |
+| **404** | Pet not found | - |
+
+
+## updatePet
+
+> updatePet(pet)
+
+Update an existing pet
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Pet pet = new Pet(); // Pet | Pet object that needs to be added to the store
+ try {
+ apiInstance.updatePet(pet);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#updatePet");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth), [http_signature_test](../README.md#http_signature_test)
+
+### HTTP request headers
+
+- **Content-Type**: application/json, application/xml
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid ID supplied | - |
+| **404** | Pet not found | - |
+| **405** | Validation exception | - |
+
+
+## updatePetWithForm
+
+> updatePetWithForm(petId, name, status)
+
+Updates a pet in the store with form data
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Long petId = 56L; // Long | ID of pet that needs to be updated
+ String name = "name_example"; // String | Updated name of the pet
+ String status = "status_example"; // String | Updated status of the pet
+ try {
+ apiInstance.updatePetWithForm(petId, name, status);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#updatePetWithForm");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **petId** | **Long**| ID of pet that needs to be updated | |
+| **name** | **String**| Updated name of the pet | [optional] |
+| **status** | **String**| Updated status of the pet | [optional] |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+- **Content-Type**: application/x-www-form-urlencoded
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **405** | Invalid input | - |
+
+
+## uploadFile
+
+> ModelApiResponse uploadFile(petId, additionalMetadata, _file)
+
+uploads an image
+
+
+
+### Example
+
+```java
+import java.io.File;
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Long petId = 56L; // Long | ID of pet to update
+ String additionalMetadata = "additionalMetadata_example"; // String | Additional data to pass to server
+ File _file = new File("/path/to/file"); // File | file to upload
+ try {
+ ModelApiResponse result = apiInstance.uploadFile(petId, additionalMetadata, _file);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#uploadFile");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **petId** | **Long**| ID of pet to update | |
+| **additionalMetadata** | **String**| Additional data to pass to server | [optional] |
+| **_file** | **File**| file to upload | [optional] |
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+- **Content-Type**: multipart/form-data
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## uploadFileWithRequiredFile
+
+> ModelApiResponse uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata)
+
+uploads an image (required)
+
+
+
+### Example
+
+```java
+import java.io.File;
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.PetApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure OAuth2 access token for authorization: petstore_auth
+ OAuth petstore_auth = (OAuth) defaultClient.getAuthentication("petstore_auth");
+ petstore_auth.setAccessToken("YOUR ACCESS TOKEN");
+
+ PetApi apiInstance = new PetApi(defaultClient);
+ Long petId = 56L; // Long | ID of pet to update
+ File requiredFile = new File("/path/to/file"); // File | file to upload
+ String additionalMetadata = "additionalMetadata_example"; // String | Additional data to pass to server
+ try {
+ ModelApiResponse result = apiInstance.uploadFileWithRequiredFile(petId, requiredFile, additionalMetadata);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling PetApi#uploadFileWithRequiredFile");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **petId** | **Long**| ID of pet to update | |
+| **requiredFile** | **File**| file to upload | |
+| **additionalMetadata** | **String**| Additional data to pass to server | [optional] |
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+[petstore_auth](../README.md#petstore_auth)
+
+### HTTP request headers
+
+- **Content-Type**: multipart/form-data
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Pig.md b/samples/client/petstore/java/jersey3-jackson3/docs/Pig.md
new file mode 100644
index 000000000000..f0a92bbe61b8
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Pig.md
@@ -0,0 +1,37 @@
+
+
+# Pig
+
+## oneOf schemas
+* [BasquePig](BasquePig.md)
+* [DanishPig](DanishPig.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Pig;
+import org.openapitools.client.model.BasquePig;
+import org.openapitools.client.model.DanishPig;
+
+public class Example {
+ public static void main(String[] args) {
+ Pig examplePig = new Pig();
+
+ // create a new BasquePig
+ BasquePig exampleBasquePig = new BasquePig();
+ // set Pig to BasquePig
+ examplePig.setActualInstance(exampleBasquePig);
+ // to get back the BasquePig set earlier
+ BasquePig testBasquePig = (BasquePig) examplePig.getActualInstance();
+
+ // create a new DanishPig
+ DanishPig exampleDanishPig = new DanishPig();
+ // set Pig to DanishPig
+ examplePig.setActualInstance(exampleDanishPig);
+ // to get back the DanishPig set earlier
+ DanishPig testDanishPig = (DanishPig) examplePig.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Quadrilateral.md b/samples/client/petstore/java/jersey3-jackson3/docs/Quadrilateral.md
new file mode 100644
index 000000000000..83ffea0c742f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Quadrilateral.md
@@ -0,0 +1,37 @@
+
+
+# Quadrilateral
+
+## oneOf schemas
+* [ComplexQuadrilateral](ComplexQuadrilateral.md)
+* [SimpleQuadrilateral](SimpleQuadrilateral.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Quadrilateral;
+import org.openapitools.client.model.ComplexQuadrilateral;
+import org.openapitools.client.model.SimpleQuadrilateral;
+
+public class Example {
+ public static void main(String[] args) {
+ Quadrilateral exampleQuadrilateral = new Quadrilateral();
+
+ // create a new ComplexQuadrilateral
+ ComplexQuadrilateral exampleComplexQuadrilateral = new ComplexQuadrilateral();
+ // set Quadrilateral to ComplexQuadrilateral
+ exampleQuadrilateral.setActualInstance(exampleComplexQuadrilateral);
+ // to get back the ComplexQuadrilateral set earlier
+ ComplexQuadrilateral testComplexQuadrilateral = (ComplexQuadrilateral) exampleQuadrilateral.getActualInstance();
+
+ // create a new SimpleQuadrilateral
+ SimpleQuadrilateral exampleSimpleQuadrilateral = new SimpleQuadrilateral();
+ // set Quadrilateral to SimpleQuadrilateral
+ exampleQuadrilateral.setActualInstance(exampleSimpleQuadrilateral);
+ // to get back the SimpleQuadrilateral set earlier
+ SimpleQuadrilateral testSimpleQuadrilateral = (SimpleQuadrilateral) exampleQuadrilateral.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/QuadrilateralInterface.md b/samples/client/petstore/java/jersey3-jackson3/docs/QuadrilateralInterface.md
new file mode 100644
index 000000000000..99451f3bd020
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/QuadrilateralInterface.md
@@ -0,0 +1,13 @@
+
+
+# QuadrilateralInterface
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**quadrilateralType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ReadOnlyFirst.md b/samples/client/petstore/java/jersey3-jackson3/docs/ReadOnlyFirst.md
new file mode 100644
index 000000000000..ad6af7ee155f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ReadOnlyFirst.md
@@ -0,0 +1,14 @@
+
+
+# ReadOnlyFirst
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**bar** | **String** | | [optional] [readonly] |
+|**baz** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ScaleneTriangle.md b/samples/client/petstore/java/jersey3-jackson3/docs/ScaleneTriangle.md
new file mode 100644
index 000000000000..c578f6cbfaab
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ScaleneTriangle.md
@@ -0,0 +1,14 @@
+
+
+# ScaleneTriangle
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+|**triangleType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Shape.md b/samples/client/petstore/java/jersey3-jackson3/docs/Shape.md
new file mode 100644
index 000000000000..9c237eefb048
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Shape.md
@@ -0,0 +1,37 @@
+
+
+# Shape
+
+## oneOf schemas
+* [Quadrilateral](Quadrilateral.md)
+* [Triangle](Triangle.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Shape;
+import org.openapitools.client.model.Quadrilateral;
+import org.openapitools.client.model.Triangle;
+
+public class Example {
+ public static void main(String[] args) {
+ Shape exampleShape = new Shape();
+
+ // create a new Quadrilateral
+ Quadrilateral exampleQuadrilateral = new Quadrilateral();
+ // set Shape to Quadrilateral
+ exampleShape.setActualInstance(exampleQuadrilateral);
+ // to get back the Quadrilateral set earlier
+ Quadrilateral testQuadrilateral = (Quadrilateral) exampleShape.getActualInstance();
+
+ // create a new Triangle
+ Triangle exampleTriangle = new Triangle();
+ // set Shape to Triangle
+ exampleShape.setActualInstance(exampleTriangle);
+ // to get back the Triangle set earlier
+ Triangle testTriangle = (Triangle) exampleShape.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ShapeInterface.md b/samples/client/petstore/java/jersey3-jackson3/docs/ShapeInterface.md
new file mode 100644
index 000000000000..b4f981e3b566
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ShapeInterface.md
@@ -0,0 +1,13 @@
+
+
+# ShapeInterface
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/ShapeOrNull.md b/samples/client/petstore/java/jersey3-jackson3/docs/ShapeOrNull.md
new file mode 100644
index 000000000000..6a738c4b9870
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/ShapeOrNull.md
@@ -0,0 +1,41 @@
+
+
+# ShapeOrNull
+
+The value may be a shape or the 'null' value. This is introduced in OAS schema >= 3.1.
+
+## oneOf schemas
+* [Quadrilateral](Quadrilateral.md)
+* [Triangle](Triangle.md)
+
+NOTE: this class is nullable.
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.ShapeOrNull;
+import org.openapitools.client.model.Quadrilateral;
+import org.openapitools.client.model.Triangle;
+
+public class Example {
+ public static void main(String[] args) {
+ ShapeOrNull exampleShapeOrNull = new ShapeOrNull();
+
+ // create a new Quadrilateral
+ Quadrilateral exampleQuadrilateral = new Quadrilateral();
+ // set ShapeOrNull to Quadrilateral
+ exampleShapeOrNull.setActualInstance(exampleQuadrilateral);
+ // to get back the Quadrilateral set earlier
+ Quadrilateral testQuadrilateral = (Quadrilateral) exampleShapeOrNull.getActualInstance();
+
+ // create a new Triangle
+ Triangle exampleTriangle = new Triangle();
+ // set ShapeOrNull to Triangle
+ exampleShapeOrNull.setActualInstance(exampleTriangle);
+ // to get back the Triangle set earlier
+ Triangle testTriangle = (Triangle) exampleShapeOrNull.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/SimpleQuadrilateral.md b/samples/client/petstore/java/jersey3-jackson3/docs/SimpleQuadrilateral.md
new file mode 100644
index 000000000000..52fb7d1a6a49
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/SimpleQuadrilateral.md
@@ -0,0 +1,14 @@
+
+
+# SimpleQuadrilateral
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**shapeType** | **String** | | |
+|**quadrilateralType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/SpecialModelName.md b/samples/client/petstore/java/jersey3-jackson3/docs/SpecialModelName.md
new file mode 100644
index 000000000000..e17d0d797b7f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/SpecialModelName.md
@@ -0,0 +1,14 @@
+
+
+# SpecialModelName
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**$specialPropertyName** | **Long** | | [optional] |
+|**specialModelName** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/StoreApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/StoreApi.md
new file mode 100644
index 000000000000..6eab555ee029
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/StoreApi.md
@@ -0,0 +1,278 @@
+# StoreApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{order_id} | Delete purchase order by ID |
+| [**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status |
+| [**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{order_id} | Find purchase order by ID |
+| [**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet |
+
+
+
+## deleteOrder
+
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.StoreApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ StoreApi apiInstance = new StoreApi(defaultClient);
+ String orderId = "orderId_example"; // String | ID of the order that needs to be deleted
+ try {
+ apiInstance.deleteOrder(orderId);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling StoreApi#deleteOrder");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **orderId** | **String**| ID of the order that needs to be deleted | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid ID supplied | - |
+| **404** | Order not found | - |
+
+
+## getInventory
+
+> Map<String, Integer> getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.auth.*;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.StoreApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ // Configure API key authorization: api_key
+ ApiKeyAuth api_key = (ApiKeyAuth) defaultClient.getAuthentication("api_key");
+ api_key.setApiKey("YOUR API KEY");
+ // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
+ //api_key.setApiKeyPrefix("Token");
+
+ StoreApi apiInstance = new StoreApi(defaultClient);
+ try {
+ Map result = apiInstance.getInventory();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling StoreApi#getInventory");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+**Map<String, Integer>**
+
+### Authorization
+
+[api_key](../README.md#api_key)
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+
+
+## getOrderById
+
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value <= 5 or > 10. Other values will generate exceptions
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.StoreApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ StoreApi apiInstance = new StoreApi(defaultClient);
+ Long orderId = 56L; // Long | ID of pet that needs to be fetched
+ try {
+ Order result = apiInstance.getOrderById(orderId);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling StoreApi#getOrderById");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **orderId** | **Long**| ID of pet that needs to be fetched | |
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid ID supplied | - |
+| **404** | Order not found | - |
+
+
+## placeOrder
+
+> Order placeOrder(order)
+
+Place an order for a pet
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.StoreApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ StoreApi apiInstance = new StoreApi(defaultClient);
+ Order order = new Order(); // Order | order placed for purchasing the pet
+ try {
+ Order result = apiInstance.placeOrder(order);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling StoreApi#placeOrder");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **order** | [**Order**](Order.md)| order placed for purchasing the pet | |
+
+### Return type
+
+[**Order**](Order.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid Order | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Tag.md b/samples/client/petstore/java/jersey3-jackson3/docs/Tag.md
new file mode 100644
index 000000000000..5088b2dd1c31
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Tag.md
@@ -0,0 +1,14 @@
+
+
+# Tag
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | | [optional] |
+|**name** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/TestInlineFreeformAdditionalPropertiesRequest.md b/samples/client/petstore/java/jersey3-jackson3/docs/TestInlineFreeformAdditionalPropertiesRequest.md
new file mode 100644
index 000000000000..dc066e6c7dac
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/TestInlineFreeformAdditionalPropertiesRequest.md
@@ -0,0 +1,13 @@
+
+
+# TestInlineFreeformAdditionalPropertiesRequest
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**someProperty** | **String** | | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Triangle.md b/samples/client/petstore/java/jersey3-jackson3/docs/Triangle.md
new file mode 100644
index 000000000000..daf9d153ff61
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Triangle.md
@@ -0,0 +1,46 @@
+
+
+# Triangle
+
+## oneOf schemas
+* [EquilateralTriangle](EquilateralTriangle.md)
+* [IsoscelesTriangle](IsoscelesTriangle.md)
+* [ScaleneTriangle](ScaleneTriangle.md)
+
+## Example
+```java
+// Import classes:
+import org.openapitools.client.model.Triangle;
+import org.openapitools.client.model.EquilateralTriangle;
+import org.openapitools.client.model.IsoscelesTriangle;
+import org.openapitools.client.model.ScaleneTriangle;
+
+public class Example {
+ public static void main(String[] args) {
+ Triangle exampleTriangle = new Triangle();
+
+ // create a new EquilateralTriangle
+ EquilateralTriangle exampleEquilateralTriangle = new EquilateralTriangle();
+ // set Triangle to EquilateralTriangle
+ exampleTriangle.setActualInstance(exampleEquilateralTriangle);
+ // to get back the EquilateralTriangle set earlier
+ EquilateralTriangle testEquilateralTriangle = (EquilateralTriangle) exampleTriangle.getActualInstance();
+
+ // create a new IsoscelesTriangle
+ IsoscelesTriangle exampleIsoscelesTriangle = new IsoscelesTriangle();
+ // set Triangle to IsoscelesTriangle
+ exampleTriangle.setActualInstance(exampleIsoscelesTriangle);
+ // to get back the IsoscelesTriangle set earlier
+ IsoscelesTriangle testIsoscelesTriangle = (IsoscelesTriangle) exampleTriangle.getActualInstance();
+
+ // create a new ScaleneTriangle
+ ScaleneTriangle exampleScaleneTriangle = new ScaleneTriangle();
+ // set Triangle to ScaleneTriangle
+ exampleTriangle.setActualInstance(exampleScaleneTriangle);
+ // to get back the ScaleneTriangle set earlier
+ ScaleneTriangle testScaleneTriangle = (ScaleneTriangle) exampleTriangle.getActualInstance();
+ }
+}
+```
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/TriangleInterface.md b/samples/client/petstore/java/jersey3-jackson3/docs/TriangleInterface.md
new file mode 100644
index 000000000000..ef5fc7575f34
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/TriangleInterface.md
@@ -0,0 +1,13 @@
+
+
+# TriangleInterface
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**triangleType** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/User.md b/samples/client/petstore/java/jersey3-jackson3/docs/User.md
new file mode 100644
index 000000000000..9e97dc35485f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/User.md
@@ -0,0 +1,24 @@
+
+
+# User
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**id** | **Long** | | [optional] |
+|**username** | **String** | | [optional] |
+|**firstName** | **String** | | [optional] |
+|**lastName** | **String** | | [optional] |
+|**email** | **String** | | [optional] |
+|**password** | **String** | | [optional] |
+|**phone** | **String** | | [optional] |
+|**userStatus** | **Integer** | User Status | [optional] |
+|**objectWithNoDeclaredProps** | **Object** | test code generation for objects Value must be a map of strings to values. It cannot be the 'null' value. | [optional] |
+|**objectWithNoDeclaredPropsNullable** | **Object** | test code generation for nullable objects. Value must be a map of strings to values or the 'null' value. | [optional] |
+|**anyTypeProp** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. See https://github.com/OAI/OpenAPI-Specification/issues/1389 | [optional] |
+|**anyTypePropNullable** | **Object** | test code generation for any type Here the 'type' attribute is not specified, which means the value can be anything, including the null value, string, number, boolean, array or object. The 'nullable' attribute does not change the allowed values. | [optional] |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/UserApi.md b/samples/client/petstore/java/jersey3-jackson3/docs/UserApi.md
new file mode 100644
index 000000000000..091549fc7c8f
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/UserApi.md
@@ -0,0 +1,535 @@
+# UserApi
+
+All URIs are relative to *http://petstore.swagger.io:80/v2*
+
+| Method | HTTP request | Description |
+|------------- | ------------- | -------------|
+| [**createUser**](UserApi.md#createUser) | **POST** /user | Create user |
+| [**createUsersWithArrayInput**](UserApi.md#createUsersWithArrayInput) | **POST** /user/createWithArray | Creates list of users with given input array |
+| [**createUsersWithListInput**](UserApi.md#createUsersWithListInput) | **POST** /user/createWithList | Creates list of users with given input array |
+| [**deleteUser**](UserApi.md#deleteUser) | **DELETE** /user/{username} | Delete user |
+| [**getUserByName**](UserApi.md#getUserByName) | **GET** /user/{username} | Get user by user name |
+| [**loginUser**](UserApi.md#loginUser) | **GET** /user/login | Logs user into the system |
+| [**logoutUser**](UserApi.md#logoutUser) | **GET** /user/logout | Logs out current logged in user session |
+| [**updateUser**](UserApi.md#updateUser) | **PUT** /user/{username} | Updated user |
+
+
+
+## createUser
+
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ User user = new User(); // User | Created user object
+ try {
+ apiInstance.createUser(user);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#createUser");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **user** | [**User**](User.md)| Created user object | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **0** | successful operation | - |
+
+
+## createUsersWithArrayInput
+
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ List<@Valid User> user = Arrays.asList(); // List<@Valid User> | List of user object
+ try {
+ apiInstance.createUsersWithArrayInput(user);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#createUsersWithArrayInput");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **user** | [**List<User>**](User.md)| List of user object | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **0** | successful operation | - |
+
+
+## createUsersWithListInput
+
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ List<@Valid User> user = Arrays.asList(); // List<@Valid User> | List of user object
+ try {
+ apiInstance.createUsersWithListInput(user);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#createUsersWithListInput");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **user** | [**List<User>**](User.md)| List of user object | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **0** | successful operation | - |
+
+
+## deleteUser
+
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ String username = "username_example"; // String | The name that needs to be deleted
+ try {
+ apiInstance.deleteUser(username);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#deleteUser");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **username** | **String**| The name that needs to be deleted | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid username supplied | - |
+| **404** | User not found | - |
+
+
+## getUserByName
+
+> User getUserByName(username)
+
+Get user by user name
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ String username = "username_example"; // String | The name that needs to be fetched. Use user1 for testing.
+ try {
+ User result = apiInstance.getUserByName(username);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#getUserByName");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **username** | **String**| The name that needs to be fetched. Use user1 for testing. | |
+
+### Return type
+
+[**User**](User.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | - |
+| **400** | Invalid username supplied | - |
+| **404** | User not found | - |
+
+
+## loginUser
+
+> String loginUser(username, password)
+
+Logs user into the system
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ String username = "username_example"; // String | The user name for login
+ String password = "password_example"; // String | The password for login in clear text
+ try {
+ String result = apiInstance.loginUser(username, password);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#loginUser");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **username** | **String**| The user name for login | |
+| **password** | **String**| The password for login in clear text | |
+
+### Return type
+
+**String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: application/xml, application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **200** | successful operation | * X-Rate-Limit - calls per hour allowed by the user * X-Expires-After - date in UTC when token expires |
+| **400** | Invalid username/password supplied | - |
+
+
+## logoutUser
+
+> logoutUser()
+
+Logs out current logged in user session
+
+
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ try {
+ apiInstance.logoutUser();
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#logoutUser");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: Not defined
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **0** | successful operation | - |
+
+
+## updateUser
+
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+
+```java
+// Import classes:
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiException;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.model.*;
+import org.openapitools.client.api.UserApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = Configuration.getDefaultApiClient();
+ defaultClient.setBasePath("http://petstore.swagger.io:80/v2");
+
+ UserApi apiInstance = new UserApi(defaultClient);
+ String username = "username_example"; // String | name that need to be deleted
+ User user = new User(); // User | Updated user object
+ try {
+ apiInstance.updateUser(username, user);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling UserApi#updateUser");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
+```
+
+### Parameters
+
+
+| Name | Type | Description | Notes |
+|------------- | ------------- | ------------- | -------------|
+| **username** | **String**| name that need to be deleted | |
+| **user** | [**User**](User.md)| Updated user object | |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+- **Content-Type**: application/json
+- **Accept**: Not defined
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+| **400** | Invalid user supplied | - |
+| **404** | User not found | - |
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Whale.md b/samples/client/petstore/java/jersey3-jackson3/docs/Whale.md
new file mode 100644
index 000000000000..30ce4bb82151
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Whale.md
@@ -0,0 +1,15 @@
+
+
+# Whale
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**hasBaleen** | **Boolean** | | [optional] |
+|**hasTeeth** | **Boolean** | | [optional] |
+|**className** | **String** | | |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/docs/Zebra.md b/samples/client/petstore/java/jersey3-jackson3/docs/Zebra.md
new file mode 100644
index 000000000000..f7c4389b6456
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/docs/Zebra.md
@@ -0,0 +1,24 @@
+
+
+# Zebra
+
+
+## Properties
+
+| Name | Type | Description | Notes |
+|------------ | ------------- | ------------- | -------------|
+|**type** | [**TypeEnum**](#TypeEnum) | | [optional] |
+|**className** | **String** | | |
+
+
+
+## Enum: TypeEnum
+
+| Name | Value |
+|---- | -----|
+| PLAINS | "plains" |
+| MOUNTAIN | "mountain" |
+| GREVYS | "grevys" |
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/git_push.sh b/samples/client/petstore/java/jersey3-jackson3/git_push.sh
new file mode 100644
index 000000000000..f53a75d4fabe
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/samples/client/petstore/java/jersey3-jackson3/gradle.properties b/samples/client/petstore/java/jersey3-jackson3/gradle.properties
new file mode 100644
index 000000000000..d3e8e41ba6fb
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/gradle.properties
@@ -0,0 +1,13 @@
+# This file is automatically generated by OpenAPI Generator (https://github.com/openAPITools/openapi-generator).
+# To include other gradle properties as part of the code generation process, please use the `gradleProperties` option.
+#
+# Gradle properties reference: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties
+# For example, uncomment below to build for Android
+#target = android
+
+# JVM arguments
+org.gradle.jvmargs=-Xmx2024m -XX:MaxPermSize=512m
+# set timeout
+org.gradle.daemon.idletimeout=3600000
+# show all warnings
+org.gradle.warning.mode=all
diff --git a/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000000..e6441136f3d4
Binary files /dev/null and b/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000000..b82aa23a4f05
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,7 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
+networkTimeout=10000
+validateDistributionUrl=true
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/java/jersey3-jackson3/gradlew b/samples/client/petstore/java/jersey3-jackson3/gradlew
new file mode 100644
index 000000000000..9d0ce634cb11
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/gradlew
@@ -0,0 +1,249 @@
+#!/bin/sh
+
+#
+# Copyright © 2015-2021 the original authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+#
+# Gradle start up script for POSIX generated by Gradle.
+#
+# Important for running:
+#
+# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
+# noncompliant, but you have some other compliant shell such as ksh or
+# bash, then to run this script, type that shell name before the whole
+# command line, like:
+#
+# ksh Gradle
+#
+# Busybox and similar reduced shells will NOT work, because this script
+# requires all of these POSIX shell features:
+# * functions;
+# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
+# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
+# * compound commands having a testable exit status, especially «case»;
+# * various built-in commands including «command», «set», and «ulimit».
+#
+# Important for patching:
+#
+# (2) This script targets any POSIX shell, so it avoids extensions provided
+# by Bash, Ksh, etc; in particular arrays are avoided.
+#
+# The "traditional" practice of packing multiple parameters into a
+# space-separated string is a well documented source of bugs and security
+# problems, so this is (mostly) avoided, by progressively accumulating
+# options in "$@", and eventually passing that to Java.
+#
+# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
+# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
+# see the in-line comments for details.
+#
+# There are tweaks for specific operating systems such as AIX, CygWin,
+# Darwin, MinGW, and NonStop.
+#
+# (3) This script is generated from the Groovy template
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# within the Gradle project.
+#
+# You can find Gradle at https://github.com/gradle/gradle/.
+#
+##############################################################################
+
+# Attempt to set APP_HOME
+
+# Resolve links: $0 may be a link
+app_path=$0
+
+# Need this for daisy-chained symlinks.
+while
+APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
+[ -h "$app_path" ]
+do
+ls=$( ls -ld "$app_path" )
+link=${ls#*' -> '}
+case $link in #(
+/*) app_path=$link ;; #(
+*) app_path=$APP_HOME$link ;;
+esac
+done
+
+# This is normally unused
+# shellcheck disable=SC2034
+APP_BASE_NAME=${0##*/}
+# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
+APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD=maximum
+
+warn () {
+echo "$*"
+} >&2
+
+die () {
+echo
+echo "$*"
+echo
+exit 1
+} >&2
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "$( uname )" in #(
+CYGWIN* ) cygwin=true ;; #(
+Darwin* ) darwin=true ;; #(
+MSYS* | MINGW* ) msys=true ;; #(
+NONSTOP* ) nonstop=true ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+# IBM's JDK on AIX uses strange locations for the executables
+JAVACMD=$JAVA_HOME/jre/sh/java
+else
+JAVACMD=$JAVA_HOME/bin/java
+fi
+if [ ! -x "$JAVACMD" ] ; then
+die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+else
+JAVACMD=java
+if ! command -v java >/dev/null 2>&1
+then
+die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+fi
+
+# Increase the maximum file descriptors if we can.
+if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
+case $MAX_FD in #(
+max*)
+# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+# shellcheck disable=SC2039,SC3045
+MAX_FD=$( ulimit -H -n ) ||
+warn "Could not query maximum file descriptor limit"
+esac
+case $MAX_FD in #(
+'' | soft) :;; #(
+*)
+# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+# shellcheck disable=SC2039,SC3045
+ulimit -n "$MAX_FD" ||
+warn "Could not set maximum file descriptor limit to $MAX_FD"
+esac
+fi
+
+# Collect all arguments for the java command, stacking in reverse order:
+# * args from the command line
+# * the main class name
+# * -classpath
+# * -D...appname settings
+# * --module-path (only if needed)
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if "$cygwin" || "$msys" ; then
+APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
+CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
+
+JAVACMD=$( cygpath --unix "$JAVACMD" )
+
+# Now convert the arguments - kludge to limit ourselves to /bin/sh
+for arg do
+if
+case $arg in #(
+-*) false ;; # don't mess with options #(
+/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
+[ -e "$t" ] ;; #(
+*) false ;;
+esac
+then
+arg=$( cygpath --path --ignore --mixed "$arg" )
+fi
+# Roll the args list around exactly as many times as the number of
+# args, so each arg winds up back in the position where it started, but
+# possibly modified.
+#
+# NB: a `for` loop captures its iteration list before it begins, so
+# changing the positional parameters here affects neither the number of
+# iterations, nor the values presented in `arg`.
+shift # remove old arg
+set -- "$@" "$arg" # push replacement arg
+done
+fi
+
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Collect all arguments for the java command:
+# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
+# and any embedded shellness will be escaped.
+# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
+# treated as '${Hostname}' itself on the command line.
+
+set -- \
+"-Dorg.gradle.appname=$APP_BASE_NAME" \
+-classpath "$CLASSPATH" \
+org.gradle.wrapper.GradleWrapperMain \
+"$@"
+
+# Stop when "xargs" is not available.
+if ! command -v xargs >/dev/null 2>&1
+then
+die "xargs is not available"
+fi
+
+# Use "xargs" to parse quoted args.
+#
+# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
+#
+# In Bash we could simply go:
+#
+# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
+# set -- "${ARGS[@]}" "$@"
+#
+# but POSIX shell has neither arrays nor command substitution, so instead we
+# post-process each arg (as a line of input to sed) to backslash-escape any
+# character that might be a shell metacharacter, then use eval to reverse
+# that process (while maintaining the separation between arguments), and wrap
+# the whole thing up as a single "set" statement.
+#
+# This will of course break if any of these variables contains a newline or
+# an unmatched quote.
+#
+
+eval "set -- $(
+printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
+xargs -n1 |
+sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
+tr '\n' ' '
+)" '"$@"'
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/java/jersey3-jackson3/gradlew.bat b/samples/client/petstore/java/jersey3-jackson3/gradlew.bat
new file mode 100644
index 000000000000..25da30dbdeee
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/gradlew.bat
@@ -0,0 +1,92 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%"=="" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Resolve any "." and ".." in APP_HOME to make it shorter.
+for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if %ERRORLEVEL% equ 0 goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo. 1>&2
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
+echo. 1>&2
+echo Please set the JAVA_HOME variable in your environment to match the 1>&2
+echo location of your Java installation. 1>&2
+
+goto fail
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
+
+:end
+@rem End local scope for the variables with windows NT shell
+if %ERRORLEVEL% equ 0 goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+set EXIT_CODE=%ERRORLEVEL%
+if %EXIT_CODE% equ 0 set EXIT_CODE=1
+if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
+exit /b %EXIT_CODE%
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/java/jersey3-jackson3/pom.xml b/samples/client/petstore/java/jersey3-jackson3/pom.xml
new file mode 100644
index 000000000000..91c047f6d66c
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/pom.xml
@@ -0,0 +1,364 @@
+
+ 4.0.0
+ org.openapitools
+ petstore-jersey3-jackson3
+ jar
+ petstore-jersey3-jackson3
+ 1.0.0
+ https://github.com/openapitools/openapi-generator
+ OpenAPI Java
+
+ scm:git:git@github.com:openapitools/openapi-generator.git
+ scm:git:git@github.com:openapitools/openapi-generator.git
+ https://github.com/openapitools/openapi-generator
+
+
+
+
+ Unlicense
+ https://www.apache.org/licenses/LICENSE-2.0.html
+ repo
+
+
+
+
+
+ OpenAPI-Generator Contributors
+ team@openapitools.org
+ OpenAPITools.org
+ http://openapitools.org
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-enforcer-plugin
+ 3.0.0
+
+
+ enforce-maven
+
+ enforce
+
+
+
+
+ 2.2.0
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 3.0.0-M5
+
+
+
+ loggerPath
+ conf/log4j.properties
+
+
+ -Xms512m -Xmx1500m
+ methods
+ 10
+ false
+
+
+
+ maven-dependency-plugin
+
+
+ package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/lib
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.2
+
+
+
+ test-jar
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+ 3.3.0
+
+
+ add_sources
+ generate-sources
+
+ add-source
+
+
+
+ src/main/java
+
+
+
+
+ add_test_sources
+ generate-test-sources
+
+ add-test-source
+
+
+
+ src/test/java
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.10.1
+
+ 17
+ 17
+ true
+ 128m
+ 512m
+
+ -Xlint:all
+ -J-Xss4m
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 3.3.2
+
+
+ attach-javadocs
+
+ jar
+
+
+
+
+ none
+ 17
+
+
+ http.response.details
+ a
+ Http Response Details:
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 3.2.0
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+ com.diffplug.spotless
+ spotless-maven-plugin
+ ${spotless.version}
+
+
+
+
+
+
+ .gitignore
+
+
+
+
+
+ true
+ 4
+
+
+
+
+
+
+
+
+
+ 1.8
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+ sign-artifacts
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 3.0.1
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+
+
+
+
+
+
+
+ com.google.code.findbugs
+ jsr305
+ 3.0.2
+
+
+
+
+ org.glassfish.jersey.core
+ jersey-client
+ ${jersey-version}
+
+
+ org.glassfish.jersey.inject
+ jersey-hk2
+ ${jersey-version}
+
+
+ org.glassfish.jersey.media
+ jersey-media-multipart
+ ${jersey-version}
+
+
+
+
+ tools.jackson.core
+ jackson-core
+ ${jackson3-version}
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ ${jackson-annotations-version}
+
+
+ tools.jackson.core
+ jackson-databind
+ ${jackson3-version}
+
+
+
+ tools.jackson.jakarta.rs
+ jackson-jakarta-rs-json-provider
+ ${jackson3-version}
+
+
+ org.openapitools
+ jackson-databind-nullable
+ ${jackson-databind-nullable-version}
+
+
+
+ org.tomitribe
+ tomitribe-http-signatures
+ ${http-signature-version}
+
+
+ com.github.scribejava
+ scribejava-apis
+ ${scribejava-apis-version}
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+ ${beanvalidation-version}
+ provided
+
+
+ jakarta.annotation
+ jakarta.annotation-api
+ ${jakarta-annotation-version}
+ provided
+
+
+ org.glassfish.jersey.connectors
+ jersey-apache-connector
+ ${jersey-version}
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3-version}
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ ${junit-version}
+ test
+
+
+
+ UTF-8
+ 3.1.11
+ 3.1.0
+ 2.21
+ 0.2.10
+ 3.0.0
+ 3.1.1
+ 5.10.0
+ 1.8
+ 8.3.3
+ 3.17.0
+ 2.21.0
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/settings.gradle b/samples/client/petstore/java/jersey3-jackson3/settings.gradle
new file mode 100644
index 000000000000..2e7f36b3fce6
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/settings.gradle
@@ -0,0 +1 @@
+rootProject.name = "petstore-jersey3-jackson3"
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/AndroidManifest.xml b/samples/client/petstore/java/jersey3-jackson3/src/main/AndroidManifest.xml
new file mode 100644
index 000000000000..54fbcb3da1e8
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/AndroidManifest.xml
@@ -0,0 +1,3 @@
+
+
+
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiClient.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiClient.java
new file mode 100644
index 000000000000..15b7d257ef71
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiClient.java
@@ -0,0 +1,1542 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import jakarta.ws.rs.client.Client;
+import jakarta.ws.rs.client.ClientBuilder;
+import jakarta.ws.rs.client.Entity;
+import jakarta.ws.rs.client.Invocation;
+import jakarta.ws.rs.client.WebTarget;
+import jakarta.ws.rs.core.Form;
+import jakarta.ws.rs.core.GenericType;
+import jakarta.ws.rs.core.MediaType;
+import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
+
+import com.github.scribejava.core.model.OAuth2AccessToken;
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.client.ClientProperties;
+import org.glassfish.jersey.client.HttpUrlConnectorProvider;
+import tools.jackson.jakarta.rs.json.JacksonJsonProvider;
+import org.glassfish.jersey.media.multipart.FormDataBodyPart;
+import org.glassfish.jersey.media.multipart.FormDataContentDisposition;
+import org.glassfish.jersey.media.multipart.MultiPart;
+import org.glassfish.jersey.media.multipart.MultiPartFeature;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import java.net.URI;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import java.security.cert.X509Certificate;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
+import org.glassfish.jersey.logging.LoggingFeature;
+import java.util.AbstractMap.SimpleEntry;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Arrays;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Locale;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.time.OffsetDateTime;
+
+import java.net.URLEncoder;
+
+import java.io.File;
+import java.io.UnsupportedEncodingException;
+
+import java.text.DateFormat;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openapitools.client.auth.Authentication;
+import org.openapitools.client.auth.HttpBasicAuth;
+import org.openapitools.client.auth.HttpBearerAuth;
+import org.openapitools.client.auth.HttpSignatureAuth;
+import org.openapitools.client.auth.ApiKeyAuth;
+import org.openapitools.client.auth.OAuth;
+
+/**
+ * ApiClient class.
+ */
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class ApiClient extends JavaTimeFormatter {
+ protected static final Pattern JSON_MIME_PATTERN = Pattern.compile("(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$");
+
+ protected Map defaultHeaderMap = new HashMap<>();
+ protected Map defaultCookieMap = new HashMap<>();
+ protected String basePath = "http://petstore.swagger.io:80/v2";
+ protected String userAgent;
+ protected static final Logger log = Logger.getLogger(ApiClient.class.getName());
+
+ protected List servers = new ArrayList<>(Arrays.asList(
+ new ServerConfiguration(
+ "http://{server}.swagger.io:{port}/v2",
+ "petstore server",
+ Stream.>of(
+ new SimpleEntry<>("server", new ServerVariable(
+ "No description provided",
+ "petstore",
+ new LinkedHashSet<>(Arrays.asList(
+ "petstore",
+ "qa-petstore",
+ "dev-petstore"
+ ))
+ )),
+ new SimpleEntry<>("port", new ServerVariable(
+ "No description provided",
+ "80",
+ new LinkedHashSet<>(Arrays.asList(
+ "80",
+ "8080"
+ ))
+ ))
+ ).collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a, b) -> a, LinkedHashMap::new))
+ ),
+ new ServerConfiguration(
+ "https://localhost:8080/{version}",
+ "The local server",
+ Stream.>of(
+ new SimpleEntry<>("version", new ServerVariable(
+ "No description provided",
+ "v2",
+ new LinkedHashSet<>(Arrays.asList(
+ "v1",
+ "v2"
+ ))
+ ))
+ ).collect(Collectors.toMap(Entry::getKey, Entry::getValue, (a, b) -> a, LinkedHashMap::new))
+ ),
+ new ServerConfiguration(
+ "https://127.0.0.1/no_variable",
+ "The local server without variables",
+ new LinkedHashMap<>()
+ )
+ ));
+ protected Integer serverIndex = 0;
+ protected Map serverVariables = null;
+ protected Map> operationServers;
+
+ {
+ Map> operationServers = new HashMap<>();
+ operationServers.put("PetApi.addPet", new ArrayList<>(Arrays.asList(
+ new ServerConfiguration(
+ "http://petstore.swagger.io/v2",
+ "No description provided",
+ new LinkedHashMap<>()
+ ),
+ new ServerConfiguration(
+ "http://path-server-test.petstore.local/v2",
+ "No description provided",
+ new LinkedHashMap<>()
+ )
+ )));
+ operationServers.put("PetApi.updatePet", new ArrayList<>(Arrays.asList(
+ new ServerConfiguration(
+ "http://petstore.swagger.io/v2",
+ "No description provided",
+ new LinkedHashMap<>()
+ ),
+ new ServerConfiguration(
+ "http://path-server-test.petstore.local/v2",
+ "No description provided",
+ new LinkedHashMap<>()
+ )
+ )));
+ this.operationServers = operationServers;
+ }
+
+ protected Map operationServerIndex = new HashMap<>();
+ protected Map> operationServerVariables = new HashMap<>();
+ protected boolean debugging = false;
+ protected ClientConfig clientConfig;
+ protected int connectionTimeout = 0;
+ protected int readTimeout = 0;
+
+ protected Client httpClient;
+ protected JSON json;
+ protected String tempFolderPath = null;
+
+ protected Map authentications;
+ protected Map authenticationLookup;
+
+ protected DateFormat dateFormat;
+
+ /**
+ * Constructs a new ApiClient with default parameters.
+ */
+ public ApiClient() {
+ this(null);
+ }
+
+ /**
+ * Constructs a new ApiClient with the specified authentication parameters.
+ *
+ * @param authMap A hash map containing authentication parameters.
+ */
+ public ApiClient(Map authMap) {
+ json = new JSON();
+ httpClient = buildHttpClient();
+
+ this.dateFormat = new RFC3339DateFormat();
+
+ // Set default User-Agent.
+ setUserAgent("OpenAPI-Generator/1.0.0/java");
+
+ // Setup authentications (key: authentication name, value: authentication).
+ authentications = new HashMap<>();
+ Authentication auth = null;
+ if (authMap != null) {
+ auth = authMap.get("petstore_auth");
+ }
+ if (auth instanceof OAuth) {
+ authentications.put("petstore_auth", auth);
+ } else {
+ authentications.put("petstore_auth", new OAuth(basePath, ""));
+ }
+ if (authMap != null) {
+ auth = authMap.get("api_key");
+ }
+ if (auth instanceof ApiKeyAuth) {
+ authentications.put("api_key", auth);
+ } else {
+ authentications.put("api_key", new ApiKeyAuth("header", "api_key"));
+ }
+ if (authMap != null) {
+ auth = authMap.get("api_key_query");
+ }
+ if (auth instanceof ApiKeyAuth) {
+ authentications.put("api_key_query", auth);
+ } else {
+ authentications.put("api_key_query", new ApiKeyAuth("query", "api_key_query"));
+ }
+ if (authMap != null) {
+ auth = authMap.get("http_basic_test");
+ }
+ if (auth instanceof HttpBasicAuth) {
+ authentications.put("http_basic_test", auth);
+ } else {
+ authentications.put("http_basic_test", new HttpBasicAuth());
+ }
+ if (authMap != null) {
+ auth = authMap.get("bearer_test");
+ }
+ if (auth instanceof HttpBearerAuth) {
+ authentications.put("bearer_test", auth);
+ } else {
+ authentications.put("bearer_test", new HttpBearerAuth("bearer"));
+ }
+ if (authMap != null) {
+ auth = authMap.get("http_signature_test");
+ }
+ if (auth instanceof HttpSignatureAuth) {
+ authentications.put("http_signature_test", auth);
+ }
+ // Prevent the authentications from being modified.
+ authentications = Collections.unmodifiableMap(authentications);
+
+ // Setup authentication lookup (key: authentication alias, value: authentication name)
+ authenticationLookup = new HashMap<>();
+ }
+
+ /**
+ * Gets the JSON instance to do JSON serialization and deserialization.
+ *
+ * @return JSON
+ */
+ public JSON getJSON() {
+ return json;
+ }
+
+ /**
+ * Getter for the field httpClient.
+ *
+ * @return a {@link jakarta.ws.rs.client.Client} object.
+ */
+ public Client getHttpClient() {
+ return httpClient;
+ }
+
+ /**
+ * Setter for the field httpClient.
+ *
+ * @param httpClient a {@link jakarta.ws.rs.client.Client} object.
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setHttpClient(Client httpClient) {
+ this.httpClient = httpClient;
+ return this;
+ }
+
+ /**
+ * Returns the base URL to the location where the OpenAPI document is being served.
+ *
+ * @return The base URL to the target host.
+ */
+ public String getBasePath() {
+ return basePath;
+ }
+
+ /**
+ * Sets the base URL to the location where the OpenAPI document is being served.
+ *
+ * @param basePath The base URL to the target host.
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setBasePath(String basePath) {
+ this.basePath = basePath;
+ setOauthBasePath(basePath);
+ return this;
+ }
+
+ /**
+ * Getter for the field servers.
+ *
+ * @return a {@link java.util.List} of servers.
+ */
+ public List getServers() {
+ return servers;
+ }
+
+ /**
+ * Setter for the field servers.
+ *
+ * @param servers a {@link java.util.List} of servers.
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setServers(List servers) {
+ this.servers = servers;
+ updateBasePath();
+ return this;
+ }
+
+ /**
+ * Getter for the field serverIndex.
+ *
+ * @return a {@link java.lang.Integer} object.
+ */
+ public Integer getServerIndex() {
+ return serverIndex;
+ }
+
+ /**
+ * Setter for the field serverIndex.
+ *
+ * @param serverIndex the server index
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setServerIndex(Integer serverIndex) {
+ this.serverIndex = serverIndex;
+ updateBasePath();
+ return this;
+ }
+
+ /**
+ * Getter for the field serverVariables.
+ *
+ * @return a {@link java.util.Map} of server variables.
+ */
+ public Map getServerVariables() {
+ return serverVariables;
+ }
+
+ /**
+ * Setter for the field serverVariables.
+ *
+ * @param serverVariables a {@link java.util.Map} of server variables.
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setServerVariables(Map serverVariables) {
+ this.serverVariables = serverVariables;
+ updateBasePath();
+ return this;
+ }
+
+ protected void updateBasePath() {
+ if (serverIndex != null) {
+ setBasePath(servers.get(serverIndex).URL(serverVariables));
+ }
+ }
+
+ protected void setOauthBasePath(String basePath) {
+ for(Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).setBasePath(basePath);
+ }
+ }
+ }
+
+ /**
+ * Get authentications (key: authentication name, value: authentication).
+ *
+ * @return Map of authentication object
+ */
+ public Map getAuthentications() {
+ return authentications;
+ }
+
+ /**
+ * Get authentication for the given name.
+ *
+ * @param authName The authentication name
+ * @return The authentication, null if not found
+ */
+ public Authentication getAuthentication(String authName) {
+ return authentications.get(authName);
+ }
+
+ /**
+ * Helper method to set username for the first HTTP basic authentication.
+ *
+ * @param username Username
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setUsername(String username) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof HttpBasicAuth) {
+ ((HttpBasicAuth) auth).setUsername(username);
+ return this;
+ }
+ }
+ throw new RuntimeException("No HTTP basic authentication configured!");
+ }
+
+ /**
+ * Helper method to set password for the first HTTP basic authentication.
+ *
+ * @param password Password
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setPassword(String password) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof HttpBasicAuth) {
+ ((HttpBasicAuth) auth).setPassword(password);
+ return this;
+ }
+ }
+ throw new RuntimeException("No HTTP basic authentication configured!");
+ }
+
+ /**
+ * Helper method to set API key value for the first API key authentication.
+ *
+ * @param apiKey API key
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setApiKey(String apiKey) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof ApiKeyAuth) {
+ ((ApiKeyAuth) auth).setApiKey(apiKey);
+ return this;
+ }
+ }
+ throw new RuntimeException("No API key authentication configured!");
+ }
+
+ /**
+ * Helper method to configure authentications which respects aliases of API keys.
+ *
+ * @param secrets Hash map from authentication name to its secret.
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient configureApiKeys(Map secrets) {
+ for (Map.Entry authEntry : authentications.entrySet()) {
+ Authentication auth = authEntry.getValue();
+ if (auth instanceof ApiKeyAuth) {
+ String name = authEntry.getKey();
+ // respect x-auth-id-alias property
+ name = authenticationLookup.getOrDefault(name, name);
+ String secret = secrets.get(name);
+ if (secret != null) {
+ ((ApiKeyAuth) auth).setApiKey(secret);
+ }
+ }
+ }
+ return this;
+ }
+
+ /**
+ * Helper method to set API key prefix for the first API key authentication.
+ *
+ * @param apiKeyPrefix API key prefix
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setApiKeyPrefix(String apiKeyPrefix) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof ApiKeyAuth) {
+ ((ApiKeyAuth) auth).setApiKeyPrefix(apiKeyPrefix);
+ return this;
+ }
+ }
+ throw new RuntimeException("No API key authentication configured!");
+ }
+
+ /**
+ * Helper method to set bearer token for the first Bearer authentication.
+ *
+ * @param bearerToken Bearer token
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setBearerToken(String bearerToken) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof HttpBearerAuth) {
+ ((HttpBearerAuth) auth).setBearerToken(bearerToken);
+ return this;
+ }
+ }
+ throw new RuntimeException("No Bearer authentication configured!");
+ }
+
+ /**
+ * Helper method to set access token for the first OAuth2 authentication.
+ *
+ * @param accessToken Access token
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setAccessToken(String accessToken) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).setAccessToken(accessToken);
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Helper method to set the credentials for the first OAuth2 authentication.
+ *
+ * @param clientId the client ID
+ * @param clientSecret the client secret
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setOauthCredentials(String clientId, String clientSecret) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).setCredentials(clientId, clientSecret, isDebugging());
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Helper method to set the credentials of a public client for the first OAuth2 authentication.
+ *
+ * @param clientId the client ID
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setOauthCredentialsForPublicClient(String clientId) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).setCredentialsForPublicClient(clientId, isDebugging());
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Helper method to set the password flow for the first OAuth2 authentication.
+ *
+ * @param username the user name
+ * @param password the user password
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setOauthPasswordFlow(String username, String password) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).usePasswordFlow(username, password);
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Helper method to set the authorization code flow for the first OAuth2 authentication.
+ *
+ * @param code the authorization code
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setOauthAuthorizationCodeFlow(String code) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).useAuthorizationCodeFlow(code);
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Helper method to set the scopes for the first OAuth2 authentication.
+ *
+ * @param scope the oauth scope
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setOauthScope(String scope) {
+ for (Authentication auth : authentications.values()) {
+ if (auth instanceof OAuth) {
+ ((OAuth) auth).setScope(scope);
+ return this;
+ }
+ }
+ throw new RuntimeException("No OAuth2 authentication configured!");
+ }
+
+ /**
+ * Set the User-Agent header's value (by adding to the default header map).
+ *
+ * @param userAgent Http user agent
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setUserAgent(String userAgent) {
+ this.userAgent = userAgent;
+ addDefaultHeader("User-Agent", userAgent);
+ return this;
+ }
+
+ /**
+ * Get the User-Agent header's value.
+ *
+ * @return User-Agent string
+ */
+ public String getUserAgent(){
+ return userAgent;
+ }
+
+ /**
+ * Add a default header.
+ *
+ * @param key The header's key
+ * @param value The header's value
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient addDefaultHeader(String key, String value) {
+ defaultHeaderMap.put(key, value);
+ return this;
+ }
+
+ /**
+ * Add a default cookie.
+ *
+ * @param key The cookie's key
+ * @param value The cookie's value
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient addDefaultCookie(String key, String value) {
+ defaultCookieMap.put(key, value);
+ return this;
+ }
+
+ /**
+ * Gets the client config.
+ *
+ * @return Client config
+ */
+ public ClientConfig getClientConfig() {
+ return clientConfig;
+ }
+
+ /**
+ * Set the client config.
+ *
+ * @param clientConfig Set the client config
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setClientConfig(ClientConfig clientConfig) {
+ this.clientConfig = clientConfig;
+ // Rebuild HTTP Client according to the new "clientConfig" value.
+ this.httpClient = buildHttpClient();
+ return this;
+ }
+
+ /**
+ * Check that whether debugging is enabled for this API client.
+ *
+ * @return True if debugging is switched on
+ */
+ public boolean isDebugging() {
+ return debugging;
+ }
+
+ /**
+ * Enable/disable debugging for this API client.
+ *
+ * @param debugging To enable (true) or disable (false) debugging
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setDebugging(boolean debugging) {
+ this.debugging = debugging;
+ applyDebugSetting(this.clientConfig);
+ // Rebuild HTTP Client according to the new "debugging" value.
+ this.httpClient = buildHttpClient();
+ return this;
+ }
+
+ /**
+ * The path of temporary folder used to store downloaded files from endpoints
+ * with file response. The default value is null, i.e. using
+ * the system's default temporary folder.
+ *
+ * @return Temp folder path
+ */
+ public String getTempFolderPath() {
+ return tempFolderPath;
+ }
+
+ /**
+ * Set temp folder path
+ *
+ * @param tempFolderPath Temp folder path
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setTempFolderPath(String tempFolderPath) {
+ this.tempFolderPath = tempFolderPath;
+ return this;
+ }
+
+ /**
+ * Connect timeout (in milliseconds).
+ *
+ * @return Connection timeout
+ */
+ public int getConnectTimeout() {
+ return connectionTimeout;
+ }
+
+ /**
+ * Set the connect timeout (in milliseconds).
+ * A value of 0 means no timeout, otherwise values must be between 1 and
+ * {@link Integer#MAX_VALUE}.
+ *
+ * @param connectionTimeout Connection timeout in milliseconds
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setConnectTimeout(int connectionTimeout) {
+ this.connectionTimeout = connectionTimeout;
+ httpClient.property(ClientProperties.CONNECT_TIMEOUT, connectionTimeout);
+ return this;
+ }
+
+ /**
+ * read timeout (in milliseconds).
+ *
+ * @return Read timeout
+ */
+ public int getReadTimeout() {
+ return readTimeout;
+ }
+
+ /**
+ * Set the read timeout (in milliseconds).
+ * A value of 0 means no timeout, otherwise values must be between 1 and
+ * {@link Integer#MAX_VALUE}.
+ *
+ * @param readTimeout Read timeout in milliseconds
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setReadTimeout(int readTimeout) {
+ this.readTimeout = readTimeout;
+ httpClient.property(ClientProperties.READ_TIMEOUT, readTimeout);
+ return this;
+ }
+
+ /**
+ * Get the date format used to parse/format date parameters.
+ *
+ * @return Date format
+ */
+ public DateFormat getDateFormat() {
+ return dateFormat;
+ }
+
+ /**
+ * Set the date format used to parse/format date parameters.
+ *
+ * @param dateFormat Date format
+ * @return a {@link ApiClient} object.
+ */
+ public ApiClient setDateFormat(DateFormat dateFormat) {
+ this.dateFormat = dateFormat;
+ // also set the date format for model (de)serialization with Date properties
+ this.json.setDateFormat((DateFormat) dateFormat.clone());
+ return this;
+ }
+
+ /**
+ * Parse the given string into Date object.
+ *
+ * @param str String
+ * @return Date
+ */
+ public Date parseDate(String str) {
+ try {
+ return dateFormat.parse(str);
+ } catch (java.text.ParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Format the given Date object into string.
+ *
+ * @param date Date
+ * @return Date in string format
+ */
+ public String formatDate(Date date) {
+ return dateFormat.format(date);
+ }
+
+ /**
+ * Format the given parameter object into string.
+ *
+ * @param param Object
+ * @return Object in string format
+ */
+ public String parameterToString(Object param) {
+ if (param == null) {
+ return "";
+ } else if (param instanceof Date) {
+ return formatDate((Date) param);
+ } else if (param instanceof OffsetDateTime) {
+ return formatOffsetDateTime((OffsetDateTime) param);
+ } else if (param instanceof Collection>) {
+ StringBuilder b = new StringBuilder();
+ for(Object o : (Collection>)param) {
+ if(b.length() > 0) {
+ b.append(',');
+ }
+ b.append(String.valueOf(o));
+ }
+ return b.toString();
+ } else {
+ return String.valueOf(param);
+ }
+ }
+
+ /*
+ * Format to {@code Pair} objects.
+ *
+ * @param collectionFormat Collection format
+ * @param name Name
+ * @param value Value
+ * @return List of pairs
+ */
+ public List parameterToPairs(String collectionFormat, String name, Object value){
+ List params = new ArrayList<>();
+
+ // preconditions
+ if (name == null || name.isEmpty() || value == null) return params;
+
+ Collection> valueCollection;
+ if (value instanceof Collection>) {
+ valueCollection = (Collection>) value;
+ } else {
+ params.add(new Pair(name, parameterToString(value)));
+ return params;
+ }
+
+ if (valueCollection.isEmpty()){
+ return params;
+ }
+
+ // get the collection format (default: csv)
+ String format = (collectionFormat == null || collectionFormat.isEmpty() ? "csv" : collectionFormat);
+
+ // create the params based on the collection format
+ if ("multi".equals(format)) {
+ for (Object item : valueCollection) {
+ params.add(new Pair(name, parameterToString(item)));
+ }
+
+ return params;
+ }
+
+ String delimiter = ",";
+
+ if ("csv".equals(format)) {
+ delimiter = ",";
+ } else if ("ssv".equals(format)) {
+ delimiter = " ";
+ } else if ("tsv".equals(format)) {
+ delimiter = "\t";
+ } else if ("pipes".equals(format)) {
+ delimiter = "|";
+ }
+
+ StringBuilder sb = new StringBuilder() ;
+ for (Object item : valueCollection) {
+ sb.append(delimiter);
+ sb.append(parameterToString(item));
+ }
+
+ params.add(new Pair(name, sb.substring(1)));
+
+ return params;
+ }
+
+ /**
+ * Check if the given MIME is a JSON MIME.
+ * JSON MIME examples:
+ * application/json
+ * application/json; charset=UTF8
+ * APPLICATION/JSON
+ * application/vnd.company+json
+ * "*{@literal /}*" is also considered JSON by this method.
+ *
+ * @param mime MIME
+ * @return True if the MIME type is JSON
+ */
+ public boolean isJsonMime(String mime) {
+ return mime != null && (mime.equals("*/*") || JSON_MIME_PATTERN.matcher(mime).matches());
+ }
+
+ /**
+ * Select the Accept header's value from the given accepts array:
+ * if JSON exists in the given array, use it;
+ * otherwise use all of them (joining into a string)
+ *
+ * @param accepts The accepts array to select from
+ * @return The Accept header to use. If the given array is empty,
+ * null will be returned (not to set the Accept header explicitly).
+ */
+ public String selectHeaderAccept(String... accepts) {
+ if (accepts == null || accepts.length == 0) {
+ return null;
+ }
+ for (String accept : accepts) {
+ if (isJsonMime(accept)) {
+ return accept;
+ }
+ }
+ return StringUtil.join(accepts, ",");
+ }
+
+ /**
+ * Select the Content-Type header's value from the given array:
+ * if JSON exists in the given array, use it;
+ * otherwise use the first one of the array.
+ *
+ * @param contentTypes The Content-Type array to select from
+ * @return The Content-Type header to use. If the given array is empty,
+ * JSON will be used.
+ */
+ public String selectHeaderContentType(String... contentTypes) {
+ if (contentTypes == null || contentTypes.length == 0) {
+ return "application/json";
+ }
+ for (String contentType : contentTypes) {
+ if (isJsonMime(contentType)) {
+ return contentType;
+ }
+ }
+ return contentTypes[0];
+ }
+
+ /**
+ * Escape the given string to be used as URL query value.
+ *
+ * @param str String
+ * @return Escaped string
+ */
+ public String escapeString(String str) {
+ try {
+ return URLEncoder.encode(str, "utf8").replaceAll("\\+", "%20");
+ } catch (UnsupportedEncodingException e) {
+ return str;
+ }
+ }
+
+ /**
+ * Serialize the given Java object into string entity according the given
+ * Content-Type (only JSON is supported for now).
+ *
+ * @param obj Object
+ * @param formParams Form parameters
+ * @param contentType Context type
+ * @return Entity
+ * @throws ApiException API exception
+ */
+ public Entity> serialize(Object obj, Map formParams, String contentType, boolean isBodyNullable) throws ApiException {
+ Entity> entity;
+ if (contentType.startsWith("multipart/form-data")) {
+ MultiPart multiPart = new MultiPart();
+ for (Entry param: formParams.entrySet()) {
+ if (param.getValue() instanceof Iterable>) {
+ ((Iterable>)param.getValue()).forEach(v -> addParamToMultipart(v, param.getKey(), multiPart));
+ } else {
+ addParamToMultipart(param.getValue(), param.getKey(), multiPart);
+ }
+ }
+ entity = Entity.entity(multiPart, MediaType.MULTIPART_FORM_DATA_TYPE);
+ } else if (contentType.startsWith("application/x-www-form-urlencoded")) {
+ Form form = new Form();
+ for (Entry param: formParams.entrySet()) {
+ form.param(param.getKey(), parameterToString(param.getValue()));
+ }
+ entity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
+ } else {
+ // We let jersey handle the serialization
+ if (isBodyNullable) { // payload is nullable
+ if (obj instanceof String) {
+ entity = Entity.entity(obj == null ? "null" : "\"" + ((String)obj).replaceAll("\"", Matcher.quoteReplacement("\\\"")) + "\"", contentType);
+ } else {
+ entity = Entity.entity(obj == null ? "null" : obj, contentType);
+ }
+ } else {
+ if (obj instanceof String) {
+ entity = Entity.entity(obj == null ? "" : "\"" + ((String)obj).replaceAll("\"", Matcher.quoteReplacement("\\\"")) + "\"", contentType);
+ } else {
+ entity = Entity.entity(obj == null ? "" : obj, contentType);
+ }
+ }
+ }
+ return entity;
+ }
+
+ /**
+ * Adds the object with the provided key to the MultiPart.
+ * Based on the object type sets Content-Disposition and Content-Type.
+ *
+ * @param obj Object
+ * @param key Key of the object
+ * @param multiPart MultiPart to add the form param to
+ */
+ protected void addParamToMultipart(Object value, String key, MultiPart multiPart) {
+ if (value instanceof File) {
+ File file = (File) value;
+ FormDataContentDisposition contentDisp = FormDataContentDisposition.name(key)
+ .fileName(file.getName()).size(file.length()).build();
+
+ // Attempt to probe the content type for the file so that the form part is more correctly
+ // and precisely identified, but fall back to application/octet-stream if that fails.
+ MediaType type;
+ try {
+ type = MediaType.valueOf(Files.probeContentType(file.toPath()));
+ } catch (IOException | IllegalArgumentException e) {
+ type = MediaType.APPLICATION_OCTET_STREAM_TYPE;
+ }
+
+ multiPart.bodyPart(new FormDataBodyPart(contentDisp, file, type));
+ } else {
+ FormDataContentDisposition contentDisp = FormDataContentDisposition.name(key).build();
+ multiPart.bodyPart(new FormDataBodyPart(contentDisp, parameterToString(value)));
+ }
+ }
+
+ /**
+ * Serialize the given Java object into string according the given
+ * Content-Type (only JSON, HTTP form is supported for now).
+ *
+ * @param obj Object
+ * @param formParams Form parameters
+ * @param contentType Context type
+ * @param isBodyNullable True if the body is nullable
+ * @return String
+ * @throws ApiException API exception
+ */
+ public String serializeToString(Object obj, Map formParams, String contentType, boolean isBodyNullable) throws ApiException {
+ try {
+ if (contentType.startsWith("multipart/form-data")) {
+ throw new ApiException("multipart/form-data not yet supported for serializeToString (http signature authentication)");
+ } else if (contentType.startsWith("application/x-www-form-urlencoded")) {
+ String formString = "";
+ for (Entry param : formParams.entrySet()) {
+ formString = param.getKey() + "=" + URLEncoder.encode(parameterToString(param.getValue()), "UTF-8") + "&";
+ }
+
+ if (formString.length() == 0) { // empty string
+ return formString;
+ } else {
+ return formString.substring(0, formString.length() - 1);
+ }
+ } else {
+ if (isBodyNullable) {
+ return obj == null ? "null" : json.getMapper().writeValueAsString(obj);
+ } else {
+ return obj == null ? "" : json.getMapper().writeValueAsString(obj);
+ }
+ }
+ } catch (Exception ex) {
+ throw new ApiException("Failed to perform serializeToString: " + ex.toString());
+ }
+ }
+
+ /**
+ * Deserialize response body to Java object according to the Content-Type.
+ *
+ * @param Type
+ * @param response Response
+ * @param returnType Return type
+ * @return Deserialize object
+ * @throws ApiException API exception
+ */
+ @SuppressWarnings("unchecked")
+ public T deserialize(Response response, GenericType returnType) throws ApiException {
+ if (response == null || returnType == null) {
+ return null;
+ }
+
+ if ("byte[]".equals(returnType.toString())) {
+ // Handle binary response (byte array).
+ return (T) response.readEntity(byte[].class);
+ } else if (returnType.getRawType() == File.class) {
+ // Handle file downloading.
+ T file = (T) downloadFileFromResponse(response);
+ return file;
+ }
+
+ // read the entity stream multiple times
+ response.bufferEntity();
+
+ return response.readEntity(returnType);
+ }
+
+ /**
+ * Download file from the given response.
+ *
+ * @param response Response
+ * @return File
+ * @throws ApiException If fail to read file content from response and write to disk
+ */
+ public File downloadFileFromResponse(Response response) throws ApiException {
+ try {
+ File file = prepareDownloadFile(response);
+ Files.copy(response.readEntity(InputStream.class), file.toPath(), StandardCopyOption.REPLACE_EXISTING);
+ return file;
+ } catch (IOException e) {
+ throw new ApiException(e);
+ }
+ }
+
+ /**
+ * Prepare the file for download from the response.
+ *
+ * @param response a {@link jakarta.ws.rs.core.Response} object.
+ * @return a {@link java.io.File} object.
+ * @throws java.io.IOException if any.
+ */
+ public File prepareDownloadFile(Response response) throws IOException {
+ String filename = null;
+ String contentDisposition = (String) response.getHeaders().getFirst("Content-Disposition");
+ if (contentDisposition != null && !"".equals(contentDisposition)) {
+ // Get filename from the Content-Disposition header.
+ Pattern pattern = Pattern.compile("filename=['\"]?([^'\"\\s]+)['\"]?");
+ Matcher matcher = pattern.matcher(contentDisposition);
+ if (matcher.find())
+ filename = matcher.group(1);
+ }
+
+ String prefix;
+ String suffix = null;
+ if (filename == null) {
+ prefix = "download-";
+ suffix = "";
+ } else {
+ int pos = filename.lastIndexOf('.');
+ if (pos == -1) {
+ prefix = filename + "-";
+ } else {
+ prefix = filename.substring(0, pos) + "-";
+ suffix = filename.substring(pos);
+ }
+ // Files.createTempFile requires the prefix to be at least three characters long
+ if (prefix.length() < 3)
+ prefix = "download-";
+ }
+
+ if (tempFolderPath == null)
+ return Files.createTempFile(prefix, suffix).toFile();
+ else
+ return Files.createTempFile(Paths.get(tempFolderPath), prefix, suffix).toFile();
+ }
+
+ /**
+ * Invoke API by sending HTTP request with the given options.
+ *
+ * @param Type
+ * @param operation The qualified name of the operation
+ * @param path The sub-path of the HTTP URL
+ * @param method The request method, one of "GET", "POST", "PUT", "HEAD" and "DELETE"
+ * @param queryParams The query parameters
+ * @param body The request body object
+ * @param headerParams The header parameters
+ * @param cookieParams The cookie parameters
+ * @param formParams The form parameters
+ * @param accept The request's Accept header
+ * @param contentType The request's Content-Type header
+ * @param authNames The authentications to apply
+ * @param returnType The return type into which to deserialize the response
+ * @param isBodyNullable True if the body is nullable
+ * @param errorTypes Mapping of error codes to types into which to deserialize the response
+ * @return The response body in type of string
+ * @throws ApiException API exception
+ */
+ public ApiResponse invokeAPI(
+ String operation,
+ String path,
+ String method,
+ List queryParams,
+ Object body,
+ Map headerParams,
+ Map cookieParams,
+ Map formParams,
+ String accept,
+ String contentType,
+ String[] authNames,
+ GenericType returnType,
+ boolean isBodyNullable,
+ Map errorTypes
+ )
+ throws ApiException {
+
+ String targetURL;
+ List serverConfigurations;
+ if (serverIndex != null && (serverConfigurations = operationServers.get(operation)) != null) {
+ int index = operationServerIndex.getOrDefault(operation, serverIndex).intValue();
+ Map variables = operationServerVariables.getOrDefault(operation, serverVariables);
+ if (index < 0 || index >= serverConfigurations.size()) {
+ throw new ArrayIndexOutOfBoundsException(
+ String.format(
+ Locale.ROOT,
+ "Invalid index %d when selecting the host settings. Must be less than %d",
+ index, serverConfigurations.size()));
+ }
+ targetURL = serverConfigurations.get(index).URL(variables) + path;
+ } else {
+ targetURL = this.basePath + path;
+ }
+ // Not using `.target(targetURL).path(path)` below,
+ // to support (constant) query string in `path`, e.g. "/posts?draft=1"
+ WebTarget target = httpClient.target(targetURL);
+
+ // put all headers in one place
+ Map allHeaderParams = new HashMap<>(defaultHeaderMap);
+ allHeaderParams.putAll(headerParams);
+
+ if (authNames != null) {
+ // update different parameters (e.g. headers) for authentication
+ updateParamsForAuth(
+ authNames,
+ queryParams,
+ allHeaderParams,
+ cookieParams,
+ serializeToString(body, formParams, contentType, isBodyNullable),
+ method,
+ target.getUri());
+ }
+
+ if (queryParams != null) {
+ for (Pair queryParam : queryParams) {
+ if (queryParam.getValue() != null) {
+ target = target.queryParam(queryParam.getName(), escapeString(queryParam.getValue()));
+ }
+ }
+ }
+
+ Invocation.Builder invocationBuilder = target.request();
+
+ if (accept != null) {
+ invocationBuilder = invocationBuilder.accept(accept);
+ }
+
+ for (Entry entry : cookieParams.entrySet()) {
+ String value = entry.getValue();
+ if (value != null) {
+ invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
+ }
+ }
+
+ for (Entry entry : defaultCookieMap.entrySet()) {
+ String value = entry.getValue();
+ if (value != null) {
+ invocationBuilder = invocationBuilder.cookie(entry.getKey(), value);
+ }
+ }
+
+ Entity> entity = serialize(body, formParams, contentType, isBodyNullable);
+
+ for (Entry entry : allHeaderParams.entrySet()) {
+ String value = entry.getValue();
+ if (value != null) {
+ invocationBuilder = invocationBuilder.header(entry.getKey(), value);
+ }
+ }
+
+ Response response = null;
+
+ try {
+ response = sendRequest(method, invocationBuilder, entity);
+
+ // If OAuth is used and a status 401 is received, renew the access token and retry the request
+ if (authNames != null && response.getStatusInfo().getStatusCode() == Status.UNAUTHORIZED.getStatusCode()) {
+ for (String authName : authNames) {
+ Authentication authentication = authentications.get(authName);
+ if (authentication instanceof OAuth) {
+ OAuth2AccessToken accessToken = ((OAuth) authentication).renewAccessToken();
+ if (accessToken != null) {
+ invocationBuilder.header("Authorization", null);
+ invocationBuilder.header("Authorization", "Bearer " + accessToken.getAccessToken());
+ response = sendRequest(method, invocationBuilder, entity);
+ }
+ break;
+ }
+ }
+ }
+
+ final int statusCode = response.getStatusInfo().getStatusCode();
+
+ Map> responseHeaders = buildResponseHeaders(response);
+
+ if (statusCode == Status.NO_CONTENT.getStatusCode()) {
+ return new ApiResponse(statusCode, responseHeaders);
+ } else if (response.getStatusInfo().getFamily() == Status.Family.SUCCESSFUL) {
+ if (returnType == null) {
+ return new ApiResponse(statusCode, responseHeaders);
+ } else {
+ return new ApiResponse(statusCode, responseHeaders, deserialize(response, returnType));
+ }
+ } else {
+ String message = "error";
+ String respBody = null;
+ if (response.hasEntity()) {
+ try {
+ // call bufferEntity, so that a subsequent call to `readEntity` in `deserialize` doesn't fail
+ response.bufferEntity();
+ respBody = String.valueOf(response.readEntity(String.class));
+ message = respBody;
+ } catch (RuntimeException e) {
+ // e.printStackTrace();
+ }
+ }
+ throw new ApiException(
+ response.getStatus(), message, buildResponseHeaders(response), respBody, deserializeErrorEntity(errorTypes, response));
+ }
+ } finally {
+ try {
+ response.close();
+ } catch (Exception e) {
+ // it's not critical, since the response object is local in method invokeAPI; that's fine,
+ // just continue
+ }
+ }
+ }
+
+ /**
+ * Deserialize the response body into an error entity based on HTTP status code.
+ * Looks up the error type from the errorTypes map using the response status code,
+ * or falls back to the "default" error type if no match is found.
+ *
+ * @param errorTypes Map of status code strings to GenericType for deserialization
+ * @param response The HTTP response
+ * @return The deserialized error entity, or null if not found or deserialization fails
+ */
+ private Object deserializeErrorEntity(Map errorTypes, Response response) {
+ if (errorTypes == null) {
+ return null;
+ }
+ GenericType errorType = errorTypes.get(String.valueOf(response.getStatus()));
+ if (errorType == null) {
+ errorType = errorTypes.get("0"); // "0" is the "default" response
+ }
+ try {
+ return deserialize(response, errorType);
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ protected Response sendRequest(String method, Invocation.Builder invocationBuilder, Entity> entity) {
+ Response response;
+ if ("POST".equals(method)) {
+ response = invocationBuilder.post(entity);
+ } else if ("PUT".equals(method)) {
+ response = invocationBuilder.put(entity);
+ } else if ("DELETE".equals(method)) {
+ if ("".equals(entity.getEntity())) {
+ response = invocationBuilder.method("DELETE");
+ } else {
+ response = invocationBuilder.method("DELETE", entity);
+ }
+ } else if ("PATCH".equals(method)) {
+ response = invocationBuilder.method("PATCH", entity);
+ } else {
+ response = invocationBuilder.method(method);
+ }
+ return response;
+ }
+
+ /**
+ * @deprecated Add qualified name of the operation as a first parameter.
+ */
+ @Deprecated
+ public ApiResponse invokeAPI(String path, String method, List queryParams, Object body, Map headerParams, Map cookieParams, Map formParams, String accept, String contentType, String[] authNames, GenericType returnType, boolean isBodyNullable) throws ApiException {
+ return invokeAPI(null, path, method, queryParams, body, headerParams, cookieParams, formParams, accept, contentType, authNames, returnType, isBodyNullable, null/*TODO SME manage*/);
+ }
+
+ /**
+ * Build the Client used to make HTTP requests.
+ *
+ * @return Client
+ */
+ protected Client buildHttpClient() {
+ // Create ClientConfig if it has not been initialized yet
+ if (clientConfig == null) {
+ clientConfig = getDefaultClientConfig();
+ }
+
+ ClientBuilder clientBuilder = ClientBuilder.newBuilder();
+ clientBuilder = clientBuilder.withConfig(clientConfig);
+ customizeClientBuilder(clientBuilder);
+ return clientBuilder.build();
+ }
+
+ /**
+ * Get the default client config.
+ *
+ * @return Client config
+ */
+ public ClientConfig getDefaultClientConfig() {
+ ClientConfig clientConfig = new ClientConfig();
+ clientConfig.register(MultiPartFeature.class);
+ clientConfig.register(json);
+ clientConfig.register(new JacksonJsonProvider((tools.jackson.databind.json.JsonMapper) json.getMapper()));
+ clientConfig.property(HttpUrlConnectorProvider.SET_METHOD_WORKAROUND, true);
+ // turn off compliance validation to be able to send payloads with DELETE calls
+ clientConfig.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true);
+ applyDebugSetting(clientConfig);
+ return clientConfig;
+ }
+
+ protected void applyDebugSetting(ClientConfig clientConfig) {
+ if (debugging) {
+ clientConfig.register(new LoggingFeature(java.util.logging.Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME), java.util.logging.Level.INFO, LoggingFeature.Verbosity.PAYLOAD_ANY, 1024*50 /* Log payloads up to 50K */));
+ clientConfig.property(LoggingFeature.LOGGING_FEATURE_VERBOSITY, LoggingFeature.Verbosity.PAYLOAD_ANY);
+ // Set logger to ALL
+ java.util.logging.Logger.getLogger(LoggingFeature.DEFAULT_LOGGER_NAME).setLevel(java.util.logging.Level.ALL);
+ } else {
+ // suppress warnings for payloads with DELETE calls:
+ java.util.logging.Logger.getLogger("org.glassfish.jersey.client").setLevel(java.util.logging.Level.SEVERE);
+ }
+ }
+
+ /**
+ * Customize the client builder.
+ *
+ * This method can be overridden to customize the API client. For example, this can be used to:
+ * 1. Set the hostname verifier to be used by the client to verify the endpoint's hostname
+ * against its identification information.
+ * 2. Set the client-side key store.
+ * 3. Set the SSL context that will be used when creating secured transport connections to
+ * server endpoints from web targets created by the client instance that is using this SSL context.
+ * 4. Set the client-side trust store.
+ *
+ * To completely disable certificate validation (at your own risk), you can
+ * override this method and invoke disableCertificateValidation(clientBuilder).
+ *
+ * @param clientBuilder a {@link jakarta.ws.rs.client.ClientBuilder} object.
+ */
+ protected void customizeClientBuilder(ClientBuilder clientBuilder) {
+ // No-op extension point
+ }
+
+ /**
+ * Disable X.509 certificate validation in TLS connections.
+ *
+ * Please note that trusting all certificates is extremely risky.
+ * This may be useful in a development environment with self-signed certificates.
+ *
+ * @param clientBuilder a {@link jakarta.ws.rs.client.ClientBuilder} object.
+ * @throws java.security.KeyManagementException if any.
+ * @throws java.security.NoSuchAlgorithmException if any.
+ */
+ protected void disableCertificateValidation(ClientBuilder clientBuilder) throws KeyManagementException, NoSuchAlgorithmException {
+ TrustManager[] trustAllCerts = new X509TrustManager[] {
+ new X509TrustManager() {
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+ @Override
+ public void checkClientTrusted(X509Certificate[] certs, String authType) {
+ }
+ @Override
+ public void checkServerTrusted(X509Certificate[] certs, String authType) {
+ }
+ }
+ };
+ SSLContext sslContext = SSLContext.getInstance("TLS");
+ sslContext.init(null, trustAllCerts, new SecureRandom());
+ clientBuilder.sslContext(sslContext);
+ }
+
+ /**
+ * Build the response headers.
+ *
+ * @param response a {@link jakarta.ws.rs.core.Response} object.
+ * @return a {@link java.util.Map} of response headers.
+ */
+ protected Map> buildResponseHeaders(Response response) {
+ Map> responseHeaders = new HashMap<>();
+ for (Entry> entry: response.getHeaders().entrySet()) {
+ List values = entry.getValue();
+ List headers = new ArrayList<>();
+ for (Object o : values) {
+ headers.add(String.valueOf(o));
+ }
+ responseHeaders.put(entry.getKey(), headers);
+ }
+ return responseHeaders;
+ }
+
+ /**
+ * Update query and header parameters based on authentication settings.
+ *
+ * @param authNames The authentications to apply
+ * @param queryParams List of query parameters
+ * @param headerParams Map of header parameters
+ * @param cookieParams Map of cookie parameters
+ * @param method HTTP method (e.g. POST)
+ * @param uri HTTP URI
+ */
+ protected void updateParamsForAuth(String[] authNames, List queryParams, Map headerParams,
+ Map cookieParams, String payload, String method, URI uri) throws ApiException {
+ for (String authName : authNames) {
+ Authentication auth = authentications.get(authName);
+ if (auth == null) {
+ continue;
+ }
+ auth.applyToParams(queryParams, headerParams, cookieParams, payload, method, uri);
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiException.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiException.java
new file mode 100644
index 000000000000..620312b28fa4
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiException.java
@@ -0,0 +1,111 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Map;
+import java.util.List;
+
+/**
+ * API Exception
+ */
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class ApiException extends Exception {
+ private static final long serialVersionUID = 1L;
+
+ private int code = 0;
+ private Map> responseHeaders = null;
+ private String responseBody = null;
+ private transient Object errorEntity = null;
+
+ public ApiException() {}
+
+ public ApiException(Throwable throwable) {
+ super(throwable);
+ }
+
+ public ApiException(String message) {
+ super(message);
+ }
+
+ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders, String responseBody) {
+ super(message, throwable);
+ this.code = code;
+ this.responseHeaders = responseHeaders;
+ this.responseBody = responseBody;
+ }
+
+ public ApiException(String message, int code, Map> responseHeaders, String responseBody) {
+ this(message, (Throwable) null, code, responseHeaders, responseBody);
+ }
+
+ public ApiException(String message, Throwable throwable, int code, Map> responseHeaders) {
+ this(message, throwable, code, responseHeaders, null);
+ }
+
+ public ApiException(int code, Map> responseHeaders, String responseBody) {
+ this((String) null, (Throwable) null, code, responseHeaders, responseBody);
+ }
+
+ public ApiException(int code, String message) {
+ super(message);
+ this.code = code;
+ }
+
+ public ApiException(int code, String message, Map> responseHeaders, String responseBody) {
+ this(code, message);
+ this.responseHeaders = responseHeaders;
+ this.responseBody = responseBody;
+ }
+
+ public ApiException(int code, String message, Map> responseHeaders, String responseBody, Object errorEntity) {
+ this(code, message, responseHeaders, responseBody);
+ this.errorEntity = errorEntity;
+ }
+
+ /**
+ * Get the HTTP status code.
+ *
+ * @return HTTP status code
+ */
+ public int getCode() {
+ return code;
+ }
+
+ /**
+ * Get the HTTP response headers.
+ *
+ * @return A map of list of string
+ */
+ public Map> getResponseHeaders() {
+ return responseHeaders;
+ }
+
+ /**
+ * Get the HTTP response body.
+ *
+ * @return Response body in the form of string
+ */
+ public String getResponseBody() {
+ return responseBody;
+ }
+
+ /**
+ * Get the deserialized error entity (or null if this error doesn't have a model associated).
+ *
+ * @return Deserialized error entity
+ */
+ public Object getErrorEntity() {
+ return errorEntity;
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiResponse.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiResponse.java
new file mode 100644
index 000000000000..5f3daf26600c
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ApiResponse.java
@@ -0,0 +1,74 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * API response returned by API call.
+ *
+ * @param The type of data that is deserialized from response body
+ */
+public class ApiResponse {
+ private final int statusCode;
+ private final Map> headers;
+ private final T data;
+
+ /**
+ * @param statusCode The status code of HTTP response
+ * @param headers The headers of HTTP response
+ */
+ public ApiResponse(int statusCode, Map> headers) {
+ this(statusCode, headers, null);
+ }
+
+ /**
+ * @param statusCode The status code of HTTP response
+ * @param headers The headers of HTTP response
+ * @param data The object deserialized from response bod
+ */
+ public ApiResponse(int statusCode, Map> headers, T data) {
+ this.statusCode = statusCode;
+ this.headers = headers;
+ this.data = data;
+ }
+
+ /**
+ * Get the status code
+ *
+ * @return status code
+ */
+ public int getStatusCode() {
+ return statusCode;
+ }
+
+ /**
+ * Get the headers
+ *
+ * @return map of headers
+ */
+ public Map> getHeaders() {
+ return headers;
+ }
+
+ /**
+ * Get the data
+ *
+ * @return data
+ */
+ public T getData() {
+ return data;
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Configuration.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Configuration.java
new file mode 100644
index 000000000000..9ddcb98b9c58
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Configuration.java
@@ -0,0 +1,63 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Objects;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class Configuration {
+ public static final String VERSION = "1.0.0";
+
+ private static final AtomicReference defaultApiClient = new AtomicReference<>();
+ private static volatile Supplier apiClientFactory = ApiClient::new;
+
+ /**
+ * Get the default API client, which would be used when creating API instances without providing an API client.
+ *
+ * @return Default API client
+ */
+ public static ApiClient getDefaultApiClient() {
+ ApiClient client = defaultApiClient.get();
+ if (client == null) {
+ client = defaultApiClient.updateAndGet(val -> {
+ if (val != null) { // changed by another thread
+ return val;
+ }
+ return apiClientFactory.get();
+ });
+ }
+ return client;
+ }
+
+ /**
+ * Set the default API client, which would be used when creating API instances without providing an API client.
+ *
+ * @param apiClient API client
+ */
+ public static void setDefaultApiClient(ApiClient apiClient) {
+ defaultApiClient.set(apiClient);
+ }
+
+ /**
+ * set the callback used to create new ApiClient objects
+ */
+ public static void setApiClientFactory(Supplier factory) {
+ apiClientFactory = Objects.requireNonNull(factory);
+ }
+
+ private Configuration() {
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JSON.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JSON.java
new file mode 100644
index 000000000000..cc471f0df801
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JSON.java
@@ -0,0 +1,262 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import com.fasterxml.jackson.annotation.*;
+import tools.jackson.databind.*;
+import tools.jackson.databind.json.JsonMapper;
+import tools.jackson.databind.cfg.DateTimeFeature;
+import tools.jackson.databind.cfg.EnumFeature;
+import org.openapitools.jackson.nullable.JsonNullableJackson3Module;
+
+import java.text.DateFormat;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import jakarta.ws.rs.core.GenericType;
+import jakarta.ws.rs.ext.ContextResolver;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class JSON implements ContextResolver {
+ private ObjectMapper mapper;
+
+ public JSON() {
+ JsonMapper.Builder jsonMapperBuilder = JsonMapper.builder()
+ .changeDefaultPropertyInclusion(v -> v.withValueInclusion(JsonInclude.Include.NON_NULL))
+ .disable(MapperFeature.ALLOW_COERCION_OF_SCALARS)
+ .enable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
+ .enable(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE)
+ .disable(DateTimeFeature.WRITE_DATES_AS_TIMESTAMPS)
+ .enable(EnumFeature.WRITE_ENUMS_USING_TO_STRING)
+ .enable(EnumFeature.READ_ENUMS_USING_TO_STRING)
+ .defaultDateFormat(new RFC3339DateFormat());
+ jsonMapperBuilder.addModule(new JsonNullableJackson3Module());
+ jsonMapperBuilder.addModule(new RFC3339JavaTimeModule());
+ mapper = jsonMapperBuilder.build();
+ }
+
+ /**
+ * Set the date format for JSON (de)serialization with Date properties.
+ * @param dateFormat Date format
+ */
+ public void setDateFormat(DateFormat dateFormat) {
+ mapper = ((JsonMapper) mapper).rebuild().defaultDateFormat(dateFormat).build();
+ }
+
+ @Override
+ public ObjectMapper getContext(Class> type) {
+ return mapper;
+ }
+
+ /**
+ * Get the object mapper
+ *
+ * @return object mapper
+ */
+ public ObjectMapper getMapper() { return mapper; }
+
+ /**
+ * Returns the target model class that should be used to deserialize the input data.
+ * The discriminator mappings are used to determine the target model class.
+ *
+ * @param node The input data.
+ * @param modelClass The class that contains the discriminator mappings.
+ */
+ public static Class> getClassForElement(JsonNode node, Class> modelClass) {
+ ClassDiscriminatorMapping cdm = modelDiscriminators.get(modelClass);
+ if (cdm != null) {
+ return cdm.getClassForElement(node, new HashSet<>());
+ }
+ return null;
+ }
+
+ /**
+ * Helper class to register the discriminator mappings.
+ */
+ private static class ClassDiscriminatorMapping {
+ // The model class name.
+ Class> modelClass;
+ // The name of the discriminator property.
+ String discriminatorName;
+ // The discriminator mappings for a model class.
+ Map> discriminatorMappings;
+
+ // Constructs a new class discriminator.
+ ClassDiscriminatorMapping(Class> cls, String propertyName, Map> mappings) {
+ modelClass = cls;
+ discriminatorName = propertyName;
+ discriminatorMappings = new HashMap<>();
+ if (mappings != null) {
+ discriminatorMappings.putAll(mappings);
+ }
+ }
+
+ // Return the name of the discriminator property for this model class.
+ String getDiscriminatorPropertyName() {
+ return discriminatorName;
+ }
+
+ // Return the discriminator value or null if the discriminator is not
+ // present in the payload.
+ String getDiscriminatorValue(JsonNode node) {
+ // Determine the value of the discriminator property in the input data.
+ if (discriminatorName != null) {
+ // Get the value of the discriminator property, if present in the input payload.
+ node = node.get(discriminatorName);
+ if (node != null && node.isValueNode()) {
+ String discrValue = node.asText();
+ if (discrValue != null) {
+ return discrValue;
+ }
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Returns the target model class that should be used to deserialize the input data.
+ * This function can be invoked for anyOf/oneOf composed models with discriminator mappings.
+ * The discriminator mappings are used to determine the target model class.
+ *
+ * @param node The input data.
+ * @param visitedClasses The set of classes that have already been visited.
+ */
+ Class> getClassForElement(JsonNode node, Set> visitedClasses) {
+ if (visitedClasses.contains(modelClass)) {
+ // Class has already been visited.
+ return null;
+ }
+ // Determine the value of the discriminator property in the input data.
+ String discrValue = getDiscriminatorValue(node);
+ if (discrValue == null) {
+ return null;
+ }
+ Class> cls = discriminatorMappings.get(discrValue);
+ // It may not be sufficient to return this cls directly because that target class
+ // may itself be a composed schema, possibly with its own discriminator.
+ visitedClasses.add(modelClass);
+ for (Class> childClass : discriminatorMappings.values()) {
+ ClassDiscriminatorMapping childCdm = modelDiscriminators.get(childClass);
+ if (childCdm == null) {
+ continue;
+ }
+ if (!discriminatorName.equals(childCdm.discriminatorName)) {
+ discrValue = getDiscriminatorValue(node);
+ if (discrValue == null) {
+ continue;
+ }
+ }
+ if (childCdm != null) {
+ // Recursively traverse the discriminator mappings.
+ Class> childDiscr = childCdm.getClassForElement(node, visitedClasses);
+ if (childDiscr != null) {
+ return childDiscr;
+ }
+ }
+ }
+ return cls;
+ }
+ }
+
+ /**
+ * Returns true if inst is an instance of modelClass in the OpenAPI model hierarchy.
+ *
+ * The Java class hierarchy is not implemented the same way as the OpenAPI model hierarchy,
+ * so it's not possible to use the instanceof keyword.
+ *
+ * @param modelClass A OpenAPI model class.
+ * @param inst The instance object.
+ */
+ public static boolean isInstanceOf(Class> modelClass, Object inst, Set> visitedClasses) {
+ if (modelClass.isInstance(inst)) {
+ // This handles the 'allOf' use case with single parent inheritance.
+ return true;
+ }
+ if (visitedClasses.contains(modelClass)) {
+ // This is to prevent infinite recursion when the composed schemas have
+ // a circular dependency.
+ return false;
+ }
+ visitedClasses.add(modelClass);
+
+ // Traverse the oneOf/anyOf composed schemas.
+ Map> descendants = modelDescendants.get(modelClass);
+ if (descendants != null) {
+ for (GenericType> childType : descendants.values()) {
+ if (isInstanceOf(childType.getRawType(), inst, visitedClasses)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * A map of discriminators for all model classes.
+ */
+ private static Map, ClassDiscriminatorMapping> modelDiscriminators = new HashMap<>();
+
+ /**
+ * A map of oneOf/anyOf descendants for each model class.
+ */
+ private static Map, Map>> modelDescendants = new HashMap<>();
+
+ /**
+ * Register a model class discriminator.
+ *
+ * @param modelClass the model class
+ * @param discriminatorPropertyName the name of the discriminator property
+ * @param mappings a map with the discriminator mappings.
+ */
+ public static void registerDiscriminator(Class> modelClass, String discriminatorPropertyName, Map> mappings) {
+ ClassDiscriminatorMapping m = new ClassDiscriminatorMapping(modelClass, discriminatorPropertyName, mappings);
+ modelDiscriminators.put(modelClass, m);
+ }
+
+ /**
+ * Register the oneOf/anyOf descendants of the modelClass.
+ *
+ * @param modelClass the model class
+ * @param descendants a map of oneOf/anyOf descendants.
+ */
+ public static void registerDescendants(Class> modelClass, Map> descendants) {
+ modelDescendants.put(modelClass, descendants);
+ }
+
+ private static JSON json;
+
+ static
+ {
+ json = new JSON();
+ }
+
+ /**
+ * Get the default JSON instance.
+ *
+ * @return the default JSON instance
+ */
+ public static JSON getDefault() {
+ return json;
+ }
+
+ /**
+ * Set the default JSON instance.
+ *
+ * @param json JSON instance to be used
+ */
+ public static void setDefault(JSON json) {
+ JSON.json = json;
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JavaTimeFormatter.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JavaTimeFormatter.java
new file mode 100644
index 000000000000..e4fce33a147e
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/JavaTimeFormatter.java
@@ -0,0 +1,68 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.time.OffsetDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeParseException;
+
+/**
+ * Class that add parsing/formatting support for Java 8+ {@code OffsetDateTime} class.
+ * It's generated for java clients when {@code AbstractJavaCodegen#dateLibrary} specified as {@code java8}.
+ */
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class JavaTimeFormatter {
+ private DateTimeFormatter offsetDateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME;
+
+ /**
+ * Get the date format used to parse/format {@code OffsetDateTime} parameters.
+ *
+ * @return DateTimeFormatter
+ */
+ public DateTimeFormatter getOffsetDateTimeFormatter() {
+ return offsetDateTimeFormatter;
+ }
+
+ /**
+ * Set the date format used to parse/format {@code OffsetDateTime} parameters.
+ *
+ * @param offsetDateTimeFormatter {@code DateTimeFormatter}
+ */
+ public void setOffsetDateTimeFormatter(DateTimeFormatter offsetDateTimeFormatter) {
+ this.offsetDateTimeFormatter = offsetDateTimeFormatter;
+ }
+
+ /**
+ * Parse the given string into {@code OffsetDateTime} object.
+ *
+ * @param str String
+ * @return {@code OffsetDateTime}
+ */
+ public OffsetDateTime parseOffsetDateTime(String str) {
+ try {
+ return OffsetDateTime.parse(str, offsetDateTimeFormatter);
+ } catch (DateTimeParseException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /**
+ * Format the given {@code OffsetDateTime} object into string.
+ *
+ * @param offsetDateTime {@code OffsetDateTime}
+ * @return {@code OffsetDateTime} in string format
+ */
+ public String formatOffsetDateTime(OffsetDateTime offsetDateTime) {
+ return offsetDateTimeFormatter.format(offsetDateTime);
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Pair.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Pair.java
new file mode 100644
index 000000000000..dce072472684
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/Pair.java
@@ -0,0 +1,37 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class Pair {
+ private final String name;
+ private final String value;
+
+ public Pair(String name, String value) {
+ this.name = isValidString(name) ? name : "";
+ this.value = isValidString(value) ? value : "";
+ }
+
+ public String getName() {
+ return this.name;
+ }
+
+ public String getValue() {
+ return this.value;
+ }
+
+ private static boolean isValidString(String arg) {
+ return arg != null;
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339DateFormat.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339DateFormat.java
new file mode 100644
index 000000000000..57b53e07d5c3
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339DateFormat.java
@@ -0,0 +1,57 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.text.DateFormat;
+import java.text.FieldPosition;
+import java.text.ParsePosition;
+import java.util.Date;
+import java.text.DecimalFormat;
+import java.util.GregorianCalendar;
+import java.util.TimeZone;
+import tools.jackson.databind.util.StdDateFormat;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class RFC3339DateFormat extends DateFormat {
+ private static final long serialVersionUID = 1L;
+ private static final TimeZone TIMEZONE_Z = TimeZone.getTimeZone("UTC");
+
+ private final StdDateFormat fmt = new StdDateFormat()
+ .withTimeZone(TIMEZONE_Z)
+ .withColonInTimeZone(true);
+
+ public RFC3339DateFormat() {
+ this.calendar = new GregorianCalendar();
+ this.numberFormat = new DecimalFormat();
+ }
+
+ @Override
+ public Date parse(String source) {
+ return parse(source, new ParsePosition(0));
+ }
+
+ @Override
+ public Date parse(String source, ParsePosition pos) {
+ return fmt.parse(source, pos);
+ }
+
+ @Override
+ public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition) {
+ return fmt.format(date, toAppendTo, fieldPosition);
+ }
+
+ @Override
+ public Object clone() {
+ return super.clone();
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
new file mode 100644
index 000000000000..01a3a5ee344a
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339InstantDeserializer.java
@@ -0,0 +1,100 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.time.temporal.Temporal;
+import java.time.temporal.TemporalAccessor;
+import java.util.function.BiFunction;
+import java.util.function.Function;
+
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonParser;
+import tools.jackson.databind.DeserializationContext;
+import tools.jackson.databind.cfg.DateTimeFeature;
+import tools.jackson.databind.ext.javatime.deser.InstantDeserializer;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class RFC3339InstantDeserializer extends InstantDeserializer {
+ private static final long serialVersionUID = 1L;
+ private final static boolean DEFAULT_NORMALIZE_ZONE_ID = DateTimeFeature.NORMALIZE_DESERIALIZED_ZONE_ID.enabledByDefault();
+ private final static boolean DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ = DateTimeFeature.ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS.enabledByDefault();
+
+ public static final RFC3339InstantDeserializer INSTANT = new RFC3339InstantDeserializer<>(
+ Instant.class, DateTimeFormatter.ISO_INSTANT,
+ Instant::from,
+ a -> Instant.ofEpochMilli( a.value ),
+ a -> Instant.ofEpochSecond( a.integer, a.fraction ),
+ null,
+ true, // yes, replace zero offset with Z
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ public static final RFC3339InstantDeserializer OFFSET_DATE_TIME = new RFC3339InstantDeserializer<>(
+ OffsetDateTime.class, DateTimeFormatter.ISO_OFFSET_DATE_TIME,
+ OffsetDateTime::from,
+ a -> OffsetDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
+ a -> OffsetDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
+ (d, z) -> ( d.isEqual( OffsetDateTime.MIN ) || d.isEqual( OffsetDateTime.MAX ) ?
+ d :
+ d.withOffsetSameInstant( z.getRules().getOffset( d.toLocalDateTime() ) ) ),
+ true, // yes, replace zero offset with Z
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ public static final RFC3339InstantDeserializer ZONED_DATE_TIME = new RFC3339InstantDeserializer<>(
+ ZonedDateTime.class, DateTimeFormatter.ISO_ZONED_DATE_TIME,
+ ZonedDateTime::from,
+ a -> ZonedDateTime.ofInstant( Instant.ofEpochMilli( a.value ), a.zoneId ),
+ a -> ZonedDateTime.ofInstant( Instant.ofEpochSecond( a.integer, a.fraction ), a.zoneId ),
+ ZonedDateTime::withZoneSameInstant,
+ false, // keep zero offset and Z separate since zones explicitly supported
+ DEFAULT_NORMALIZE_ZONE_ID,
+ DEFAULT_ALWAYS_ALLOW_STRINGIFIED_DATE_TIMESTAMPS
+ );
+
+ protected RFC3339InstantDeserializer(
+ Class supportedType,
+ DateTimeFormatter formatter,
+ Function parsedToValue,
+ Function fromMilliseconds,
+ Function fromNanoseconds,
+ BiFunction adjust,
+ boolean replaceZeroOffsetAsZ,
+ boolean normalizeZoneId,
+ boolean readNumericStringsAsTimestamp) {
+ super(
+ supportedType,
+ formatter,
+ parsedToValue,
+ fromMilliseconds,
+ fromNanoseconds,
+ adjust,
+ replaceZeroOffsetAsZ,
+ normalizeZoneId,
+ readNumericStringsAsTimestamp
+ );
+ }
+
+ @Override
+ protected T _fromString(JsonParser p, DeserializationContext ctxt, String string0) throws JacksonException {
+ return super._fromString(p, ctxt, string0.replace( ' ', 'T' ));
+ }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
new file mode 100644
index 000000000000..c58311fd11ed
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/RFC3339JavaTimeModule.java
@@ -0,0 +1,33 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+package org.openapitools.client;
+
+import java.time.Instant;
+import java.time.OffsetDateTime;
+import java.time.ZonedDateTime;
+
+import tools.jackson.databind.module.SimpleModule;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class RFC3339JavaTimeModule extends SimpleModule {
+ private static final long serialVersionUID = 1L;
+
+ public RFC3339JavaTimeModule() {
+ super("RFC3339JavaTimeModule");
+ addDeserializer(Instant.class, RFC3339InstantDeserializer.INSTANT);
+ addDeserializer(OffsetDateTime.class, RFC3339InstantDeserializer.OFFSET_DATE_TIME);
+ addDeserializer(ZonedDateTime.class, RFC3339InstantDeserializer.ZONED_DATE_TIME);
+ }
+
+
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerConfiguration.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerConfiguration.java
new file mode 100644
index 000000000000..cf2f6207be6b
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerConfiguration.java
@@ -0,0 +1,72 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Map;
+
+/**
+ * Representing a Server configuration.
+ */
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class ServerConfiguration {
+ public String URL;
+ public String description;
+ public Map variables;
+
+ /**
+ * @param URL A URL to the target host.
+ * @param description A description of the host designated by the URL.
+ * @param variables A map between a variable name and its value. The value is used for substitution in the server's URL template.
+ */
+ public ServerConfiguration(String URL, String description, Map variables) {
+ this.URL = URL;
+ this.description = description;
+ this.variables = variables;
+ }
+
+ /**
+ * Format URL template using given variables.
+ *
+ * @param variables A map between a variable name and its value.
+ * @return Formatted URL.
+ */
+ public String URL(Map variables) {
+ String url = this.URL;
+
+ // go through variables and replace placeholders
+ for (Map.Entry variable: this.variables.entrySet()) {
+ String name = variable.getKey();
+ ServerVariable serverVariable = variable.getValue();
+ String value = serverVariable.defaultValue;
+
+ if (variables != null && variables.containsKey(name)) {
+ value = variables.get(name);
+ if (serverVariable.enumValues.size() > 0 && !serverVariable.enumValues.contains(value)) {
+ throw new IllegalArgumentException("The variable " + name + " in the server URL has invalid value " + value + ".");
+ }
+ }
+ url = url.replace("{" + name + "}", value);
+ }
+ return url;
+ }
+
+ /**
+ * Format URL template using default server variables.
+ *
+ * @return Formatted URL.
+ */
+ public String URL() {
+ return URL(null);
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerVariable.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerVariable.java
new file mode 100644
index 000000000000..d0dda76b97f0
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/ServerVariable.java
@@ -0,0 +1,37 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.HashSet;
+
+/**
+ * Representing a Server Variable for server URL template substitution.
+ */
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class ServerVariable {
+ public String description;
+ public String defaultValue;
+ public HashSet enumValues = null;
+
+ /**
+ * @param description A description for the server variable.
+ * @param defaultValue The default value to use for substitution.
+ * @param enumValues An enumeration of string values to be used if the substitution options are from a limited set.
+ */
+ public ServerVariable(String description, String defaultValue, HashSet enumValues) {
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.enumValues = enumValues;
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/StringUtil.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/StringUtil.java
new file mode 100644
index 000000000000..778b10ec7af2
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/StringUtil.java
@@ -0,0 +1,83 @@
+/*
+ * OpenAPI Petstore
+ * This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\
+ *
+ * The version of the OpenAPI document: 1.0.0
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+package org.openapitools.client;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class StringUtil {
+ /**
+ * Check if the given array contains the given value (with case-insensitive comparison).
+ *
+ * @param array The array
+ * @param value The value to search
+ * @return true if the array contains the value
+ */
+ public static boolean containsIgnoreCase(String[] array, String value) {
+ for (String str : array) {
+ if (value == null && str == null) {
+ return true;
+ }
+ if (value != null && value.equalsIgnoreCase(str)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Join an array of strings with the given separator.
+ *
+ * Note: This might be replaced by utility method from commons-lang or guava someday
+ * if one of those libraries is added as dependency.
+ *
+ *
+ * @param array The array of strings
+ * @param separator The separator
+ * @return the resulting string
+ */
+ public static String join(String[] array, String separator) {
+ int len = array.length;
+ if (len == 0) {
+ return "";
+ }
+
+ StringBuilder out = new StringBuilder();
+ out.append(array[0]);
+ for (int i = 1; i < len; i++) {
+ out.append(separator).append(array[i]);
+ }
+ return out.toString();
+ }
+
+ /**
+ * Join a list of strings with the given separator.
+ *
+ * @param list The list of strings
+ * @param separator The separator
+ * @return the resulting string
+ */
+ public static String join(Collection list, String separator) {
+ Iterator iterator = list.iterator();
+ StringBuilder out = new StringBuilder();
+ if (iterator.hasNext()) {
+ out.append(iterator.next());
+ }
+ while (iterator.hasNext()) {
+ out.append(separator).append(iterator.next());
+ }
+ return out.toString();
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
new file mode 100644
index 000000000000..762db8d23183
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/AnotherFakeApi.java
@@ -0,0 +1,97 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiException;
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiResponse;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.Pair;
+
+import jakarta.ws.rs.core.GenericType;
+
+import org.openapitools.client.model.Client;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.Valid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class AnotherFakeApi {
+ private ApiClient apiClient;
+
+ public AnotherFakeApi() {
+ this(Configuration.getDefaultApiClient());
+ }
+
+ public AnotherFakeApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * To test special tags
+ * To test special tags and operation ID starting with number
+ * @param client client model (required)
+ * @return Client
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public Client call123testSpecialTags(@jakarta.annotation.Nonnull Client client) throws ApiException {
+ return call123testSpecialTagsWithHttpInfo(client).getData();
+ }
+
+ /**
+ * To test special tags
+ * To test special tags and operation ID starting with number
+ * @param client client model (required)
+ * @return ApiResponse<Client>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public ApiResponse call123testSpecialTagsWithHttpInfo(@jakarta.annotation.Nonnull Client client) throws ApiException {
+ // Check required parameters
+ if (client == null) {
+ throw new ApiException(400, "Missing the required parameter 'client' when calling call123testSpecialTags");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept("application/json");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("AnotherFakeApi.call123testSpecialTags", "/another-fake/dummy", "PATCH", new ArrayList<>(), client,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/DefaultApi.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/DefaultApi.java
new file mode 100644
index 000000000000..a3de9e3289a5
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/DefaultApi.java
@@ -0,0 +1,90 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiException;
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiResponse;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.Pair;
+
+import jakarta.ws.rs.core.GenericType;
+
+import org.openapitools.client.model.FooGetDefaultResponse;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.Valid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class DefaultApi {
+ private ApiClient apiClient;
+
+ public DefaultApi() {
+ this(Configuration.getDefaultApiClient());
+ }
+
+ public DefaultApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ *
+ *
+ * @return FooGetDefaultResponse
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 0 response -
+
+ */
+ public FooGetDefaultResponse fooGet() throws ApiException {
+ return fooGetWithHttpInfo().getData();
+ }
+
+ /**
+ *
+ *
+ * @return ApiResponse<FooGetDefaultResponse>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 0 response -
+
+ */
+ public ApiResponse fooGetWithHttpInfo() throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("application/json");
+ String localVarContentType = apiClient.selectHeaderContentType();
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("0", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("DefaultApi.fooGet", "/foo", "GET", new ArrayList<>(), null,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+}
diff --git a/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/FakeApi.java b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/FakeApi.java
new file mode 100644
index 000000000000..b8fa5867fb51
--- /dev/null
+++ b/samples/client/petstore/java/jersey3-jackson3/src/main/java/org/openapitools/client/api/FakeApi.java
@@ -0,0 +1,1120 @@
+package org.openapitools.client.api;
+
+import org.openapitools.client.ApiException;
+import org.openapitools.client.ApiClient;
+import org.openapitools.client.ApiResponse;
+import org.openapitools.client.Configuration;
+import org.openapitools.client.Pair;
+
+import jakarta.ws.rs.core.GenericType;
+
+import java.math.BigDecimal;
+import org.openapitools.client.model.Client;
+import java.io.File;
+import org.openapitools.client.model.FileSchemaTestClass;
+import org.openapitools.client.model.HealthCheckResult;
+import java.time.LocalDate;
+import java.time.OffsetDateTime;
+import org.openapitools.client.model.OuterComposite;
+import org.openapitools.client.model.OuterEnum;
+import org.openapitools.client.model.TestInlineFreeformAdditionalPropertiesRequest;
+import org.openapitools.client.model.User;
+
+import jakarta.validation.constraints.*;
+import jakarta.validation.Valid;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+@jakarta.annotation.Generated(value = "org.openapitools.codegen.languages.JavaClientCodegen", comments = "Generator version: 7.23.0-SNAPSHOT")
+public class FakeApi {
+ private ApiClient apiClient;
+
+ public FakeApi() {
+ this(Configuration.getDefaultApiClient());
+ }
+
+ public FakeApi(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Get the API client
+ *
+ * @return API client
+ */
+ public ApiClient getApiClient() {
+ return apiClient;
+ }
+
+ /**
+ * Set the API client
+ *
+ * @param apiClient an instance of API client
+ */
+ public void setApiClient(ApiClient apiClient) {
+ this.apiClient = apiClient;
+ }
+
+ /**
+ * Health check endpoint
+ *
+ * @return HealthCheckResult
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 The instance started successfully -
+
+ */
+ public HealthCheckResult fakeHealthGet() throws ApiException {
+ return fakeHealthGetWithHttpInfo().getData();
+ }
+
+ /**
+ * Health check endpoint
+ *
+ * @return ApiResponse<HealthCheckResult>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 The instance started successfully -
+
+ */
+ public ApiResponse fakeHealthGetWithHttpInfo() throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("application/json");
+ String localVarContentType = apiClient.selectHeaderContentType();
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.fakeHealthGet", "/fake/health", "GET", new ArrayList<>(), null,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ *
+ * Test serialization of outer boolean types
+ * @param body Input boolean as post body (optional)
+ * @return Boolean
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output boolean -
+
+ */
+ public Boolean fakeOuterBooleanSerialize(@jakarta.annotation.Nullable Boolean body) throws ApiException {
+ return fakeOuterBooleanSerializeWithHttpInfo(body).getData();
+ }
+
+ /**
+ *
+ * Test serialization of outer boolean types
+ * @param body Input boolean as post body (optional)
+ * @return ApiResponse<Boolean>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output boolean -
+
+ */
+ public ApiResponse fakeOuterBooleanSerializeWithHttpInfo(@jakarta.annotation.Nullable Boolean body) throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("*/*");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.fakeOuterBooleanSerialize", "/fake/outer/boolean", "POST", new ArrayList<>(), body,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ *
+ * Test serialization of object with outer number type
+ * @param outerComposite Input composite as post body (optional)
+ * @return OuterComposite
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output composite -
+
+ */
+ public OuterComposite fakeOuterCompositeSerialize(@jakarta.annotation.Nullable OuterComposite outerComposite) throws ApiException {
+ return fakeOuterCompositeSerializeWithHttpInfo(outerComposite).getData();
+ }
+
+ /**
+ *
+ * Test serialization of object with outer number type
+ * @param outerComposite Input composite as post body (optional)
+ * @return ApiResponse<OuterComposite>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output composite -
+
+ */
+ public ApiResponse fakeOuterCompositeSerializeWithHttpInfo(@jakarta.annotation.Nullable OuterComposite outerComposite) throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("*/*");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.fakeOuterCompositeSerialize", "/fake/outer/composite", "POST", new ArrayList<>(), outerComposite,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ *
+ * Test serialization of outer number types
+ * @param body Input number as post body (optional)
+ * @return BigDecimal
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output number -
+
+ */
+ public BigDecimal fakeOuterNumberSerialize(@jakarta.annotation.Nullable BigDecimal body) throws ApiException {
+ return fakeOuterNumberSerializeWithHttpInfo(body).getData();
+ }
+
+ /**
+ *
+ * Test serialization of outer number types
+ * @param body Input number as post body (optional)
+ * @return ApiResponse<BigDecimal>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output number -
+
+ */
+ public ApiResponse fakeOuterNumberSerializeWithHttpInfo(@jakarta.annotation.Nullable BigDecimal body) throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("*/*");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.fakeOuterNumberSerialize", "/fake/outer/number", "POST", new ArrayList<>(), body,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ *
+ * Test serialization of outer string types
+ * @param body Input string as post body (optional)
+ * @return String
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output string -
+
+ */
+ public String fakeOuterStringSerialize(@jakarta.annotation.Nullable String body) throws ApiException {
+ return fakeOuterStringSerializeWithHttpInfo(body).getData();
+ }
+
+ /**
+ *
+ * Test serialization of outer string types
+ * @param body Input string as post body (optional)
+ * @return ApiResponse<String>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Output string -
+
+ */
+ public ApiResponse fakeOuterStringSerializeWithHttpInfo(@jakarta.annotation.Nullable String body) throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("*/*");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.fakeOuterStringSerialize", "/fake/outer/string", "POST", new ArrayList<>(), body,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ * Array of Enums
+ *
+ * @return List<OuterEnum>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Got named array of enums -
+
+ */
+ public List getArrayOfEnums() throws ApiException {
+ return getArrayOfEnumsWithHttpInfo().getData();
+ }
+
+ /**
+ * Array of Enums
+ *
+ * @return ApiResponse<List<OuterEnum>>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Got named array of enums -
+
+ */
+ public ApiResponse> getArrayOfEnumsWithHttpInfo() throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept("application/json");
+ String localVarContentType = apiClient.selectHeaderContentType();
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType>() {});
+ GenericType> localVarReturnType = new GenericType>() {};
+ return apiClient.invokeAPI("FakeApi.getArrayOfEnums", "/fake/array-of-enums", "GET", new ArrayList<>(), null,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ * Array of string
+ *
+ * @param requestBody (optional)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 ok -
+
+ */
+ public void postArrayOfString(@jakarta.annotation.Nullable List<@Pattern(regexp = "[A-Z0-9]+")String> requestBody) throws ApiException {
+ postArrayOfStringWithHttpInfo(requestBody);
+ }
+
+ /**
+ * Array of string
+ *
+ * @param requestBody (optional)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 ok -
+
+ */
+ public ApiResponse postArrayOfStringWithHttpInfo(@jakarta.annotation.Nullable List<@Pattern(regexp = "[A-Z0-9]+")String> requestBody) throws ApiException {
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.postArrayOfString", "/fake/request-array-string", "POST", new ArrayList<>(), requestBody,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ * test referenced additionalProperties
+ *
+ * @param requestBody request body (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public void testAdditionalPropertiesReference(@jakarta.annotation.Nonnull Map requestBody) throws ApiException {
+ testAdditionalPropertiesReferenceWithHttpInfo(requestBody);
+ }
+
+ /**
+ * test referenced additionalProperties
+ *
+ * @param requestBody request body (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public ApiResponse testAdditionalPropertiesReferenceWithHttpInfo(@jakarta.annotation.Nonnull Map requestBody) throws ApiException {
+ // Check required parameters
+ if (requestBody == null) {
+ throw new ApiException(400, "Missing the required parameter 'requestBody' when calling testAdditionalPropertiesReference");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testAdditionalPropertiesReference", "/fake/additionalProperties-reference", "POST", new ArrayList<>(), requestBody,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ *
+ * For this test, the body for this request much reference a schema named `File`.
+ * @param fileSchemaTestClass (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Success -
+
+ */
+ public void testBodyWithFileSchema(@jakarta.annotation.Nonnull FileSchemaTestClass fileSchemaTestClass) throws ApiException {
+ testBodyWithFileSchemaWithHttpInfo(fileSchemaTestClass);
+ }
+
+ /**
+ *
+ * For this test, the body for this request much reference a schema named `File`.
+ * @param fileSchemaTestClass (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Success -
+
+ */
+ public ApiResponse testBodyWithFileSchemaWithHttpInfo(@jakarta.annotation.Nonnull FileSchemaTestClass fileSchemaTestClass) throws ApiException {
+ // Check required parameters
+ if (fileSchemaTestClass == null) {
+ throw new ApiException(400, "Missing the required parameter 'fileSchemaTestClass' when calling testBodyWithFileSchema");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testBodyWithFileSchema", "/fake/body-with-file-schema", "PUT", new ArrayList<>(), fileSchemaTestClass,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ *
+ *
+ * @param query (required)
+ * @param user (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Success -
+
+ */
+ public void testBodyWithQueryParams(@jakarta.annotation.Nonnull String query, @jakarta.annotation.Nonnull User user) throws ApiException {
+ testBodyWithQueryParamsWithHttpInfo(query, user);
+ }
+
+ /**
+ *
+ *
+ * @param query (required)
+ * @param user (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 Success -
+
+ */
+ public ApiResponse testBodyWithQueryParamsWithHttpInfo(@jakarta.annotation.Nonnull String query, @jakarta.annotation.Nonnull User user) throws ApiException {
+ // Check required parameters
+ if (query == null) {
+ throw new ApiException(400, "Missing the required parameter 'query' when calling testBodyWithQueryParams");
+ }
+ if (user == null) {
+ throw new ApiException(400, "Missing the required parameter 'user' when calling testBodyWithQueryParams");
+ }
+
+ // Query parameters
+ List localVarQueryParams = new ArrayList<>(
+ apiClient.parameterToPairs("", "query", query)
+ );
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testBodyWithQueryParams", "/fake/body-with-query-params", "PUT", localVarQueryParams, user,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ * To test \"client\" model
+ * To test \"client\" model
+ * @param client client model (required)
+ * @return Client
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public Client testClientModel(@jakarta.annotation.Nonnull Client client) throws ApiException {
+ return testClientModelWithHttpInfo(client).getData();
+ }
+
+ /**
+ * To test \"client\" model
+ * To test \"client\" model
+ * @param client client model (required)
+ * @return ApiResponse<Client>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public ApiResponse testClientModelWithHttpInfo(@jakarta.annotation.Nonnull Client client) throws ApiException {
+ // Check required parameters
+ if (client == null) {
+ throw new ApiException(400, "Missing the required parameter 'client' when calling testClientModel");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept("application/json");
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ localVarErrorTypes.put("200", new GenericType() {});
+ GenericType localVarReturnType = new GenericType() {};
+ return apiClient.invokeAPI("FakeApi.testClientModel", "/fake", "PATCH", new ArrayList<>(), client,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, localVarReturnType, false, localVarErrorTypes);
+ }
+ /**
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * @param number None (required)
+ * @param _double None (required)
+ * @param patternWithoutDelimiter None (required)
+ * @param _byte None (required)
+ * @param integer None (optional)
+ * @param int32 None (optional)
+ * @param int64 None (optional)
+ * @param _float None (optional)
+ * @param string None (optional)
+ * @param binary None (optional)
+ * @param date None (optional)
+ * @param dateTime None (optional, default to 2010-02-01T10:20:10.111110+01:00)
+ * @param password None (optional)
+ * @param paramCallback None (optional)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Invalid username supplied -
+ 404 User not found -
+
+ */
+ public void testEndpointParameters(@jakarta.annotation.Nonnull BigDecimal number, @jakarta.annotation.Nonnull Double _double, @jakarta.annotation.Nonnull String patternWithoutDelimiter, @jakarta.annotation.Nonnull byte[] _byte, @jakarta.annotation.Nullable Integer integer, @jakarta.annotation.Nullable Integer int32, @jakarta.annotation.Nullable Long int64, @jakarta.annotation.Nullable Float _float, @jakarta.annotation.Nullable String string, @jakarta.annotation.Nullable File binary, @jakarta.annotation.Nullable LocalDate date, @jakarta.annotation.Nullable OffsetDateTime dateTime, @jakarta.annotation.Nullable String password, @jakarta.annotation.Nullable String paramCallback) throws ApiException {
+ testEndpointParametersWithHttpInfo(number, _double, patternWithoutDelimiter, _byte, integer, int32, int64, _float, string, binary, date, dateTime, password, paramCallback);
+ }
+
+ /**
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * Fake endpoint for testing various parameters 假端點 偽のエンドポイント 가짜 엔드 포인트
+ * @param number None (required)
+ * @param _double None (required)
+ * @param patternWithoutDelimiter None (required)
+ * @param _byte None (required)
+ * @param integer None (optional)
+ * @param int32 None (optional)
+ * @param int64 None (optional)
+ * @param _float None (optional)
+ * @param string None (optional)
+ * @param binary None (optional)
+ * @param date None (optional)
+ * @param dateTime None (optional, default to 2010-02-01T10:20:10.111110+01:00)
+ * @param password None (optional)
+ * @param paramCallback None (optional)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Invalid username supplied -
+ 404 User not found -
+
+ */
+ public ApiResponse testEndpointParametersWithHttpInfo(@jakarta.annotation.Nonnull BigDecimal number, @jakarta.annotation.Nonnull Double _double, @jakarta.annotation.Nonnull String patternWithoutDelimiter, @jakarta.annotation.Nonnull byte[] _byte, @jakarta.annotation.Nullable Integer integer, @jakarta.annotation.Nullable Integer int32, @jakarta.annotation.Nullable Long int64, @jakarta.annotation.Nullable Float _float, @jakarta.annotation.Nullable String string, @jakarta.annotation.Nullable File binary, @jakarta.annotation.Nullable LocalDate date, @jakarta.annotation.Nullable OffsetDateTime dateTime, @jakarta.annotation.Nullable String password, @jakarta.annotation.Nullable String paramCallback) throws ApiException {
+ // Check required parameters
+ if (number == null) {
+ throw new ApiException(400, "Missing the required parameter 'number' when calling testEndpointParameters");
+ }
+ if (_double == null) {
+ throw new ApiException(400, "Missing the required parameter '_double' when calling testEndpointParameters");
+ }
+ if (patternWithoutDelimiter == null) {
+ throw new ApiException(400, "Missing the required parameter 'patternWithoutDelimiter' when calling testEndpointParameters");
+ }
+ if (_byte == null) {
+ throw new ApiException(400, "Missing the required parameter '_byte' when calling testEndpointParameters");
+ }
+
+ // Form parameters
+ Map localVarFormParams = new LinkedHashMap<>();
+ if (integer != null) {
+ localVarFormParams.put("integer", integer);
+ }
+ if (int32 != null) {
+ localVarFormParams.put("int32", int32);
+ }
+ if (int64 != null) {
+ localVarFormParams.put("int64", int64);
+ }
+ localVarFormParams.put("number", number);
+ if (_float != null) {
+ localVarFormParams.put("float", _float);
+ }
+ localVarFormParams.put("double", _double);
+ if (string != null) {
+ localVarFormParams.put("string", string);
+ }
+ localVarFormParams.put("pattern_without_delimiter", patternWithoutDelimiter);
+ localVarFormParams.put("byte", _byte);
+ if (binary != null) {
+ localVarFormParams.put("binary", binary);
+ }
+ if (date != null) {
+ localVarFormParams.put("date", date);
+ }
+ if (dateTime != null) {
+ localVarFormParams.put("dateTime", dateTime);
+ }
+ if (password != null) {
+ localVarFormParams.put("password", password);
+ }
+ if (paramCallback != null) {
+ localVarFormParams.put("callback", paramCallback);
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/x-www-form-urlencoded");
+ String[] localVarAuthNames = new String[] {"http_basic_test"};
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testEndpointParameters", "/fake", "POST", new ArrayList<>(), null,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), localVarFormParams, localVarAccept, localVarContentType,
+ localVarAuthNames, null, false, localVarErrorTypes);
+ }
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional)
+ * @param enumQueryString Query parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryInteger Query parameter enum test (double) (optional)
+ * @param enumQueryDouble Query parameter enum test (double) (optional)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Invalid request -
+ 404 Not found -
+
+ */
+ public void testEnumParameters(@jakarta.annotation.Nullable List enumHeaderStringArray, @jakarta.annotation.Nullable String enumHeaderString, @jakarta.annotation.Nullable List enumQueryStringArray, @jakarta.annotation.Nullable String enumQueryString, @jakarta.annotation.Nullable Integer enumQueryInteger, @jakarta.annotation.Nullable Double enumQueryDouble, @jakarta.annotation.Nullable List enumFormStringArray, @jakarta.annotation.Nullable String enumFormString) throws ApiException {
+ testEnumParametersWithHttpInfo(enumHeaderStringArray, enumHeaderString, enumQueryStringArray, enumQueryString, enumQueryInteger, enumQueryDouble, enumFormStringArray, enumFormString);
+ }
+
+ /**
+ * To test enum parameters
+ * To test enum parameters
+ * @param enumHeaderStringArray Header parameter enum test (string array) (optional)
+ * @param enumHeaderString Header parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryStringArray Query parameter enum test (string array) (optional)
+ * @param enumQueryString Query parameter enum test (string) (optional, default to -efg)
+ * @param enumQueryInteger Query parameter enum test (double) (optional)
+ * @param enumQueryDouble Query parameter enum test (double) (optional)
+ * @param enumFormStringArray Form parameter enum test (string array) (optional, default to $)
+ * @param enumFormString Form parameter enum test (string) (optional, default to -efg)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Invalid request -
+ 404 Not found -
+
+ */
+ public ApiResponse testEnumParametersWithHttpInfo(@jakarta.annotation.Nullable List enumHeaderStringArray, @jakarta.annotation.Nullable String enumHeaderString, @jakarta.annotation.Nullable List enumQueryStringArray, @jakarta.annotation.Nullable String enumQueryString, @jakarta.annotation.Nullable Integer enumQueryInteger, @jakarta.annotation.Nullable Double enumQueryDouble, @jakarta.annotation.Nullable List enumFormStringArray, @jakarta.annotation.Nullable String enumFormString) throws ApiException {
+ // Query parameters
+ List localVarQueryParams = new ArrayList<>(
+ apiClient.parameterToPairs("multi", "enum_query_string_array", enumQueryStringArray)
+ );
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "enum_query_string", enumQueryString));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "enum_query_integer", enumQueryInteger));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "enum_query_double", enumQueryDouble));
+
+ // Header parameters
+ Map localVarHeaderParams = new LinkedHashMap<>();
+ if (enumHeaderStringArray != null) {
+ localVarHeaderParams.put("enum_header_string_array", apiClient.parameterToString(enumHeaderStringArray));
+ }
+ if (enumHeaderString != null) {
+ localVarHeaderParams.put("enum_header_string", apiClient.parameterToString(enumHeaderString));
+ }
+
+ // Form parameters
+ Map localVarFormParams = new LinkedHashMap<>();
+ if (enumFormStringArray != null) {
+ localVarFormParams.put("enum_form_string_array", enumFormStringArray);
+ }
+ if (enumFormString != null) {
+ localVarFormParams.put("enum_form_string", enumFormString);
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/x-www-form-urlencoded");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testEnumParameters", "/fake", "GET", localVarQueryParams, null,
+ localVarHeaderParams, new LinkedHashMap<>(), localVarFormParams, localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+
+private ApiResponse testGroupParametersWithHttpInfo(@jakarta.annotation.Nonnull Integer requiredStringGroup, @jakarta.annotation.Nonnull Boolean requiredBooleanGroup, @jakarta.annotation.Nonnull Long requiredInt64Group, @jakarta.annotation.Nullable Integer stringGroup, @jakarta.annotation.Nullable Boolean booleanGroup, @jakarta.annotation.Nullable Long int64Group) throws ApiException {
+ // Check required parameters
+ if (requiredStringGroup == null) {
+ throw new ApiException(400, "Missing the required parameter 'requiredStringGroup' when calling testGroupParameters");
+ }
+ if (requiredBooleanGroup == null) {
+ throw new ApiException(400, "Missing the required parameter 'requiredBooleanGroup' when calling testGroupParameters");
+ }
+ if (requiredInt64Group == null) {
+ throw new ApiException(400, "Missing the required parameter 'requiredInt64Group' when calling testGroupParameters");
+ }
+
+ // Query parameters
+ List localVarQueryParams = new ArrayList<>(
+ apiClient.parameterToPairs("", "required_string_group", requiredStringGroup)
+ );
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "required_int64_group", requiredInt64Group));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "string_group", stringGroup));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "int64_group", int64Group));
+
+ // Header parameters
+ Map localVarHeaderParams = new LinkedHashMap<>();
+ localVarHeaderParams.put("required_boolean_group", apiClient.parameterToString(requiredBooleanGroup));
+ if (booleanGroup != null) {
+ localVarHeaderParams.put("boolean_group", apiClient.parameterToString(booleanGroup));
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType();
+ String[] localVarAuthNames = new String[] {"bearer_test"};
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testGroupParameters", "/fake", "DELETE", localVarQueryParams, null,
+ localVarHeaderParams, new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ localVarAuthNames, null, false, localVarErrorTypes);
+ }
+
+ public class APItestGroupParametersRequest {
+ @jakarta.annotation.Nonnull
+ private Integer requiredStringGroup;
+ @jakarta.annotation.Nonnull
+ private Boolean requiredBooleanGroup;
+ @jakarta.annotation.Nonnull
+ private Long requiredInt64Group;
+ @jakarta.annotation.Nullable
+ private Integer stringGroup;
+ @jakarta.annotation.Nullable
+ private Boolean booleanGroup;
+ @jakarta.annotation.Nullable
+ private Long int64Group;
+
+ private APItestGroupParametersRequest() {
+ }
+
+ /**
+ * Set requiredStringGroup
+ * @param requiredStringGroup Required String in group parameters (required)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest requiredStringGroup(@jakarta.annotation.Nonnull Integer requiredStringGroup) {
+ this.requiredStringGroup = requiredStringGroup;
+ return this;
+ }
+
+ /**
+ * Set requiredBooleanGroup
+ * @param requiredBooleanGroup Required Boolean in group parameters (required)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest requiredBooleanGroup(@jakarta.annotation.Nonnull Boolean requiredBooleanGroup) {
+ this.requiredBooleanGroup = requiredBooleanGroup;
+ return this;
+ }
+
+ /**
+ * Set requiredInt64Group
+ * @param requiredInt64Group Required Integer in group parameters (required)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest requiredInt64Group(@jakarta.annotation.Nonnull Long requiredInt64Group) {
+ this.requiredInt64Group = requiredInt64Group;
+ return this;
+ }
+
+ /**
+ * Set stringGroup
+ * @param stringGroup String in group parameters (optional)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest stringGroup(@jakarta.annotation.Nullable Integer stringGroup) {
+ this.stringGroup = stringGroup;
+ return this;
+ }
+
+ /**
+ * Set booleanGroup
+ * @param booleanGroup Boolean in group parameters (optional)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest booleanGroup(@jakarta.annotation.Nullable Boolean booleanGroup) {
+ this.booleanGroup = booleanGroup;
+ return this;
+ }
+
+ /**
+ * Set int64Group
+ * @param int64Group Integer in group parameters (optional)
+ * @return APItestGroupParametersRequest
+ */
+ public APItestGroupParametersRequest int64Group(@jakarta.annotation.Nullable Long int64Group) {
+ this.int64Group = int64Group;
+ return this;
+ }
+
+ /**
+ * Execute testGroupParameters request
+
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Something wrong -
+
+
+ */
+
+ public void execute() throws ApiException {
+ this.executeWithHttpInfo().getData();
+ }
+
+ /**
+ * Execute testGroupParameters request with HTTP info returned
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 400 Something wrong -
+
+
+ */
+ public ApiResponse executeWithHttpInfo() throws ApiException {
+ return testGroupParametersWithHttpInfo(requiredStringGroup, requiredBooleanGroup, requiredInt64Group, stringGroup, booleanGroup, int64Group);
+ }
+ }
+
+ /**
+ * Fake endpoint to test group parameters (optional)
+ * Fake endpoint to test group parameters (optional)
+ * @return testGroupParametersRequest
+ * @throws ApiException if fails to make API call
+
+
+ */
+ public APItestGroupParametersRequest testGroupParameters() throws ApiException {
+ return new APItestGroupParametersRequest();
+ }
+ /**
+ * test inline additionalProperties
+ *
+ * @param requestBody request body (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public void testInlineAdditionalProperties(@jakarta.annotation.Nonnull Map requestBody) throws ApiException {
+ testInlineAdditionalPropertiesWithHttpInfo(requestBody);
+ }
+
+ /**
+ * test inline additionalProperties
+ *
+ * @param requestBody request body (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public ApiResponse testInlineAdditionalPropertiesWithHttpInfo(@jakarta.annotation.Nonnull Map requestBody) throws ApiException {
+ // Check required parameters
+ if (requestBody == null) {
+ throw new ApiException(400, "Missing the required parameter 'requestBody' when calling testInlineAdditionalProperties");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testInlineAdditionalProperties", "/fake/inline-additionalProperties", "POST", new ArrayList<>(), requestBody,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ * test inline free-form additionalProperties
+ *
+ * @param testInlineFreeformAdditionalPropertiesRequest request body (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public void testInlineFreeformAdditionalProperties(@jakarta.annotation.Nonnull TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) throws ApiException {
+ testInlineFreeformAdditionalPropertiesWithHttpInfo(testInlineFreeformAdditionalPropertiesRequest);
+ }
+
+ /**
+ * test inline free-form additionalProperties
+ *
+ * @param testInlineFreeformAdditionalPropertiesRequest request body (required)
+ * @return ApiResponse<Void>
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+ Response Details
+ Status Code Description Response Headers
+ 200 successful operation -
+
+ */
+ public ApiResponse testInlineFreeformAdditionalPropertiesWithHttpInfo(@jakarta.annotation.Nonnull TestInlineFreeformAdditionalPropertiesRequest testInlineFreeformAdditionalPropertiesRequest) throws ApiException {
+ // Check required parameters
+ if (testInlineFreeformAdditionalPropertiesRequest == null) {
+ throw new ApiException(400, "Missing the required parameter 'testInlineFreeformAdditionalPropertiesRequest' when calling testInlineFreeformAdditionalProperties");
+ }
+
+ String localVarAccept = apiClient.selectHeaderAccept();
+ String localVarContentType = apiClient.selectHeaderContentType("application/json");
+ final Map localVarErrorTypes = new HashMap();
+ return apiClient.invokeAPI("FakeApi.testInlineFreeformAdditionalProperties", "/fake/inline-freeform-additionalProperties", "POST", new ArrayList<>(), testInlineFreeformAdditionalPropertiesRequest,
+ new LinkedHashMap<>(), new LinkedHashMap<>(), new LinkedHashMap<>(), localVarAccept, localVarContentType,
+ null, null, false, localVarErrorTypes);
+ }
+ /**
+ * test json serialization of form data
+ *
+ * @param param field1 (required)
+ * @param param2 field2 (required)
+ * @throws ApiException if fails to make API call
+ * @http.response.details
+
+