diff --git a/bin/openapi3/kotlin-client-petstore-deprecated.sh b/bin/openapi3/kotlin-client-petstore-deprecated.sh
new file mode 100644
index 00000000000..8062ad9887b
--- /dev/null
+++ b/bin/openapi3/kotlin-client-petstore-deprecated.sh
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+SCRIPT="$0"
+echo "# START SCRIPT: $SCRIPT"
+
+while [ -h "$SCRIPT" ] ; do
+ ls=$(ls -ld "$SCRIPT")
+ link=$(expr "$ls" : '.*-> \(.*\)$')
+ if expr "$link" : '/.*' > /dev/null; then
+ SCRIPT="$link"
+ else
+ SCRIPT=$(dirname "$SCRIPT")/"$link"
+ fi
+done
+
+if [ ! -d "${APP_DIR}" ]; then
+ APP_DIR=$(dirname "$SCRIPT")/..
+ APP_DIR=$(cd "${APP_DIR}"; pwd)
+fi
+
+executable="./modules/openapi-generator-cli/target/openapi-generator-cli.jar"
+
+if [ ! -f "$executable" ]
+then
+ mvn clean package
+fi
+
+export JAVA_OPTS="${JAVA_OPTS} -Xmx1024M -DloggerPath=conf/log4j.properties"
+ags="generate -i modules/openapi-generator/src/test/resources/3_0/petstore-with-depreacted-fields.yaml -t modules/openapi-generator/src/main/resources/kotlin-client -g kotlin --artifact-id kotlin-petstore-deprecated -o samples/openapi3/client/petstore/kotlin-deprecated $@"
+
+echo "Cleaning previously generated files if any from samples/openapi3/client/petstore/kotlin-deprecated"
+rm -rf samples/openapi3/client/petstore/kotlin-deprecated
+
+echo "Generating Kotling client..."
+java $JAVA_OPTS -jar $executable $ags
\ No newline at end of file
diff --git a/bin/openapi3/windows/kotlin-client-deprecated.bat b/bin/openapi3/windows/kotlin-client-deprecated.bat
new file mode 100644
index 00000000000..f12a5178e4e
--- /dev/null
+++ b/bin/openapi3/windows/kotlin-client-deprecated.bat
@@ -0,0 +1,10 @@
+set executable=.\modules\openapi-generator-cli\target\openapi-generator-cli.jar
+
+If Not Exist %executable% (
+ mvn clean package
+)
+
+REM set JAVA_OPTS=%JAVA_OPTS% -Xmx1024M
+set ags=generate -i modules\openapi-generator\src\test\resources\3_0\petstore-with-depreacted-fields.yaml -g kotlin --artifact-id "kotlin-petstore-deprecated" -o samples\openapi3\client\petstore\kotlin-deprecated
+
+java %JAVA_OPTS% -jar %executable% %ags%
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/api.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/api.mustache
index 33c596d0959..bcf58a6d0ca 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/api.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/api.mustache
@@ -37,6 +37,9 @@ import {{packageName}}.infrastructure.toMultiValue
*/{{#returnType}}
@Suppress("UNCHECKED_CAST"){{/returnType}}
@Throws(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ {{#isDeprecated}}
+ @Deprecated(message = "This operation is deprecated.")
+ {{/isDeprecated}}
fun {{operationId}}({{#allParams}}{{{paramName}}}: {{{dataType}}}{{^required}}?{{/required}}{{#hasMore}}, {{/hasMore}}{{/allParams}}) : {{#returnType}}{{{returnType}}}{{#nullableReturnType}}?{{/nullableReturnType}}{{/returnType}}{{^returnType}}Unit{{/returnType}} {
val localVariableBody: kotlin.Any? = {{#hasBodyParam}}{{#bodyParams}}{{{paramName}}}{{/bodyParams}}{{/hasBodyParam}}{{^hasBodyParam}}{{^hasFormParams}}null{{/hasFormParams}}{{#hasFormParams}}mapOf({{#formParams}}"{{{baseName}}}" to {{{paramName}}}{{#hasMore}}, {{/hasMore}}{{/formParams}}){{/hasFormParams}}{{/hasBodyParam}}
val localVariableQuery: MultiValueMap = {{^hasQueryParams}}mutableMapOf()
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 9cdb761fad8..2ae8de79774 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
@@ -38,6 +38,9 @@ import java.io.Serializable
@Parcelize
{{/parcelizeModels}}
{{#multiplatform}}@Serializable{{/multiplatform}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}}
+{{#isDeprecated}}
+@Deprecated(message = "This schema is deprecated.")
+{{/isDeprecated}}
{{#nonPublicApi}}internal {{/nonPublicApi}}{{#discriminator}}interface{{/discriminator}}{{^discriminator}}data class{{/discriminator}} {{classname}}{{^discriminator}} (
{{#allVars}}
{{#required}}{{>data_class_req_var}}{{/required}}{{^required}}{{>data_class_opt_var}}{{/required}}{{^-last}},{{/-last}}
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
index b37f82baf57..e6f66be4cbe 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache
@@ -12,4 +12,7 @@
@JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
{{/jackson}}
{{/multiplatform}}
+ {{#deprecated}}
+ @Deprecated(message = "This property is deprecated.")
+ {{/deprecated}}
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache
index 34b034b1d9c..36c3aa7d0a6 100644
--- a/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache
+++ b/modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache
@@ -12,4 +12,7 @@
@JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
{{/jackson}}
{{/multiplatform}}
+ {{#deprecated}}
+ @Deprecated(message = "This property is deprecated.")
+ {{/deprecated}}
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isListContainer}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isListContainer}}{{^isListContainer}}{{classname}}.{{{nameInCamelCase}}}{{/isListContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}
\ No newline at end of file
diff --git a/modules/openapi-generator/src/test/resources/3_0/petstore-with-depreacted-fields.yaml b/modules/openapi-generator/src/test/resources/3_0/petstore-with-depreacted-fields.yaml
new file mode 100644
index 00000000000..5d89e40df1a
--- /dev/null
+++ b/modules/openapi-generator/src/test/resources/3_0/petstore-with-depreacted-fields.yaml
@@ -0,0 +1,725 @@
+openapi: 3.0.0
+servers:
+ - url: 'http://petstore.swagger.io/v2'
+info:
+ description: >-
+ This is a sample server Petstore server. For this sample, you can use the api key
+ `special-key` to test the authorization filters.
+ version: 1.0.0
+ title: OpenAPI Petstore
+ license:
+ name: Apache-2.0
+ url: 'https://www.apache.org/licenses/LICENSE-2.0.html'
+tags:
+ - name: pet
+ description: Everything about your Pets
+ - name: store
+ description: Access to Petstore orders
+ - name: user
+ description: Operations about user
+paths:
+ /pet:
+ post:
+ tags:
+ - pet
+ summary: Add a new pet to the store
+ description: ''
+ operationId: addPet
+ responses:
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ put:
+ tags:
+ - pet
+ summary: Update an existing pet
+ description: ''
+ operationId: updatePet
+ responses:
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ '405':
+ description: Validation exception
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ $ref: '#/components/requestBodies/Pet'
+ /pet/findByStatus:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by status
+ description: Multiple status values can be provided with comma separated strings
+ operationId: findPetsByStatus
+ parameters:
+ - name: status
+ in: query
+ description: Status values that need to be considered for filter
+ required: true
+ style: form
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ enum:
+ - available
+ - pending
+ - sold
+ default: available
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid status value
+ security:
+ - petstore_auth:
+ - 'read:pets'
+ /pet/findByTags:
+ get:
+ tags:
+ - pet
+ summary: Finds Pets by tags
+ description: >-
+ Multiple tags can be provided with comma separated strings. Use tag1,
+ tag2, tag3 for testing.
+ operationId: findPetsByTags
+ parameters:
+ - name: tags
+ in: query
+ description: Tags to filter by
+ required: true
+ style: form
+ explode: false
+ schema:
+ type: array
+ items:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid tag value
+ security:
+ - petstore_auth:
+ - 'read:pets'
+ deprecated: true
+ '/pet/{petId}':
+ get:
+ tags:
+ - pet
+ summary: Find pet by ID
+ description: Returns a single pet
+ operationId: getPetById
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to return
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Pet not found
+ security:
+ - api_key: []
+ post:
+ tags:
+ - pet
+ summary: Updates a pet in the store with form data
+ description: ''
+ operationId: updatePetWithForm
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet that needs to be updated
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '405':
+ description: Invalid input
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ type: object
+ properties:
+ name:
+ description: Updated name of the pet
+ type: string
+ status:
+ description: Updated status of the pet
+ type: string
+ delete:
+ tags:
+ - pet
+ summary: Deletes a pet
+ description: ''
+ operationId: deletePet
+ parameters:
+ - name: api_key
+ in: header
+ required: false
+ schema:
+ type: string
+ - name: petId
+ in: path
+ description: Pet id to delete
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '400':
+ description: Invalid pet value
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ '/pet/{petId}/uploadImage':
+ post:
+ tags:
+ - pet
+ summary: uploads an image
+ description: ''
+ operationId: uploadFile
+ parameters:
+ - name: petId
+ in: path
+ description: ID of pet to update
+ required: true
+ schema:
+ type: integer
+ format: int64
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ApiResponse'
+ security:
+ - petstore_auth:
+ - 'write:pets'
+ - 'read:pets'
+ requestBody:
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ additionalMetadata:
+ description: Additional data to pass to server
+ type: string
+ file:
+ description: file to upload
+ type: string
+ format: binary
+ /store/inventory:
+ get:
+ tags:
+ - store
+ summary: Returns pet inventories by status
+ description: Returns a map of status codes to quantities
+ operationId: getInventory
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties:
+ type: integer
+ format: int32
+ security:
+ - api_key: []
+ /store/order:
+ post:
+ tags:
+ - store
+ summary: Place an order for a pet
+ description: ''
+ operationId: placeOrder
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ '400':
+ description: Invalid Order
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ description: order placed for purchasing the pet
+ required: true
+ '/store/order/{orderId}':
+ get:
+ tags:
+ - store
+ summary: Find purchase order by ID
+ description: >-
+ For valid response try integer IDs with value <= 5 or > 10. Other values
+ will generated exceptions
+ operationId: getOrderById
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of pet that needs to be fetched
+ required: true
+ schema:
+ type: integer
+ format: int64
+ minimum: 1
+ maximum: 5
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Order'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Order'
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ delete:
+ tags:
+ - store
+ summary: Delete purchase order by ID
+ description: >-
+ For valid response try integer IDs with value < 1000. Anything above
+ 1000 or nonintegers will generate API errors
+ operationId: deleteOrder
+ parameters:
+ - name: orderId
+ in: path
+ description: ID of the order that needs to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid ID supplied
+ '404':
+ description: Order not found
+ /user:
+ post:
+ tags:
+ - user
+ summary: Create user
+ description: This can only be done by the logged in user.
+ operationId: createUser
+ responses:
+ default:
+ description: successful operation
+ security:
+ - auth_cookie: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Created user object
+ required: true
+ /user/createWithArray:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithArrayInput
+ responses:
+ default:
+ description: successful operation
+ security:
+ - auth_cookie: []
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ /user/createWithList:
+ post:
+ tags:
+ - user
+ summary: Creates list of users with given input array
+ description: ''
+ operationId: createUsersWithListInput
+ responses:
+ default:
+ description: successful operation
+ security:
+ - auth_cookie: []
+ requestBody:
+ $ref: '#/components/requestBodies/UserArray'
+ /user/login:
+ get:
+ tags:
+ - user
+ summary: Logs user into the system
+ description: ''
+ operationId: loginUser
+ parameters:
+ - name: username
+ in: query
+ description: The user name for login
+ required: true
+ schema:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ - name: password
+ in: query
+ description: The password for login in clear text
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ headers:
+ Set-Cookie:
+ description: >-
+ Cookie authentication key for use with the `auth_cookie`
+ apiKey authentication.
+ schema:
+ type: string
+ example: AUTH_KEY=abcde12345; Path=/; HttpOnly
+ X-Rate-Limit:
+ description: calls per hour allowed by the user
+ schema:
+ type: integer
+ format: int32
+ X-Expires-After:
+ description: date in UTC when toekn expires
+ schema:
+ type: string
+ format: date-time
+ content:
+ application/xml:
+ schema:
+ type: string
+ application/json:
+ schema:
+ type: string
+ '400':
+ description: Invalid username/password supplied
+ /user/logout:
+ get:
+ tags:
+ - user
+ summary: Logs out current logged in user session
+ description: ''
+ operationId: logoutUser
+ responses:
+ default:
+ description: successful operation
+ security:
+ - auth_cookie: []
+ '/user/{username}':
+ get:
+ tags:
+ - user
+ summary: Get user by user name
+ description: ''
+ operationId: getUserByName
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be fetched. Use user1 for testing.
+ required: true
+ schema:
+ type: string
+ responses:
+ '200':
+ description: successful operation
+ content:
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/User'
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ put:
+ tags:
+ - user
+ summary: Updated user
+ description: This can only be done by the logged in user.
+ operationId: updateUser
+ parameters:
+ - name: username
+ in: path
+ description: name that need to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid user supplied
+ '404':
+ description: User not found
+ security:
+ - auth_cookie: []
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/User'
+ description: Updated user object
+ required: true
+ delete:
+ tags:
+ - user
+ summary: Delete user
+ description: This can only be done by the logged in user.
+ operationId: deleteUser
+ parameters:
+ - name: username
+ in: path
+ description: The name that needs to be deleted
+ required: true
+ schema:
+ type: string
+ responses:
+ '400':
+ description: Invalid username supplied
+ '404':
+ description: User not found
+ security:
+ - auth_cookie: []
+externalDocs:
+ description: Find out more about Swagger
+ url: 'http://swagger.io'
+components:
+ requestBodies:
+ UserArray:
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ $ref: '#/components/schemas/User'
+ description: List of user object
+ required: true
+ Pet:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ application/xml:
+ schema:
+ $ref: '#/components/schemas/Pet'
+ description: Pet object that needs to be added to the store
+ required: true
+ securitySchemes:
+ petstore_auth:
+ type: oauth2
+ flows:
+ implicit:
+ authorizationUrl: 'http://petstore.swagger.io/api/oauth/dialog'
+ scopes:
+ 'write:pets': modify pets in your account
+ 'read:pets': read your pets
+ api_key:
+ type: apiKey
+ name: api_key
+ in: header
+ auth_cookie:
+ type: apiKey
+ name: AUTH_KEY
+ in: cookie
+ schemas:
+ Order:
+ title: Pet Order
+ description: An order for a pets from the pet store
+ type: object
+ deprecated: true
+ properties:
+ id:
+ type: integer
+ format: int64
+ petId:
+ type: integer
+ format: int64
+ quantity:
+ type: integer
+ format: int32
+ shipDate:
+ type: string
+ format: date-time
+ status:
+ type: string
+ description: Order Status
+ enum:
+ - placed
+ - approved
+ - delivered
+ complete:
+ type: boolean
+ default: false
+ xml:
+ name: Order
+ Category:
+ title: Pet category
+ description: A category for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ pattern: '^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*[a-zA-Z0-9]+$'
+ xml:
+ name: Category
+ User:
+ title: a User
+ description: A User who is purchasing from the pet store
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ username:
+ type: string
+ firstName:
+ type: string
+ lastName:
+ type: string
+ email:
+ type: string
+ password:
+ type: string
+ phone:
+ type: string
+ userStatus:
+ type: integer
+ format: int32
+ description: User Status
+ xml:
+ name: User
+ Tag:
+ title: Pet Tag
+ description: A tag for a pet
+ type: object
+ properties:
+ id:
+ type: integer
+ format: int64
+ name:
+ type: string
+ xml:
+ name: Tag
+ Pet:
+ title: a Pet
+ description: A pet for sale in the pet store
+ type: object
+ required:
+ - name
+ - photoUrls
+ properties:
+ id:
+ type: integer
+ format: int64
+ category:
+ $ref: '#/components/schemas/Category'
+ name:
+ type: string
+ example: doggie
+ nullable: true
+ photoUrls:
+ type: array
+ deprecated: true
+ xml:
+ name: photoUrl
+ wrapped: true
+ items:
+ type: string
+ tags:
+ type: array
+ xml:
+ name: tag
+ wrapped: true
+ items:
+ $ref: '#/components/schemas/Tag'
+ status:
+ type: string
+ description: pet status in the store
+ enum:
+ - available
+ - pending
+ - sold
+ xml:
+ name: Pet
+ ApiResponse:
+ title: An uploaded response
+ description: Describes the result of uploading an image resource
+ type: object
+ properties:
+ code:
+ type: integer
+ format: int32
+ type:
+ type: string
+ message:
+ type: string
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/.openapi-generator-ignore b/samples/openapi3/client/petstore/kotlin-deprecated/.openapi-generator-ignore
new file mode 100644
index 00000000000..7484ee590a3
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/.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/openapi3/client/petstore/kotlin-deprecated/.openapi-generator/VERSION b/samples/openapi3/client/petstore/kotlin-deprecated/.openapi-generator/VERSION
new file mode 100644
index 00000000000..d99e7162d01
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/.openapi-generator/VERSION
@@ -0,0 +1 @@
+5.0.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/README.md b/samples/openapi3/client/petstore/kotlin-deprecated/README.md
new file mode 100644
index 00000000000..1c48fa23c18
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/README.md
@@ -0,0 +1,99 @@
+# org.openapitools.client - Kotlin client library for OpenAPI Petstore
+
+## Requires
+
+* Kotlin 1.3.41
+* Gradle 4.9
+
+## 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.
+
+
+## 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
+
+
+
+## Documentation for Models
+
+ - [org.openapitools.client.models.ApiResponse](docs/ApiResponse.md)
+ - [org.openapitools.client.models.Category](docs/Category.md)
+ - [org.openapitools.client.models.InlineObject](docs/InlineObject.md)
+ - [org.openapitools.client.models.InlineObject1](docs/InlineObject1.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)
+
+
+
+## Documentation for Authorization
+
+
+### api_key
+
+- **Type**: API key
+- **API key parameter name**: api_key
+- **Location**: HTTP header
+
+
+### auth_cookie
+
+- **Type**: API key
+- **API key parameter name**: AUTH_KEY
+- **Location**:
+
+
+### 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/openapi3/client/petstore/kotlin-deprecated/build.gradle b/samples/openapi3/client/petstore/kotlin-deprecated/build.gradle
new file mode 100644
index 00000000000..56be0bd0dd8
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/build.gradle
@@ -0,0 +1,37 @@
+group 'org.openapitools'
+version '1.0.0'
+
+wrapper {
+ gradleVersion = '4.9'
+ distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
+}
+
+buildscript {
+ ext.kotlin_version = '1.3.61'
+
+ 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 {
+ compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
+ compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ compile "com.squareup.moshi:moshi-kotlin:1.9.2"
+ compile "com.squareup.moshi:moshi-adapters:1.9.2"
+ compile "com.squareup.okhttp3:okhttp:4.2.2"
+ testCompile "io.kotlintest:kotlintest-runner-junit5:3.1.0"
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/ApiResponse.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/ApiResponse.md
new file mode 100644
index 00000000000..6b4c6bf2779
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/ApiResponse.md
@@ -0,0 +1,12 @@
+
+# ApiResponse
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**code** | **kotlin.Int** | | [optional]
+**type** | **kotlin.String** | | [optional]
+**message** | **kotlin.String** | | [optional]
+
+
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/Category.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/Category.md
new file mode 100644
index 00000000000..2c28a670fc7
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject.md
new file mode 100644
index 00000000000..2156c70addf
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject.md
@@ -0,0 +1,11 @@
+
+# InlineObject
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | Updated name of the pet | [optional]
+**status** | **kotlin.String** | Updated status of the pet | [optional]
+
+
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject1.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject1.md
new file mode 100644
index 00000000000..2a77eecba2b
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/InlineObject1.md
@@ -0,0 +1,11 @@
+
+# InlineObject1
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**additionalMetadata** | **kotlin.String** | Additional data to pass to server | [optional]
+**file** | [**java.io.File**](java.io.File.md) | file to upload | [optional]
+
+
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/Order.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/Order.md
new file mode 100644
index 00000000000..5112f08958d
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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**](#StatusEnum) | Order Status | [optional]
+**complete** | **kotlin.Boolean** | | [optional]
+
+
+
+## Enum: status
+Name | Value
+---- | -----
+status | placed, approved, delivered
+
+
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/Pet.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/Pet.md
new file mode 100644
index 00000000000..70c340005d1
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/Pet.md
@@ -0,0 +1,22 @@
+
+# Pet
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**name** | **kotlin.String** | |
+**photoUrls** | **kotlin.Array<kotlin.String>** | |
+**id** | **kotlin.Long** | | [optional]
+**category** | [**Category**](Category.md) | | [optional]
+**tags** | [**kotlin.Array<Tag>**](Tag.md) | | [optional]
+**status** | [**inline**](#StatusEnum) | pet status in the store | [optional]
+
+
+
+## Enum: status
+Name | Value
+---- | -----
+status | available, pending, sold
+
+
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/PetApi.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/PetApi.md
new file mode 100644
index 00000000000..ec25ae044f3
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/PetApi.md
@@ -0,0 +1,405 @@
+# 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
+
+
+
+# **addPet**
+> 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 {
+ apiInstance.addPet(pet)
+} 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
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+
+# **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
+
+
+# **findPetsByStatus**
+> kotlin.Array<Pet> 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.Array = // kotlin.Array | Status values that need to be considered for filter
+try {
+ val result : kotlin.Array = 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.Array<kotlin.String>**](kotlin.String.md)| Status values that need to be considered for filter | [enum: available, pending, sold]
+
+### Return type
+
+[**kotlin.Array<Pet>**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **findPetsByTags**
+> kotlin.Array<Pet> 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.Array = // kotlin.Array | Tags to filter by
+try {
+ val result : kotlin.Array = 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.Array<kotlin.String>**](kotlin.String.md)| Tags to filter by |
+
+### Return type
+
+[**kotlin.Array<Pet>**](Pet.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/xml, application/json
+
+
+# **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
+
+
+# **updatePet**
+> 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 {
+ apiInstance.updatePet(pet)
+} 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
+
+null (empty response body)
+
+### Authorization
+
+
+Configure petstore_auth:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json, application/xml
+ - **Accept**: Not defined
+
+
+# **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
+
+
+# **uploadFile**
+> ApiResponse 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 : ApiResponse = 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
+
+[**ApiResponse**](ApiResponse.md)
+
+### Authorization
+
+
+Configure petstore_auth:
+ ApiClient.accessToken = ""
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: application/json
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/docs/StoreApi.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/StoreApi.md
new file mode 100644
index 00000000000..bfe58c062ca
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/StoreApi.md
@@ -0,0 +1,196 @@
+# 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
+
+
+
+# **deleteOrder**
+> deleteOrder(orderId)
+
+Delete purchase order by ID
+
+For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+
+### Example
+```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
+
+
+# **getInventory**
+> kotlin.collections.Map<kotlin.String, kotlin.Int> 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 = 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<kotlin.String, kotlin.Int>**
+
+### Authorization
+
+
+Configure api_key:
+ ApiClient.apiKey["api_key"] = ""
+ ApiClient.apiKeyPrefix["api_key"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: application/json
+
+
+# **getOrderById**
+> Order getOrderById(orderId)
+
+Find purchase order by ID
+
+For valid response try integer IDs with value <= 5 or > 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
+
+
+# **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/openapi3/client/petstore/kotlin-deprecated/docs/Tag.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/Tag.md
new file mode 100644
index 00000000000..60ce1bcdbad
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/docs/User.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/User.md
new file mode 100644
index 00000000000..e801729b5ed
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/docs/UserApi.md b/samples/openapi3/client/petstore/kotlin-deprecated/docs/UserApi.md
new file mode 100644
index 00000000000..89fef1a3658
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/docs/UserApi.md
@@ -0,0 +1,394 @@
+# 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
+
+
+
+# **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 auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+
+# **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.Array = // kotlin.Array | 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.Array<User>**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+
+# **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.Array = // kotlin.Array | 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.Array<User>**](User.md)| List of user object |
+
+### Return type
+
+null (empty response body)
+
+### Authorization
+
+
+Configure auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
+
+# **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 auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **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
+
+
+# **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
+
+
+# **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 auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: Not defined
+
+
+# **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 auth_cookie:
+ ApiClient.apiKey["AUTH_KEY"] = ""
+ ApiClient.apiKeyPrefix["AUTH_KEY"] = ""
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: Not defined
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/settings.gradle b/samples/openapi3/client/petstore/kotlin-deprecated/settings.gradle
new file mode 100644
index 00000000000..a80d8fb00e2
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/settings.gradle
@@ -0,0 +1,2 @@
+
+rootProject.name = 'kotlin-petstore-deprecated'
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/PetApi.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
new file mode 100644
index 00000000000..76d108d1342
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/PetApi.kt
@@ -0,0 +1,373 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.apis
+
+import org.openapitools.client.models.ApiResponse
+import org.openapitools.client.models.Pet
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class PetApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2")
+ }
+ }
+
+ /**
+ * Add a new pet to the store
+ *
+ * @param pet Pet object that needs to be added to the store
+ * @return void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun addPet(pet: Pet) : Unit {
+ val localVariableBody: kotlin.Any? = pet
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/pet",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun deletePet(petId: kotlin.Long, apiKey: kotlin.String?) : Unit {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf("api_key" to apiKey.toString())
+ val localVariableConfig = RequestConfig(
+ RequestMethod.DELETE,
+ "/pet/{petId}".replace("{"+"petId"+"}", "$petId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+ /**
+ * 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.Array
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun findPetsByStatus(status: kotlin.Array) : kotlin.Array {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ put("status", toMultiValue(status.toList(), "csv"))
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/pet/findByStatus",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request>(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.Array
+ 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 kotlin.Array
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ @Deprecated(message = "This operation is deprecated.")
+ fun findPetsByTags(tags: kotlin.Array) : kotlin.Array {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ put("tags", toMultiValue(tags.toList(), "csv"))
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/pet/findByTags",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request>(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.Array
+ 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 Pet
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun getPetById(petId: kotlin.Long) : Pet {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/pet/{petId}".replace("{"+"petId"+"}", "$petId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun updatePet(pet: Pet) : Unit {
+ val localVariableBody: kotlin.Any? = pet
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.PUT,
+ "/pet",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun updatePetWithForm(petId: kotlin.Long, name: kotlin.String?, status: kotlin.String?) : Unit {
+ val localVariableBody: kotlin.Any? = mapOf("name" to name, "status" to status)
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "application/x-www-form-urlencoded")
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/pet/{petId}".replace("{"+"petId"+"}", "$petId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+ /**
+ * 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
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun uploadFile(petId: kotlin.Long, additionalMetadata: kotlin.String?, file: java.io.File?) : ApiResponse {
+ val localVariableBody: kotlin.Any? = mapOf("additionalMetadata" to additionalMetadata, "file" to file)
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf("Content-Type" to "multipart/form-data")
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/pet/{petId}/uploadImage".replace("{"+"petId"+"}", "$petId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as ApiResponse
+ 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)
+ }
+ }
+ }
+
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
new file mode 100644
index 00000000000..a444fb26710
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/StoreApi.kt
@@ -0,0 +1,198 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.apis
+
+import org.openapitools.client.models.Order
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class StoreApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2")
+ }
+ }
+
+ /**
+ * Delete purchase order by ID
+ * For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors
+ * @param orderId ID of the order that needs to be deleted
+ * @return void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun deleteOrder(orderId: kotlin.String) : Unit {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.DELETE,
+ "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+ /**
+ * Returns pet inventories by status
+ * Returns a map of status codes to quantities
+ * @return kotlin.collections.Map
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun getInventory() : kotlin.collections.Map {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/store/inventory",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request>(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return when (localVarResponse.responseType) {
+ ResponseType.Success -> (localVarResponse as Success<*>).data as kotlin.collections.Map
+ 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 <= 5 or > 10. Other values will generated exceptions
+ * @param orderId ID of pet that needs to be fetched
+ * @return Order
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun getOrderById(orderId: kotlin.Long) : Order {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/store/order/{orderId}".replace("{"+"orderId"+"}", "$orderId"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 Order
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun placeOrder(order: Order) : Order {
+ val localVariableBody: kotlin.Any? = order
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/store/order",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/UserApi.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
new file mode 100644
index 00000000000..4c23e5d5c33
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/apis/UserApi.kt
@@ -0,0 +1,363 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.apis
+
+import org.openapitools.client.models.User
+
+import org.openapitools.client.infrastructure.ApiClient
+import org.openapitools.client.infrastructure.ClientException
+import org.openapitools.client.infrastructure.ClientError
+import org.openapitools.client.infrastructure.ServerException
+import org.openapitools.client.infrastructure.ServerError
+import org.openapitools.client.infrastructure.MultiValueMap
+import org.openapitools.client.infrastructure.RequestConfig
+import org.openapitools.client.infrastructure.RequestMethod
+import org.openapitools.client.infrastructure.ResponseType
+import org.openapitools.client.infrastructure.Success
+import org.openapitools.client.infrastructure.toMultiValue
+
+class UserApi(basePath: kotlin.String = defaultBasePath) : ApiClient(basePath) {
+ companion object {
+ @JvmStatic
+ val defaultBasePath: String by lazy {
+ System.getProperties().getProperty("org.openapitools.client.baseUrl", "http://petstore.swagger.io/v2")
+ }
+ }
+
+ /**
+ * Create user
+ * This can only be done by the logged in user.
+ * @param user Created user object
+ * @return void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun createUser(user: User) : Unit {
+ val localVariableBody: kotlin.Any? = user
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/user",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun createUsersWithArrayInput(user: kotlin.Array) : Unit {
+ val localVariableBody: kotlin.Any? = user
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/user/createWithArray",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun createUsersWithListInput(user: kotlin.Array) : Unit {
+ val localVariableBody: kotlin.Any? = user
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.POST,
+ "/user/createWithList",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun deleteUser(username: kotlin.String) : Unit {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.DELETE,
+ "/user/{username}".replace("{"+"username"+"}", "$username"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+ /**
+ * Get user by user name
+ *
+ * @param username The name that needs to be fetched. Use user1 for testing.
+ * @return User
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun getUserByName(username: kotlin.String) : User {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/user/{username}".replace("{"+"username"+"}", "$username"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+ /**
+ * 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 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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun loginUser(username: kotlin.String, password: kotlin.String) : kotlin.String {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf>()
+ .apply {
+ put("username", listOf(username.toString()))
+ put("password", listOf(password.toString()))
+ }
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/user/login",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 out current logged in user session
+ *
+ * @return void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun logoutUser() : Unit {
+ val localVariableBody: kotlin.Any? = null
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.GET,
+ "/user/logout",
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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 void
+ * @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(UnsupportedOperationException::class, ClientException::class, ServerException::class)
+ fun updateUser(username: kotlin.String, user: User) : Unit {
+ val localVariableBody: kotlin.Any? = user
+ val localVariableQuery: MultiValueMap = mutableMapOf()
+ val localVariableHeaders: MutableMap = mutableMapOf()
+ val localVariableConfig = RequestConfig(
+ RequestMethod.PUT,
+ "/user/{username}".replace("{"+"username"+"}", "$username"),
+ query = localVariableQuery,
+ headers = localVariableHeaders
+ )
+ val localVarResponse = request(
+ localVariableConfig,
+ localVariableBody
+ )
+
+ return 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)
+ }
+ }
+ }
+
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
new file mode 100644
index 00000000000..ef7a8f1e1a6
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiAbstractions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+typealias MultiValueMap = MutableMap>
+
+fun collectionDelimiter(collectionFormat: String) = when(collectionFormat) {
+ "csv" -> ","
+ "tsv" -> "\t"
+ "pipe" -> "|"
+ "space" -> " "
+ else -> ""
+}
+
+val defaultMultiValueConverter: (item: Any?) -> String = { item -> "$item" }
+
+fun toMultiValue(items: Array, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter)
+ = toMultiValue(items.asIterable(), collectionFormat, map)
+
+fun toMultiValue(items: Iterable, collectionFormat: String, map: (item: T) -> String = defaultMultiValueConverter): List {
+ 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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
new file mode 100644
index 00000000000..08a44c8c6cd
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiClient.kt
@@ -0,0 +1,257 @@
+package org.openapitools.client.infrastructure
+
+import okhttp3.Credentials
+import okhttp3.OkHttpClient
+import okhttp3.RequestBody
+import okhttp3.RequestBody.Companion.asRequestBody
+import okhttp3.RequestBody.Companion.toRequestBody
+import okhttp3.FormBody
+import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
+import okhttp3.ResponseBody
+import okhttp3.MediaType.Companion.toMediaTypeOrNull
+import okhttp3.Request
+import okhttp3.Headers
+import okhttp3.MultipartBody
+import java.io.File
+import java.net.URLConnection
+import java.util.Date
+import java.time.LocalDate
+import java.time.LocalDateTime
+import java.time.LocalTime
+import java.time.OffsetDateTime
+import java.time.OffsetTime
+
+open class ApiClient(val baseUrl: String) {
+ companion object {
+ protected const val ContentType = "Content-Type"
+ protected const val Accept = "Accept"
+ protected const val Authorization = "Authorization"
+ protected const val JsonMediaType = "application/json"
+ protected const val FormDataMediaType = "multipart/form-data"
+ protected const val FormUrlEncMediaType = "application/x-www-form-urlencoded"
+ protected const val XmlMediaType = "application/xml"
+
+ val apiKey: MutableMap = mutableMapOf()
+ val apiKeyPrefix: MutableMap = mutableMapOf()
+ var username: String? = null
+ var password: String? = null
+ var accessToken: String? = null
+
+ @JvmStatic
+ val client: OkHttpClient by lazy {
+ builder.build()
+ }
+
+ @JvmStatic
+ val builder: OkHttpClient.Builder = OkHttpClient.Builder()
+ }
+
+ /**
+ * Guess Content-Type header from the given file (defaults to "application/octet-stream").
+ *
+ * @param file The given file
+ * @return The guessed Content-Type
+ */
+ protected fun guessContentTypeFromFile(file: File): String {
+ val contentType = URLConnection.guessContentTypeFromName(file.name)
+ return contentType ?: "application/octet-stream"
+ }
+
+ protected inline fun requestBody(content: T, mediaType: String = JsonMediaType): RequestBody =
+ when {
+ content is File -> content.asRequestBody(
+ mediaType.toMediaTypeOrNull()
+ )
+ mediaType == FormDataMediaType -> {
+ MultipartBody.Builder()
+ .setType(MultipartBody.FORM)
+ .apply {
+ // content's type *must* be Map
+ @Suppress("UNCHECKED_CAST")
+ (content as Map).forEach { (key, value) ->
+ if (value is File) {
+ val partHeaders = Headers.headersOf(
+ "Content-Disposition",
+ "form-data; name=\"$key\"; filename=\"${value.name}\""
+ )
+ val fileMediaType = guessContentTypeFromFile(value).toMediaTypeOrNull()
+ addPart(partHeaders, value.asRequestBody(fileMediaType))
+ } else {
+ val partHeaders = Headers.headersOf(
+ "Content-Disposition",
+ "form-data; name=\"$key\""
+ )
+ addPart(
+ partHeaders,
+ parameterToString(value).toRequestBody(null)
+ )
+ }
+ }
+ }.build()
+ }
+ mediaType == FormUrlEncMediaType -> {
+ FormBody.Builder().apply {
+ // content's type *must* be Map
+ @Suppress("UNCHECKED_CAST")
+ (content as Map).forEach { (key, value) ->
+ add(key, parameterToString(value))
+ }
+ }.build()
+ }
+ mediaType == JsonMediaType -> Serializer.moshi.adapter(T::class.java).toJson(content).toRequestBody(
+ mediaType.toMediaTypeOrNull()
+ )
+ mediaType == XmlMediaType -> throw UnsupportedOperationException("xml not currently supported.")
+ // TODO: this should be extended with other serializers
+ else -> throw UnsupportedOperationException("requestBody currently only supports JSON body and File body.")
+ }
+
+ protected inline fun responseBody(body: ResponseBody?, mediaType: String? = JsonMediaType): T? {
+ if(body == null) {
+ return null
+ }
+ val bodyContent = body.string()
+ if (bodyContent.isEmpty()) {
+ return null
+ }
+ return when(mediaType) {
+ JsonMediaType -> Serializer.moshi.adapter(T::class.java).fromJson(bodyContent)
+ else -> throw UnsupportedOperationException("responseBody currently only supports JSON body.")
+ }
+ }
+
+ protected fun updateAuthParams(requestConfig: RequestConfig) {
+ if (requestConfig.headers["api_key"].isNullOrEmpty()) {
+ if (apiKey["api_key"] != null) {
+ if (apiKeyPrefix["api_key"] != null) {
+ requestConfig.headers["api_key"] = apiKeyPrefix["api_key"]!! + " " + apiKey["api_key"]!!
+ } else {
+ requestConfig.headers["api_key"] = apiKey["api_key"]!!
+ }
+ }
+ }
+ if (apiKey["AUTH_KEY"] != null) {
+ if (apiKeyPrefix["AUTH_KEY"] != null) {
+ } else {
+ }
+ }
+ }
+ if (requestConfig.headers[Authorization].isNullOrEmpty()) {
+ accessToken?.let { accessToken ->
+ requestConfig.headers[Authorization] = "Bearer $accessToken "
+ }
+ }
+ }
+
+ protected inline fun request(requestConfig: RequestConfig, body : Any? = null): ApiInfrastructureResponse {
+ val httpUrl = baseUrl.toHttpUrlOrNull() ?: throw IllegalStateException("baseUrl is invalid.")
+
+ // take authMethod from operation
+ updateAuthParams(requestConfig)
+
+ val url = httpUrl.newBuilder()
+ .addPathSegments(requestConfig.path.trimStart('/'))
+ .apply {
+ requestConfig.query.forEach { query ->
+ query.value.forEach { queryValue ->
+ addQueryParameter(query.key, queryValue)
+ }
+ }
+ }.build()
+
+ // take content-type/accept from spec or set to default (application/json) if not defined
+ if (requestConfig.headers[ContentType].isNullOrEmpty()) {
+ requestConfig.headers[ContentType] = JsonMediaType
+ }
+ if (requestConfig.headers[Accept].isNullOrEmpty()) {
+ requestConfig.headers[Accept] = JsonMediaType
+ }
+ val headers = requestConfig.headers
+
+ if(headers[ContentType] ?: "" == "") {
+ throw kotlin.IllegalStateException("Missing Content-Type header. This is required.")
+ }
+
+ if(headers[Accept] ?: "" == "") {
+ throw kotlin.IllegalStateException("Missing Accept header. This is required.")
+ }
+
+ // TODO: support multiple contentType options here.
+ val contentType = (headers[ContentType] as String).substringBefore(";").toLowerCase()
+
+ val request = when (requestConfig.method) {
+ RequestMethod.DELETE -> Request.Builder().url(url).delete(requestBody(body, contentType))
+ RequestMethod.GET -> Request.Builder().url(url)
+ RequestMethod.HEAD -> Request.Builder().url(url).head()
+ RequestMethod.PATCH -> Request.Builder().url(url).patch(requestBody(body, contentType))
+ RequestMethod.PUT -> Request.Builder().url(url).put(requestBody(body, contentType))
+ RequestMethod.POST -> Request.Builder().url(url).post(requestBody(body, contentType))
+ RequestMethod.OPTIONS -> Request.Builder().url(url).method("OPTIONS", null)
+ }.apply {
+ headers.forEach { header -> addHeader(header.key, header.value) }
+ }.build()
+
+ val response = client.newCall(request).execute()
+ val accept = response.header(ContentType)?.substringBefore(";")?.toLowerCase()
+
+ // TODO: handle specific mapping types. e.g. Map>
+ when {
+ response.isRedirect -> return Redirection(
+ response.code,
+ response.headers.toMultimap()
+ )
+ response.isInformational -> return Informational(
+ response.message,
+ response.code,
+ response.headers.toMultimap()
+ )
+ response.isSuccessful -> return Success(
+ responseBody(response.body, accept),
+ response.code,
+ response.headers.toMultimap()
+ )
+ response.isClientError -> return ClientError(
+ response.message,
+ response.body?.string(),
+ response.code,
+ response.headers.toMultimap()
+ )
+ else -> return ServerError(
+ response.message,
+ response.body?.string(),
+ response.code,
+ response.headers.toMultimap()
+ )
+ }
+ }
+
+ protected fun parameterToString(value: Any?): String {
+ when (value) {
+ null -> {
+ return ""
+ }
+ is Array<*> -> {
+ return toMultiValue(value, "csv").toString()
+ }
+ is Iterable<*> -> {
+ return toMultiValue(value, "csv").toString()
+ }
+ is OffsetDateTime, is OffsetTime, is LocalDateTime, is LocalDate, is LocalTime, is Date -> {
+ return parseDateToQueryString(value)
+ }
+ else -> {
+ return value.toString()
+ }
+ }
+ }
+
+ protected inline fun 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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt
new file mode 100644
index 00000000000..9dc8d8dbbfa
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApiInfrastructureResponse.kt
@@ -0,0 +1,43 @@
+package org.openapitools.client.infrastructure
+
+enum class ResponseType {
+ Success, Informational, Redirection, ClientError, ServerError
+}
+
+interface Response
+
+abstract class ApiInfrastructureResponse(val responseType: ResponseType): Response {
+ abstract val statusCode: Int
+ abstract val headers: Map>
+}
+
+class Success(
+ val data: T,
+ override val statusCode: Int = -1,
+ override val headers: Map> = mapOf()
+): ApiInfrastructureResponse(ResponseType.Success)
+
+class Informational(
+ val statusText: String,
+ override val statusCode: Int = -1,
+ override val headers: Map> = mapOf()
+) : ApiInfrastructureResponse(ResponseType.Informational)
+
+class Redirection(
+ override val statusCode: Int = -1,
+ override val headers: Map> = mapOf()
+) : ApiInfrastructureResponse(ResponseType.Redirection)
+
+class ClientError(
+ val message: String? = null,
+ val body: Any? = null,
+ override val statusCode: Int = -1,
+ override val headers: Map> = mapOf()
+) : ApiInfrastructureResponse(ResponseType.ClientError)
+
+class ServerError(
+ val message: String? = null,
+ val body: Any? = null,
+ override val statusCode: Int = -1,
+ override val headers: Map>
+): ApiInfrastructureResponse(ResponseType.ServerError)
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt
new file mode 100644
index 00000000000..dd34bd48b2c
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ApplicationDelegates.kt
@@ -0,0 +1,29 @@
+package org.openapitools.client.infrastructure
+
+import kotlin.properties.ReadWriteProperty
+import kotlin.reflect.KProperty
+
+object ApplicationDelegates {
+ /**
+ * Provides a property delegate, allowing the property to be set once and only once.
+ *
+ * If unset (no default value), a get on the property will throw [IllegalStateException].
+ */
+ fun setOnce(defaultValue: T? = null) : ReadWriteProperty = SetOnce(defaultValue)
+
+ private class SetOnce(defaultValue: T? = null) : ReadWriteProperty {
+ private var isSet = false
+ private var value: T? = defaultValue
+
+ override fun getValue(thisRef: Any?, property: KProperty<*>): T {
+ return value ?: throw IllegalStateException("${property.name} not initialized")
+ }
+
+ override fun setValue(thisRef: Any?, property: KProperty<*>, value: T) = synchronized(this) {
+ if (!isSet) {
+ this.value = value
+ isSet = true
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ByteArrayAdapter.kt
new file mode 100644
index 00000000000..ff5e2a81ee8
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/Errors.kt
new file mode 100644
index 00000000000..b5310e71f13
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateAdapter.kt
new file mode 100644
index 00000000000..b2e1654479a
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/LocalDateTimeAdapter.kt
new file mode 100644
index 00000000000..e082db94811
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/OffsetDateTimeAdapter.kt
new file mode 100644
index 00000000000..87437871a31
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
new file mode 100644
index 00000000000..9c22257e223
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestConfig.kt
@@ -0,0 +1,16 @@
+package org.openapitools.client.infrastructure
+
+/**
+ * Defines a config object for a given request.
+ * NOTE: This object doesn't include 'body' because it
+ * allows for caching of the constructed object
+ * for many request definitions.
+ * NOTE: Headers is a Map because rfc2616 defines
+ * multi-valued headers as csv-only.
+ */
+data class RequestConfig(
+ val method: RequestMethod,
+ val path: String,
+ val headers: MutableMap = mutableMapOf(),
+ val query: MutableMap> = mutableMapOf()
+)
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
new file mode 100644
index 00000000000..931b12b8bd7
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/RequestMethod.kt
@@ -0,0 +1,8 @@
+package org.openapitools.client.infrastructure
+
+/**
+ * Provides enumerated HTTP verbs
+ */
+enum class RequestMethod {
+ GET, DELETE, HEAD, OPTIONS, PATCH, POST, PUT
+}
\ No newline at end of file
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt
new file mode 100644
index 00000000000..69b562becb0
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/ResponseExtensions.kt
@@ -0,0 +1,23 @@
+package org.openapitools.client.infrastructure
+
+import okhttp3.Response
+
+/**
+ * Provides an extension to evaluation whether the response is a 1xx code
+ */
+val Response.isInformational : Boolean get() = this.code in 100..199
+
+/**
+ * Provides an extension to evaluation whether the response is a 3xx code
+ */
+val Response.isRedirect : Boolean get() = this.code in 300..399
+
+/**
+ * Provides an extension to evaluation whether the response is a 4xx code
+ */
+val Response.isClientError : Boolean get() = this.code in 400..499
+
+/**
+ * Provides an extension to evaluation whether the response is a 5xx (Standard) through 999 (non-standard) code
+ */
+val Response.isServerError : Boolean get() = this.code in 500..999
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/Serializer.kt
new file mode 100644
index 00000000000..697559b2ec1
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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.adapters.Rfc3339DateJsonAdapter
+import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
+import java.util.Date
+
+object Serializer {
+ @JvmStatic
+ val moshiBuilder: Moshi.Builder = Moshi.Builder()
+ .add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
+ .add(OffsetDateTimeAdapter())
+ .add(LocalDateTimeAdapter())
+ .add(LocalDateAdapter())
+ .add(UUIDAdapter())
+ .add(ByteArrayAdapter())
+ .add(KotlinJsonAdapterFactory())
+
+ @JvmStatic
+ val moshi: Moshi by lazy {
+ moshiBuilder.build()
+ }
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/infrastructure/UUIDAdapter.kt
new file mode 100644
index 00000000000..a4a44cc18b7
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/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.fromString(s)
+}
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
new file mode 100644
index 00000000000..ada15fee7a1
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/ApiResponse.kt
@@ -0,0 +1,31 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+/**
+ * Describes the result of uploading an image resource
+ * @param code
+ * @param type
+ * @param message
+ */
+
+data class ApiResponse (
+ @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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Category.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Category.kt
new file mode 100644
index 00000000000..426a0e51592
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Category.kt
@@ -0,0 +1,28 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject.kt
new file mode 100644
index 00000000000..73dcb58e3f2
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject.kt
@@ -0,0 +1,30 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+/**
+ *
+ * @param name Updated name of the pet
+ * @param status Updated status of the pet
+ */
+
+data class InlineObject (
+ /* Updated name of the pet */
+ @Json(name = "name")
+ val name: kotlin.String? = null,
+ /* Updated status of the pet */
+ @Json(name = "status")
+ val status: kotlin.String? = null
+)
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt
new file mode 100644
index 00000000000..46a53dfc3d1
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/InlineObject1.kt
@@ -0,0 +1,30 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.models
+
+
+import com.squareup.moshi.Json
+/**
+ *
+ * @param additionalMetadata Additional data to pass to server
+ * @param file file to upload
+ */
+
+data class InlineObject1 (
+ /* Additional data to pass to server */
+ @Json(name = "additionalMetadata")
+ val additionalMetadata: kotlin.String? = null,
+ /* file to upload */
+ @Json(name = "file")
+ val file: java.io.File? = null
+)
+
diff --git a/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Order.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Order.kt
new file mode 100644
index 00000000000..a3579905fe6
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Order.kt
@@ -0,0 +1,54 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.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
+ */
+
+@Deprecated(message = "This schema is deprecated.")
+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? = null
+) {
+
+ /**
+ * 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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Pet.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Pet.kt
new file mode 100644
index 00000000000..21385e1f877
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Pet.kt
@@ -0,0 +1,56 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.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")
+ @Deprecated(message = "This property is deprecated.")
+ val photoUrls: kotlin.Array,
+ @Json(name = "id")
+ val id: kotlin.Long? = null,
+ @Json(name = "category")
+ val category: Category? = null,
+ @Json(name = "tags")
+ val tags: kotlin.Array? = null,
+ /* pet status in the store */
+ @Json(name = "status")
+ 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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Tag.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Tag.kt
new file mode 100644
index 00000000000..f9ef87e13fb
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/Tag.kt
@@ -0,0 +1,28 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.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/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/User.kt b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/User.kt
new file mode 100644
index 00000000000..dfd63806da9
--- /dev/null
+++ b/samples/openapi3/client/petstore/kotlin-deprecated/src/main/kotlin/org/openapitools/client/models/User.kt
@@ -0,0 +1,47 @@
+/**
+* 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.
+*
+* The version of the OpenAPI document: 1.0.0
+*
+*
+* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+* https://openapi-generator.tech
+* Do not edit the class manually.
+*/
+package org.openapitools.client.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
+)
+