diff --git a/.github/workflows/samples-kotlin-client.yaml b/.github/workflows/samples-kotlin-client.yaml
index c1f1bfa441f16824b85d7de5d3b9fb6ffd8b1b4b..9eaecf529b9d92eda3f1ebb203e10d4e83001f1d 100644
--- a/.github/workflows/samples-kotlin-client.yaml
+++ b/.github/workflows/samples-kotlin-client.yaml
@@ -51,6 +51,11 @@ jobs:
           - samples/client/petstore/kotlin-bigdecimal-default-okhttp4
           - samples/client/petstore/kotlin-jvm-ktor-jackson
           - samples/client/petstore/kotlin-jvm-ktor-gson
+          - samples/client/petstore/kotlin-jvm-ktor-gson
+          - samples/client/petstore/kotlin-jvm-vertx-gson
+          - samples/client/petstore/kotlin-jvm-vertx-jackson
+          - samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines
+          - samples/client/petstore/kotlin-jvm-vertx-moshi
     steps:
       - uses: actions/checkout@v3
       - uses: actions/setup-java@v3
diff --git a/bin/configs/kotlin-jvm-vertx-gson.yaml b/bin/configs/kotlin-jvm-vertx-gson.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..50bfafb94dc159aca44525d38d082ad6ce8bc876
--- /dev/null
+++ b/bin/configs/kotlin-jvm-vertx-gson.yaml
@@ -0,0 +1,8 @@
+generatorName: kotlin
+outputDir: samples/client/petstore/kotlin-jvm-vertx-gson
+library: jvm-vertx
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/kotlin-client
+additionalProperties:
+  artifactId: kotlin-petstore-jvm-vertx
+  serializationLibrary: "gson"
\ No newline at end of file
diff --git a/bin/configs/kotlin-jvm-vertx-jackson-coroutines.yaml b/bin/configs/kotlin-jvm-vertx-jackson-coroutines.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..64693cba0e72344ff2a937a64f6d98b75b37b9b3
--- /dev/null
+++ b/bin/configs/kotlin-jvm-vertx-jackson-coroutines.yaml
@@ -0,0 +1,9 @@
+generatorName: kotlin
+outputDir: samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines
+library: jvm-vertx
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/kotlin-client
+additionalProperties:
+  artifactId: kotlin-petstore-jvm-vertx
+  serializationLibrary: "jackson"
+  useCoroutines: "true"
diff --git a/bin/configs/kotlin-jvm-vertx-jackson.yaml b/bin/configs/kotlin-jvm-vertx-jackson.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..f23e8f4237c483f627cb9e57e16e497ebf8744c1
--- /dev/null
+++ b/bin/configs/kotlin-jvm-vertx-jackson.yaml
@@ -0,0 +1,8 @@
+generatorName: kotlin
+outputDir: samples/client/petstore/kotlin-jvm-vertx-jackson
+library: jvm-vertx
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/kotlin-client
+additionalProperties:
+  artifactId: kotlin-petstore-jvm-vertx
+  serializationLibrary: "jackson"
\ No newline at end of file
diff --git a/bin/configs/kotlin-jvm-vertx-moshi.yaml b/bin/configs/kotlin-jvm-vertx-moshi.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..e3d658c39f3d2474c1da2a62d394fc3b5744e4e2
--- /dev/null
+++ b/bin/configs/kotlin-jvm-vertx-moshi.yaml
@@ -0,0 +1,8 @@
+generatorName: kotlin
+outputDir: samples/client/petstore/kotlin-jvm-vertx-moshi
+library: jvm-vertx
+inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore.yaml
+templateDir: modules/openapi-generator/src/main/resources/kotlin-client
+additionalProperties:
+  artifactId: kotlin-petstore-jvm-vertx
+  serializationLibrary: "moshi"
\ No newline at end of file
diff --git a/docs/generators/kotlin-server.md b/docs/generators/kotlin-server.md
index ee8399a2a4c7e56770b4fbe7dcf3d11471a3526d..1b25cca82d3a771adff6b950d5f81fe57a297333 100644
--- a/docs/generators/kotlin-server.md
+++ b/docs/generators/kotlin-server.md
@@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 
 | Option | Description | Values | Default |
 | ------ | ----------- | ------ | ------- |
+|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
 |apiSuffix|suffix for api classes| |Api|
 |artifactId|Generated artifact id (name of jar).| |kotlin-server|
 |artifactVersion|Generated artifact's package version.| |1.0.0|
diff --git a/docs/generators/kotlin-spring.md b/docs/generators/kotlin-spring.md
index a7de5eea6234068736312ad794b13c04ad14abfa..cf81038ed360d93b3c2f7ee269ff22332765bee9 100644
--- a/docs/generators/kotlin-spring.md
+++ b/docs/generators/kotlin-spring.md
@@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 
 | Option | Description | Values | Default |
 | ------ | ----------- | ------ | ------- |
+|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
 |annotationLibrary|Select the complementary documentation annotation library.|<dl><dt>**none**</dt><dd>Do not annotate Model and Api with complementary annotations.</dd><dt>**swagger1**</dt><dd>Annotate Model and Api using the Swagger Annotations 1.x library.</dd><dt>**swagger2**</dt><dd>Annotate Model and Api using the Swagger Annotations 2.x library.</dd></dl>|swagger2|
 |apiPackage|api package for generated code| |org.openapitools.api|
 |apiSuffix|suffix for api classes| |Api|
diff --git a/docs/generators/kotlin-vertx.md b/docs/generators/kotlin-vertx.md
index 7a25d890a7233d5a04ec19ac37955c810d0f1915..4bd4958a90a7d62e007c40fb3251c540d7eed329 100644
--- a/docs/generators/kotlin-vertx.md
+++ b/docs/generators/kotlin-vertx.md
@@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 
 | Option | Description | Values | Default |
 | ------ | ----------- | ------ | ------- |
+|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
 |apiSuffix|suffix for api classes| |Api|
 |artifactId|Generated artifact id (name of jar).| |null|
 |artifactVersion|Generated artifact's package version.| |1.0.0|
diff --git a/docs/generators/kotlin.md b/docs/generators/kotlin.md
index 7f562302f28035c85c89a82dcc1336f3bbdd512b..4c6b25ad39412d4b7ef988fe0990ecba934e1c2b 100644
--- a/docs/generators/kotlin.md
+++ b/docs/generators/kotlin.md
@@ -18,6 +18,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 
 | Option | Description | Values | Default |
 | ------ | ----------- | ------ | ------- |
+|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
 |apiSuffix|suffix for api classes| |Api|
 |artifactId|Generated artifact id (name of jar).| |kotlin-client|
 |artifactVersion|Generated artifact's package version.| |1.0.0|
@@ -27,7 +28,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 |generateRoomModels|Generate Android Room database models in addition to API models (JVM Volley library only)| |false|
 |groupId|Generated artifact package's organization (i.e. maven groupId).| |org.openapitools|
 |idea|Add IntellJ Idea plugin and mark Kotlin main and test folders as source folders.| |false|
-|library|Library template (sub-template) to use|<dl><dt>**jvm-ktor**</dt><dd>Platform: Java Virtual Machine. HTTP client: Ktor 1.6.7. JSON processing: Gson, Jackson (default).</dd><dt>**jvm-okhttp4**</dt><dd>[DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-okhttp3**</dt><dd>Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-retrofit2**</dt><dd>Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.</dd><dt>**multiplatform**</dt><dd>Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.7. JSON processing: Kotlinx Serialization: 1.2.1.</dd><dt>**jvm-volley**</dt><dd>Platform: JVM for Android. HTTP client: Volley 1.2.1. JSON processing: gson 2.8.9</dd></dl>|jvm-okhttp4|
+|library|Library template (sub-template) to use|<dl><dt>**jvm-ktor**</dt><dd>Platform: Java Virtual Machine. HTTP client: Ktor 1.6.7. JSON processing: Gson, Jackson (default).</dd><dt>**jvm-okhttp4**</dt><dd>[DEFAULT] Platform: Java Virtual Machine. HTTP client: OkHttp 4.2.0 (Android 5.0+ and Java 8+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-okhttp3**</dt><dd>Platform: Java Virtual Machine. HTTP client: OkHttp 3.12.4 (Android 2.3+ and Java 7+). JSON processing: Moshi 1.8.0.</dd><dt>**jvm-retrofit2**</dt><dd>Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.</dd><dt>**multiplatform**</dt><dd>Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.7. JSON processing: Kotlinx Serialization: 1.2.1.</dd><dt>**jvm-volley**</dt><dd>Platform: JVM for Android. HTTP client: Volley 1.2.1. JSON processing: gson 2.8.9</dd><dt>**jvm-vertx**</dt><dd>Platform: Java Virtual Machine. HTTP client: Vert.x Web Client. JSON processing: Moshi, Gson or Jackson.</dd></dl>|jvm-okhttp4|
 |modelMutable|Create mutable models| |false|
 |moshiCodeGen|Whether to enable codegen with the Moshi library. Refer to the [official Moshi doc](https://github.com/square/moshi#codegen) for more info.| |false|
 |omitGradlePluginVersions|Whether to declare Gradle plugin versions in build files.| |false|
diff --git a/docs/generators/ktorm-schema.md b/docs/generators/ktorm-schema.md
index b4b5b1b616247ead07ba254d14abd59d09c04277..f279a112e66f2b8798d6eb0679ea1d7db08a0664 100644
--- a/docs/generators/ktorm-schema.md
+++ b/docs/generators/ktorm-schema.md
@@ -19,6 +19,7 @@ These options may be applied as additional-properties (cli) or configOptions (pl
 | Option | Description | Values | Default |
 | ------ | ----------- | ------ | ------- |
 |addSurrogateKey|Adds the surrogate key for all models that don't already have a primary key (named by the above convention)| |false|
+|additionalModelTypeAnnotations|Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)| |null|
 |artifactId|Generated artifact id (name of jar).| |ktorm|
 |artifactVersion|Generated artifact's package version.| |1.0.0|
 |defaultDatabaseName|Default database name for all queries| |sqlite.db|
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
index 7d5f78746868f9c43918ad266fd088384990baca..3cb7170e04f9f17e82e532514503e4a5bd301b9c 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java
@@ -49,6 +49,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
 
     public static final String MODEL_MUTABLE = "modelMutable";
     public static final String MODEL_MUTABLE_DESC = "Create mutable models";
+    public static final String ADDITIONAL_MODEL_TYPE_ANNOTATIONS = "additionalModelTypeAnnotations";
 
     private final Logger LOGGER = LoggerFactory.getLogger(AbstractKotlinCodegen.class);
 
@@ -77,6 +78,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
     protected Set<String> propertyAdditionalKeywords = new HashSet<>(Arrays.asList("entries", "keys", "size", "values"));
 
     private final Map<String, String> schemaKeyToModelNameCache = new HashMap<>();
+    protected List<String> additionalModelTypeAnnotations = new LinkedList<>();
 
     public AbstractKotlinCodegen() {
         super();
@@ -262,6 +264,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         cliOptions.add(new CliOption(CodegenConstants.SORT_MODEL_PROPERTIES_BY_REQUIRED_FLAG, CodegenConstants.SORT_MODEL_PROPERTIES_BY_REQUIRED_FLAG_DESC));
 
         cliOptions.add(CliOption.newBoolean(MODEL_MUTABLE, MODEL_MUTABLE_DESC, false));
+        cliOptions.add(CliOption.newString(ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "Additional annotations for model type(class level annotations). List separated by semicolon(;) or new line (Linux or Windows)"));
     }
 
     @Override
@@ -398,6 +401,21 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         return outputFolder + File.separator + sourceFolder + File.separator + modelPackage().replace('.', File.separatorChar);
     }
 
+    @Override
+    public Map<String, ModelsMap> postProcessAllModels(Map<String, ModelsMap> objs) {
+        objs = super.postProcessAllModels(objs);
+        objs = super.updateAllModels(objs);
+
+        if (!additionalModelTypeAnnotations.isEmpty()) {
+            for (String modelName : objs.keySet()) {
+                Map<String, Object> models = (Map<String, Object>) objs.get(modelName);
+                models.put(ADDITIONAL_MODEL_TYPE_ANNOTATIONS, additionalModelTypeAnnotations);
+            }
+        }
+
+        return objs;
+    }
+
     @Override
     public ModelsMap postProcessModels(ModelsMap objs) {
         objs = super.postProcessModelsEnum(objs);
@@ -506,6 +524,11 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
             additionalProperties.put(CodegenConstants.NON_PUBLIC_API, nonPublicApi);
         }
 
+        if (additionalProperties.containsKey(ADDITIONAL_MODEL_TYPE_ANNOTATIONS)) {
+            String additionalAnnotationsList = additionalProperties.get(ADDITIONAL_MODEL_TYPE_ANNOTATIONS).toString();
+            this.setAdditionalModelTypeAnnotations(Arrays.asList(additionalAnnotationsList.trim().split("\\s*(;|\\r?\\n)\\s*")));
+        }
+
         additionalProperties.put(CodegenConstants.SORT_PARAMS_BY_REQUIRED_FLAG, getSortParamsByRequiredFlag());
         additionalProperties.put(CodegenConstants.SORT_MODEL_PROPERTIES_BY_REQUIRED_FLAG, getSortModelPropertiesByRequiredFlag());
 
@@ -1095,4 +1118,12 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
         // process 'additionalProperties'
         setAddProps(schema, m);
     }
+
+    public List<String> getAdditionalModelTypeAnnotations() {
+        return additionalModelTypeAnnotations;
+    }
+
+    public void setAdditionalModelTypeAnnotations(final List<String> additionalModelTypeAnnotations) {
+        this.additionalModelTypeAnnotations = additionalModelTypeAnnotations;
+    }
 }
diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java
index 6b9dd53321d9831249cfb6f61e45e757ff4db3a8..994b4b052cc596fbbacaf97dedfe9d09cd3c5ae4 100644
--- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java
+++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/KotlinClientCodegen.java
@@ -63,6 +63,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
     protected static final String JVM_RETROFIT2 = "jvm-retrofit2";
     protected static final String MULTIPLATFORM = "multiplatform";
     protected static final String JVM_VOLLEY = "jvm-volley";
+    protected static final String JVM_VERTX = "jvm-vertx";
 
     public static final String USE_RX_JAVA = "useRxJava";
     public static final String USE_RX_JAVA2 = "useRxJava2";
@@ -215,6 +216,7 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
         supportedLibraries.put(JVM_RETROFIT2, "Platform: Java Virtual Machine. HTTP client: Retrofit 2.6.2.");
         supportedLibraries.put(MULTIPLATFORM, "Platform: Kotlin multiplatform. HTTP client: Ktor 1.6.7. JSON processing: Kotlinx Serialization: 1.2.1.");
         supportedLibraries.put(JVM_VOLLEY, "Platform: JVM for Android. HTTP client: Volley 1.2.1. JSON processing: gson 2.8.9");
+        supportedLibraries.put(JVM_VERTX, "Platform: Java Virtual Machine. HTTP client: Vert.x Web Client. JSON processing: Moshi, Gson or Jackson.");
 
         CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "Library template (sub-template) to use");
         libraryOption.setEnum(supportedLibraries);
@@ -441,6 +443,9 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
             case MULTIPLATFORM:
                 processMultiplatformLibrary(infrastructureFolder);
                 break;
+            case JVM_VERTX:
+                processJVMVertXLibrary(infrastructureFolder);
+                break;
             default:
                 break;
         }
@@ -666,6 +671,22 @@ public class KotlinClientCodegen extends AbstractKotlinCodegen {
         supportingFiles.add(new SupportingFile("auth/OAuth.kt.mustache", authFolder, "OAuth.kt"));
     }
 
+    /**
+     * Process Vert.x client options
+     *
+     * @param infrastructureFolder infrastructure destination folder
+     */
+    private void processJVMVertXLibrary(final String infrastructureFolder) {
+        supportingFiles.add(new SupportingFile("infrastructure/ApiAbstractions.kt.mustache", infrastructureFolder, "ApiAbstractions.kt"));
+        supportingFiles.add(new SupportingFile("infrastructure/ApiClient.kt.mustache", infrastructureFolder, "ApiClient.kt"));
+        supportingFiles.add(new SupportingFile("infrastructure/Errors.kt.mustache", infrastructureFolder, "Errors.kt"));
+        supportingFiles.add(new SupportingFile("infrastructure/ApiResponse.kt.mustache", infrastructureFolder, "ApiResponse.kt"));
+        addSupportingSerializerAdapters(infrastructureFolder);
+
+        additionalProperties.put(JVM, true);
+        additionalProperties.put(JVM_VERTX, true);
+    }
+
     private void processJVMOkHttpLibrary(final String infrastructureFolder) {
         commonJvmMultiplatformSupportingFiles(infrastructureFolder);
         addSupportingSerializerAdapters(infrastructureFolder);
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/additionalModelTypeAnnotations.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/additionalModelTypeAnnotations.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..f4871c02cc2edcd21329e0e81d80190a24f22293
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/additionalModelTypeAnnotations.mustache
@@ -0,0 +1,2 @@
+{{#additionalModelTypeAnnotations}}{{{.}}}
+{{/additionalModelTypeAnnotations}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache
index e613a3d8f39d27af9e541469213a55c72cbbffae..b43ef7f39f6f2b7911c215cee3f0836857869f7a 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache
@@ -25,6 +25,9 @@ buildscript {
     {{#useRxJava3}}
     ext.rxJava3Version = '3.0.12'
     {{/useRxJava3}}
+    {{#jvm-vertx}}
+    ext.vertx_version = "4.3.3"
+    {{/jvm-vertx}}
 
     repositories {
         maven { url "https://repo1.maven.org/maven2" }
@@ -149,6 +152,15 @@ dependencies {
     implementation "com.squareup.retrofit2:converter-scalars:$retrofitVersion"
     {{/jvm-retrofit2}}
     testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+    {{#jvm-vertx}}
+    implementation "io.vertx:vertx-web-client:$vertx_version"
+    implementation "io.vertx:vertx-core:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin:$vertx_version"
+    implementation "io.vertx:vertx-uri-template:$vertx_version"
+    {{#useCoroutines}}
+    implementation "io.vertx:vertx-lang-kotlin-coroutines:$vertx_version"
+    {{/useCoroutines}}
+    {{/jvm-vertx}}
 }
 {{#kotlinx_serialization}}
 
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
index 8d2c28acd4a3ec659cb79e56e6e6b0809bfd0d9e..0ddf4793a4447985c091722f7cb9b16ade00b34e 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class.mustache
@@ -61,6 +61,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
 {{#isDeprecated}}
 @Deprecated(message = "This schema is deprecated.")
 {{/isDeprecated}}
+{{>additionalModelTypeAnnotations}}
 {{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}data class{{/discriminator}} {{classname}}{{^discriminator}} (
 
 {{#allVars}}
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/api.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..04e6e38781903c311f0972b4d77262aead5cdb63
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/api.mustache
@@ -0,0 +1,232 @@
+{{>licenseInfo}}
+package {{apiPackage}}
+
+import java.io.IOException
+
+{{#imports}}import {{import}}
+{{/imports}}
+
+{{#jackson}}
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+{{/jackson}}
+{{#gson}}
+import com.google.gson.reflect.TypeToken
+import com.google.gson.annotations.SerializedName
+{{/gson}}
+{{#moshi}}
+import com.squareup.moshi.Json
+{{/moshi}}
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+{{#useCoroutines}}
+import io.vertx.kotlin.coroutines.await
+import io.vertx.kotlin.coroutines.dispatcher
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+{{/useCoroutines}}
+
+import {{packageName}}.infrastructure.*
+
+@Suppress ("UNUSED")
+{{#operations}}
+{{#nonPublicApi}}internal {{/nonPublicApi}}class {{classname}}(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    {{#operation}}
+    {{#allParams}}
+    {{#isEnum}}
+    /**
+     * enum for parameter {{paramName}}
+     */
+     {{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{enumName}}_{{operationId}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
+     {{^enumUnknownDefaultCase}}
+     {{#allowableValues}}
+     {{#enumVars}}
+     {{#moshi}}
+     @Json(name = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}
+     {{/moshi}}
+     {{#gson}}
+     @SerializedName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}
+     {{/gson}}
+     {{#jackson}}
+     @JsonProperty(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}
+     {{/jackson}}
+     {{#kotlinx_serialization}}
+     @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}
+     {{/kotlinx_serialization}}
+     {{/enumVars}}
+     {{/allowableValues}}
+     {{/enumUnknownDefaultCase}}
+     {{#enumUnknownDefaultCase}}
+     {{#allowableValues}}
+     {{#enumVars}}
+     {{^-last}}
+     {{#moshi}}
+     @Json(name = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}),
+     {{/moshi}}
+     {{#gson}}
+     @SerializedName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}),
+     {{/gson}}
+     {{#jackson}}
+     @JsonProperty(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}),
+     {{/jackson}}
+     {{#kotlinx_serialization}}
+     @SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}),
+     {{/kotlinx_serialization}}
+     {{/-last}}
+     {{/enumVars}}
+     {{/allowableValues}}
+     {{/enumUnknownDefaultCase}}
+     }
+
+    {{/isEnum}}
+    {{/allParams}}
+    /**
+     * {{summary}}
+     * {{notes}}
+     {{#allParams}}* @param {{{paramName}}} {{description}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}}{{/required}}
+     {{/allParams}}* @return {{#returnType}}{{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}} or null{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}} or null{{/isResponseOptional}}{{/returnType}}{{^returnType}}void{{/returnType}}
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */{{#returnType}}
+    @Suppress("UNCHECKED_CAST"){{/returnType}}
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    {{#isDeprecated}}
+    @Deprecated(message = "This operation is deprecated.")
+    {{/isDeprecated}}
+    {{#useCoroutines}}suspend {{/useCoroutines}}fun {{operationId}}({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}_{{operationId}}>{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#required}}{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{/required}}{{^required}}?{{#defaultValue}} = {{^isNumber}}{{{defaultValue}}}{{/isNumber}}{{#isNumber}}{{{dataType}}}("{{{defaultValue}}}"){{/isNumber}}{{/defaultValue}}{{^defaultValue}} = null{{/defaultValue}}{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : {{^useCoroutines}}Future<{{/useCoroutines}}{{#returnType}}{{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}{{^useCoroutines}}>{{/useCoroutines}} {
+        return {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}} = {{{paramName}}}{{^-last}}, {{/-last}}{{/allParams}}).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> {{#returnType}}(localVarResponse as Success<*>).data as {{{returnType}}}{{#nullableReturnType}}{{^isResponseOptional}}?{{/isResponseOptional}}{{/nullableReturnType}}{{#isResponseOptional}}?{{/isResponseOptional}}{{/returnType}}{{^returnType}}Unit{{/returnType}}
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }{{#useCoroutines}}.await(){{/useCoroutines}}
+    }
+
+    /**
+     * {{summary}}
+     * {{notes}}
+     {{#allParams}}* @param {{{paramName}}} {{description}}{{^required}} (optional{{#defaultValue}}, default to {{{.}}}{{/defaultValue}}){{/required}}{{#required}}{{#defaultValue}} (default to {{{.}}}){{/defaultValue}}{{/required}}
+     {{/allParams}}* @return ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */{{#returnType}}
+    @Suppress("UNCHECKED_CAST"){{/returnType}}
+    @Throws(IllegalStateException::class, IOException::class)
+    {{#isDeprecated}}
+    @Deprecated(message = "This operation is deprecated.")
+    {{/isDeprecated}}
+    fun {{operationId}}WithHttpInfo({{#allParams}}{{{paramName}}}: {{#isEnum}}{{#isContainer}}kotlin.collections.List<{{enumName}}_{{operationId}}>{{/isContainer}}{{^isContainer}}{{enumName}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}?{{/required}}{{^-last}}, {{/-last}}{{/allParams}}) : Future<ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.{{httpMethod}}, UriTemplate.of("$basePath{{path}}"{{#pathParams}}.replace("{"+"{{baseName}}"+"}", encodeURIComponent({{#isContainer}}{{paramName}}.joinToString(","){{/isContainer}}{{^isContainer}}{{{paramName}}}{{#isEnum}}.value{{/isEnum}}.toString(){{/isContainer}})){{/pathParams}}))
+
+        {{#hasFormParams}}request.putHeader("Content-Type", {{^consumes}}"multipart/form-data"{{/consumes}}{{#consumes.0}}"{{{mediaType}}}"{{/consumes.0}}){{/hasFormParams}}
+        {{#headerParams}}{{{paramName}}}{{^required}}?{{/required}}.apply { request.putHeader("{{baseName}}", {{#isContainer}}this.joinToString(separator = collectionDelimiter("{{collectionFormat}}")){{/isContainer}}{{^isContainer}}this.toString(){{/isContainer}})}{{/headerParams}}
+        {{^hasFormParams}}{{#hasConsumes}}
+            {{#consumes}}
+                    request.putHeader("Content-Type", "{{{mediaType}}}")
+            {{/consumes}}
+        {{/hasConsumes}}{{/hasFormParams}}
+        {{#hasProduces}}request.putHeader("Accept", "{{#produces}}{{{mediaType}}}{{^-last}}, {{/-last}}{{/produces}}"){{/hasProduces}}
+
+        {{#hasFormParams}}
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        {{#formParams}}
+        {{{paramName}}}{{^required}}?{{/required}}.let { form.add("{{{baseName}}}", {{{paramName}}}{{#isEnum}}.value{{/isEnum}}{{^isString}}.toString(){{/isString}}) }
+        {{/formParams}}
+        {{/hasFormParams}}
+
+        {{#hasQueryParams}}
+        {{#queryParams}}
+        {{{paramName}}}{{^required}}?{{/required}}.let { request.queryParams().add("{{baseName}}", {{#isContainer}}toMultiValue(it.toList(), "{{collectionFormat}}"){{/isContainer}}{{^isContainer}}listOf({{#isDateTime}}parseDateToQueryString(it){{/isDateTime}}{{#isDate}}parseDateToQueryString(it){{/isDate}}{{^isDateTime}}{{^isDate}}it.toString(){{/isDate}}{{/isDateTime}}){{/isContainer}}) }
+        {{/queryParams}}
+        {{/hasQueryParams}}
+
+        {{#authMethods}}
+        {{#isApiKey}}
+        if (apiKey["{{keyParamName}}"] != null) {
+            if (apiKeyPrefix["{{keyParamName}}"] != null) {
+                {{#isKeyInHeader}}
+                request.putHeader("{{keyParamName}}", apiKeyPrefix["{{keyParamName}}"]!! + " " + apiKey["{{keyParamName}}"]!!)
+                {{/isKeyInHeader}}
+                {{#isKeyInQuery}}
+               request.queryParams().add("{{keyParamName}}", apiKeyPrefix["{{keyParamName}}"]!! + " " + apiKey["{{keyParamName}}"]!!)
+                {{/isKeyInQuery}}
+            } else {
+                {{#isKeyInHeader}}
+                request.putHeader("{{keyParamName}}", apiKey["{{keyParamName}}"]!!)
+                {{/isKeyInHeader}}
+                {{#isKeyInQuery}}
+                request.queryParams().add("{{keyParamName}}", apiKey["{{keyParamName}}"]!!)
+                {{/isKeyInQuery}}
+            }
+        }
+        {{/isApiKey}}
+        {{#isBasic}}
+        {{#isBasicBasic}}
+        username?.let { username ->
+            password?.let { password ->
+                request.basicAuthentication(username, password)
+            }
+        }
+        {{/isBasicBasic}}
+        {{#isBasicBearer}}
+        accessToken?.let { accessToken ->
+           request.bearerTokenAuthentication(accessToken)
+        }
+        {{/isBasicBearer}}
+        {{/isBasic}}
+        {{#isOAuth}}
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+        {{/isOAuth}}
+        {{/authMethods}}
+
+        return request
+            {{#hasBodyParam}}
+            .sendBuffer(responseBody({{#bodyParams}}{{{paramName}}}{{/bodyParams}}))
+            {{/hasBodyParam}}
+            {{^hasBodyParam}}
+            .send()
+            {{/hasBodyParam}}
+            .map {
+                val apiResponse: ApiResponse<{{#returnType}}{{{returnType}}}?{{/returnType}}{{^returnType}}Unit?{{/returnType}}> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    {{/operation}}
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        {{#moshi}}
+        return Buffer.buffer(Serializer.moshi.adapter(T::class.java).toJson(body))
+        {{/moshi}}
+        {{#gson}}
+        return Buffer.buffer(Serializer.gson.toJson(body, T::class.java))
+        {{/gson}}
+        {{#jackson}}
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+        {{/jackson}}
+    }
+
+}
+{{/operations}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiClient.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiClient.kt.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..dacce6f4742a0dacb06a8fcf5cec041a1fe86929
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiClient.kt.mustache
@@ -0,0 +1,110 @@
+package {{packageName}}.infrastructure
+
+import io.vertx.core.Vertx
+import io.vertx.core.buffer.Buffer
+import java.nio.charset.StandardCharsets
+{{#jackson}}
+import com.fasterxml.jackson.core.type.TypeReference
+{{/jackson}}
+{{#gson}}
+import com.google.gson.reflect.TypeToken
+{{/gson}}
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
+    companion object {
+        const val baseUrlKey = "{{packageName}}.baseUrl"
+
+        @JvmStatic
+        val defaultBasePath: String by lazy {
+            System.getProperties().getProperty(baseUrlKey, "{{{basePath}}}")
+        }
+    }
+
+    protected inline fun <reified T: Any?> handleResponse(response: io.vertx.ext.web.client.HttpResponse<Buffer>): ApiResponse<T?> {
+        val code = response.statusCode()
+        val headers = response.headers().associate { it.key to listOf(it.value) }
+        val contentType = headers["Content-Type"]?.firstOrNull()?.substringBefore(";")?.lowercase(java.util.Locale.getDefault())
+
+        return when (code) {
+            in 100..199 -> Informational(
+                response.statusMessage(),
+                code,
+                headers
+            )
+            in 200 .. 299 -> Success(
+                responseBody<T>(response.body(), contentType),
+                code,
+                headers
+            )
+            in 300..399 -> Redirection(
+                code,
+                headers
+            )
+            in 400..499 -> ClientError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+            else -> ServerError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+        }
+    }
+
+    protected inline fun <reified T: Any?> responseBody(body: Buffer?, mediaType: String? = "application/json"): T? {
+        body ?: return null
+
+        val bodyContent = String(body.bytes, StandardCharsets.UTF_8)
+        if (bodyContent.isEmpty()) {
+            return null
+        }
+
+        return when {
+            mediaType==null || (mediaType.startsWith("application/") && mediaType.endsWith("json")) ->
+                {{#moshi}}Serializer.moshi.adapter(T::class.java).fromJson(bodyContent){{/moshi}}{{!
+                }}{{#gson}}Serializer.gson.fromJson(bodyContent, (object: TypeToken<T>(){}).getType()){{/gson}}{{!
+                }}{{#jackson}}Serializer.jacksonObjectMapper.readValue(bodyContent, object: TypeReference<T>() {}){{/jackson}}{{!
+                }}{{#kotlinx_serialization}}Serializer.kotlinxSerializationJson.decodeFromString<T>(bodyContent){{/kotlinx_serialization}}
+            else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+        }
+    }
+
+    protected fun encodeURIComponent(parameter: String): String {
+        return try {
+            java.net.URLEncoder.encode(parameter, java.nio.charset.StandardCharsets.UTF_8.name())
+        } catch (e: java.io.UnsupportedEncodingException) {
+            parameter
+        }
+    }
+
+    protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
+        {{#toJson}}
+        /*
+        .replace("\"", "") converts the json object string to an actual string for the query parameter.
+        The moshi or gson adapter allows a more generic solution instead of trying to use a native
+        formatter. It also easily allows to provide a simple way to define a custom date format pattern
+        inside a gson/moshi adapter.
+        */
+        {{#moshi}}
+        return Serializer.moshi.adapter(T::class.java).toJson(value).replace("\"", "")
+        {{/moshi}}
+        {{#gson}}
+        return Serializer.gson.toJson(value, T::class.java).replace("\"", "")
+        {{/gson}}
+        {{#jackson}}
+        return Serializer.jacksonObjectMapper.writeValueAsString(value).replace("\"", "")
+        {{/jackson}}
+        {{#kotlinx_serialization}}
+        return Serializer.kotlinxSerializationJson.encodeToString(value).replace("\"", "")
+        {{/kotlinx_serialization}}
+        {{/toJson}}
+        {{^toJson}}
+        return value.toString()
+        {{/toJson}}
+    }
+
+}
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiResponse.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiResponse.kt.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..d529ad5599f19919bf4c6a566ffdb834dd4d8b83
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/ApiResponse.kt.mustache
@@ -0,0 +1,43 @@
+package {{packageName}}.infrastructure
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}enum class ResponseType {
+    Success, Informational, Redirection, ClientError, ServerError
+}
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}interface Response
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}abstract class ApiResponse<T>(val responseType: ResponseType): Response {
+    abstract val statusCode: Int
+    abstract val headers: Map<String,List<String>>
+}
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}class Success<T>(
+    val data: T{{#nullableReturnType}}?{{/nullableReturnType}},
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+): ApiResponse<T>(ResponseType.Success)
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}class Informational<T>(
+    val statusText: String,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Informational)
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}class Redirection<T>(
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Redirection)
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}class ClientError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.ClientError)
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}class ServerError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>>
+): ApiResponse<T>(ResponseType.ServerError)
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/Errors.kt.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/Errors.kt.mustache
new file mode 100644
index 0000000000000000000000000000000000000000..7c428ad655f38882ad248bcb2532a41a0671cb73
--- /dev/null
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/libraries/jvm-vertx/infrastructure/Errors.kt.mustache
@@ -0,0 +1,18 @@
+@file:Suppress("unused")
+package {{packageName}}.infrastructure
+
+import java.lang.RuntimeException
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    {{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
+        private const val serialVersionUID: Long = 123L
+    }
+}
+
+{{#nonPublicApi}}internal {{/nonPublicApi}}open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    {{#nonPublicApi}}internal {{/nonPublicApi}}companion object {
+        private const val serialVersionUID: Long = 456L
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Animal.kt b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Animal.kt
index df2cbb2bfa719dc83e8fc94d737e8ffb29ae6b3a..f3a877f5a8eaa95e755a7388be473fcdf28adc63 100644
--- a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Animal.kt
+++ b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Animal.kt
@@ -24,6 +24,7 @@ import com.squareup.moshi.Json
  * @param id 
  */
 
+
 interface Animal {
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Bird.kt b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Bird.kt
index 9cf419d67c4a3b22b7834a63d0438c2273b5bfc7..64a248fcc3bdea4a5194f19bddb7a7317a92a989 100644
--- a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Bird.kt
+++ b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/Bird.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param featherType 
  */
 
+
 data class Bird (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/BirdAllOf.kt b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/BirdAllOf.kt
index dd4054e9038c24b509889d125b39d20228afd15f..8399afe304a4e7d824785bdfa235d4add78e79ed 100644
--- a/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/BirdAllOf.kt
+++ b/samples/client/petstore/kotlin-allOff-discriminator/src/main/kotlin/org/openapitools/client/models/BirdAllOf.kt
@@ -24,6 +24,7 @@ import com.squareup.moshi.Json
  * @param featherType 
  */
 
+
 data class BirdAllOf (
 
     @Json(name = "featherType")
diff --git a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
index d2a5502173d3a4d9a32a27f5dbfcd3a21475732b..08e06c597b42f10a1a8f1107a6b1c22ccf8807be 100644
--- a/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-bigdecimal-default-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -31,6 +31,7 @@ import kotlinx.serialization.encoding.*
  * @param gepa 
  */
 @Serializable
+
 data class Apa (
 
     @SerialName(value = "bepa") @Required val bepa: kotlin.Double = (0).toDouble(),
diff --git a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
index ca2a4a45dfaae47ecb5f0be8504afbd40d47fd99..d9c29f04f16945e3b8d8871f13de5dc04d7af5fb 100644
--- a/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-bigdecimal-default-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param gepa 
  */
 
+
 data class Apa (
 
     @Json(name = "bepa")
diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/src/main/kotlin/org/openapitools/client/models/Apa.kt
index 4455c9a2ae64ae59032eba6576598715fdf5b153..4f411ca589d2e2741cc3dcd13fa7cc3ba2c45882 100644
--- a/samples/client/petstore/kotlin-default-values-jvm-okhttp3/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp3/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -27,6 +27,7 @@ import com.squareup.moshi.Json
  * @param n1 
  */
 
+
 data class Apa (
 
     @Json(name = "i0")
diff --git a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
index 4455c9a2ae64ae59032eba6576598715fdf5b153..4f411ca589d2e2741cc3dcd13fa7cc3ba2c45882 100644
--- a/samples/client/petstore/kotlin-default-values-jvm-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-default-values-jvm-okhttp4/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -27,6 +27,7 @@ import com.squareup.moshi.Json
  * @param n1 
  */
 
+
 data class Apa (
 
     @Json(name = "i0")
diff --git a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/src/main/kotlin/org/openapitools/client/models/Apa.kt
index 4455c9a2ae64ae59032eba6576598715fdf5b153..4f411ca589d2e2741cc3dcd13fa7cc3ba2c45882 100644
--- a/samples/client/petstore/kotlin-default-values-jvm-retrofit2/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-default-values-jvm-retrofit2/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -27,6 +27,7 @@ import com.squareup.moshi.Json
  * @param n1 
  */
 
+
 data class Apa (
 
     @Json(name = "i0")
diff --git a/samples/client/petstore/kotlin-default-values-jvm-volley/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-default-values-jvm-volley/src/main/kotlin/org/openapitools/client/models/Apa.kt
index 2e89541e501f1a059724c8e60e5ab79921dbf9b1..aca90dd3533c6fa68b2248fc9458e1b9f7ca47dd 100644
--- a/samples/client/petstore/kotlin-default-values-jvm-volley/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-default-values-jvm-volley/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -29,6 +29,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param n1 
  */
 
+
 data class Apa (
 
     @SerializedName("i0")
diff --git a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
index d09beda60f69fc18bfc5f9bdb4e734a164ee4bf9..339fa40ec1b1df5f25880a20826aa275c77951d1 100644
--- a/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
+++ b/samples/client/petstore/kotlin-default-values-multiplatform/src/main/kotlin/org/openapitools/client/models/Apa.kt
@@ -29,6 +29,7 @@ import kotlinx.serialization.encoding.*
  * @param n1 
  */
 @Serializable
+
 data class Apa (
 
     @SerialName(value = "i0") @Required val i0: kotlin.Int,
diff --git a/samples/client/petstore/kotlin-default-values-numbers/src/main/kotlin/org/openapitools/client/models/ModelWithPropertyHavingDefault.kt b/samples/client/petstore/kotlin-default-values-numbers/src/main/kotlin/org/openapitools/client/models/ModelWithPropertyHavingDefault.kt
index 5bba4b2acd54e07b5b8238de3247aa3a51c7ae87..97e1f304f1b8814176d688e5e5249311e2a5cdf0 100644
--- a/samples/client/petstore/kotlin-default-values-numbers/src/main/kotlin/org/openapitools/client/models/ModelWithPropertyHavingDefault.kt
+++ b/samples/client/petstore/kotlin-default-values-numbers/src/main/kotlin/org/openapitools/client/models/ModelWithPropertyHavingDefault.kt
@@ -31,6 +31,7 @@ import com.google.gson.annotations.SerializedName
  * @param propertyDouble3 
  */
 
+
 data class ModelWithPropertyHavingDefault (
 
     @SerializedName("propertyInt")
diff --git a/samples/client/petstore/kotlin-enum-default-value/src/main/kotlin/org/openapitools/client/models/ModelWithEnumPropertyHavingDefault.kt b/samples/client/petstore/kotlin-enum-default-value/src/main/kotlin/org/openapitools/client/models/ModelWithEnumPropertyHavingDefault.kt
index 6dc3db67b03eae2348d179e1359fd56983133be1..7e59221aca3861135f8f972c1a61e62843d64a84 100644
--- a/samples/client/petstore/kotlin-enum-default-value/src/main/kotlin/org/openapitools/client/models/ModelWithEnumPropertyHavingDefault.kt
+++ b/samples/client/petstore/kotlin-enum-default-value/src/main/kotlin/org/openapitools/client/models/ModelWithEnumPropertyHavingDefault.kt
@@ -25,6 +25,7 @@ import java.io.Serializable
  * @param propertyName 
  */
 
+
 data class ModelWithEnumPropertyHavingDefault (
 
     @Json(name = "propertyName")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
index 50fff2dafc63eb9cb1309a0c50991d18d1614f5e..2601d6552e7054a8a9be43dac6cbf64f2479f22e 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.google.gson.annotations.SerializedName
  * @param name 
  */
 
+
 data class Category (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index f52e01cb0dc8bd9754eef7dd7a66e4315cab43b3..683e7501919d0adf9b934b8708d208979775ef9a 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.google.gson.annotations.SerializedName
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @SerializedName("code")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
index 8774e79d5c7c532fe7eaa36b55b31d06de7c553c..81eb2947f315a65bc6749ea04bbf1759c749014c 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.google.gson.annotations.SerializedName
  * @param complete 
  */
 
+
 data class Order (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 1e11a67331d99fb5a2574f7919540be1639c81fa..8cbd43cc64ffa6a343266771972664eb5348e216 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.google.gson.annotations.SerializedName
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @SerializedName("name")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
index e9443d15a46088f3d88070a71cfcf9101113d830..c2962c214a1a2cfb23b69dcb69dc6d78f8fe1d3f 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.google.gson.annotations.SerializedName
  * @param name 
  */
 
+
 data class Tag (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt
index 6ee2fca147d27d963d2d9df87d94670203cd459e..8c93d094308e7752e3cc07f62b5c9dd766126075 100644
--- a/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-gson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.google.gson.annotations.SerializedName
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
index 5f02a113b828edba1b7d0985865e5cf4638c1a30..71a7d74b06f132c0578121a6a3e09e0c2704c05c 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param name 
  */
 
+
 data class Category (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 3ef775bc663b56debbf25faab88c189fdfa42d8e..5590e88cd83e9edd31b4fbd5e0fb3e930e3138cf 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @field:JsonProperty("code")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
index 75055dc657423a56c37e9977db22b1c3612007dd..ae6f6bc3b9f90209c0812466595e7e5b01f95a1a 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param complete 
  */
 
+
 data class Order (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
index c7f0d70984bf0a7b2fed778b45b46d699b584517..ea5a3dce8c40970c1dce8034e589ed68d75303a0 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @field:JsonProperty("name")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 591bb4230b904a5ac132b3992929ae6ae02b10fc..f5f600cc374563733637a889cd355a7f984713e3 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param name 
  */
 
+
 data class Tag (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
index c079f8f167195d4986f691dceac15229610f33cc..7872ed7da4dffe2db48783d81c8b6ba7c4de2f97 100644
--- a/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt
index 6a0d0a49a7cfb21c0f6ae4e5ee5ba8a3562a9b9d..1119768314534283786f83aaebc3fb82bfa8cdbf 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -35,6 +35,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class Category (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 196cda362e7795eff4b2d407ed921fdedffd3105..9eced3daa3836198206c2c7ac161a4cd80eaca17 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -36,6 +36,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class ModelApiResponse (
 
     @SerialName(value = "code")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt
index 6910263b8cfc75ae033861de51adb00050d0b4db..10faddb662d361c4c5babf3ba3f1bc165bffc1e3 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -39,6 +39,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class Order (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 8922075ac94e8c94802e6eb15cc9dceaa014a070..319d5b237c38134b9ea56e5bbe4d64a5e81adec9 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -41,6 +41,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class Pet (
 
     @SerialName(value = "name")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 34beab98314a03d5eb6914a928a54b5840996d4e..dfbf3a6be9b701d2f9ac68f721091fc9b221b188 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -35,6 +35,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class Tag (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt
index 3b2b0605024b47ec7570f69ae836dd329e04a69e..e210333348523605224d4c64177aed880a981ccb 100644
--- a/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-json-request-string/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -41,6 +41,7 @@ import kotlinx.parcelize.Parcelize
  */
 @Parcelize
 @Serializable
+
 data class User (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
index 50fff2dafc63eb9cb1309a0c50991d18d1614f5e..2601d6552e7054a8a9be43dac6cbf64f2479f22e 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.google.gson.annotations.SerializedName
  * @param name 
  */
 
+
 data class Category (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index f52e01cb0dc8bd9754eef7dd7a66e4315cab43b3..683e7501919d0adf9b934b8708d208979775ef9a 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.google.gson.annotations.SerializedName
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @SerializedName("code")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
index 5d9240bc46a259875d9a425bc4d0841702022777..13d33912dc021fce4146c674ae57ee3f036c1a1a 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.google.gson.annotations.SerializedName
  * @param complete 
  */
 
+
 data class Order (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 2a7be8be765a3f9c10099e672fab57b2759a5515..3d52e65fa75098ac3fca0f177454bf6e4c8616b6 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.google.gson.annotations.SerializedName
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @SerializedName("name")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
index e9443d15a46088f3d88070a71cfcf9101113d830..c2962c214a1a2cfb23b69dcb69dc6d78f8fe1d3f 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.google.gson.annotations.SerializedName
  * @param name 
  */
 
+
 data class Tag (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/User.kt
index 6ee2fca147d27d963d2d9df87d94670203cd459e..8c93d094308e7752e3cc07f62b5c9dd766126075 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-gson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.google.gson.annotations.SerializedName
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
index 5f02a113b828edba1b7d0985865e5cf4638c1a30..71a7d74b06f132c0578121a6a3e09e0c2704c05c 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param name 
  */
 
+
 data class Category (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 3ef775bc663b56debbf25faab88c189fdfa42d8e..5590e88cd83e9edd31b4fbd5e0fb3e930e3138cf 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @field:JsonProperty("code")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
index fbb813a47e2a07a0953502f6d871e55c5b99b31d..bfedd1b52845700893df7c0481928e6a155ebe29 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param complete 
  */
 
+
 data class Order (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
index e1e53044dde924fcca912428155fe9d2138c3d59..ba5fd69df76e0006fa6f6391b87bf6a72881e285 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @field:JsonProperty("name")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 591bb4230b904a5ac132b3992929ae6ae02b10fc..f5f600cc374563733637a889cd355a7f984713e3 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param name 
  */
 
+
 data class Tag (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
index c079f8f167195d4986f691dceac15229610f33cc..7872ed7da4dffe2db48783d81c8b6ba7c4de2f97 100644
--- a/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-jvm-ktor-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.annotation.JsonProperty
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @field:JsonProperty("id")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt
index efdde72015f4667576dc0ac54219100fb815b97d..e52d3776b4ae1497010e3c0bd58b120443604f66 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Category (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 70862a29ee2eb6939c55494b1bd19912c460da3c..544e4cb37f34b31208b7acc203ef23f347301dd4 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -27,6 +27,7 @@ import java.io.Serializable
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @SerializedName("code")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt
index 49274482e4f956e28ea2c76e1d1c2072bd5aa214..a3700c21275f56f2f059ccd4ad9d6c4d9dce9206 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -30,6 +30,7 @@ import java.io.Serializable
  * @param complete 
  */
 
+
 data class Order (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 2abf3d44e9fdf11b251e5a98b3acab2d828aa35d..3888433f78a60b834dc7569eb705215eecb28874 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @SerializedName("name")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 30a782898df311aebd39a868a37259ec7a7f34fc..6594820a4b1d3019ebea686bb3bd4e464cfd31b4 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Tag (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt
index 336d9f4f985c82b7bde8252b2a320ef6ab351f29..c20fc41911f0f5455805bd0a2edcb28060ae4cdc 100644
--- a/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-jvm-okhttp4-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator-ignore b/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator-ignore
new file mode 100644
index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/.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/kotlin-jvm-vertx-gson/.openapi-generator/FILES b/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator/FILES
new file mode 100644
index 0000000000000000000000000000000000000000..026c801de8e6840fb4d14f145c97e1de082491af
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator/FILES
@@ -0,0 +1,34 @@
+README.md
+build.gradle
+docs/ApiResponse.md
+docs/Category.md
+docs/Order.md
+docs/Pet.md
+docs/PetApi.md
+docs/StoreApi.md
+docs/Tag.md
+docs/User.md
+docs/UserApi.md
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+settings.gradle
+src/main/kotlin/org/openapitools/client/apis/PetApi.kt
+src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
+src/main/kotlin/org/openapitools/client/apis/UserApi.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+src/main/kotlin/org/openapitools/client/models/Category.kt
+src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+src/main/kotlin/org/openapitools/client/models/Order.kt
+src/main/kotlin/org/openapitools/client/models/Pet.kt
+src/main/kotlin/org/openapitools/client/models/Tag.kt
+src/main/kotlin/org/openapitools/client/models/User.kt
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..ed829dbcddec26785bab1af9a53a84d8ef6f08eb
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.2.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/README.md b/samples/client/petstore/kotlin-jvm-vertx-gson/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e3f2108bfcdc6405baa8fef22fd5a958e35955bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/README.md
@@ -0,0 +1,99 @@
+# org.openapitools.client - Kotlin client library for OpenAPI Petstore
+
+This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+
+## Overview
+This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client.
+
+- API version: 1.0.0
+- Package version: 
+- Build package: org.openapitools.codegen.languages.KotlinClientCodegen
+
+## Requires
+
+* Kotlin 1.6.10
+* Gradle 7.5
+
+## Build
+
+First, create the gradle wrapper script:
+
+```
+gradle wrapper
+```
+
+Then, run:
+
+```
+./gradlew check assemble
+```
+
+This runs all tests and packages the library.
+
+## Features/Implementation Notes
+
+* Supports JSON inputs/outputs, File inputs, and Form inputs.
+* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
+* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
+* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
+
+<a name="documentation-for-api-endpoints"></a>
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*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
+*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | 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/{orderId} | 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
+
+
+<a name="documentation-for-models"></a>
+## Documentation for Models
+
+ - [org.openapitools.client.models.Category](docs/Category.md)
+ - [org.openapitools.client.models.ModelApiResponse](docs/ModelApiResponse.md)
+ - [org.openapitools.client.models.Order](docs/Order.md)
+ - [org.openapitools.client.models.Pet](docs/Pet.md)
+ - [org.openapitools.client.models.Tag](docs/Tag.md)
+ - [org.openapitools.client.models.User](docs/User.md)
+
+
+<a name="documentation-for-authorization"></a>
+## Documentation for Authorization
+
+<a name="api_key"></a>
+### api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+<a name="petstore_auth"></a>
+### 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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/build.gradle b/samples/client/petstore/kotlin-jvm-vertx-gson/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..5dbc1fb23d5956a323ed0c835982f1d7001ff10c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/build.gradle
@@ -0,0 +1,39 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+    gradleVersion = '7.5'
+    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+    ext.kotlin_version = '1.6.10'
+    ext.vertx_version = "4.3.3"
+
+    repositories {
+        maven { url "https://repo1.maven.org/maven2" }
+    }
+    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+    }
+}
+
+apply plugin: 'kotlin'
+
+repositories {
+    maven { url "https://repo1.maven.org/maven2" }
+}
+
+test {
+    useJUnitPlatform()
+}
+
+dependencies {
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+    implementation "com.google.code.gson:gson:2.9.0"
+    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+    implementation "io.vertx:vertx-web-client:$vertx_version"
+    implementation "io.vertx:vertx-core:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin:$vertx_version"
+    implementation "io.vertx:vertx-uri-template:$vertx_version"
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/ApiResponse.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/ApiResponse.md
new file mode 100644
index 0000000000000000000000000000000000000000..12f08d5cdef0f54957138c36e067bd0dfa5d05ed
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+
+# ModelApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **kotlin.Int** |  |  [optional]
+**type** | **kotlin.String** |  |  [optional]
+**message** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Category.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Category.md
new file mode 100644
index 0000000000000000000000000000000000000000..2c28a670fc79d57aeea821eb2431722d8afe6c7b
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Category.md
@@ -0,0 +1,11 @@
+
+# Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Order.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Order.md
new file mode 100644
index 0000000000000000000000000000000000000000..94ab0d537e54b3c0097a8e498be0b0ee9785f241
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Order.md
@@ -0,0 +1,22 @@
+
+# Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**petId** | **kotlin.Long** |  |  [optional]
+**quantity** | **kotlin.Int** |  |  [optional]
+**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) |  |  [optional]
+**status** | [**inline**](#Status) | Order Status |  [optional]
+**complete** | **kotlin.Boolean** |  |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | placed, approved, delivered
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Pet.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Pet.md
new file mode 100644
index 0000000000000000000000000000000000000000..bc3dd89718f097ab02440cb721ea2ffeeb875910
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Pet.md
@@ -0,0 +1,22 @@
+
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** |  | 
+**photoUrls** | **kotlin.collections.List&lt;kotlin.String&gt;** |  | 
+**id** | **kotlin.Long** |  |  [optional]
+**category** | [**Category**](Category.md) |  |  [optional]
+**tags** | [**kotlin.collections.List&lt;Tag&gt;**](Tag.md) |  |  [optional]
+**status** | [**inline**](#Status) | pet status in the store |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | available, pending, sold
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/PetApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..6962f148b5964309825f62a01b3b660b5f1d8427
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/PetApi.md
@@ -0,0 +1,417 @@
+# PetApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="addPet"></a>
+# **addPet**
+> Pet addPet(pet)
+
+Add a new pet to the store
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.addPet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#addPet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#addPet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="deletePet"></a>
+# **deletePet**
+> deletePet(petId, apiKey)
+
+Deletes a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete
+val apiKey : kotlin.String = apiKey_example // kotlin.String | 
+try {
+    apiInstance.deletePet(petId, apiKey)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#deletePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#deletePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| Pet id to delete |
+ **apiKey** | **kotlin.String**|  | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="findPetsByStatus"></a>
+# **findPetsByStatus**
+> kotlin.collections.List&lt;Pet&gt; findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val status : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Status values that need to be considered for filter
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByStatus(status)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="findPetsByTags"></a>
+# **findPetsByTags**
+> kotlin.collections.List&lt;Pet&gt; findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val tags : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Tags to filter by
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByTags(tags)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Tags to filter by |
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="getPetById"></a>
+# **getPetById**
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return
+try {
+    val result : Pet = apiInstance.getPetById(petId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#getPetById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#getPetById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to return |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="updatePet"></a>
+# **updatePet**
+> Pet updatePet(pet)
+
+Update an existing pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.updatePet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="updatePetWithForm"></a>
+# **updatePetWithForm**
+> updatePetWithForm(petId, name, status)
+
+Updates a pet in the store with form data
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated
+val name : kotlin.String = name_example // kotlin.String | Updated name of the pet
+val status : kotlin.String = status_example // kotlin.String | Updated status of the pet
+try {
+    apiInstance.updatePetWithForm(petId, name, status)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet that needs to be updated |
+ **name** | **kotlin.String**| Updated name of the pet | [optional]
+ **status** | **kotlin.String**| Updated status of the pet | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+<a name="uploadFile"></a>
+# **uploadFile**
+> ModelApiResponse uploadFile(petId, additionalMetadata, file)
+
+uploads an image
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update
+val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload
+try {
+    val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to update |
+ **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional]
+ **file** | **java.io.File**| file to upload | [optional]
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/StoreApi.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/StoreApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..68fbd1fecf9c4068cb10c80fed80c14a8b05492c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/StoreApi.md
@@ -0,0 +1,198 @@
+# StoreApi
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
+[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID
+[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+
+
+<a name="deleteOrder"></a>
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted
+try {
+    apiInstance.deleteOrder(orderId)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="getInventory"></a>
+# **getInventory**
+> kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt; getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+try {
+    val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = apiInstance.getInventory()
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt;**
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+<a name="getOrderById"></a>
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched
+try {
+    val result : Order = apiInstance.getOrderById(orderId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="placeOrder"></a>
+# **placeOrder**
+> Order placeOrder(order)
+
+Place an order for a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val order : Order =  // Order | order placed for purchasing the pet
+try {
+    val result : Order = apiInstance.placeOrder(order)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#placeOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#placeOrder")
+    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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Tag.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Tag.md
new file mode 100644
index 0000000000000000000000000000000000000000..60ce1bcdbad3bc5b5e7512805f0ae2ec80e07923
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/Tag.md
@@ -0,0 +1,11 @@
+
+# Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/User.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/User.md
new file mode 100644
index 0000000000000000000000000000000000000000..e801729b5ed16ea867cb66ea851b3fef36d9599c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/User.md
@@ -0,0 +1,17 @@
+
+# User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**username** | **kotlin.String** |  |  [optional]
+**firstName** | **kotlin.String** |  |  [optional]
+**lastName** | **kotlin.String** |  |  [optional]
+**email** | **kotlin.String** |  |  [optional]
+**password** | **kotlin.String** |  |  [optional]
+**phone** | **kotlin.String** |  |  [optional]
+**userStatus** | **kotlin.Int** | User Status |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/docs/UserApi.md b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/UserApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..e674269be5eeefb4da7603c8a7ddce2d3e24703a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/docs/UserApi.md
@@ -0,0 +1,404 @@
+# UserApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="createUser"></a>
+# **createUser**
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : User =  // User | Created user object
+try {
+    apiInstance.createUser(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**User**](User.md)| Created user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithArrayInput"></a>
+# **createUsersWithArrayInput**
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithArrayInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithListInput"></a>
+# **createUsersWithListInput**
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithListInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="deleteUser"></a>
+# **deleteUser**
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted
+try {
+    apiInstance.deleteUser(username)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The name that needs to be deleted |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="getUserByName"></a>
+# **getUserByName**
+> User getUserByName(username)
+
+Get user by user name
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing.
+try {
+    val result : User = apiInstance.getUserByName(username)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.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
+
+<a name="loginUser"></a>
+# **loginUser**
+> kotlin.String loginUser(username, password)
+
+Logs user into the system
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The user name for login
+val password : kotlin.String = password_example // kotlin.String | The password for login in clear text
+try {
+    val result : kotlin.String = apiInstance.loginUser(username, password)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#loginUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#loginUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The user name for login |
+ **password** | **kotlin.String**| The password for login in clear text |
+
+### Return type
+
+**kotlin.String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="logoutUser"></a>
+# **logoutUser**
+> logoutUser()
+
+Logs out current logged in user session
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+try {
+    apiInstance.logoutUser()
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="updateUser"></a>
+# **updateUser**
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | name that need to be deleted
+val user : User =  // User | Updated user object
+try {
+    apiInstance.updateUser(username, user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#updateUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#updateUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| name that need to be deleted |
+ **user** | [**User**](User.md)| Updated user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f
Binary files /dev/null and b/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8cf6eb5ad222e3e69fa9b1a30a7bd86f4498c8da
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew b/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew
new file mode 100644
index 0000000000000000000000000000000000000000..4f906e0c811fc9e230eb44819f509cd0627f2600
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or 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 UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# 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
+    ;;
+  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"
+    which java >/dev/null 2>&1 || 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
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew.bat b/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew.bat
new file mode 100644
index 0000000000000000000000000000000000000000..107acd32c4e687021ef32db511e8a206129b88ec
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/gradlew.bat
@@ -0,0 +1,89 @@
+@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=.
+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%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+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%"=="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!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/settings.gradle b/samples/client/petstore/kotlin-jvm-vertx-gson/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..555e588800df6572431376691a14382c734a8023
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-petstore-jvm-vertx'
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..1acf5003212d79e2fdcc66c2e7241077fdf882fb
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
@@ -0,0 +1,591 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.ModelApiResponse
+import org.openapitools.client.models.Pet
+
+import com.google.gson.reflect.TypeToken
+import com.google.gson.annotations.SerializedName
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class PetApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun addPet(pet: Pet) : Future<Pet> {
+        return addPetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun addPetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deletePet(petId: kotlin.Long, apiKey: kotlin.String? = null) : Future<Unit> {
+        return deletePetWithHttpInfo(petId = petId, apiKey = apiKey).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deletePetWithHttpInfo(petId: kotlin.Long, apiKey: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        apiKey?.apply { request.putHeader("api_key", this.toString())}
+        
+        
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * enum for parameter status
+     */
+     enum class Status_findPetsByStatus(val value: kotlin.String) {
+     @SerializedName(value = "available") available("available"),
+     @SerializedName(value = "pending") pending("pending"),
+     @SerializedName(value = "sold") sold("sold")
+     }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun findPetsByStatus(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByStatusWithHttpInfo(status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun findPetsByStatusWithHttpInfo(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByStatus"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        status.let { request.queryParams().add("status", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTags(tags: kotlin.collections.List<kotlin.String>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByTagsWithHttpInfo(tags = tags).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTagsWithHttpInfo(tags: kotlin.collections.List<kotlin.String>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByTags"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        tags.let { request.queryParams().add("tags", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getPetById(petId: kotlin.Long) : Future<Pet> {
+        return getPetByIdWithHttpInfo(petId = petId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getPetByIdWithHttpInfo(petId: kotlin.Long) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePet(pet: Pet) : Future<Pet> {
+        return updatePetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String? = null, status: kotlin.String? = null) : Future<Unit> {
+        return updatePetWithFormWithHttpInfo(petId = petId, name = name, status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithFormWithHttpInfo(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "application/x-www-form-urlencoded")
+        
+        
+        
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        name?.let { form.add("name", name) }
+        status?.let { form.add("status", status) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ModelApiResponse
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: java.io.File? = null) : Future<ModelApiResponse> {
+        return uploadFileWithHttpInfo(petId = petId, additionalMetadata = additionalMetadata, file = file).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as ModelApiResponse
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ApiResponse<ModelApiResponse?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun uploadFileWithHttpInfo(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : Future<ApiResponse<ModelApiResponse?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}/uploadImage".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "multipart/form-data")
+        
+        
+        request.putHeader("Accept", "application/json")
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        additionalMetadata?.let { form.add("additionalMetadata", additionalMetadata) }
+        file?.let { form.add("file", file.toString()) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<ModelApiResponse?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.gson.toJson(body, T::class.java))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..95c239149052831d11f434f60872c710e8be607f
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
@@ -0,0 +1,292 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.Order
+
+import com.google.gson.reflect.TypeToken
+import com.google.gson.annotations.SerializedName
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class StoreApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteOrder(orderId: kotlin.String) : Future<Unit> {
+        return deleteOrderWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteOrderWithHttpInfo(orderId: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return kotlin.collections.Map<kotlin.String, kotlin.Int>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getInventory() : Future<kotlin.collections.Map<kotlin.String, kotlin.Int>> {
+        return getInventoryWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.Map<kotlin.String, kotlin.Int>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getInventoryWithHttpInfo() : Future<ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/inventory"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getOrderById(orderId: kotlin.Long) : Future<Order> {
+        return getOrderByIdWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getOrderByIdWithHttpInfo(orderId: kotlin.Long) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun placeOrder(order: Order) : Future<Order> {
+        return placeOrderWithHttpInfo(order = order).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun placeOrderWithHttpInfo(order: Order) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/store/order"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .sendBuffer(responseBody(order))
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.gson.toJson(body, T::class.java))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..df8f8ef39ef9eb7d6d2d8247d4e48010c62ace1a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
@@ -0,0 +1,573 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.User
+
+import com.google.gson.reflect.TypeToken
+import com.google.gson.annotations.SerializedName
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class UserApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUser(user: User) : Future<Unit> {
+        return createUserWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUserWithHttpInfo(user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithArrayInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithArrayInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithArrayInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithArray"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithListInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithListInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithListInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithList"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteUser(username: kotlin.String) : Future<Unit> {
+        return deleteUserWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteUserWithHttpInfo(username: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return User
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getUserByName(username: kotlin.String) : Future<User> {
+        return getUserByNameWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as User
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return ApiResponse<User?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getUserByNameWithHttpInfo(username: kotlin.String) : Future<ApiResponse<User?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<User?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return kotlin.String
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun loginUser(username: kotlin.String, password: kotlin.String) : Future<kotlin.String> {
+        return loginUserWithHttpInfo(username = username, password = password).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.String
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return ApiResponse<kotlin.String?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun loginUserWithHttpInfo(username: kotlin.String, password: kotlin.String) : Future<ApiResponse<kotlin.String?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/login"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        username.let { request.queryParams().add("username", listOf(it.toString())) }
+        password.let { request.queryParams().add("password", listOf(it.toString())) }
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.String?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun logoutUser() : Future<Unit> {
+        return logoutUserWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun logoutUserWithHttpInfo() : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/logout"))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updateUser(username: kotlin.String, user: User) : Future<Unit> {
+        return updateUserWithHttpInfo(username = username, user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updateUserWithHttpInfo(username: kotlin.String, user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.gson.toJson(body, T::class.java))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ef7a8f1e1a625f7efdbea17077de86da8e09f805
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+typealias MultiValueMap = MutableMap<String,List<String>>
+
+fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
+    "csv" -> ","
+    "tsv" -> "\t"
+    "pipe" -> "|"
+    "space" -> " "
+    else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+        = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
+    return when(collectionFormat) {
+        "multi" -> items.map(map)
+        else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d72cc482b8c04b93e2a69dda5b6b5069651150a8
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -0,0 +1,86 @@
+package org.openapitools.client.infrastructure
+
+import io.vertx.core.Vertx
+import io.vertx.core.buffer.Buffer
+import java.nio.charset.StandardCharsets
+import com.google.gson.reflect.TypeToken
+
+open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
+    companion object {
+        const val baseUrlKey = "org.openapitools.client.baseUrl"
+
+        @JvmStatic
+        val defaultBasePath: String by lazy {
+            System.getProperties().getProperty(baseUrlKey, "http://petstore.swagger.io/v2")
+        }
+    }
+
+    protected inline fun <reified T: Any?> handleResponse(response: io.vertx.ext.web.client.HttpResponse<Buffer>): ApiResponse<T?> {
+        val code = response.statusCode()
+        val headers = response.headers().associate { it.key to listOf(it.value) }
+        val contentType = headers["Content-Type"]?.firstOrNull()?.substringBefore(";")?.lowercase(java.util.Locale.getDefault())
+
+        return when (code) {
+            in 100..199 -> Informational(
+                response.statusMessage(),
+                code,
+                headers
+            )
+            in 200 .. 299 -> Success(
+                responseBody<T>(response.body(), contentType),
+                code,
+                headers
+            )
+            in 300..399 -> Redirection(
+                code,
+                headers
+            )
+            in 400..499 -> ClientError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+            else -> ServerError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+        }
+    }
+
+    protected inline fun <reified T: Any?> responseBody(body: Buffer?, mediaType: String? = "application/json"): T? {
+        body ?: return null
+
+        val bodyContent = String(body.bytes, StandardCharsets.UTF_8)
+        if (bodyContent.isEmpty()) {
+            return null
+        }
+
+        return when {
+            mediaType==null || (mediaType.startsWith("application/") && mediaType.endsWith("json")) ->
+                Serializer.gson.fromJson(bodyContent, (object: TypeToken<T>(){}).getType())
+            else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+        }
+    }
+
+    protected fun encodeURIComponent(parameter: String): String {
+        return try {
+            java.net.URLEncoder.encode(parameter, java.nio.charset.StandardCharsets.UTF_8.name())
+        } catch (e: java.io.UnsupportedEncodingException) {
+            parameter
+        }
+    }
+
+    protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
+        /*
+        .replace("\"", "") converts the json object string to an actual string for the query parameter.
+        The moshi or gson adapter allows a more generic solution instead of trying to use a native
+        formatter. It also easily allows to provide a simple way to define a custom date format pattern
+        inside a gson/moshi adapter.
+        */
+        return Serializer.gson.toJson(value, T::class.java).replace("\"", "")
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cf2cfaa95d916ed0c9087bd6a1e0eef970c7ac7d
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
@@ -0,0 +1,43 @@
+package org.openapitools.client.infrastructure
+
+enum class ResponseType {
+    Success, Informational, Redirection, ClientError, ServerError
+}
+
+interface Response
+
+abstract class ApiResponse<T>(val responseType: ResponseType): Response {
+    abstract val statusCode: Int
+    abstract val headers: Map<String,List<String>>
+}
+
+class Success<T>(
+    val data: T,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+): ApiResponse<T>(ResponseType.Success)
+
+class Informational<T>(
+    val statusText: String,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Informational)
+
+class Redirection<T>(
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Redirection)
+
+class ClientError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.ClientError)
+
+class ServerError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>>
+): ApiResponse<T>(ResponseType.ServerError)
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6120b081929dd7e189873ff58ac533b25cd02234
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
@@ -0,0 +1,33 @@
+package org.openapitools.client.infrastructure
+
+import com.google.gson.TypeAdapter
+import com.google.gson.stream.JsonReader
+import com.google.gson.stream.JsonWriter
+import com.google.gson.stream.JsonToken.NULL
+import java.io.IOException
+
+class ByteArrayAdapter : TypeAdapter<ByteArray>() {
+    @Throws(IOException::class)
+    override fun write(out: JsonWriter?, value: ByteArray?) {
+        if (value == null) {
+            out?.nullValue()
+        } else {
+            out?.value(String(value))
+        }
+    }
+
+    @Throws(IOException::class)
+    override fun read(out: JsonReader?): ByteArray? {
+        out ?: return null
+
+        when (out.peek()) {
+            NULL -> {
+                out.nextNull()
+                return null
+            }
+            else -> {
+                return out.nextString().toByteArray()
+            }
+        }
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b5310e71f13c7e7fb874be998af37dd424d9cd11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
@@ -0,0 +1,18 @@
+@file:Suppress("unused")
+package org.openapitools.client.infrastructure
+
+import java.lang.RuntimeException
+
+open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 123L
+    }
+}
+
+open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 456L
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..30ef6697183a98f06aad567edbb64979bbebb667
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
@@ -0,0 +1,35 @@
+package org.openapitools.client.infrastructure
+
+import com.google.gson.TypeAdapter
+import com.google.gson.stream.JsonReader
+import com.google.gson.stream.JsonWriter
+import com.google.gson.stream.JsonToken.NULL
+import java.io.IOException
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
+
+class LocalDateAdapter(private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE) : TypeAdapter<LocalDate>() {
+    @Throws(IOException::class)
+    override fun write(out: JsonWriter?, value: LocalDate?) {
+        if (value == null) {
+            out?.nullValue()
+        } else {
+            out?.value(formatter.format(value))
+        }
+    }
+
+    @Throws(IOException::class)
+    override fun read(out: JsonReader?): LocalDate? {
+        out ?: return null
+
+        when (out.peek()) {
+            NULL -> {
+                out.nextNull()
+                return null
+            }
+            else -> {
+                return LocalDate.parse(out.nextString(), formatter)
+            }
+        }
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3ad781c66ca18fad5fa00d51703447e75967da39
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
@@ -0,0 +1,35 @@
+package org.openapitools.client.infrastructure
+
+import com.google.gson.TypeAdapter
+import com.google.gson.stream.JsonReader
+import com.google.gson.stream.JsonWriter
+import com.google.gson.stream.JsonToken.NULL
+import java.io.IOException
+import java.time.LocalDateTime
+import java.time.format.DateTimeFormatter
+
+class LocalDateTimeAdapter(private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME) : TypeAdapter<LocalDateTime>() {
+    @Throws(IOException::class)
+    override fun write(out: JsonWriter?, value: LocalDateTime?) {
+        if (value == null) {
+            out?.nullValue()
+        } else {
+            out?.value(formatter.format(value))
+        }
+    }
+
+    @Throws(IOException::class)
+    override fun read(out: JsonReader?): LocalDateTime? {
+        out ?: return null
+
+        when (out.peek()) {
+            NULL -> {
+                out.nextNull()
+                return null
+            }
+            else -> {
+                return LocalDateTime.parse(out.nextString(), formatter)
+            }
+        }
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e615135c9cc0dc8234f99eed53575eed2497185a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
@@ -0,0 +1,35 @@
+package org.openapitools.client.infrastructure
+
+import com.google.gson.TypeAdapter
+import com.google.gson.stream.JsonReader
+import com.google.gson.stream.JsonWriter
+import com.google.gson.stream.JsonToken.NULL
+import java.io.IOException
+import java.time.OffsetDateTime
+import java.time.format.DateTimeFormatter
+
+class OffsetDateTimeAdapter(private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_OFFSET_DATE_TIME) : TypeAdapter<OffsetDateTime>() {
+    @Throws(IOException::class)
+    override fun write(out: JsonWriter?, value: OffsetDateTime?) {
+        if (value == null) {
+            out?.nullValue()
+        } else {
+            out?.value(formatter.format(value))
+        }
+    }
+
+    @Throws(IOException::class)
+    override fun read(out: JsonReader?): OffsetDateTime? {
+        out ?: return null
+
+        when (out.peek()) {
+            NULL -> {
+                out.nextNull()
+                return null
+            }
+            else -> {
+                return OffsetDateTime.parse(out.nextString(), formatter)
+            }
+        }
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6e16e4f6582b705fe504f3d5ab15082852433523
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
@@ -0,0 +1,22 @@
+package org.openapitools.client.infrastructure
+
+import com.google.gson.Gson
+import com.google.gson.GsonBuilder
+import java.time.LocalDate
+import java.time.LocalDateTime
+import java.time.OffsetDateTime
+import java.util.UUID
+
+object Serializer {
+    @JvmStatic
+    val gsonBuilder: GsonBuilder = GsonBuilder()
+        .registerTypeAdapter(OffsetDateTime::class.java, OffsetDateTimeAdapter())
+        .registerTypeAdapter(LocalDateTime::class.java, LocalDateTimeAdapter())
+        .registerTypeAdapter(LocalDate::class.java, LocalDateAdapter())
+        .registerTypeAdapter(ByteArray::class.java, ByteArrayAdapter())
+
+    @JvmStatic
+    val gson: Gson by lazy {
+        gsonBuilder.create()
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2601d6552e7054a8a9be43dac6cbf64f2479f22e
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * A category for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Category (
+
+    @SerializedName("id")
+    val id: kotlin.Long? = null,
+
+    @SerializedName("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..683e7501919d0adf9b934b8708d208979775ef9a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -0,0 +1,42 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * Describes the result of uploading an image resource
+ *
+ * @param code 
+ * @param type 
+ * @param message 
+ */
+
+
+data class ModelApiResponse (
+
+    @SerializedName("code")
+    val code: kotlin.Int? = null,
+
+    @SerializedName("type")
+    val type: kotlin.String? = null,
+
+    @SerializedName("message")
+    val message: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
new file mode 100644
index 0000000000000000000000000000000000000000..81eb2947f315a65bc6749ea04bbf1759c749014c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -0,0 +1,67 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * An order for a pets from the pet store
+ *
+ * @param id 
+ * @param petId 
+ * @param quantity 
+ * @param shipDate 
+ * @param status Order Status
+ * @param complete 
+ */
+
+
+data class Order (
+
+    @SerializedName("id")
+    val id: kotlin.Long? = null,
+
+    @SerializedName("petId")
+    val petId: kotlin.Long? = null,
+
+    @SerializedName("quantity")
+    val quantity: kotlin.Int? = null,
+
+    @SerializedName("shipDate")
+    val shipDate: java.time.OffsetDateTime? = null,
+
+    /* Order Status */
+    @SerializedName("status")
+    val status: Order.Status? = null,
+
+    @SerializedName("complete")
+    val complete: kotlin.Boolean? = false
+
+) {
+
+    /**
+     * Order Status
+     *
+     * Values: placed,approved,delivered
+     */
+    enum class Status(val value: kotlin.String) {
+        @SerializedName(value = "placed") placed("placed"),
+        @SerializedName(value = "approved") approved("approved"),
+        @SerializedName(value = "delivered") delivered("delivered");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
new file mode 100644
index 0000000000000000000000000000000000000000..724e4845b7c8814a699a3037c6395caf6761a1b1
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -0,0 +1,70 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+import org.openapitools.client.models.Category
+import org.openapitools.client.models.Tag
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * A pet for sale in the pet store
+ *
+ * @param name 
+ * @param photoUrls 
+ * @param id 
+ * @param category 
+ * @param tags 
+ * @param status pet status in the store
+ */
+
+
+data class Pet (
+
+    @SerializedName("name")
+    val name: kotlin.String,
+
+    @SerializedName("photoUrls")
+    val photoUrls: kotlin.collections.List<kotlin.String>,
+
+    @SerializedName("id")
+    val id: kotlin.Long? = null,
+
+    @SerializedName("category")
+    val category: Category? = null,
+
+    @SerializedName("tags")
+    val tags: kotlin.collections.List<Tag>? = null,
+
+    /* pet status in the store */
+    @SerializedName("status")
+    @Deprecated(message = "This property is deprecated.")
+    val status: Pet.Status? = null
+
+) {
+
+    /**
+     * pet status in the store
+     *
+     * Values: available,pending,sold
+     */
+    enum class Status(val value: kotlin.String) {
+        @SerializedName(value = "available") available("available"),
+        @SerializedName(value = "pending") pending("pending"),
+        @SerializedName(value = "sold") sold("sold");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c2962c214a1a2cfb23b69dcb69dc6d78f8fe1d3f
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * A tag for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Tag (
+
+    @SerializedName("id")
+    val id: kotlin.Long? = null,
+
+    @SerializedName("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/User.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8c93d094308e7752e3cc07f62b5c9dd766126075
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-gson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -0,0 +1,63 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.google.gson.annotations.SerializedName
+
+/**
+ * A User who is purchasing from the pet store
+ *
+ * @param id 
+ * @param username 
+ * @param firstName 
+ * @param lastName 
+ * @param email 
+ * @param password 
+ * @param phone 
+ * @param userStatus User Status
+ */
+
+
+data class User (
+
+    @SerializedName("id")
+    val id: kotlin.Long? = null,
+
+    @SerializedName("username")
+    val username: kotlin.String? = null,
+
+    @SerializedName("firstName")
+    val firstName: kotlin.String? = null,
+
+    @SerializedName("lastName")
+    val lastName: kotlin.String? = null,
+
+    @SerializedName("email")
+    val email: kotlin.String? = null,
+
+    @SerializedName("password")
+    val password: kotlin.String? = null,
+
+    @SerializedName("phone")
+    val phone: kotlin.String? = null,
+
+    /* User Status */
+    @SerializedName("userStatus")
+    val userStatus: kotlin.Int? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator-ignore b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator-ignore
new file mode 100644
index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.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/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/FILES b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/FILES
new file mode 100644
index 0000000000000000000000000000000000000000..b468a696e09a934a07f28ee6e65a58369f5a33e8
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/FILES
@@ -0,0 +1,30 @@
+README.md
+build.gradle
+docs/ApiResponse.md
+docs/Category.md
+docs/Order.md
+docs/Pet.md
+docs/PetApi.md
+docs/StoreApi.md
+docs/Tag.md
+docs/User.md
+docs/UserApi.md
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+settings.gradle
+src/main/kotlin/org/openapitools/client/apis/PetApi.kt
+src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
+src/main/kotlin/org/openapitools/client/apis/UserApi.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+src/main/kotlin/org/openapitools/client/models/Category.kt
+src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+src/main/kotlin/org/openapitools/client/models/Order.kt
+src/main/kotlin/org/openapitools/client/models/Pet.kt
+src/main/kotlin/org/openapitools/client/models/Tag.kt
+src/main/kotlin/org/openapitools/client/models/User.kt
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..ed829dbcddec26785bab1af9a53a84d8ef6f08eb
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.2.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/README.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e3f2108bfcdc6405baa8fef22fd5a958e35955bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/README.md
@@ -0,0 +1,99 @@
+# org.openapitools.client - Kotlin client library for OpenAPI Petstore
+
+This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+
+## Overview
+This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client.
+
+- API version: 1.0.0
+- Package version: 
+- Build package: org.openapitools.codegen.languages.KotlinClientCodegen
+
+## Requires
+
+* Kotlin 1.6.10
+* Gradle 7.5
+
+## Build
+
+First, create the gradle wrapper script:
+
+```
+gradle wrapper
+```
+
+Then, run:
+
+```
+./gradlew check assemble
+```
+
+This runs all tests and packages the library.
+
+## Features/Implementation Notes
+
+* Supports JSON inputs/outputs, File inputs, and Form inputs.
+* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
+* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
+* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
+
+<a name="documentation-for-api-endpoints"></a>
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*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
+*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | 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/{orderId} | 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
+
+
+<a name="documentation-for-models"></a>
+## Documentation for Models
+
+ - [org.openapitools.client.models.Category](docs/Category.md)
+ - [org.openapitools.client.models.ModelApiResponse](docs/ModelApiResponse.md)
+ - [org.openapitools.client.models.Order](docs/Order.md)
+ - [org.openapitools.client.models.Pet](docs/Pet.md)
+ - [org.openapitools.client.models.Tag](docs/Tag.md)
+ - [org.openapitools.client.models.User](docs/User.md)
+
+
+<a name="documentation-for-authorization"></a>
+## Documentation for Authorization
+
+<a name="api_key"></a>
+### api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+<a name="petstore_auth"></a>
+### 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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/build.gradle b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..563f957e3f629dc88d6822e77090fd300306f447
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/build.gradle
@@ -0,0 +1,43 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+    gradleVersion = '7.5'
+    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+    ext.kotlin_version = '1.6.10'
+    ext.vertx_version = "4.3.3"
+
+    repositories {
+        maven { url "https://repo1.maven.org/maven2" }
+    }
+    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+    }
+}
+
+apply plugin: 'kotlin'
+
+repositories {
+    maven { url "https://repo1.maven.org/maven2" }
+}
+
+test {
+    useJUnitPlatform()
+}
+
+dependencies {
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+    implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.3"
+    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3"
+    implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3"
+    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+    implementation "io.vertx:vertx-web-client:$vertx_version"
+    implementation "io.vertx:vertx-core:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin:$vertx_version"
+    implementation "io.vertx:vertx-uri-template:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin-coroutines:$vertx_version"
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/ApiResponse.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/ApiResponse.md
new file mode 100644
index 0000000000000000000000000000000000000000..12f08d5cdef0f54957138c36e067bd0dfa5d05ed
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+
+# ModelApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **kotlin.Int** |  |  [optional]
+**type** | **kotlin.String** |  |  [optional]
+**message** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Category.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Category.md
new file mode 100644
index 0000000000000000000000000000000000000000..2c28a670fc79d57aeea821eb2431722d8afe6c7b
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Category.md
@@ -0,0 +1,11 @@
+
+# Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Order.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Order.md
new file mode 100644
index 0000000000000000000000000000000000000000..94ab0d537e54b3c0097a8e498be0b0ee9785f241
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Order.md
@@ -0,0 +1,22 @@
+
+# Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**petId** | **kotlin.Long** |  |  [optional]
+**quantity** | **kotlin.Int** |  |  [optional]
+**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) |  |  [optional]
+**status** | [**inline**](#Status) | Order Status |  [optional]
+**complete** | **kotlin.Boolean** |  |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | placed, approved, delivered
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Pet.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Pet.md
new file mode 100644
index 0000000000000000000000000000000000000000..bc3dd89718f097ab02440cb721ea2ffeeb875910
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Pet.md
@@ -0,0 +1,22 @@
+
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** |  | 
+**photoUrls** | **kotlin.collections.List&lt;kotlin.String&gt;** |  | 
+**id** | **kotlin.Long** |  |  [optional]
+**category** | [**Category**](Category.md) |  |  [optional]
+**tags** | [**kotlin.collections.List&lt;Tag&gt;**](Tag.md) |  |  [optional]
+**status** | [**inline**](#Status) | pet status in the store |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | available, pending, sold
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/PetApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..6962f148b5964309825f62a01b3b660b5f1d8427
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/PetApi.md
@@ -0,0 +1,417 @@
+# PetApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="addPet"></a>
+# **addPet**
+> Pet addPet(pet)
+
+Add a new pet to the store
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.addPet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#addPet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#addPet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="deletePet"></a>
+# **deletePet**
+> deletePet(petId, apiKey)
+
+Deletes a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete
+val apiKey : kotlin.String = apiKey_example // kotlin.String | 
+try {
+    apiInstance.deletePet(petId, apiKey)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#deletePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#deletePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| Pet id to delete |
+ **apiKey** | **kotlin.String**|  | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="findPetsByStatus"></a>
+# **findPetsByStatus**
+> kotlin.collections.List&lt;Pet&gt; findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val status : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Status values that need to be considered for filter
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByStatus(status)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="findPetsByTags"></a>
+# **findPetsByTags**
+> kotlin.collections.List&lt;Pet&gt; findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val tags : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Tags to filter by
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByTags(tags)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Tags to filter by |
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="getPetById"></a>
+# **getPetById**
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return
+try {
+    val result : Pet = apiInstance.getPetById(petId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#getPetById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#getPetById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to return |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="updatePet"></a>
+# **updatePet**
+> Pet updatePet(pet)
+
+Update an existing pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.updatePet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="updatePetWithForm"></a>
+# **updatePetWithForm**
+> updatePetWithForm(petId, name, status)
+
+Updates a pet in the store with form data
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated
+val name : kotlin.String = name_example // kotlin.String | Updated name of the pet
+val status : kotlin.String = status_example // kotlin.String | Updated status of the pet
+try {
+    apiInstance.updatePetWithForm(petId, name, status)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet that needs to be updated |
+ **name** | **kotlin.String**| Updated name of the pet | [optional]
+ **status** | **kotlin.String**| Updated status of the pet | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+<a name="uploadFile"></a>
+# **uploadFile**
+> ModelApiResponse uploadFile(petId, additionalMetadata, file)
+
+uploads an image
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update
+val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload
+try {
+    val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to update |
+ **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional]
+ **file** | **java.io.File**| file to upload | [optional]
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/StoreApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/StoreApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..68fbd1fecf9c4068cb10c80fed80c14a8b05492c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/StoreApi.md
@@ -0,0 +1,198 @@
+# StoreApi
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
+[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID
+[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+
+
+<a name="deleteOrder"></a>
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted
+try {
+    apiInstance.deleteOrder(orderId)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="getInventory"></a>
+# **getInventory**
+> kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt; getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+try {
+    val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = apiInstance.getInventory()
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt;**
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+<a name="getOrderById"></a>
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched
+try {
+    val result : Order = apiInstance.getOrderById(orderId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="placeOrder"></a>
+# **placeOrder**
+> Order placeOrder(order)
+
+Place an order for a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val order : Order =  // Order | order placed for purchasing the pet
+try {
+    val result : Order = apiInstance.placeOrder(order)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#placeOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#placeOrder")
+    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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Tag.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Tag.md
new file mode 100644
index 0000000000000000000000000000000000000000..60ce1bcdbad3bc5b5e7512805f0ae2ec80e07923
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/Tag.md
@@ -0,0 +1,11 @@
+
+# Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/User.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/User.md
new file mode 100644
index 0000000000000000000000000000000000000000..e801729b5ed16ea867cb66ea851b3fef36d9599c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/User.md
@@ -0,0 +1,17 @@
+
+# User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**username** | **kotlin.String** |  |  [optional]
+**firstName** | **kotlin.String** |  |  [optional]
+**lastName** | **kotlin.String** |  |  [optional]
+**email** | **kotlin.String** |  |  [optional]
+**password** | **kotlin.String** |  |  [optional]
+**phone** | **kotlin.String** |  |  [optional]
+**userStatus** | **kotlin.Int** | User Status |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/UserApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/UserApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..e674269be5eeefb4da7603c8a7ddce2d3e24703a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/docs/UserApi.md
@@ -0,0 +1,404 @@
+# UserApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="createUser"></a>
+# **createUser**
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : User =  // User | Created user object
+try {
+    apiInstance.createUser(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**User**](User.md)| Created user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithArrayInput"></a>
+# **createUsersWithArrayInput**
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithArrayInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithListInput"></a>
+# **createUsersWithListInput**
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithListInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="deleteUser"></a>
+# **deleteUser**
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted
+try {
+    apiInstance.deleteUser(username)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The name that needs to be deleted |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="getUserByName"></a>
+# **getUserByName**
+> User getUserByName(username)
+
+Get user by user name
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing.
+try {
+    val result : User = apiInstance.getUserByName(username)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.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
+
+<a name="loginUser"></a>
+# **loginUser**
+> kotlin.String loginUser(username, password)
+
+Logs user into the system
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The user name for login
+val password : kotlin.String = password_example // kotlin.String | The password for login in clear text
+try {
+    val result : kotlin.String = apiInstance.loginUser(username, password)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#loginUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#loginUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The user name for login |
+ **password** | **kotlin.String**| The password for login in clear text |
+
+### Return type
+
+**kotlin.String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="logoutUser"></a>
+# **logoutUser**
+> logoutUser()
+
+Logs out current logged in user session
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+try {
+    apiInstance.logoutUser()
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="updateUser"></a>
+# **updateUser**
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | name that need to be deleted
+val user : User =  // User | Updated user object
+try {
+    apiInstance.updateUser(username, user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#updateUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#updateUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| name that need to be deleted |
+ **user** | [**User**](User.md)| Updated user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f
Binary files /dev/null and b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8cf6eb5ad222e3e69fa9b1a30a7bd86f4498c8da
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew
new file mode 100644
index 0000000000000000000000000000000000000000..4f906e0c811fc9e230eb44819f509cd0627f2600
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or 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 UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# 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
+    ;;
+  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"
+    which java >/dev/null 2>&1 || 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
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew.bat b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew.bat
new file mode 100644
index 0000000000000000000000000000000000000000..107acd32c4e687021ef32db511e8a206129b88ec
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/gradlew.bat
@@ -0,0 +1,89 @@
+@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=.
+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%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+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%"=="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!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/settings.gradle b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..555e588800df6572431376691a14382c734a8023
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-petstore-jvm-vertx'
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6a0b15a2f96858056d89ce17fe94836d09889228
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
@@ -0,0 +1,595 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.ModelApiResponse
+import org.openapitools.client.models.Pet
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+import io.vertx.kotlin.coroutines.await
+import io.vertx.kotlin.coroutines.dispatcher
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class PetApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun addPet(pet: Pet) : Pet {
+        return addPetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun addPetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun deletePet(petId: kotlin.Long, apiKey: kotlin.String? = null) : Unit {
+        return deletePetWithHttpInfo(petId = petId, apiKey = apiKey).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deletePetWithHttpInfo(petId: kotlin.Long, apiKey: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        apiKey?.apply { request.putHeader("api_key", this.toString())}
+        
+        
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * enum for parameter status
+     */
+     enum class Status_findPetsByStatus(val value: kotlin.String) {
+     @JsonProperty(value = "available") available("available"),
+     @JsonProperty(value = "pending") pending("pending"),
+     @JsonProperty(value = "sold") sold("sold")
+     }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun findPetsByStatus(status: kotlin.collections.List<Status_findPetsByStatus>) : kotlin.collections.List<Pet> {
+        return findPetsByStatusWithHttpInfo(status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun findPetsByStatusWithHttpInfo(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByStatus"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        status.let { request.queryParams().add("status", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    suspend fun findPetsByTags(tags: kotlin.collections.List<kotlin.String>) : kotlin.collections.List<Pet> {
+        return findPetsByTagsWithHttpInfo(tags = tags).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTagsWithHttpInfo(tags: kotlin.collections.List<kotlin.String>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByTags"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        tags.let { request.queryParams().add("tags", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun getPetById(petId: kotlin.Long) : Pet {
+        return getPetByIdWithHttpInfo(petId = petId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getPetByIdWithHttpInfo(petId: kotlin.Long) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun updatePet(pet: Pet) : Pet {
+        return updatePetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String? = null, status: kotlin.String? = null) : Unit {
+        return updatePetWithFormWithHttpInfo(petId = petId, name = name, status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithFormWithHttpInfo(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "application/x-www-form-urlencoded")
+        
+        
+        
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        name?.let { form.add("name", name) }
+        status?.let { form.add("status", status) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ModelApiResponse
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: java.io.File? = null) : ModelApiResponse {
+        return uploadFileWithHttpInfo(petId = petId, additionalMetadata = additionalMetadata, file = file).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as ModelApiResponse
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ApiResponse<ModelApiResponse?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun uploadFileWithHttpInfo(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : Future<ApiResponse<ModelApiResponse?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}/uploadImage".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "multipart/form-data")
+        
+        
+        request.putHeader("Accept", "application/json")
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        additionalMetadata?.let { form.add("additionalMetadata", additionalMetadata) }
+        file?.let { form.add("file", file.toString()) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<ModelApiResponse?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ed807c37aaecec93acf0d9d9b58f03544603f6ee
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
@@ -0,0 +1,296 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.Order
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+import io.vertx.kotlin.coroutines.await
+import io.vertx.kotlin.coroutines.dispatcher
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class StoreApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun deleteOrder(orderId: kotlin.String) : Unit {
+        return deleteOrderWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteOrderWithHttpInfo(orderId: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return kotlin.collections.Map<kotlin.String, kotlin.Int>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun getInventory() : kotlin.collections.Map<kotlin.String, kotlin.Int> {
+        return getInventoryWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.Map<kotlin.String, kotlin.Int>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getInventoryWithHttpInfo() : Future<ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/inventory"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun getOrderById(orderId: kotlin.Long) : Order {
+        return getOrderByIdWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getOrderByIdWithHttpInfo(orderId: kotlin.Long) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun placeOrder(order: Order) : Order {
+        return placeOrderWithHttpInfo(order = order).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun placeOrderWithHttpInfo(order: Order) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/store/order"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .sendBuffer(responseBody(order))
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..8d61918e1afb85e56c65f044d0a67c6eaede6265
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
@@ -0,0 +1,577 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.User
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+import io.vertx.kotlin.coroutines.await
+import io.vertx.kotlin.coroutines.dispatcher
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class UserApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun createUser(user: User) : Unit {
+        return createUserWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUserWithHttpInfo(user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun createUsersWithArrayInput(user: kotlin.collections.List<User>) : Unit {
+        return createUsersWithArrayInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithArrayInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithArray"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun createUsersWithListInput(user: kotlin.collections.List<User>) : Unit {
+        return createUsersWithListInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithListInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithList"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun deleteUser(username: kotlin.String) : Unit {
+        return deleteUserWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteUserWithHttpInfo(username: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return User
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun getUserByName(username: kotlin.String) : User {
+        return getUserByNameWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as User
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return ApiResponse<User?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getUserByNameWithHttpInfo(username: kotlin.String) : Future<ApiResponse<User?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<User?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return kotlin.String
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String {
+        return loginUserWithHttpInfo(username = username, password = password).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.String
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return ApiResponse<kotlin.String?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun loginUserWithHttpInfo(username: kotlin.String, password: kotlin.String) : Future<ApiResponse<kotlin.String?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/login"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        username.let { request.queryParams().add("username", listOf(it.toString())) }
+        password.let { request.queryParams().add("password", listOf(it.toString())) }
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.String?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun logoutUser() : Unit {
+        return logoutUserWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun logoutUserWithHttpInfo() : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/logout"))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    suspend fun updateUser(username: kotlin.String, user: User) : Unit {
+        return updateUserWithHttpInfo(username = username, user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }.await()
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updateUserWithHttpInfo(username: kotlin.String, user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ef7a8f1e1a625f7efdbea17077de86da8e09f805
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+typealias MultiValueMap = MutableMap<String,List<String>>
+
+fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
+    "csv" -> ","
+    "tsv" -> "\t"
+    "pipe" -> "|"
+    "space" -> " "
+    else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+        = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
+    return when(collectionFormat) {
+        "multi" -> items.map(map)
+        else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ce6e66a1f313aa29f42c62107b0bfb5e126d3a11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -0,0 +1,86 @@
+package org.openapitools.client.infrastructure
+
+import io.vertx.core.Vertx
+import io.vertx.core.buffer.Buffer
+import java.nio.charset.StandardCharsets
+import com.fasterxml.jackson.core.type.TypeReference
+
+open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
+    companion object {
+        const val baseUrlKey = "org.openapitools.client.baseUrl"
+
+        @JvmStatic
+        val defaultBasePath: String by lazy {
+            System.getProperties().getProperty(baseUrlKey, "http://petstore.swagger.io/v2")
+        }
+    }
+
+    protected inline fun <reified T: Any?> handleResponse(response: io.vertx.ext.web.client.HttpResponse<Buffer>): ApiResponse<T?> {
+        val code = response.statusCode()
+        val headers = response.headers().associate { it.key to listOf(it.value) }
+        val contentType = headers["Content-Type"]?.firstOrNull()?.substringBefore(";")?.lowercase(java.util.Locale.getDefault())
+
+        return when (code) {
+            in 100..199 -> Informational(
+                response.statusMessage(),
+                code,
+                headers
+            )
+            in 200 .. 299 -> Success(
+                responseBody<T>(response.body(), contentType),
+                code,
+                headers
+            )
+            in 300..399 -> Redirection(
+                code,
+                headers
+            )
+            in 400..499 -> ClientError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+            else -> ServerError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+        }
+    }
+
+    protected inline fun <reified T: Any?> responseBody(body: Buffer?, mediaType: String? = "application/json"): T? {
+        body ?: return null
+
+        val bodyContent = String(body.bytes, StandardCharsets.UTF_8)
+        if (bodyContent.isEmpty()) {
+            return null
+        }
+
+        return when {
+            mediaType==null || (mediaType.startsWith("application/") && mediaType.endsWith("json")) ->
+                Serializer.jacksonObjectMapper.readValue(bodyContent, object: TypeReference<T>() {})
+            else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+        }
+    }
+
+    protected fun encodeURIComponent(parameter: String): String {
+        return try {
+            java.net.URLEncoder.encode(parameter, java.nio.charset.StandardCharsets.UTF_8.name())
+        } catch (e: java.io.UnsupportedEncodingException) {
+            parameter
+        }
+    }
+
+    protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
+        /*
+        .replace("\"", "") converts the json object string to an actual string for the query parameter.
+        The moshi or gson adapter allows a more generic solution instead of trying to use a native
+        formatter. It also easily allows to provide a simple way to define a custom date format pattern
+        inside a gson/moshi adapter.
+        */
+        return Serializer.jacksonObjectMapper.writeValueAsString(value).replace("\"", "")
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cf2cfaa95d916ed0c9087bd6a1e0eef970c7ac7d
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
@@ -0,0 +1,43 @@
+package org.openapitools.client.infrastructure
+
+enum class ResponseType {
+    Success, Informational, Redirection, ClientError, ServerError
+}
+
+interface Response
+
+abstract class ApiResponse<T>(val responseType: ResponseType): Response {
+    abstract val statusCode: Int
+    abstract val headers: Map<String,List<String>>
+}
+
+class Success<T>(
+    val data: T,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+): ApiResponse<T>(ResponseType.Success)
+
+class Informational<T>(
+    val statusText: String,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Informational)
+
+class Redirection<T>(
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Redirection)
+
+class ClientError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.ClientError)
+
+class ServerError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>>
+): ApiResponse<T>(ResponseType.ServerError)
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b5310e71f13c7e7fb874be998af37dd424d9cd11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
@@ -0,0 +1,18 @@
+@file:Suppress("unused")
+package org.openapitools.client.infrastructure
+
+import java.lang.RuntimeException
+
+open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 123L
+    }
+}
+
+open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 456L
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ece5c413e124b63f804c6e72f151c663ab7d10bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
@@ -0,0 +1,14 @@
+package org.openapitools.client.infrastructure
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.databind.SerializationFeature
+import com.fasterxml.jackson.annotation.JsonInclude
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+
+object Serializer {
+    @JvmStatic
+    val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
+        .findAndRegisterModules()
+        .setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
+        .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt
new file mode 100644
index 0000000000000000000000000000000000000000..71a7d74b06f132c0578121a6a3e09e0c2704c05c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A category for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Category (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5590e88cd83e9edd31b4fbd5e0fb3e930e3138cf
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -0,0 +1,42 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Describes the result of uploading an image resource
+ *
+ * @param code 
+ * @param type 
+ * @param message 
+ */
+
+
+data class ModelApiResponse (
+
+    @field:JsonProperty("code")
+    val code: kotlin.Int? = null,
+
+    @field:JsonProperty("type")
+    val type: kotlin.String? = null,
+
+    @field:JsonProperty("message")
+    val message: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt
new file mode 100644
index 0000000000000000000000000000000000000000..94bc4e3be1029b8fe76eef65d5613f3c8f079084
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -0,0 +1,67 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * An order for a pets from the pet store
+ *
+ * @param id 
+ * @param petId 
+ * @param quantity 
+ * @param shipDate 
+ * @param status Order Status
+ * @param complete 
+ */
+
+
+data class Order (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("petId")
+    val petId: kotlin.Long? = null,
+
+    @field:JsonProperty("quantity")
+    val quantity: kotlin.Int? = null,
+
+    @field:JsonProperty("shipDate")
+    val shipDate: java.time.OffsetDateTime? = null,
+
+    /* Order Status */
+    @field:JsonProperty("status")
+    val status: Order.Status? = null,
+
+    @field:JsonProperty("complete")
+    val complete: kotlin.Boolean? = false
+
+) {
+
+    /**
+     * Order Status
+     *
+     * Values: placed,approved,delivered
+     */
+    enum class Status(val value: kotlin.String) {
+        @JsonProperty(value = "placed") placed("placed"),
+        @JsonProperty(value = "approved") approved("approved"),
+        @JsonProperty(value = "delivered") delivered("delivered");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2e5cefb83cdf87ea0afdf3e9691e9ef9f2ae101a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -0,0 +1,70 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+import org.openapitools.client.models.Category
+import org.openapitools.client.models.Tag
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A pet for sale in the pet store
+ *
+ * @param name 
+ * @param photoUrls 
+ * @param id 
+ * @param category 
+ * @param tags 
+ * @param status pet status in the store
+ */
+
+
+data class Pet (
+
+    @field:JsonProperty("name")
+    val name: kotlin.String,
+
+    @field:JsonProperty("photoUrls")
+    val photoUrls: kotlin.collections.List<kotlin.String>,
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("category")
+    val category: Category? = null,
+
+    @field:JsonProperty("tags")
+    val tags: kotlin.collections.List<Tag>? = null,
+
+    /* pet status in the store */
+    @field:JsonProperty("status")
+    @Deprecated(message = "This property is deprecated.")
+    val status: Pet.Status? = null
+
+) {
+
+    /**
+     * pet status in the store
+     *
+     * Values: available,pending,sold
+     */
+    enum class Status(val value: kotlin.String) {
+        @JsonProperty(value = "available") available("available"),
+        @JsonProperty(value = "pending") pending("pending"),
+        @JsonProperty(value = "sold") sold("sold");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f5f600cc374563733637a889cd355a7f984713e3
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A tag for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Tag (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7872ed7da4dffe2db48783d81c8b6ba7c4de2f97
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson-coroutines/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -0,0 +1,63 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A User who is purchasing from the pet store
+ *
+ * @param id 
+ * @param username 
+ * @param firstName 
+ * @param lastName 
+ * @param email 
+ * @param password 
+ * @param phone 
+ * @param userStatus User Status
+ */
+
+
+data class User (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("username")
+    val username: kotlin.String? = null,
+
+    @field:JsonProperty("firstName")
+    val firstName: kotlin.String? = null,
+
+    @field:JsonProperty("lastName")
+    val lastName: kotlin.String? = null,
+
+    @field:JsonProperty("email")
+    val email: kotlin.String? = null,
+
+    @field:JsonProperty("password")
+    val password: kotlin.String? = null,
+
+    @field:JsonProperty("phone")
+    val phone: kotlin.String? = null,
+
+    /* User Status */
+    @field:JsonProperty("userStatus")
+    val userStatus: kotlin.Int? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator-ignore b/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator-ignore
new file mode 100644
index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/.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/kotlin-jvm-vertx-jackson/.openapi-generator/FILES b/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator/FILES
new file mode 100644
index 0000000000000000000000000000000000000000..b468a696e09a934a07f28ee6e65a58369f5a33e8
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator/FILES
@@ -0,0 +1,30 @@
+README.md
+build.gradle
+docs/ApiResponse.md
+docs/Category.md
+docs/Order.md
+docs/Pet.md
+docs/PetApi.md
+docs/StoreApi.md
+docs/Tag.md
+docs/User.md
+docs/UserApi.md
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+settings.gradle
+src/main/kotlin/org/openapitools/client/apis/PetApi.kt
+src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
+src/main/kotlin/org/openapitools/client/apis/UserApi.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+src/main/kotlin/org/openapitools/client/models/Category.kt
+src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+src/main/kotlin/org/openapitools/client/models/Order.kt
+src/main/kotlin/org/openapitools/client/models/Pet.kt
+src/main/kotlin/org/openapitools/client/models/Tag.kt
+src/main/kotlin/org/openapitools/client/models/User.kt
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..ed829dbcddec26785bab1af9a53a84d8ef6f08eb
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.2.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/README.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e3f2108bfcdc6405baa8fef22fd5a958e35955bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/README.md
@@ -0,0 +1,99 @@
+# org.openapitools.client - Kotlin client library for OpenAPI Petstore
+
+This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+
+## Overview
+This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client.
+
+- API version: 1.0.0
+- Package version: 
+- Build package: org.openapitools.codegen.languages.KotlinClientCodegen
+
+## Requires
+
+* Kotlin 1.6.10
+* Gradle 7.5
+
+## Build
+
+First, create the gradle wrapper script:
+
+```
+gradle wrapper
+```
+
+Then, run:
+
+```
+./gradlew check assemble
+```
+
+This runs all tests and packages the library.
+
+## Features/Implementation Notes
+
+* Supports JSON inputs/outputs, File inputs, and Form inputs.
+* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
+* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
+* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
+
+<a name="documentation-for-api-endpoints"></a>
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*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
+*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | 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/{orderId} | 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
+
+
+<a name="documentation-for-models"></a>
+## Documentation for Models
+
+ - [org.openapitools.client.models.Category](docs/Category.md)
+ - [org.openapitools.client.models.ModelApiResponse](docs/ModelApiResponse.md)
+ - [org.openapitools.client.models.Order](docs/Order.md)
+ - [org.openapitools.client.models.Pet](docs/Pet.md)
+ - [org.openapitools.client.models.Tag](docs/Tag.md)
+ - [org.openapitools.client.models.User](docs/User.md)
+
+
+<a name="documentation-for-authorization"></a>
+## Documentation for Authorization
+
+<a name="api_key"></a>
+### api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+<a name="petstore_auth"></a>
+### 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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/build.gradle b/samples/client/petstore/kotlin-jvm-vertx-jackson/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..b28c2542d79c45bbac18b80dc1943f3db6457761
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/build.gradle
@@ -0,0 +1,41 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+    gradleVersion = '7.5'
+    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+    ext.kotlin_version = '1.6.10'
+    ext.vertx_version = "4.3.3"
+
+    repositories {
+        maven { url "https://repo1.maven.org/maven2" }
+    }
+    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+    }
+}
+
+apply plugin: 'kotlin'
+
+repositories {
+    maven { url "https://repo1.maven.org/maven2" }
+}
+
+test {
+    useJUnitPlatform()
+}
+
+dependencies {
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+    implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3"
+    implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.3"
+    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+    implementation "io.vertx:vertx-web-client:$vertx_version"
+    implementation "io.vertx:vertx-core:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin:$vertx_version"
+    implementation "io.vertx:vertx-uri-template:$vertx_version"
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/ApiResponse.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/ApiResponse.md
new file mode 100644
index 0000000000000000000000000000000000000000..12f08d5cdef0f54957138c36e067bd0dfa5d05ed
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+
+# ModelApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **kotlin.Int** |  |  [optional]
+**type** | **kotlin.String** |  |  [optional]
+**message** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Category.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Category.md
new file mode 100644
index 0000000000000000000000000000000000000000..2c28a670fc79d57aeea821eb2431722d8afe6c7b
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Category.md
@@ -0,0 +1,11 @@
+
+# Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Order.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Order.md
new file mode 100644
index 0000000000000000000000000000000000000000..94ab0d537e54b3c0097a8e498be0b0ee9785f241
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Order.md
@@ -0,0 +1,22 @@
+
+# Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**petId** | **kotlin.Long** |  |  [optional]
+**quantity** | **kotlin.Int** |  |  [optional]
+**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) |  |  [optional]
+**status** | [**inline**](#Status) | Order Status |  [optional]
+**complete** | **kotlin.Boolean** |  |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | placed, approved, delivered
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Pet.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Pet.md
new file mode 100644
index 0000000000000000000000000000000000000000..bc3dd89718f097ab02440cb721ea2ffeeb875910
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Pet.md
@@ -0,0 +1,22 @@
+
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** |  | 
+**photoUrls** | **kotlin.collections.List&lt;kotlin.String&gt;** |  | 
+**id** | **kotlin.Long** |  |  [optional]
+**category** | [**Category**](Category.md) |  |  [optional]
+**tags** | [**kotlin.collections.List&lt;Tag&gt;**](Tag.md) |  |  [optional]
+**status** | [**inline**](#Status) | pet status in the store |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | available, pending, sold
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/PetApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..6962f148b5964309825f62a01b3b660b5f1d8427
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/PetApi.md
@@ -0,0 +1,417 @@
+# PetApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="addPet"></a>
+# **addPet**
+> Pet addPet(pet)
+
+Add a new pet to the store
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.addPet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#addPet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#addPet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="deletePet"></a>
+# **deletePet**
+> deletePet(petId, apiKey)
+
+Deletes a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete
+val apiKey : kotlin.String = apiKey_example // kotlin.String | 
+try {
+    apiInstance.deletePet(petId, apiKey)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#deletePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#deletePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| Pet id to delete |
+ **apiKey** | **kotlin.String**|  | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="findPetsByStatus"></a>
+# **findPetsByStatus**
+> kotlin.collections.List&lt;Pet&gt; findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val status : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Status values that need to be considered for filter
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByStatus(status)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="findPetsByTags"></a>
+# **findPetsByTags**
+> kotlin.collections.List&lt;Pet&gt; findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val tags : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Tags to filter by
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByTags(tags)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Tags to filter by |
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="getPetById"></a>
+# **getPetById**
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return
+try {
+    val result : Pet = apiInstance.getPetById(petId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#getPetById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#getPetById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to return |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="updatePet"></a>
+# **updatePet**
+> Pet updatePet(pet)
+
+Update an existing pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.updatePet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="updatePetWithForm"></a>
+# **updatePetWithForm**
+> updatePetWithForm(petId, name, status)
+
+Updates a pet in the store with form data
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated
+val name : kotlin.String = name_example // kotlin.String | Updated name of the pet
+val status : kotlin.String = status_example // kotlin.String | Updated status of the pet
+try {
+    apiInstance.updatePetWithForm(petId, name, status)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet that needs to be updated |
+ **name** | **kotlin.String**| Updated name of the pet | [optional]
+ **status** | **kotlin.String**| Updated status of the pet | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+<a name="uploadFile"></a>
+# **uploadFile**
+> ModelApiResponse uploadFile(petId, additionalMetadata, file)
+
+uploads an image
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update
+val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload
+try {
+    val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to update |
+ **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional]
+ **file** | **java.io.File**| file to upload | [optional]
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/StoreApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/StoreApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..68fbd1fecf9c4068cb10c80fed80c14a8b05492c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/StoreApi.md
@@ -0,0 +1,198 @@
+# StoreApi
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
+[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID
+[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+
+
+<a name="deleteOrder"></a>
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted
+try {
+    apiInstance.deleteOrder(orderId)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="getInventory"></a>
+# **getInventory**
+> kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt; getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+try {
+    val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = apiInstance.getInventory()
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt;**
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+<a name="getOrderById"></a>
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched
+try {
+    val result : Order = apiInstance.getOrderById(orderId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="placeOrder"></a>
+# **placeOrder**
+> Order placeOrder(order)
+
+Place an order for a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val order : Order =  // Order | order placed for purchasing the pet
+try {
+    val result : Order = apiInstance.placeOrder(order)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#placeOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#placeOrder")
+    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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Tag.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Tag.md
new file mode 100644
index 0000000000000000000000000000000000000000..60ce1bcdbad3bc5b5e7512805f0ae2ec80e07923
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/Tag.md
@@ -0,0 +1,11 @@
+
+# Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/User.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/User.md
new file mode 100644
index 0000000000000000000000000000000000000000..e801729b5ed16ea867cb66ea851b3fef36d9599c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/User.md
@@ -0,0 +1,17 @@
+
+# User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**username** | **kotlin.String** |  |  [optional]
+**firstName** | **kotlin.String** |  |  [optional]
+**lastName** | **kotlin.String** |  |  [optional]
+**email** | **kotlin.String** |  |  [optional]
+**password** | **kotlin.String** |  |  [optional]
+**phone** | **kotlin.String** |  |  [optional]
+**userStatus** | **kotlin.Int** | User Status |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/UserApi.md b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/UserApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..e674269be5eeefb4da7603c8a7ddce2d3e24703a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/docs/UserApi.md
@@ -0,0 +1,404 @@
+# UserApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="createUser"></a>
+# **createUser**
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : User =  // User | Created user object
+try {
+    apiInstance.createUser(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**User**](User.md)| Created user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithArrayInput"></a>
+# **createUsersWithArrayInput**
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithArrayInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithListInput"></a>
+# **createUsersWithListInput**
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithListInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="deleteUser"></a>
+# **deleteUser**
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted
+try {
+    apiInstance.deleteUser(username)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The name that needs to be deleted |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="getUserByName"></a>
+# **getUserByName**
+> User getUserByName(username)
+
+Get user by user name
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing.
+try {
+    val result : User = apiInstance.getUserByName(username)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.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
+
+<a name="loginUser"></a>
+# **loginUser**
+> kotlin.String loginUser(username, password)
+
+Logs user into the system
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The user name for login
+val password : kotlin.String = password_example // kotlin.String | The password for login in clear text
+try {
+    val result : kotlin.String = apiInstance.loginUser(username, password)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#loginUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#loginUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The user name for login |
+ **password** | **kotlin.String**| The password for login in clear text |
+
+### Return type
+
+**kotlin.String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="logoutUser"></a>
+# **logoutUser**
+> logoutUser()
+
+Logs out current logged in user session
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+try {
+    apiInstance.logoutUser()
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="updateUser"></a>
+# **updateUser**
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | name that need to be deleted
+val user : User =  // User | Updated user object
+try {
+    apiInstance.updateUser(username, user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#updateUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#updateUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| name that need to be deleted |
+ **user** | [**User**](User.md)| Updated user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f
Binary files /dev/null and b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8cf6eb5ad222e3e69fa9b1a30a7bd86f4498c8da
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew
new file mode 100644
index 0000000000000000000000000000000000000000..4f906e0c811fc9e230eb44819f509cd0627f2600
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or 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 UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# 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
+    ;;
+  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"
+    which java >/dev/null 2>&1 || 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
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew.bat b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew.bat
new file mode 100644
index 0000000000000000000000000000000000000000..107acd32c4e687021ef32db511e8a206129b88ec
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/gradlew.bat
@@ -0,0 +1,89 @@
+@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=.
+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%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+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%"=="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!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/settings.gradle b/samples/client/petstore/kotlin-jvm-vertx-jackson/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..555e588800df6572431376691a14382c734a8023
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-petstore-jvm-vertx'
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..00628ca7b1f52d93af7d469a27cba5ded61339fd
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
@@ -0,0 +1,591 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.ModelApiResponse
+import org.openapitools.client.models.Pet
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class PetApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun addPet(pet: Pet) : Future<Pet> {
+        return addPetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun addPetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deletePet(petId: kotlin.Long, apiKey: kotlin.String? = null) : Future<Unit> {
+        return deletePetWithHttpInfo(petId = petId, apiKey = apiKey).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deletePetWithHttpInfo(petId: kotlin.Long, apiKey: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        apiKey?.apply { request.putHeader("api_key", this.toString())}
+        
+        
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * enum for parameter status
+     */
+     enum class Status_findPetsByStatus(val value: kotlin.String) {
+     @JsonProperty(value = "available") available("available"),
+     @JsonProperty(value = "pending") pending("pending"),
+     @JsonProperty(value = "sold") sold("sold")
+     }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun findPetsByStatus(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByStatusWithHttpInfo(status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun findPetsByStatusWithHttpInfo(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByStatus"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        status.let { request.queryParams().add("status", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTags(tags: kotlin.collections.List<kotlin.String>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByTagsWithHttpInfo(tags = tags).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTagsWithHttpInfo(tags: kotlin.collections.List<kotlin.String>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByTags"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        tags.let { request.queryParams().add("tags", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getPetById(petId: kotlin.Long) : Future<Pet> {
+        return getPetByIdWithHttpInfo(petId = petId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getPetByIdWithHttpInfo(petId: kotlin.Long) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePet(pet: Pet) : Future<Pet> {
+        return updatePetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String? = null, status: kotlin.String? = null) : Future<Unit> {
+        return updatePetWithFormWithHttpInfo(petId = petId, name = name, status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithFormWithHttpInfo(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "application/x-www-form-urlencoded")
+        
+        
+        
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        name?.let { form.add("name", name) }
+        status?.let { form.add("status", status) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ModelApiResponse
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: java.io.File? = null) : Future<ModelApiResponse> {
+        return uploadFileWithHttpInfo(petId = petId, additionalMetadata = additionalMetadata, file = file).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as ModelApiResponse
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ApiResponse<ModelApiResponse?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun uploadFileWithHttpInfo(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : Future<ApiResponse<ModelApiResponse?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}/uploadImage".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "multipart/form-data")
+        
+        
+        request.putHeader("Accept", "application/json")
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        additionalMetadata?.let { form.add("additionalMetadata", additionalMetadata) }
+        file?.let { form.add("file", file.toString()) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<ModelApiResponse?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..00640882ecdf07fdbb3a728ccfb3852a1a996b3c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
@@ -0,0 +1,292 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.Order
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class StoreApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteOrder(orderId: kotlin.String) : Future<Unit> {
+        return deleteOrderWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteOrderWithHttpInfo(orderId: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return kotlin.collections.Map<kotlin.String, kotlin.Int>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getInventory() : Future<kotlin.collections.Map<kotlin.String, kotlin.Int>> {
+        return getInventoryWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.Map<kotlin.String, kotlin.Int>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getInventoryWithHttpInfo() : Future<ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/inventory"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getOrderById(orderId: kotlin.Long) : Future<Order> {
+        return getOrderByIdWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getOrderByIdWithHttpInfo(orderId: kotlin.Long) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun placeOrder(order: Order) : Future<Order> {
+        return placeOrderWithHttpInfo(order = order).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun placeOrderWithHttpInfo(order: Order) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/store/order"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .sendBuffer(responseBody(order))
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..206ba4f7033ad5175b32f2d96958a142a3ea7c5c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
@@ -0,0 +1,573 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.User
+
+import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.type.TypeReference
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class UserApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUser(user: User) : Future<Unit> {
+        return createUserWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUserWithHttpInfo(user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithArrayInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithArrayInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithArrayInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithArray"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithListInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithListInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithListInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithList"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteUser(username: kotlin.String) : Future<Unit> {
+        return deleteUserWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteUserWithHttpInfo(username: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return User
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getUserByName(username: kotlin.String) : Future<User> {
+        return getUserByNameWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as User
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return ApiResponse<User?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getUserByNameWithHttpInfo(username: kotlin.String) : Future<ApiResponse<User?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<User?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return kotlin.String
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun loginUser(username: kotlin.String, password: kotlin.String) : Future<kotlin.String> {
+        return loginUserWithHttpInfo(username = username, password = password).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.String
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return ApiResponse<kotlin.String?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun loginUserWithHttpInfo(username: kotlin.String, password: kotlin.String) : Future<ApiResponse<kotlin.String?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/login"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        username.let { request.queryParams().add("username", listOf(it.toString())) }
+        password.let { request.queryParams().add("password", listOf(it.toString())) }
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.String?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun logoutUser() : Future<Unit> {
+        return logoutUserWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun logoutUserWithHttpInfo() : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/logout"))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updateUser(username: kotlin.String, user: User) : Future<Unit> {
+        return updateUserWithHttpInfo(username = username, user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updateUserWithHttpInfo(username: kotlin.String, user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.jacksonObjectMapper.writeValueAsBytes(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ef7a8f1e1a625f7efdbea17077de86da8e09f805
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+typealias MultiValueMap = MutableMap<String,List<String>>
+
+fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
+    "csv" -> ","
+    "tsv" -> "\t"
+    "pipe" -> "|"
+    "space" -> " "
+    else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+        = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
+    return when(collectionFormat) {
+        "multi" -> items.map(map)
+        else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ce6e66a1f313aa29f42c62107b0bfb5e126d3a11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -0,0 +1,86 @@
+package org.openapitools.client.infrastructure
+
+import io.vertx.core.Vertx
+import io.vertx.core.buffer.Buffer
+import java.nio.charset.StandardCharsets
+import com.fasterxml.jackson.core.type.TypeReference
+
+open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
+    companion object {
+        const val baseUrlKey = "org.openapitools.client.baseUrl"
+
+        @JvmStatic
+        val defaultBasePath: String by lazy {
+            System.getProperties().getProperty(baseUrlKey, "http://petstore.swagger.io/v2")
+        }
+    }
+
+    protected inline fun <reified T: Any?> handleResponse(response: io.vertx.ext.web.client.HttpResponse<Buffer>): ApiResponse<T?> {
+        val code = response.statusCode()
+        val headers = response.headers().associate { it.key to listOf(it.value) }
+        val contentType = headers["Content-Type"]?.firstOrNull()?.substringBefore(";")?.lowercase(java.util.Locale.getDefault())
+
+        return when (code) {
+            in 100..199 -> Informational(
+                response.statusMessage(),
+                code,
+                headers
+            )
+            in 200 .. 299 -> Success(
+                responseBody<T>(response.body(), contentType),
+                code,
+                headers
+            )
+            in 300..399 -> Redirection(
+                code,
+                headers
+            )
+            in 400..499 -> ClientError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+            else -> ServerError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+        }
+    }
+
+    protected inline fun <reified T: Any?> responseBody(body: Buffer?, mediaType: String? = "application/json"): T? {
+        body ?: return null
+
+        val bodyContent = String(body.bytes, StandardCharsets.UTF_8)
+        if (bodyContent.isEmpty()) {
+            return null
+        }
+
+        return when {
+            mediaType==null || (mediaType.startsWith("application/") && mediaType.endsWith("json")) ->
+                Serializer.jacksonObjectMapper.readValue(bodyContent, object: TypeReference<T>() {})
+            else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+        }
+    }
+
+    protected fun encodeURIComponent(parameter: String): String {
+        return try {
+            java.net.URLEncoder.encode(parameter, java.nio.charset.StandardCharsets.UTF_8.name())
+        } catch (e: java.io.UnsupportedEncodingException) {
+            parameter
+        }
+    }
+
+    protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
+        /*
+        .replace("\"", "") converts the json object string to an actual string for the query parameter.
+        The moshi or gson adapter allows a more generic solution instead of trying to use a native
+        formatter. It also easily allows to provide a simple way to define a custom date format pattern
+        inside a gson/moshi adapter.
+        */
+        return Serializer.jacksonObjectMapper.writeValueAsString(value).replace("\"", "")
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cf2cfaa95d916ed0c9087bd6a1e0eef970c7ac7d
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
@@ -0,0 +1,43 @@
+package org.openapitools.client.infrastructure
+
+enum class ResponseType {
+    Success, Informational, Redirection, ClientError, ServerError
+}
+
+interface Response
+
+abstract class ApiResponse<T>(val responseType: ResponseType): Response {
+    abstract val statusCode: Int
+    abstract val headers: Map<String,List<String>>
+}
+
+class Success<T>(
+    val data: T,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+): ApiResponse<T>(ResponseType.Success)
+
+class Informational<T>(
+    val statusText: String,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Informational)
+
+class Redirection<T>(
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Redirection)
+
+class ClientError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.ClientError)
+
+class ServerError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>>
+): ApiResponse<T>(ResponseType.ServerError)
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b5310e71f13c7e7fb874be998af37dd424d9cd11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
@@ -0,0 +1,18 @@
+@file:Suppress("unused")
+package org.openapitools.client.infrastructure
+
+import java.lang.RuntimeException
+
+open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 123L
+    }
+}
+
+open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 456L
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ece5c413e124b63f804c6e72f151c663ab7d10bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
@@ -0,0 +1,14 @@
+package org.openapitools.client.infrastructure
+
+import com.fasterxml.jackson.databind.ObjectMapper
+import com.fasterxml.jackson.databind.SerializationFeature
+import com.fasterxml.jackson.annotation.JsonInclude
+import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
+
+object Serializer {
+    @JvmStatic
+    val jacksonObjectMapper: ObjectMapper = jacksonObjectMapper()
+        .findAndRegisterModules()
+        .setSerializationInclusion(JsonInclude.Include.NON_ABSENT)
+        .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
new file mode 100644
index 0000000000000000000000000000000000000000..71a7d74b06f132c0578121a6a3e09e0c2704c05c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A category for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Category (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..5590e88cd83e9edd31b4fbd5e0fb3e930e3138cf
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -0,0 +1,42 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * Describes the result of uploading an image resource
+ *
+ * @param code 
+ * @param type 
+ * @param message 
+ */
+
+
+data class ModelApiResponse (
+
+    @field:JsonProperty("code")
+    val code: kotlin.Int? = null,
+
+    @field:JsonProperty("type")
+    val type: kotlin.String? = null,
+
+    @field:JsonProperty("message")
+    val message: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
new file mode 100644
index 0000000000000000000000000000000000000000..94bc4e3be1029b8fe76eef65d5613f3c8f079084
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -0,0 +1,67 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * An order for a pets from the pet store
+ *
+ * @param id 
+ * @param petId 
+ * @param quantity 
+ * @param shipDate 
+ * @param status Order Status
+ * @param complete 
+ */
+
+
+data class Order (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("petId")
+    val petId: kotlin.Long? = null,
+
+    @field:JsonProperty("quantity")
+    val quantity: kotlin.Int? = null,
+
+    @field:JsonProperty("shipDate")
+    val shipDate: java.time.OffsetDateTime? = null,
+
+    /* Order Status */
+    @field:JsonProperty("status")
+    val status: Order.Status? = null,
+
+    @field:JsonProperty("complete")
+    val complete: kotlin.Boolean? = false
+
+) {
+
+    /**
+     * Order Status
+     *
+     * Values: placed,approved,delivered
+     */
+    enum class Status(val value: kotlin.String) {
+        @JsonProperty(value = "placed") placed("placed"),
+        @JsonProperty(value = "approved") approved("approved"),
+        @JsonProperty(value = "delivered") delivered("delivered");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2e5cefb83cdf87ea0afdf3e9691e9ef9f2ae101a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -0,0 +1,70 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+import org.openapitools.client.models.Category
+import org.openapitools.client.models.Tag
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A pet for sale in the pet store
+ *
+ * @param name 
+ * @param photoUrls 
+ * @param id 
+ * @param category 
+ * @param tags 
+ * @param status pet status in the store
+ */
+
+
+data class Pet (
+
+    @field:JsonProperty("name")
+    val name: kotlin.String,
+
+    @field:JsonProperty("photoUrls")
+    val photoUrls: kotlin.collections.List<kotlin.String>,
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("category")
+    val category: Category? = null,
+
+    @field:JsonProperty("tags")
+    val tags: kotlin.collections.List<Tag>? = null,
+
+    /* pet status in the store */
+    @field:JsonProperty("status")
+    @Deprecated(message = "This property is deprecated.")
+    val status: Pet.Status? = null
+
+) {
+
+    /**
+     * pet status in the store
+     *
+     * Values: available,pending,sold
+     */
+    enum class Status(val value: kotlin.String) {
+        @JsonProperty(value = "available") available("available"),
+        @JsonProperty(value = "pending") pending("pending"),
+        @JsonProperty(value = "sold") sold("sold");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
new file mode 100644
index 0000000000000000000000000000000000000000..f5f600cc374563733637a889cd355a7f984713e3
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A tag for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Tag (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7872ed7da4dffe2db48783d81c8b6ba7c4de2f97
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-jackson/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -0,0 +1,63 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.fasterxml.jackson.annotation.JsonProperty
+
+/**
+ * A User who is purchasing from the pet store
+ *
+ * @param id 
+ * @param username 
+ * @param firstName 
+ * @param lastName 
+ * @param email 
+ * @param password 
+ * @param phone 
+ * @param userStatus User Status
+ */
+
+
+data class User (
+
+    @field:JsonProperty("id")
+    val id: kotlin.Long? = null,
+
+    @field:JsonProperty("username")
+    val username: kotlin.String? = null,
+
+    @field:JsonProperty("firstName")
+    val firstName: kotlin.String? = null,
+
+    @field:JsonProperty("lastName")
+    val lastName: kotlin.String? = null,
+
+    @field:JsonProperty("email")
+    val email: kotlin.String? = null,
+
+    @field:JsonProperty("password")
+    val password: kotlin.String? = null,
+
+    @field:JsonProperty("phone")
+    val phone: kotlin.String? = null,
+
+    /* User Status */
+    @field:JsonProperty("userStatus")
+    val userStatus: kotlin.Int? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator-ignore b/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator-ignore
new file mode 100644
index 0000000000000000000000000000000000000000..7484ee590a3894506cf063799b885428f95a71be
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/.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/kotlin-jvm-vertx-moshi/.openapi-generator/FILES b/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator/FILES
new file mode 100644
index 0000000000000000000000000000000000000000..d3014d6b9bba9e10385accdac273fbe9bedff4a5
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator/FILES
@@ -0,0 +1,38 @@
+README.md
+build.gradle
+docs/ApiResponse.md
+docs/Category.md
+docs/Order.md
+docs/Pet.md
+docs/PetApi.md
+docs/StoreApi.md
+docs/Tag.md
+docs/User.md
+docs/UserApi.md
+gradle/wrapper/gradle-wrapper.jar
+gradle/wrapper/gradle-wrapper.properties
+gradlew
+gradlew.bat
+settings.gradle
+src/main/kotlin/org/openapitools/client/apis/PetApi.kt
+src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
+src/main/kotlin/org/openapitools/client/apis/UserApi.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
+src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
+src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
+src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
+src/main/kotlin/org/openapitools/client/models/Category.kt
+src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+src/main/kotlin/org/openapitools/client/models/Order.kt
+src/main/kotlin/org/openapitools/client/models/Pet.kt
+src/main/kotlin/org/openapitools/client/models/Tag.kt
+src/main/kotlin/org/openapitools/client/models/User.kt
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator/VERSION b/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator/VERSION
new file mode 100644
index 0000000000000000000000000000000000000000..ed829dbcddec26785bab1af9a53a84d8ef6f08eb
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/.openapi-generator/VERSION
@@ -0,0 +1 @@
+6.2.1-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/README.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..e3f2108bfcdc6405baa8fef22fd5a958e35955bc
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/README.md
@@ -0,0 +1,99 @@
+# org.openapitools.client - Kotlin client library for OpenAPI Petstore
+
+This is a sample server Petstore server. For this sample, you can use the api key `special-key` to test the authorization filters.
+
+## Overview
+This API client was generated by the [OpenAPI Generator](https://openapi-generator.tech) project.  By using the [openapi-spec](https://github.com/OAI/OpenAPI-Specification) from a remote server, you can easily generate an API client.
+
+- API version: 1.0.0
+- Package version: 
+- Build package: org.openapitools.codegen.languages.KotlinClientCodegen
+
+## Requires
+
+* Kotlin 1.6.10
+* Gradle 7.5
+
+## Build
+
+First, create the gradle wrapper script:
+
+```
+gradle wrapper
+```
+
+Then, run:
+
+```
+./gradlew check assemble
+```
+
+This runs all tests and packages the library.
+
+## Features/Implementation Notes
+
+* Supports JSON inputs/outputs, File inputs, and Form inputs.
+* Supports collection formats for query parameters: csv, tsv, ssv, pipes.
+* Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.
+* Implementation of ApiClient is intended to reduce method counts, specifically to benefit Android targets.
+
+<a name="documentation-for-api-endpoints"></a>
+## Documentation for API Endpoints
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*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
+*StoreApi* | [**deleteOrder**](docs/StoreApi.md#deleteorder) | **DELETE** /store/order/{orderId} | 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/{orderId} | 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
+
+
+<a name="documentation-for-models"></a>
+## Documentation for Models
+
+ - [org.openapitools.client.models.Category](docs/Category.md)
+ - [org.openapitools.client.models.ModelApiResponse](docs/ModelApiResponse.md)
+ - [org.openapitools.client.models.Order](docs/Order.md)
+ - [org.openapitools.client.models.Pet](docs/Pet.md)
+ - [org.openapitools.client.models.Tag](docs/Tag.md)
+ - [org.openapitools.client.models.User](docs/User.md)
+
+
+<a name="documentation-for-authorization"></a>
+## Documentation for Authorization
+
+<a name="api_key"></a>
+### api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+<a name="petstore_auth"></a>
+### 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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/build.gradle b/samples/client/petstore/kotlin-jvm-vertx-moshi/build.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..ec3e077d4199564ac86869d818a31ca1fa5964f5
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/build.gradle
@@ -0,0 +1,41 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+    gradleVersion = '7.5'
+    distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+    ext.kotlin_version = '1.6.10'
+    ext.vertx_version = "4.3.3"
+
+    repositories {
+        maven { url "https://repo1.maven.org/maven2" }
+    }
+    dependencies {
+        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+    }
+}
+
+apply plugin: 'kotlin'
+
+repositories {
+    maven { url "https://repo1.maven.org/maven2" }
+}
+
+test {
+    useJUnitPlatform()
+}
+
+dependencies {
+    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+    implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+    implementation "com.squareup.moshi:moshi-kotlin:1.13.0"
+    implementation "com.squareup.moshi:moshi-adapters:1.13.0"
+    testImplementation "io.kotlintest:kotlintest-runner-junit5:3.4.2"
+    implementation "io.vertx:vertx-web-client:$vertx_version"
+    implementation "io.vertx:vertx-core:$vertx_version"
+    implementation "io.vertx:vertx-lang-kotlin:$vertx_version"
+    implementation "io.vertx:vertx-uri-template:$vertx_version"
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/ApiResponse.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/ApiResponse.md
new file mode 100644
index 0000000000000000000000000000000000000000..12f08d5cdef0f54957138c36e067bd0dfa5d05ed
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+
+# ModelApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **kotlin.Int** |  |  [optional]
+**type** | **kotlin.String** |  |  [optional]
+**message** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Category.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Category.md
new file mode 100644
index 0000000000000000000000000000000000000000..2c28a670fc79d57aeea821eb2431722d8afe6c7b
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Category.md
@@ -0,0 +1,11 @@
+
+# Category
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Order.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Order.md
new file mode 100644
index 0000000000000000000000000000000000000000..94ab0d537e54b3c0097a8e498be0b0ee9785f241
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Order.md
@@ -0,0 +1,22 @@
+
+# Order
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**petId** | **kotlin.Long** |  |  [optional]
+**quantity** | **kotlin.Int** |  |  [optional]
+**shipDate** | [**java.time.OffsetDateTime**](java.time.OffsetDateTime.md) |  |  [optional]
+**status** | [**inline**](#Status) | Order Status |  [optional]
+**complete** | **kotlin.Boolean** |  |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | placed, approved, delivered
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Pet.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Pet.md
new file mode 100644
index 0000000000000000000000000000000000000000..bc3dd89718f097ab02440cb721ea2ffeeb875910
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Pet.md
@@ -0,0 +1,22 @@
+
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** |  | 
+**photoUrls** | **kotlin.collections.List&lt;kotlin.String&gt;** |  | 
+**id** | **kotlin.Long** |  |  [optional]
+**category** | [**Category**](Category.md) |  |  [optional]
+**tags** | [**kotlin.collections.List&lt;Tag&gt;**](Tag.md) |  |  [optional]
+**status** | [**inline**](#Status) | pet status in the store |  [optional]
+
+
+<a name="Status"></a>
+## Enum: status
+Name | Value
+---- | -----
+status | available, pending, sold
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/PetApi.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/PetApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..6962f148b5964309825f62a01b3b660b5f1d8427
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/PetApi.md
@@ -0,0 +1,417 @@
+# PetApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="addPet"></a>
+# **addPet**
+> Pet addPet(pet)
+
+Add a new pet to the store
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.addPet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#addPet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#addPet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="deletePet"></a>
+# **deletePet**
+> deletePet(petId, apiKey)
+
+Deletes a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | Pet id to delete
+val apiKey : kotlin.String = apiKey_example // kotlin.String | 
+try {
+    apiInstance.deletePet(petId, apiKey)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#deletePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#deletePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| Pet id to delete |
+ **apiKey** | **kotlin.String**|  | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="findPetsByStatus"></a>
+# **findPetsByStatus**
+> kotlin.collections.List&lt;Pet&gt; findPetsByStatus(status)
+
+Finds Pets by status
+
+Multiple status values can be provided with comma separated strings
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val status : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Status values that need to be considered for filter
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByStatus(status)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByStatus")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **status** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="findPetsByTags"></a>
+# **findPetsByTags**
+> kotlin.collections.List&lt;Pet&gt; findPetsByTags(tags)
+
+Finds Pets by tags
+
+Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val tags : kotlin.collections.List<kotlin.String> =  // kotlin.collections.List<kotlin.String> | Tags to filter by
+try {
+    val result : kotlin.collections.List<Pet> = apiInstance.findPetsByTags(tags)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#findPetsByTags")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **tags** | [**kotlin.collections.List&lt;kotlin.String&gt;**](kotlin.String.md)| Tags to filter by |
+
+### Return type
+
+[**kotlin.collections.List&lt;Pet&gt;**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="getPetById"></a>
+# **getPetById**
+> Pet getPetById(petId)
+
+Find pet by ID
+
+Returns a single pet
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to return
+try {
+    val result : Pet = apiInstance.getPetById(petId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#getPetById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#getPetById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to return |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="updatePet"></a>
+# **updatePet**
+> Pet updatePet(pet)
+
+Update an existing pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val pet : Pet =  // Pet | Pet object that needs to be added to the store
+try {
+    val result : Pet = apiInstance.updatePet(pet)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePet")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePet")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store |
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: application/xml, application/json
+
+<a name="updatePetWithForm"></a>
+# **updatePetWithForm**
+> updatePetWithForm(petId, name, status)
+
+Updates a pet in the store with form data
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be updated
+val name : kotlin.String = name_example // kotlin.String | Updated name of the pet
+val status : kotlin.String = status_example // kotlin.String | Updated status of the pet
+try {
+    apiInstance.updatePetWithForm(petId, name, status)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#updatePetWithForm")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet that needs to be updated |
+ **name** | **kotlin.String**| Updated name of the pet | [optional]
+ **status** | **kotlin.String**| Updated status of the pet | [optional]
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: Not defined
+
+<a name="uploadFile"></a>
+# **uploadFile**
+> ModelApiResponse uploadFile(petId, additionalMetadata, file)
+
+uploads an image
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = PetApi()
+val petId : kotlin.Long = 789 // kotlin.Long | ID of pet to update
+val additionalMetadata : kotlin.String = additionalMetadata_example // kotlin.String | Additional data to pass to server
+val file : java.io.File = BINARY_DATA_HERE // java.io.File | file to upload
+try {
+    val result : ModelApiResponse = apiInstance.uploadFile(petId, additionalMetadata, file)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling PetApi#uploadFile")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **petId** | **kotlin.Long**| ID of pet to update |
+ **additionalMetadata** | **kotlin.String**| Additional data to pass to server | [optional]
+ **file** | **java.io.File**| file to upload | [optional]
+
+### Return type
+
+[**ModelApiResponse**](ModelApiResponse.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+    ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/StoreApi.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/StoreApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..68fbd1fecf9c4068cb10c80fed80c14a8b05492c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/StoreApi.md
@@ -0,0 +1,198 @@
+# StoreApi
+
+All URIs are relative to *http://petstore.swagger.io/v2*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**deleteOrder**](StoreApi.md#deleteOrder) | **DELETE** /store/order/{orderId} | Delete purchase order by ID
+[**getInventory**](StoreApi.md#getInventory) | **GET** /store/inventory | Returns pet inventories by status
+[**getOrderById**](StoreApi.md#getOrderById) | **GET** /store/order/{orderId} | Find purchase order by ID
+[**placeOrder**](StoreApi.md#placeOrder) | **POST** /store/order | Place an order for a pet
+
+
+<a name="deleteOrder"></a>
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.String = orderId_example // kotlin.String | ID of the order that needs to be deleted
+try {
+    apiInstance.deleteOrder(orderId)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#deleteOrder")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="getInventory"></a>
+# **getInventory**
+> kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt; getInventory()
+
+Returns pet inventories by status
+
+Returns a map of status codes to quantities
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+try {
+    val result : kotlin.collections.Map<kotlin.String, kotlin.Int> = apiInstance.getInventory()
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getInventory")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**kotlin.collections.Map&lt;kotlin.String, kotlin.Int&gt;**
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+<a name="getOrderById"></a>
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val orderId : kotlin.Long = 789 // kotlin.Long | ID of pet that needs to be fetched
+try {
+    val result : Order = apiInstance.getOrderById(orderId)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#getOrderById")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **orderId** | **kotlin.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
+
+<a name="placeOrder"></a>
+# **placeOrder**
+> Order placeOrder(order)
+
+Place an order for a pet
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = StoreApi()
+val order : Order =  // Order | order placed for purchasing the pet
+try {
+    val result : Order = apiInstance.placeOrder(order)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling StoreApi#placeOrder")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling StoreApi#placeOrder")
+    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
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Tag.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Tag.md
new file mode 100644
index 0000000000000000000000000000000000000000..60ce1bcdbad3bc5b5e7512805f0ae2ec80e07923
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/Tag.md
@@ -0,0 +1,11 @@
+
+# Tag
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**name** | **kotlin.String** |  |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/User.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/User.md
new file mode 100644
index 0000000000000000000000000000000000000000..e801729b5ed16ea867cb66ea851b3fef36d9599c
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/User.md
@@ -0,0 +1,17 @@
+
+# User
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **kotlin.Long** |  |  [optional]
+**username** | **kotlin.String** |  |  [optional]
+**firstName** | **kotlin.String** |  |  [optional]
+**lastName** | **kotlin.String** |  |  [optional]
+**email** | **kotlin.String** |  |  [optional]
+**password** | **kotlin.String** |  |  [optional]
+**phone** | **kotlin.String** |  |  [optional]
+**userStatus** | **kotlin.Int** | User Status |  [optional]
+
+
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/UserApi.md b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/UserApi.md
new file mode 100644
index 0000000000000000000000000000000000000000..e674269be5eeefb4da7603c8a7ddce2d3e24703a
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/docs/UserApi.md
@@ -0,0 +1,404 @@
+# UserApi
+
+All URIs are relative to *http://petstore.swagger.io/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
+
+
+<a name="createUser"></a>
+# **createUser**
+> createUser(user)
+
+Create user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : User =  // User | Created user object
+try {
+    apiInstance.createUser(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**User**](User.md)| Created user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithArrayInput"></a>
+# **createUsersWithArrayInput**
+> createUsersWithArrayInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithArrayInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithArrayInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="createUsersWithListInput"></a>
+# **createUsersWithListInput**
+> createUsersWithListInput(user)
+
+Creates list of users with given input array
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val user : kotlin.collections.List<User> =  // kotlin.collections.List<User> | List of user object
+try {
+    apiInstance.createUsersWithListInput(user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#createUsersWithListInput")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **user** | [**kotlin.collections.List&lt;User&gt;**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+<a name="deleteUser"></a>
+# **deleteUser**
+> deleteUser(username)
+
+Delete user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be deleted
+try {
+    apiInstance.deleteUser(username)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#deleteUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The name that needs to be deleted |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="getUserByName"></a>
+# **getUserByName**
+> User getUserByName(username)
+
+Get user by user name
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The name that needs to be fetched. Use user1 for testing.
+try {
+    val result : User = apiInstance.getUserByName(username)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#getUserByName")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.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
+
+<a name="loginUser"></a>
+# **loginUser**
+> kotlin.String loginUser(username, password)
+
+Logs user into the system
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | The user name for login
+val password : kotlin.String = password_example // kotlin.String | The password for login in clear text
+try {
+    val result : kotlin.String = apiInstance.loginUser(username, password)
+    println(result)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#loginUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#loginUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| The user name for login |
+ **password** | **kotlin.String**| The password for login in clear text |
+
+### Return type
+
+**kotlin.String**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+<a name="logoutUser"></a>
+# **logoutUser**
+> logoutUser()
+
+Logs out current logged in user session
+
+
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+try {
+    apiInstance.logoutUser()
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#logoutUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+<a name="updateUser"></a>
+# **updateUser**
+> updateUser(username, user)
+
+Updated user
+
+This can only be done by the logged in user.
+
+### Example
+```kotlin
+// Import classes:
+//import org.openapitools.client.infrastructure.*
+//import org.openapitools.client.models.*
+
+val apiInstance = UserApi()
+val username : kotlin.String = username_example // kotlin.String | name that need to be deleted
+val user : User =  // User | Updated user object
+try {
+    apiInstance.updateUser(username, user)
+} catch (e: ClientException) {
+    println("4xx response calling UserApi#updateUser")
+    e.printStackTrace()
+} catch (e: ServerException) {
+    println("5xx response calling UserApi#updateUser")
+    e.printStackTrace()
+}
+```
+
+### Parameters
+
+Name | Type | Description  | Notes
+------------- | ------------- | ------------- | -------------
+ **username** | **kotlin.String**| name that need to be deleted |
+ **user** | [**User**](User.md)| Updated user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure api_key:
+    ApiClient.apiKey["api_key"] = ""
+    ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.jar b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000000000000000000000000000000000000..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f
Binary files /dev/null and b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.properties b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000000000000000000000000000000000000..8cf6eb5ad222e3e69fa9b1a30a7bd86f4498c8da
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew
new file mode 100644
index 0000000000000000000000000000000000000000..4f906e0c811fc9e230eb44819f509cd0627f2600
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew
@@ -0,0 +1,185 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or 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 UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# 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"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+    echo "$*"
+}
+
+die () {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# 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
+    ;;
+  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"
+    which java >/dev/null 2>&1 || 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
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=`expr $i + 1`
+    done
+    case $i in
+        0) set -- ;;
+        1) set -- "$args0" ;;
+        2) set -- "$args0" "$args1" ;;
+        3) set -- "$args0" "$args1" "$args2" ;;
+        4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Escape application args
+save () {
+    for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+    echo " "
+}
+APP_ARGS=`save "$@"`
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+exec "$JAVACMD" "$@"
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew.bat b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew.bat
new file mode 100644
index 0000000000000000000000000000000000000000..107acd32c4e687021ef32db511e8a206129b88ec
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/gradlew.bat
@@ -0,0 +1,89 @@
+@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=.
+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%" == "0" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto execute
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+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%"=="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!
+if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/settings.gradle b/samples/client/petstore/kotlin-jvm-vertx-moshi/settings.gradle
new file mode 100644
index 0000000000000000000000000000000000000000..555e588800df6572431376691a14382c734a8023
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-petstore-jvm-vertx'
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..639309553524431634ba8e15b34cb4f56cad6d41
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
@@ -0,0 +1,590 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.ModelApiResponse
+import org.openapitools.client.models.Pet
+
+import com.squareup.moshi.Json
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class PetApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun addPet(pet: Pet) : Future<Pet> {
+        return addPetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Add a new pet to the store
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun addPetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deletePet(petId: kotlin.Long, apiKey: kotlin.String? = null) : Future<Unit> {
+        return deletePetWithHttpInfo(petId = petId, apiKey = apiKey).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Deletes a pet
+     * 
+     * @param petId Pet id to delete
+     * @param apiKey  (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deletePetWithHttpInfo(petId: kotlin.Long, apiKey: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        apiKey?.apply { request.putHeader("api_key", this.toString())}
+        
+        
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * enum for parameter status
+     */
+     enum class Status_findPetsByStatus(val value: kotlin.String) {
+     @Json(name = "available") available("available"),
+     @Json(name = "pending") pending("pending"),
+     @Json(name = "sold") sold("sold")
+     }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun findPetsByStatus(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByStatusWithHttpInfo(status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by status
+     * Multiple status values can be provided with comma separated strings
+     * @param status Status values that need to be considered for filter
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun findPetsByStatusWithHttpInfo(status: kotlin.collections.List<Status_findPetsByStatus>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByStatus"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        status.let { request.queryParams().add("status", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return kotlin.collections.List<Pet>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTags(tags: kotlin.collections.List<kotlin.String>) : Future<kotlin.collections.List<Pet>> {
+        return findPetsByTagsWithHttpInfo(tags = tags).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.List<Pet>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Finds Pets by tags
+     * Multiple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing.
+     * @param tags Tags to filter by
+     * @return ApiResponse<kotlin.collections.List<Pet>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    @Deprecated(message = "This operation is deprecated.")
+    fun findPetsByTagsWithHttpInfo(tags: kotlin.collections.List<kotlin.String>) : Future<ApiResponse<kotlin.collections.List<Pet>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/findByTags"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        tags.let { request.queryParams().add("tags", toMultiValue(it.toList(), "csv")) }
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.List<Pet>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getPetById(petId: kotlin.Long) : Future<Pet> {
+        return getPetByIdWithHttpInfo(petId = petId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find pet by ID
+     * Returns a single pet
+     * @param petId ID of pet to return
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getPetByIdWithHttpInfo(petId: kotlin.Long) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return Pet
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePet(pet: Pet) : Future<Pet> {
+        return updatePetWithHttpInfo(pet = pet).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Pet
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Update an existing pet
+     * 
+     * @param pet Pet object that needs to be added to the store
+     * @return ApiResponse<Pet?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithHttpInfo(pet: Pet) : Future<ApiResponse<Pet?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/pet"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+                    request.putHeader("Content-Type", "application/xml")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .sendBuffer(responseBody(pet))
+            .map {
+                val apiResponse: ApiResponse<Pet?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String? = null, status: kotlin.String? = null) : Future<Unit> {
+        return updatePetWithFormWithHttpInfo(petId = petId, name = name, status = status).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updates a pet in the store with form data
+     * 
+     * @param petId ID of pet that needs to be updated
+     * @param name Updated name of the pet (optional)
+     * @param status Updated status of the pet (optional)
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updatePetWithFormWithHttpInfo(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "application/x-www-form-urlencoded")
+        
+        
+        
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        name?.let { form.add("name", name) }
+        status?.let { form.add("status", status) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ModelApiResponse
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String? = null, file: java.io.File? = null) : Future<ModelApiResponse> {
+        return uploadFileWithHttpInfo(petId = petId, additionalMetadata = additionalMetadata, file = file).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as ModelApiResponse
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * uploads an image
+     * 
+     * @param petId ID of pet to update
+     * @param additionalMetadata Additional data to pass to server (optional)
+     * @param file file to upload (optional)
+     * @return ApiResponse<ModelApiResponse?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun uploadFileWithHttpInfo(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : Future<ApiResponse<ModelApiResponse?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/pet/{petId}/uploadImage".replace("{"+"petId"+"}", encodeURIComponent(petId.toString()))))
+
+        request.putHeader("Content-Type", "multipart/form-data")
+        
+        
+        request.putHeader("Accept", "application/json")
+
+        val form = io.vertx.core.MultiMap.caseInsensitiveMultiMap();
+        additionalMetadata?.let { form.add("additionalMetadata", additionalMetadata) }
+        file?.let { form.add("file", file.toString()) }
+
+
+        accessToken?.let { accessToken ->
+            request.bearerTokenAuthentication(accessToken)
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<ModelApiResponse?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.moshi.adapter(T::class.java).toJson(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..451a1adb48fd7c40cad9019bf5dcc0b41d5d5395
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
@@ -0,0 +1,291 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.Order
+
+import com.squareup.moshi.Json
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class StoreApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteOrder(orderId: kotlin.String) : Future<Unit> {
+        return deleteOrderWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete purchase order by ID
+     * For valid response try integer IDs with value &lt; 1000. Anything above 1000 or nonintegers will generate API errors
+     * @param orderId ID of the order that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteOrderWithHttpInfo(orderId: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return kotlin.collections.Map<kotlin.String, kotlin.Int>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getInventory() : Future<kotlin.collections.Map<kotlin.String, kotlin.Int>> {
+        return getInventoryWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.Map<kotlin.String, kotlin.Int>
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Returns pet inventories by status
+     * Returns a map of status codes to quantities
+     * @return ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getInventoryWithHttpInfo() : Future<ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/inventory"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/json")
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.collections.Map<kotlin.String, kotlin.Int>?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getOrderById(orderId: kotlin.Long) : Future<Order> {
+        return getOrderByIdWithHttpInfo(orderId = orderId).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Find purchase order by ID
+     * For valid response try integer IDs with value &lt;&#x3D; 5 or &gt; 10. Other values will generated exceptions
+     * @param orderId ID of pet that needs to be fetched
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getOrderByIdWithHttpInfo(orderId: kotlin.Long) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/store/order/{orderId}".replace("{"+"orderId"+"}", encodeURIComponent(orderId.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return Order
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun placeOrder(order: Order) : Future<Order> {
+        return placeOrderWithHttpInfo(order = order).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as Order
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Place an order for a pet
+     * 
+     * @param order order placed for purchasing the pet
+     * @return ApiResponse<Order?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun placeOrderWithHttpInfo(order: Order) : Future<ApiResponse<Order?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/store/order"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .sendBuffer(responseBody(order))
+            .map {
+                val apiResponse: ApiResponse<Order?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.moshi.adapter(T::class.java).toJson(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3c367b1fa05ec3d8a44474682a3654877360ccc9
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
@@ -0,0 +1,572 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.apis
+
+import java.io.IOException
+
+import org.openapitools.client.models.User
+
+import com.squareup.moshi.Json
+
+import io.vertx.core.Vertx
+import io.vertx.core.http.RequestOptions
+import io.vertx.core.http.HttpMethod
+import io.vertx.core.buffer.Buffer
+import io.vertx.core.Future
+import io.vertx.ext.web.client.WebClient
+import io.vertx.uritemplate.UriTemplate
+
+
+import org.openapitools.client.infrastructure.*
+
+@Suppress ("UNUSED")
+class UserApi(basePath: kotlin.String = ApiClient.defaultBasePath, accessToken: String? = null, apiKey: MutableMap<String, String> = mutableMapOf(), apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), username: String? = null, password: String? = null, vertx: Vertx): ApiClient(basePath, accessToken, apiKey, apiKeyPrefix, username, password, vertx) {
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUser(user: User) : Future<Unit> {
+        return createUserWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Create user
+     * This can only be done by the logged in user.
+     * @param user Created user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUserWithHttpInfo(user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithArrayInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithArrayInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithArrayInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithArray"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun createUsersWithListInput(user: kotlin.collections.List<User>) : Future<Unit> {
+        return createUsersWithListInputWithHttpInfo(user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Creates list of users with given input array
+     * 
+     * @param user List of user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun createUsersWithListInputWithHttpInfo(user: kotlin.collections.List<User>) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.POST, UriTemplate.of("$basePath/user/createWithList"))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun deleteUser(username: kotlin.String) : Future<Unit> {
+        return deleteUserWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Delete user
+     * This can only be done by the logged in user.
+     * @param username The name that needs to be deleted
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun deleteUserWithHttpInfo(username: kotlin.String) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.DELETE, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return User
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun getUserByName(username: kotlin.String) : Future<User> {
+        return getUserByNameWithHttpInfo(username = username).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as User
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Get user by user name
+     * 
+     * @param username The name that needs to be fetched. Use user1 for testing.
+     * @return ApiResponse<User?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun getUserByNameWithHttpInfo(username: kotlin.String) : Future<ApiResponse<User?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<User?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return kotlin.String
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun loginUser(username: kotlin.String, password: kotlin.String) : Future<kotlin.String> {
+        return loginUserWithHttpInfo(username = username, password = password).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.String
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs user into the system
+     * 
+     * @param username The user name for login
+     * @param password The password for login in clear text
+     * @return ApiResponse<kotlin.String?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Suppress("UNCHECKED_CAST")
+    @Throws(IllegalStateException::class, IOException::class)
+    fun loginUserWithHttpInfo(username: kotlin.String, password: kotlin.String) : Future<ApiResponse<kotlin.String?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/login"))
+
+        
+        
+        
+        request.putHeader("Accept", "application/xml, application/json")
+
+
+        username.let { request.queryParams().add("username", listOf(it.toString())) }
+        password.let { request.queryParams().add("password", listOf(it.toString())) }
+
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<kotlin.String?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun logoutUser() : Future<Unit> {
+        return logoutUserWithHttpInfo().map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Logs out current logged in user session
+     * 
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun logoutUserWithHttpInfo() : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.GET, UriTemplate.of("$basePath/user/logout"))
+
+        
+        
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .send()
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return void
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     * @throws UnsupportedOperationException If the API returns an informational or redirection response
+     * @throws ClientException If the API returns a client error response
+     * @throws ServerException If the API returns a server error response
+     */
+    @Throws(IllegalStateException::class, IOException::class, UnsupportedOperationException::class, ClientException::class, ServerException::class)
+    fun updateUser(username: kotlin.String, user: User) : Future<Unit> {
+        return updateUserWithHttpInfo(username = username, user = user).map { localVarResponse ->
+            when (localVarResponse.responseType) {
+                ResponseType.Success -> Unit
+                ResponseType.Informational -> throw UnsupportedOperationException("Client does not support Informational responses.")
+                ResponseType.Redirection -> throw UnsupportedOperationException("Client does not support Redirection responses.")
+                ResponseType.ClientError -> {
+                    val localVarError = localVarResponse as ClientError<*>
+                    throw ClientException("Client error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+                ResponseType.ServerError -> {
+                    val localVarError = localVarResponse as ServerError<*>
+                    throw ServerException("Server error : ${localVarError.statusCode} ${localVarError.message.orEmpty()}", localVarError.statusCode, localVarResponse)
+                }
+            }
+        }
+    }
+
+    /**
+     * Updated user
+     * This can only be done by the logged in user.
+     * @param username name that need to be deleted
+     * @param user Updated user object
+     * @return ApiResponse<Unit?>
+     * @throws IllegalStateException If the request is not correctly configured
+     * @throws IOException Rethrows the OkHttp execute method exception
+     */
+    @Throws(IllegalStateException::class, IOException::class)
+    fun updateUserWithHttpInfo(username: kotlin.String, user: User) : Future<ApiResponse<Unit?>> {
+        val vertxClient = WebClient.create(vertx)
+        val request = vertxClient.requestAbs(HttpMethod.PUT, UriTemplate.of("$basePath/user/{username}".replace("{"+"username"+"}", encodeURIComponent(username.toString()))))
+
+        
+        
+        
+                    request.putHeader("Content-Type", "application/json")
+        
+        
+
+
+
+        if (apiKey["api_key"] != null) {
+            if (apiKeyPrefix["api_key"] != null) {
+                request.putHeader("api_key", apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!)
+            } else {
+                request.putHeader("api_key", apiKey["api_key"]!!)
+            }
+        }
+
+        return request
+            .sendBuffer(responseBody(user))
+            .map {
+                val apiResponse: ApiResponse<Unit?> = handleResponse(it)
+                apiResponse
+            }
+    }
+
+
+    private inline fun <reified T: Any?> responseBody(body: T): Buffer {
+        return Buffer.buffer(Serializer.moshi.adapter(T::class.java).toJson(body))
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ef7a8f1e1a625f7efdbea17077de86da8e09f805
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+typealias MultiValueMap = MutableMap<String,List<String>>
+
+fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
+    "csv" -> ","
+    "tsv" -> "\t"
+    "pipe" -> "|"
+    "space" -> " "
+    else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun <T : Any?> toMultiValue(items: Array<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+        = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun <T : Any?> toMultiValue(items: Iterable<T>, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List<String> {
+    return when(collectionFormat) {
+        "multi" -> items.map(map)
+        else -> listOf(items.joinToString(separator = collectionDelimiter(collectionFormat), transform = map))
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ec5e0ac095e8b5dbffe40aab1e9e1b2e4bb88aa7
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -0,0 +1,85 @@
+package org.openapitools.client.infrastructure
+
+import io.vertx.core.Vertx
+import io.vertx.core.buffer.Buffer
+import java.nio.charset.StandardCharsets
+
+open class ApiClient(val basePath: kotlin.String = defaultBasePath, val accessToken: String? = null, val apiKey: MutableMap<String, String> = mutableMapOf(), val apiKeyPrefix: MutableMap<String, String> = mutableMapOf(), var username: String? = null, var password: String? = null, val vertx: Vertx) {
+    companion object {
+        const val baseUrlKey = "org.openapitools.client.baseUrl"
+
+        @JvmStatic
+        val defaultBasePath: String by lazy {
+            System.getProperties().getProperty(baseUrlKey, "http://petstore.swagger.io/v2")
+        }
+    }
+
+    protected inline fun <reified T: Any?> handleResponse(response: io.vertx.ext.web.client.HttpResponse<Buffer>): ApiResponse<T?> {
+        val code = response.statusCode()
+        val headers = response.headers().associate { it.key to listOf(it.value) }
+        val contentType = headers["Content-Type"]?.firstOrNull()?.substringBefore(";")?.lowercase(java.util.Locale.getDefault())
+
+        return when (code) {
+            in 100..199 -> Informational(
+                response.statusMessage(),
+                code,
+                headers
+            )
+            in 200 .. 299 -> Success(
+                responseBody<T>(response.body(), contentType),
+                code,
+                headers
+            )
+            in 300..399 -> Redirection(
+                code,
+                headers
+            )
+            in 400..499 -> ClientError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+            else -> ServerError(
+                response.statusMessage(),
+                response.bodyAsString(),
+                code,
+                headers
+            )
+        }
+    }
+
+    protected inline fun <reified T: Any?> responseBody(body: Buffer?, mediaType: String? = "application/json"): T? {
+        body ?: return null
+
+        val bodyContent = String(body.bytes, StandardCharsets.UTF_8)
+        if (bodyContent.isEmpty()) {
+            return null
+        }
+
+        return when {
+            mediaType==null || (mediaType.startsWith("application/") && mediaType.endsWith("json")) ->
+                Serializer.moshi.adapter(T::class.java).fromJson(bodyContent)
+            else ->  throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+        }
+    }
+
+    protected fun encodeURIComponent(parameter: String): String {
+        return try {
+            java.net.URLEncoder.encode(parameter, java.nio.charset.StandardCharsets.UTF_8.name())
+        } catch (e: java.io.UnsupportedEncodingException) {
+            parameter
+        }
+    }
+
+    protected inline fun <reified T: Any> parseDateToQueryString(value : T): String {
+        /*
+        .replace("\"", "") converts the json object string to an actual string for the query parameter.
+        The moshi or gson adapter allows a more generic solution instead of trying to use a native
+        formatter. It also easily allows to provide a simple way to define a custom date format pattern
+        inside a gson/moshi adapter.
+        */
+        return Serializer.moshi.adapter(T::class.java).toJson(value).replace("\"", "")
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..cf2cfaa95d916ed0c9087bd6a1e0eef970c7ac7d
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ApiResponse.kt
@@ -0,0 +1,43 @@
+package org.openapitools.client.infrastructure
+
+enum class ResponseType {
+    Success, Informational, Redirection, ClientError, ServerError
+}
+
+interface Response
+
+abstract class ApiResponse<T>(val responseType: ResponseType): Response {
+    abstract val statusCode: Int
+    abstract val headers: Map<String,List<String>>
+}
+
+class Success<T>(
+    val data: T,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+): ApiResponse<T>(ResponseType.Success)
+
+class Informational<T>(
+    val statusText: String,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Informational)
+
+class Redirection<T>(
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.Redirection)
+
+class ClientError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>> = mapOf()
+) : ApiResponse<T>(ResponseType.ClientError)
+
+class ServerError<T>(
+    val message: String? = null,
+    val body: Any? = null,
+    override val statusCode: Int = -1,
+    override val headers: Map<String, List<String>>
+): ApiResponse<T>(ResponseType.ServerError)
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..064b57fc6b8256d10dd4016318160d04b2c5aff6
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigDecimalAdapter.kt
@@ -0,0 +1,17 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.math.BigDecimal
+
+class BigDecimalAdapter {
+    @ToJson
+    fun toJson(value: BigDecimal): String {
+        return value.toPlainString()
+    }
+
+    @FromJson
+    fun fromJson(value: String): BigDecimal {
+        return BigDecimal(value)
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7df6057b4503a898f0a912f74f1243c01530c1c4
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/BigIntegerAdapter.kt
@@ -0,0 +1,17 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.math.BigInteger
+
+class BigIntegerAdapter {
+    @ToJson
+    fun toJson(value: BigInteger): String {
+        return value.toString()
+    }
+
+    @FromJson
+    fun fromJson(value: String): BigInteger {
+        return BigInteger(value)
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..ff5e2a81ee8ce2677c90a56384c165450f0c5b18
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
@@ -0,0 +1,12 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+
+class ByteArrayAdapter {
+    @ToJson
+    fun toJson(data: ByteArray): String = String(data)
+
+    @FromJson
+    fun fromJson(data: String): ByteArray = data.toByteArray()
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b5310e71f13c7e7fb874be998af37dd424d9cd11
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
@@ -0,0 +1,18 @@
+@file:Suppress("unused")
+package org.openapitools.client.infrastructure
+
+import java.lang.RuntimeException
+
+open class ClientException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 123L
+    }
+}
+
+open class ServerException(message: kotlin.String? = null, val statusCode: Int = -1, val response: Response? = null) : RuntimeException(message) {
+
+    companion object {
+        private const val serialVersionUID: Long = 456L
+    }
+}
\ No newline at end of file
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b2e1654479a01d0c02930408910cc70d93f16c9d
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
@@ -0,0 +1,19 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
+
+class LocalDateAdapter {
+    @ToJson
+    fun toJson(value: LocalDate): String {
+        return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
+    }
+
+    @FromJson
+    fun fromJson(value: String): LocalDate {
+        return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE)
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e082db94811d386498db8b1cd56cf58af82bad56
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
@@ -0,0 +1,19 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.time.LocalDateTime
+import java.time.format.DateTimeFormatter
+
+class LocalDateTimeAdapter {
+    @ToJson
+    fun toJson(value: LocalDateTime): String {
+        return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
+    }
+
+    @FromJson
+    fun fromJson(value: String): LocalDateTime {
+        return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..87437871a31e6ae83dca8573985f7d178ce6f3e6
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
@@ -0,0 +1,19 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.time.OffsetDateTime
+import java.time.format.DateTimeFormatter
+
+class OffsetDateTimeAdapter {
+    @ToJson
+    fun toJson(value: OffsetDateTime): String {
+        return DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(value)
+    }
+
+    @FromJson
+    fun fromJson(value: String): OffsetDateTime {
+        return OffsetDateTime.parse(value, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
+    }
+
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e22592e47d74cc10030224856e53a62cfce69f32
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.Moshi
+import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
+
+object Serializer {
+    @JvmStatic
+    val moshiBuilder: Moshi.Builder = Moshi.Builder()
+        .add(OffsetDateTimeAdapter())
+        .add(LocalDateTimeAdapter())
+        .add(LocalDateAdapter())
+        .add(UUIDAdapter())
+        .add(ByteArrayAdapter())
+        .add(URIAdapter())
+        .add(KotlinJsonAdapterFactory())
+        .add(BigDecimalAdapter())
+        .add(BigIntegerAdapter())
+
+    @JvmStatic
+    val moshi: Moshi by lazy {
+        moshiBuilder.build()
+    }
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..927522757da988da98a0b4db9e5d264ff7a47984
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/URIAdapter.kt
@@ -0,0 +1,13 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.net.URI
+
+class URIAdapter {
+    @ToJson
+    fun toJson(uri: URI) = uri.toString()
+
+    @FromJson
+    fun fromJson(s: String): URI = URI.create(s)
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7ccf7dc25d2dd273ffc5b4a54f6e779f44706ad5
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
@@ -0,0 +1,13 @@
+package org.openapitools.client.infrastructure
+
+import com.squareup.moshi.FromJson
+import com.squareup.moshi.ToJson
+import java.util.UUID
+
+class UUIDAdapter {
+    @ToJson
+    fun toJson(uuid: UUID) = uuid.toString()
+
+    @FromJson
+    fun fromJson(s: String): UUID = UUID.fromString(s)
+}
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Category.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0ff54370cba904a9fc5a2d6f614921ffd9c20d03
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+
+/**
+ * A category for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Category (
+
+    @Json(name = "id")
+    val id: kotlin.Long? = null,
+
+    @Json(name = "name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
new file mode 100644
index 0000000000000000000000000000000000000000..38be7b7ae1acf44ddb5a25c28c30da8e75bdf8b2
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -0,0 +1,42 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+
+/**
+ * Describes the result of uploading an image resource
+ *
+ * @param code 
+ * @param type 
+ * @param message 
+ */
+
+
+data class ModelApiResponse (
+
+    @Json(name = "code")
+    val code: kotlin.Int? = null,
+
+    @Json(name = "type")
+    val type: kotlin.String? = null,
+
+    @Json(name = "message")
+    val message: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Order.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b205115e886b8fa46ff4879de222356e1857fabf
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -0,0 +1,67 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+
+/**
+ * An order for a pets from the pet store
+ *
+ * @param id 
+ * @param petId 
+ * @param quantity 
+ * @param shipDate 
+ * @param status Order Status
+ * @param complete 
+ */
+
+
+data class Order (
+
+    @Json(name = "id")
+    val id: kotlin.Long? = null,
+
+    @Json(name = "petId")
+    val petId: kotlin.Long? = null,
+
+    @Json(name = "quantity")
+    val quantity: kotlin.Int? = null,
+
+    @Json(name = "shipDate")
+    val shipDate: java.time.OffsetDateTime? = null,
+
+    /* Order Status */
+    @Json(name = "status")
+    val status: Order.Status? = null,
+
+    @Json(name = "complete")
+    val complete: kotlin.Boolean? = false
+
+) {
+
+    /**
+     * Order Status
+     *
+     * Values: placed,approved,delivered
+     */
+    enum class Status(val value: kotlin.String) {
+        @Json(name = "placed") placed("placed"),
+        @Json(name = "approved") approved("approved"),
+        @Json(name = "delivered") delivered("delivered");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Pet.kt
new file mode 100644
index 0000000000000000000000000000000000000000..46ba1951a02b00e0d172abe3b4c72441487ec5ff
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -0,0 +1,70 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+import org.openapitools.client.models.Category
+import org.openapitools.client.models.Tag
+
+import com.squareup.moshi.Json
+
+/**
+ * A pet for sale in the pet store
+ *
+ * @param name 
+ * @param photoUrls 
+ * @param id 
+ * @param category 
+ * @param tags 
+ * @param status pet status in the store
+ */
+
+
+data class Pet (
+
+    @Json(name = "name")
+    val name: kotlin.String,
+
+    @Json(name = "photoUrls")
+    val photoUrls: kotlin.collections.List<kotlin.String>,
+
+    @Json(name = "id")
+    val id: kotlin.Long? = null,
+
+    @Json(name = "category")
+    val category: Category? = null,
+
+    @Json(name = "tags")
+    val tags: kotlin.collections.List<Tag>? = null,
+
+    /* pet status in the store */
+    @Json(name = "status")
+    @Deprecated(message = "This property is deprecated.")
+    val status: Pet.Status? = null
+
+) {
+
+    /**
+     * pet status in the store
+     *
+     * Values: available,pending,sold
+     */
+    enum class Status(val value: kotlin.String) {
+        @Json(name = "available") available("available"),
+        @Json(name = "pending") pending("pending"),
+        @Json(name = "sold") sold("sold");
+    }
+}
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Tag.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3c0b4e04c7a81448aff3156f20ed0e7bb3657036
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -0,0 +1,38 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+
+/**
+ * A tag for a pet
+ *
+ * @param id 
+ * @param name 
+ */
+
+
+data class Tag (
+
+    @Json(name = "id")
+    val id: kotlin.Long? = null,
+
+    @Json(name = "name")
+    val name: kotlin.String? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/User.kt
new file mode 100644
index 0000000000000000000000000000000000000000..e8e30f3c3945596a6ecc08930d2859b935f60c76
--- /dev/null
+++ b/samples/client/petstore/kotlin-jvm-vertx-moshi/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -0,0 +1,63 @@
+/**
+ *
+ * Please note:
+ * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * Do not edit this file manually.
+ *
+ */
+
+@file:Suppress(
+    "ArrayInDataClass",
+    "EnumEntryName",
+    "RemoveRedundantQualifierName",
+    "UnusedImport"
+)
+
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+
+/**
+ * A User who is purchasing from the pet store
+ *
+ * @param id 
+ * @param username 
+ * @param firstName 
+ * @param lastName 
+ * @param email 
+ * @param password 
+ * @param phone 
+ * @param userStatus User Status
+ */
+
+
+data class User (
+
+    @Json(name = "id")
+    val id: kotlin.Long? = null,
+
+    @Json(name = "username")
+    val username: kotlin.String? = null,
+
+    @Json(name = "firstName")
+    val firstName: kotlin.String? = null,
+
+    @Json(name = "lastName")
+    val lastName: kotlin.String? = null,
+
+    @Json(name = "email")
+    val email: kotlin.String? = null,
+
+    @Json(name = "password")
+    val password: kotlin.String? = null,
+
+    @Json(name = "phone")
+    val phone: kotlin.String? = null,
+
+    /* User Status */
+    @Json(name = "userStatus")
+    val userStatus: kotlin.Int? = null
+
+)
+
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Category.kt
index c1dcccb58b71b76b5fe75d8f2b58a0456b3ea981..affc2b522f7a3396307e8a079890dbfcb73daf2c 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Category.kt
@@ -27,6 +27,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param name 
  */
 
+
 data class Category (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/ModelApiResponse.kt
index 625e71c9d8cf3198fa501c60f3ea026d71654b84..f5ac0753e580b102658c7ec1394de2d0462deb26 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/ModelApiResponse.kt
@@ -28,6 +28,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @SerializedName("code")
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Order.kt
index a2e6db7f0f3e343ad4d1b3d16dacaaadd814023f..608ac750337a5c8c4f4576f81aee61d143279120 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Order.kt
@@ -31,6 +31,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param complete 
  */
 
+
 data class Order (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Pet.kt
index 03997335052b06123351e2d117b08db9595e9b13..191dd5d0283260ca0f64774efc9f9e55959d584b 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Pet.kt
@@ -33,6 +33,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @SerializedName("name")
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Tag.kt
index 206ba2eb223d79c8fba4d0f36b6de8d471f80ded..f32788176b8ca98b0a33fe391e42eeb082e4d1ff 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/Tag.kt
@@ -27,6 +27,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param name 
  */
 
+
 data class Tag (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/User.kt
index a0d3ee5372396ad01c8a31f5bfc9ab3a59aa2cf2..a18aceca9b2b4eb77c61828f925757293fc48dae 100644
--- a/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-jvm-volley/src/main/java/org/openapitools/client/models/User.kt
@@ -33,6 +33,7 @@ import org.openapitools.client.infrastructure.ITransformForStorage
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @SerializedName("id")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Category.kt
index a1bee507cc6c12f68dbc394b6246ae05542bde08..1706aa826c5b975407659fbe10e4ef09d0085b96 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 7869a8158519316b7ed6b43c961de9f7bc785a0b..977eebbf018c04d6ea9dba91ff79c56ef5de2776 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Order.kt
index 75d6dc52fa7fc2796880a30d700c4cb0ac986fef..61bb63c238a35a97c741bac443f00023953d9442 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 9bace47c424020bd959a42a2c9946763e5e41fc1..1fb3eed12ed7b11cc73558a93a58e9c17f176ab0 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Tag.kt
index d52e127012ac52686e743884265813dbfc640b55..b327508b80dc041863a1644147c5827762fc36f6 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/User.kt
index 5c871725685ca182cbaa0da017416ef819ccbf80..1ed3a745e9f647dbd61a3fce2b1a863732c2be9e 100644
--- a/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-modelMutable/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt
index 3d1ca0a7f25a5d4d81458e79ac05e3f9b81a0e67..27d4828205365846aeff303d79bf0a0a06fcb78a 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.JsonClass
  * @param name 
  */
 @JsonClass(generateAdapter = true)
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 0fbbf5e5e06cf488f61d4dc53e6c3fa6898839bb..c4db7ae9fe4d46f64b5feffce46ed02a2f8e264d 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -27,6 +27,7 @@ import com.squareup.moshi.JsonClass
  * @param message 
  */
 @JsonClass(generateAdapter = true)
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt
index b2d33f85be3694b172e5db278ce42f86858d542c..c5f80932fff458163fee1883889338eebad69f5f 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -30,6 +30,7 @@ import com.squareup.moshi.JsonClass
  * @param complete 
  */
 @JsonClass(generateAdapter = true)
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt
index f7f118762e8acf68df8069cbcc3a8f6e3dc266b4..7d31f52e5cbd07ebd886bb1a6d42ae54d3b06dd4 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -32,6 +32,7 @@ import com.squareup.moshi.JsonClass
  * @param status pet status in the store
  */
 @JsonClass(generateAdapter = true)
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt
index b62aca125b8a2c0e4c72871d2377dc713213c0ca..5f956d87780acf06239223bce287b1d86e236074 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.JsonClass
  * @param name 
  */
 @JsonClass(generateAdapter = true)
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt
index 709983e041accc580e09ff869f5f43e4380ac7ba..3e79d4fa60b7dc6646cb5a99f86660bef159bb8b 100644
--- a/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-moshi-codegen/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -32,6 +32,7 @@ import com.squareup.moshi.JsonClass
  * @param userStatus User Status
  */
 @JsonClass(generateAdapter = true)
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
index cadfa02396d4e0b0a554a90964b6a165afc7c16a..2e16584b4e48aa6d05f7c4d9bc0cc6403e373bed 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Category.kt
@@ -27,6 +27,7 @@ import kotlinx.serialization.encoding.*
  * @param name 
  */
 @Serializable
+
 data class Category (
 
     @SerialName(value = "id") val id: kotlin.Long? = null,
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index babd717df441c48a3efa311c61244fa7e7079e8f..c9c0a490824ba35ec42bac9c40fbe0a6d4bf9898 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -28,6 +28,7 @@ import kotlinx.serialization.encoding.*
  * @param message 
  */
 @Serializable
+
 data class ModelApiResponse (
 
     @SerialName(value = "code") val code: kotlin.Int? = null,
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
index 1fb838bc809131a0654e23c4267c7acdc2c4df2a..0af1287f077073419bcf3c77ba819dabdd2aac04 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Order.kt
@@ -31,6 +31,7 @@ import kotlinx.serialization.encoding.*
  * @param complete 
  */
 @Serializable
+
 data class Order (
 
     @SerialName(value = "id") val id: kotlin.Long? = null,
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
index e9768bd013d3623e8ee7889561f4f791ba6c0f7e..a275dec03d7921bf16fa031426d1ce58ebe1a710 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Pet.kt
@@ -33,6 +33,7 @@ import kotlinx.serialization.encoding.*
  * @param status pet status in the store
  */
 @Serializable
+
 data class Pet (
 
     @SerialName(value = "name") @Required val name: kotlin.String,
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
index d7edf1d61e9382a151248720ebfc115b0fe4bcf2..1bfe2f85978c865ada904d3b172e78a4885dcf45 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/Tag.kt
@@ -27,6 +27,7 @@ import kotlinx.serialization.encoding.*
  * @param name 
  */
 @Serializable
+
 data class Tag (
 
     @SerialName(value = "id") val id: kotlin.Long? = null,
diff --git a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
index 346113de5d54b7c41fef6a40b7e1daf9be4941ed..29413ad2b02c5d9faf5648f8893a9a42eb6f1968 100644
--- a/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-multiplatform/src/commonMain/kotlin/org/openapitools/client/models/User.kt
@@ -33,6 +33,7 @@ import kotlinx.serialization.encoding.*
  * @param userStatus User Status
  */
 @Serializable
+
 data class User (
 
     @SerialName(value = "id") val id: kotlin.Long? = null,
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt
index e6743cfe80cd721aeb7399b9ad1d19c2c0a9b501..0bc27aeeeacd717b14be19afb7a1b2319774f463 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 internal data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 14658f3824aa519093c4e2220740d6d2e98570fa..240217c503861f7083853721e32a5681ad7f8264 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 internal data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt
index 7e42b1669ca2cd45caaef8925de1513f2aaff956..e73667136dcdd7abc1fad13f61f54ef7a4aa1a0a 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 internal data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt
index fd644dee52fa1f4b2a89ee4001a601b9760cbbf4..a213f2a0434885cfdc935708855fd21832f5700e 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 internal data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt
index c5533711021821ec3dcc3dd517c8558a3e58e652..5adffe2fa93dac8dec7997c122852466313450c9 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 internal data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt
index 7cf9457405166dd930e07a819180324ce7cbf6f8..8a9bebb6c2aebc49767415429b966cf6397ee0b8 100644
--- a/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-nonpublic/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 internal data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt
index 7be2ec5ed2380dfad7c2e0fb286ed44f099f264e..f55a19bd9cae3b04e9a911168530c821fc289964 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 109f5f8ad9929ba56657e101026247a73b4f8ab5..5726e9692ca37cafc017d56f298abe9b13879d31 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -27,6 +27,7 @@ import java.io.Serializable
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt
index 959bb76bc519b2dd6a4a4db03530062db2629de4..3397ca42c82955106a756d76a38190efa870755f 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -30,6 +30,7 @@ import java.io.Serializable
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 8e8fa881d3c336974e46b3bb30adabf080ab3828..11b45cbe3f9522bbc9caa615b330479e7ce87ff9 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 41d984658af3473a7004c1ef5fc98b37ff93b78a..690006d55b845a584f3c986c58572523d7f2809d 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt
index 92e10c741ecef3f60b5966c80f8a581bc40b7ef5..7767cb15a24b9f412da04e0656532a2699dd175a 100644
--- a/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-nullable/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
index 36beb0e657d528b774c5fcbea96d076c94166b73..0ff54370cba904a9fc5a2d6f614921ffd9c20d03 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index d9540485eb088b2eeaf8f059bb96e101d2af35ff..38be7b7ae1acf44ddb5a25c28c30da8e75bdf8b2 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
index bde4a0e9ac49dc51500fcc7b731667b8a49b7220..180deb9b31e12f1e2bcda31f47f2a9f306012545 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
index ceaf28a742069b29474c07fff5f9bc45272e9d53..312a8476a2436ec2fbaa9e5514b809919bd995db 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 2086c90cfb4b5c69119590a357609f72f272bfe5..3c0b4e04c7a81448aff3156f20ed0e7bb3657036 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
index 4ea236d7ca2ef1d3f15e7fc3be46c562ce447947..e8e30f3c3945596a6ecc08930d2859b935f60c76 100644
--- a/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-okhttp3/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Category.kt
index d76243ae6841e8cc6063e84f430ca2f10c444c8d..8679742a9c00da66355e80d14548e4f42ca1c003 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -28,6 +28,7 @@ import java.io.Serializable
  * @param name 
  */
 @KSerializable
+
 data class Category (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 3a1cb58e829a64845cae4b6ff5449a7258883918..e2eb431d005525e835e59ed81c2faf7bf36f0168 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -29,6 +29,7 @@ import java.io.Serializable
  * @param message 
  */
 @KSerializable
+
 data class ModelApiResponse (
 
     @SerialName(value = "code")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Order.kt
index 52a7d8b47381e4bafba184723ac0f3dc298bd007..fe9a56759340d6ecc87bd445ed4ea1fba784ce2b 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param complete 
  */
 @KSerializable
+
 data class Order (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Pet.kt
index b0564bd04c873e8dc541e9982f0156a8ffe71fb5..5a6276ac25f45e10ec153bbb342b3a0962622be9 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -34,6 +34,7 @@ import java.io.Serializable
  * @param status pet status in the store
  */
 @KSerializable
+
 data class Pet (
 
     @SerialName(value = "name")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Tag.kt
index b38f0f9adc8576e0d31cc533754aa80bbeaec966..c88920f6fd6b6865ae9195243538d709df865fb4 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -28,6 +28,7 @@ import java.io.Serializable
  * @param name 
  */
 @KSerializable
+
 data class Tag (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/User.kt
index 0b84f270fbb6e8239ab118f15fbab2d7067e9685..e9798c88637f050c13e413cc5e9598227b875fb8 100644
--- a/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-retrofit2-kotlinx_serialization/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -34,6 +34,7 @@ import java.io.Serializable
  * @param userStatus User Status
  */
 @KSerializable
+
 data class User (
 
     @SerialName(value = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Category.kt
index 36beb0e657d528b774c5fcbea96d076c94166b73..0ff54370cba904a9fc5a2d6f614921ffd9c20d03 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index d9540485eb088b2eeaf8f059bb96e101d2af35ff..38be7b7ae1acf44ddb5a25c28c30da8e75bdf8b2 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Order.kt
index d1de6588ca089d541676100a0c428b8d4618e98a..b205115e886b8fa46ff4879de222356e1857fabf 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Pet.kt
index b1d4ea6bf0fbedd7444d790d383c3c78687d21d1..65203c615ba07c89e58e7d23d2b9f56566349f29 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 2086c90cfb4b5c69119590a357609f72f272bfe5..3c0b4e04c7a81448aff3156f20ed0e7bb3657036 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/User.kt
index 4ea236d7ca2ef1d3f15e7fc3be46c562ce447947..e8e30f3c3945596a6ecc08930d2859b935f60c76 100644
--- a/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-retrofit2-rx3/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt
index 36beb0e657d528b774c5fcbea96d076c94166b73..0ff54370cba904a9fc5a2d6f614921ffd9c20d03 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index d9540485eb088b2eeaf8f059bb96e101d2af35ff..38be7b7ae1acf44ddb5a25c28c30da8e75bdf8b2 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt
index d1de6588ca089d541676100a0c428b8d4618e98a..b205115e886b8fa46ff4879de222356e1857fabf 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt
index b1d4ea6bf0fbedd7444d790d383c3c78687d21d1..65203c615ba07c89e58e7d23d2b9f56566349f29 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 2086c90cfb4b5c69119590a357609f72f272bfe5..3c0b4e04c7a81448aff3156f20ed0e7bb3657036 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt
index 4ea236d7ca2ef1d3f15e7fc3be46c562ce447947..e8e30f3c3945596a6ecc08930d2859b935f60c76 100644
--- a/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-retrofit2/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
index 7be2ec5ed2380dfad7c2e0fb286ed44f099f264e..f55a19bd9cae3b04e9a911168530c821fc289964 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 109f5f8ad9929ba56657e101026247a73b4f8ab5..5726e9692ca37cafc017d56f298abe9b13879d31 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -27,6 +27,7 @@ import java.io.Serializable
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
index a8d20ae5db647791cc97765f8ebe1608847e9906..5fe761492ba8fe0c6d4f7e2ec273ea9d866643f2 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -30,6 +30,7 @@ import java.io.Serializable
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 9db9ee6739db51c25f8054653f016fd0e9c94253..52a4711fe8739d5b42e128f78506b990ea8cbc73 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 41d984658af3473a7004c1ef5fc98b37ff93b78a..690006d55b845a584f3c986c58572523d7f2809d 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
index 92e10c741ecef3f60b5966c80f8a581bc40b7ef5..7767cb15a24b9f412da04e0656532a2699dd175a 100644
--- a/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-string/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
index 36beb0e657d528b774c5fcbea96d076c94166b73..0ff54370cba904a9fc5a2d6f614921ffd9c20d03 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index d9540485eb088b2eeaf8f059bb96e101d2af35ff..38be7b7ae1acf44ddb5a25c28c30da8e75bdf8b2 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -26,6 +26,7 @@ import com.squareup.moshi.Json
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
index fece9ea4f6c96cf0773165e6dcfc785e550a98ca..541ff81e0abab4adae5011e300b722a47a9b25db 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -29,6 +29,7 @@ import com.squareup.moshi.Json
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
index b1d4ea6bf0fbedd7444d790d383c3c78687d21d1..65203c615ba07c89e58e7d23d2b9f56566349f29 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 2086c90cfb4b5c69119590a357609f72f272bfe5..3c0b4e04c7a81448aff3156f20ed0e7bb3657036 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -25,6 +25,7 @@ import com.squareup.moshi.Json
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
index 4ea236d7ca2ef1d3f15e7fc3be46c562ce447947..e8e30f3c3945596a6ecc08930d2859b935f60c76 100644
--- a/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin-threetenbp/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -31,6 +31,7 @@ import com.squareup.moshi.Json
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
index 7be2ec5ed2380dfad7c2e0fb286ed44f099f264e..f55a19bd9cae3b04e9a911168530c821fc289964 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Category (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
index 109f5f8ad9929ba56657e101026247a73b4f8ab5..5726e9692ca37cafc017d56f298abe9b13879d31 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/ModelApiResponse.kt
@@ -27,6 +27,7 @@ import java.io.Serializable
  * @param message 
  */
 
+
 data class ModelApiResponse (
 
     @Json(name = "code")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
index 959bb76bc519b2dd6a4a4db03530062db2629de4..3397ca42c82955106a756d76a38190efa870755f 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -30,6 +30,7 @@ import java.io.Serializable
  * @param complete 
  */
 
+
 data class Order (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
index 8e8fa881d3c336974e46b3bb30adabf080ab3828..11b45cbe3f9522bbc9caa615b330479e7ce87ff9 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param status pet status in the store
  */
 
+
 data class Pet (
 
     @Json(name = "name")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
index 41d984658af3473a7004c1ef5fc98b37ff93b78a..690006d55b845a584f3c986c58572523d7f2809d 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -26,6 +26,7 @@ import java.io.Serializable
  * @param name 
  */
 
+
 data class Tag (
 
     @Json(name = "id")
diff --git a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
index 92e10c741ecef3f60b5966c80f8a581bc40b7ef5..7767cb15a24b9f412da04e0656532a2699dd175a 100644
--- a/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
+++ b/samples/client/petstore/kotlin/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -32,6 +32,7 @@ import java.io.Serializable
  * @param userStatus User Status
  */
 
+
 data class User (
 
     @Json(name = "id")