diff --git a/.github/workflows/samples-python-client-echo-api.yaml b/.github/workflows/samples-python-client-echo-api.yaml
index 9f39bae9a07..38b1f24ad93 100644
--- a/.github/workflows/samples-python-client-echo-api.yaml
+++ b/.github/workflows/samples-python-client-echo-api.yaml
@@ -5,7 +5,6 @@ on:
paths:
- samples/client/echo_api/python/**
- .github/workflows/samples-python-client-echo-api.yaml
-
jobs:
build:
name: Test Python client
@@ -16,6 +15,7 @@ jobs:
sample:
# clients
- samples/client/echo_api/python
+ - samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true
python-version:
- "3.7"
- "3.8"
diff --git a/bin/configs/python-echo-api-disallowAdditionalPropertiesIfNotPresent-true.yaml b/bin/configs/python-echo-api-disallowAdditionalPropertiesIfNotPresent-true.yaml
new file mode 100644
index 00000000000..c58ea0bfb8d
--- /dev/null
+++ b/bin/configs/python-echo-api-disallowAdditionalPropertiesIfNotPresent-true.yaml
@@ -0,0 +1,7 @@
+generatorName: python
+outputDir: samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true
+inputSpec: modules/openapi-generator/src/test/resources/3_0/python/echo_api.yaml
+templateDir: modules/openapi-generator/src/main/resources/python
+additionalProperties:
+ hideGenerationTimestamp: "true"
+ disallowAdditionalPropertiesIfNotPresent: "true"
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.github/workflows/python.yml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.github/workflows/python.yml
new file mode 100644
index 00000000000..f128ba25e3d
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.github/workflows/python.yml
@@ -0,0 +1,38 @@
+# NOTE: This file is auto generated by OpenAPI Generator.
+# URL: https://openapi-generator.tech
+#
+# ref: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
+
+name: openapi_client Python package
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
+
+ steps:
+ - uses: actions/checkout@v3
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v4
+ with:
+ python-version: ${{ matrix.python-version }}
+ - name: Install dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install flake8 pytest
+ if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
+ if [ -f test-requirements.txt ]; then pip install -r test-requirements.txt; fi
+ - name: Lint with flake8
+ run: |
+ # stop the build if there are Python syntax errors or undefined names
+ flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
+ # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+ flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+ - name: Test with pytest
+ run: |
+ pytest
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitignore b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitignore
new file mode 100644
index 00000000000..43995bd42fa
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitignore
@@ -0,0 +1,66 @@
+# Byte-compiled / optimized / DLL files
+__pycache__/
+*.py[cod]
+*$py.class
+
+# C extensions
+*.so
+
+# Distribution / packaging
+.Python
+env/
+build/
+develop-eggs/
+dist/
+downloads/
+eggs/
+.eggs/
+lib/
+lib64/
+parts/
+sdist/
+var/
+*.egg-info/
+.installed.cfg
+*.egg
+
+# PyInstaller
+# Usually these files are written by a python script from a template
+# before PyInstaller builds the exe, so as to inject date/other infos into it.
+*.manifest
+*.spec
+
+# Installer logs
+pip-log.txt
+pip-delete-this-directory.txt
+
+# Unit test / coverage reports
+htmlcov/
+.tox/
+.coverage
+.coverage.*
+.cache
+nosetests.xml
+coverage.xml
+*,cover
+.hypothesis/
+venv/
+.venv/
+.python-version
+.pytest_cache
+
+# Translations
+*.mo
+*.pot
+
+# Django stuff:
+*.log
+
+# Sphinx documentation
+docs/_build/
+
+# PyBuilder
+target/
+
+#Ipython Notebook
+.ipynb_checkpoints
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitlab-ci.yml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitlab-ci.yml
new file mode 100644
index 00000000000..29da7211174
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.gitlab-ci.yml
@@ -0,0 +1,31 @@
+# NOTE: This file is auto generated by OpenAPI Generator.
+# URL: https://openapi-generator.tech
+#
+# ref: https://docs.gitlab.com/ee/ci/README.html
+# ref: https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml
+
+stages:
+ - test
+
+.pytest:
+ stage: test
+ script:
+ - pip install -r requirements.txt
+ - pip install -r test-requirements.txt
+ - pytest --cov=openapi_client
+
+pytest-3.7:
+ extends: .pytest
+ image: python:3.7-alpine
+pytest-3.8:
+ extends: .pytest
+ image: python:3.8-alpine
+pytest-3.9:
+ extends: .pytest
+ image: python:3.9-alpine
+pytest-3.10:
+ extends: .pytest
+ image: python:3.10-alpine
+pytest-3.11:
+ extends: .pytest
+ image: python:3.11-alpine
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator-ignore b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator-ignore
new file mode 100644
index 00000000000..7484ee590a3
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator-ignore
@@ -0,0 +1,23 @@
+# OpenAPI Generator Ignore
+# Generated by openapi-generator https://github.com/openapitools/openapi-generator
+
+# Use this file to prevent files from being overwritten by the generator.
+# The patterns follow closely to .gitignore or .dockerignore.
+
+# As an example, the C# client generator defines ApiClient.cs.
+# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
+#ApiClient.cs
+
+# You can match any string of characters against a directory, file or extension with a single asterisk (*):
+#foo/*/qux
+# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
+
+# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
+#foo/**/qux
+# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
+
+# You can also negate patterns with an exclamation (!).
+# For example, you can ignore all files in a docs folder with the file extension .md:
+#docs/*.md
+# Then explicitly reverse the ignore rule for a single file:
+#!docs/README.md
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/FILES b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/FILES
new file mode 100644
index 00000000000..0723c3ab0de
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/FILES
@@ -0,0 +1,56 @@
+.github/workflows/python.yml
+.gitignore
+.gitlab-ci.yml
+.travis.yml
+README.md
+docs/AuthApi.md
+docs/Bird.md
+docs/BodyApi.md
+docs/Category.md
+docs/DataQuery.md
+docs/DefaultValue.md
+docs/FormApi.md
+docs/HeaderApi.md
+docs/NumberPropertiesOnly.md
+docs/PathApi.md
+docs/Pet.md
+docs/Query.md
+docs/QueryApi.md
+docs/StringEnumRef.md
+docs/Tag.md
+docs/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.md
+docs/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.md
+git_push.sh
+openapi_client/__init__.py
+openapi_client/api/__init__.py
+openapi_client/api/auth_api.py
+openapi_client/api/body_api.py
+openapi_client/api/form_api.py
+openapi_client/api/header_api.py
+openapi_client/api/path_api.py
+openapi_client/api/query_api.py
+openapi_client/api_client.py
+openapi_client/api_response.py
+openapi_client/configuration.py
+openapi_client/exceptions.py
+openapi_client/models/__init__.py
+openapi_client/models/bird.py
+openapi_client/models/category.py
+openapi_client/models/data_query.py
+openapi_client/models/default_value.py
+openapi_client/models/number_properties_only.py
+openapi_client/models/pet.py
+openapi_client/models/query.py
+openapi_client/models/string_enum_ref.py
+openapi_client/models/tag.py
+openapi_client/models/test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py
+openapi_client/models/test_query_style_form_explode_true_array_string_query_object_parameter.py
+openapi_client/py.typed
+openapi_client/rest.py
+pyproject.toml
+requirements.txt
+setup.cfg
+setup.py
+test-requirements.txt
+test/__init__.py
+tox.ini
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/VERSION b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/VERSION
new file mode 100644
index 00000000000..40e36364ab2
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.openapi-generator/VERSION
@@ -0,0 +1 @@
+7.1.0-SNAPSHOT
\ No newline at end of file
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.travis.yml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.travis.yml
new file mode 100644
index 00000000000..fd888f75d38
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/.travis.yml
@@ -0,0 +1,17 @@
+# ref: https://docs.travis-ci.com/user/languages/python
+language: python
+python:
+ - "3.7"
+ - "3.8"
+ - "3.9"
+ - "3.10"
+ - "3.11"
+ # uncomment the following if needed
+ #- "3.11-dev" # 3.11 development branch
+ #- "nightly" # nightly build
+# command to install dependencies
+install:
+ - "pip install -r requirements.txt"
+ - "pip install -r test-requirements.txt"
+# command to run tests
+script: pytest --cov=openapi_client
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/README.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/README.md
new file mode 100644
index 00000000000..d9de36cb6e2
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/README.md
@@ -0,0 +1,149 @@
+# openapi-client
+Echo Server API
+
+This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
+
+- API version: 0.1.0
+- Package version: 1.0.0
+- Build package: org.openapitools.codegen.languages.PythonClientCodegen
+
+## Requirements.
+
+Python 3.7+
+
+## Installation & Usage
+### pip install
+
+If the python package is hosted on a repository, you can install directly using:
+
+```sh
+pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git
+```
+(you may need to run `pip` with root permission: `sudo pip install git+https://github.com/GIT_USER_ID/GIT_REPO_ID.git`)
+
+Then import the package:
+```python
+import openapi_client
+```
+
+### Setuptools
+
+Install via [Setuptools](http://pypi.python.org/pypi/setuptools).
+
+```sh
+python setup.py install --user
+```
+(or `sudo python setup.py install` to install the package for all users)
+
+Then import the package:
+```python
+import openapi_client
+```
+
+### Tests
+
+Execute `pytest` to run the tests.
+
+## Getting Started
+
+Please follow the [installation procedure](#installation--usage) and then run the following:
+
+```python
+
+import time
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+# The client must configure the authentication and authorization parameters
+# in accordance with the API server security policy.
+# Examples for each auth method are provided below, use the example that
+# satisfies your auth use case.
+
+# Configure HTTP basic authorization: http_auth
+configuration = openapi_client.Configuration(
+ username = os.environ["USERNAME"],
+ password = os.environ["PASSWORD"]
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.AuthApi(api_client)
+
+ try:
+ # To test HTTP basic authentication
+ api_response = api_instance.test_auth_http_basic()
+ print("The response of AuthApi->test_auth_http_basic:\n")
+ pprint(api_response)
+ except ApiException as e:
+ print("Exception when calling AuthApi->test_auth_http_basic: %s\n" % e)
+
+```
+
+## Documentation for API Endpoints
+
+All URIs are relative to *http://localhost:3000*
+
+Class | Method | HTTP request | Description
+------------ | ------------- | ------------- | -------------
+*AuthApi* | [**test_auth_http_basic**](docs/AuthApi.md#test_auth_http_basic) | **POST** /auth/http/basic | To test HTTP basic authentication
+*BodyApi* | [**test_binary_gif**](docs/BodyApi.md#test_binary_gif) | **POST** /binary/gif | Test binary (gif) response body
+*BodyApi* | [**test_body_application_octetstream_binary**](docs/BodyApi.md#test_body_application_octetstream_binary) | **POST** /body/application/octetstream/binary | Test body parameter(s)
+*BodyApi* | [**test_body_multipart_formdata_array_of_binary**](docs/BodyApi.md#test_body_multipart_formdata_array_of_binary) | **POST** /body/application/octetstream/array_of_binary | Test array of binary in multipart mime
+*BodyApi* | [**test_echo_body_free_form_object_response_string**](docs/BodyApi.md#test_echo_body_free_form_object_response_string) | **POST** /echo/body/FreeFormObject/response_string | Test free form object
+*BodyApi* | [**test_echo_body_pet**](docs/BodyApi.md#test_echo_body_pet) | **POST** /echo/body/Pet | Test body parameter(s)
+*BodyApi* | [**test_echo_body_pet_response_string**](docs/BodyApi.md#test_echo_body_pet_response_string) | **POST** /echo/body/Pet/response_string | Test empty response body
+*BodyApi* | [**test_echo_body_tag_response_string**](docs/BodyApi.md#test_echo_body_tag_response_string) | **POST** /echo/body/Tag/response_string | Test empty json (request body)
+*FormApi* | [**test_form_integer_boolean_string**](docs/FormApi.md#test_form_integer_boolean_string) | **POST** /form/integer/boolean/string | Test form parameter(s)
+*FormApi* | [**test_form_oneof**](docs/FormApi.md#test_form_oneof) | **POST** /form/oneof | Test form parameter(s) for oneOf schema
+*HeaderApi* | [**test_header_integer_boolean_string**](docs/HeaderApi.md#test_header_integer_boolean_string) | **GET** /header/integer/boolean/string | Test header parameter(s)
+*PathApi* | [**tests_path_string_path_string_integer_path_integer**](docs/PathApi.md#tests_path_string_path_string_integer_path_integer) | **GET** /path/string/{path_string}/integer/{path_integer} | Test path parameter(s)
+*QueryApi* | [**test_enum_ref_string**](docs/QueryApi.md#test_enum_ref_string) | **GET** /query/enum_ref_string | Test query parameter(s)
+*QueryApi* | [**test_query_datetime_date_string**](docs/QueryApi.md#test_query_datetime_date_string) | **GET** /query/datetime/date/string | Test query parameter(s)
+*QueryApi* | [**test_query_integer_boolean_string**](docs/QueryApi.md#test_query_integer_boolean_string) | **GET** /query/integer/boolean/string | Test query parameter(s)
+*QueryApi* | [**test_query_style_deep_object_explode_true_object**](docs/QueryApi.md#test_query_style_deep_object_explode_true_object) | **GET** /query/style_deepObject/explode_true/object | Test query parameter(s)
+*QueryApi* | [**test_query_style_deep_object_explode_true_object_all_of**](docs/QueryApi.md#test_query_style_deep_object_explode_true_object_all_of) | **GET** /query/style_deepObject/explode_true/object/allOf | Test query parameter(s)
+*QueryApi* | [**test_query_style_form_explode_true_array_string**](docs/QueryApi.md#test_query_style_form_explode_true_array_string) | **GET** /query/style_form/explode_true/array_string | Test query parameter(s)
+*QueryApi* | [**test_query_style_form_explode_true_object**](docs/QueryApi.md#test_query_style_form_explode_true_object) | **GET** /query/style_form/explode_true/object | Test query parameter(s)
+*QueryApi* | [**test_query_style_form_explode_true_object_all_of**](docs/QueryApi.md#test_query_style_form_explode_true_object_all_of) | **GET** /query/style_form/explode_true/object/allOf | Test query parameter(s)
+
+
+## Documentation For Models
+
+ - [Bird](docs/Bird.md)
+ - [Category](docs/Category.md)
+ - [DataQuery](docs/DataQuery.md)
+ - [DefaultValue](docs/DefaultValue.md)
+ - [NumberPropertiesOnly](docs/NumberPropertiesOnly.md)
+ - [Pet](docs/Pet.md)
+ - [Query](docs/Query.md)
+ - [StringEnumRef](docs/StringEnumRef.md)
+ - [Tag](docs/Tag.md)
+ - [TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter](docs/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.md)
+ - [TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter](docs/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.md)
+
+
+
+## Documentation For Authorization
+
+
+Authentication schemes defined for the API:
+
+### http_auth
+
+- **Type**: HTTP basic authentication
+
+
+## Author
+
+team@openapitools.org
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/AuthApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/AuthApi.md
new file mode 100644
index 00000000000..98ce834c317
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/AuthApi.md
@@ -0,0 +1,82 @@
+# openapi_client.AuthApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_auth_http_basic**](AuthApi.md#test_auth_http_basic) | **POST** /auth/http/basic | To test HTTP basic authentication
+
+
+# **test_auth_http_basic**
+> str test_auth_http_basic()
+
+To test HTTP basic authentication
+
+To test HTTP basic authentication
+
+### Example
+
+* Basic Authentication (http_auth):
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+# The client must configure the authentication and authorization parameters
+# in accordance with the API server security policy.
+# Examples for each auth method are provided below, use the example that
+# satisfies your auth use case.
+
+# Configure HTTP basic authorization: http_auth
+configuration = openapi_client.Configuration(
+ username = os.environ["USERNAME"],
+ password = os.environ["PASSWORD"]
+)
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.AuthApi(api_client)
+
+ try:
+ # To test HTTP basic authentication
+ api_response = api_instance.test_auth_http_basic()
+ print("The response of AuthApi->test_auth_http_basic:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling AuthApi->test_auth_http_basic: %s\n" % e)
+```
+
+
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**str**
+
+### Authorization
+
+[http_auth](../README.md#http_auth)
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Bird.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Bird.md
new file mode 100644
index 00000000000..f1ad71c2150
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Bird.md
@@ -0,0 +1,29 @@
+# Bird
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**size** | **str** | | [optional]
+**color** | **str** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.bird import Bird
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Bird from a JSON string
+bird_instance = Bird.from_json(json)
+# print the JSON string representation of the object
+print Bird.to_json()
+
+# convert the object into a dict
+bird_dict = bird_instance.to_dict()
+# create an instance of Bird from a dict
+bird_form_dict = bird.from_dict(bird_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/BodyApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/BodyApi.md
new file mode 100644
index 00000000000..553100ffc92
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/BodyApi.md
@@ -0,0 +1,476 @@
+# openapi_client.BodyApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_binary_gif**](BodyApi.md#test_binary_gif) | **POST** /binary/gif | Test binary (gif) response body
+[**test_body_application_octetstream_binary**](BodyApi.md#test_body_application_octetstream_binary) | **POST** /body/application/octetstream/binary | Test body parameter(s)
+[**test_body_multipart_formdata_array_of_binary**](BodyApi.md#test_body_multipart_formdata_array_of_binary) | **POST** /body/application/octetstream/array_of_binary | Test array of binary in multipart mime
+[**test_echo_body_free_form_object_response_string**](BodyApi.md#test_echo_body_free_form_object_response_string) | **POST** /echo/body/FreeFormObject/response_string | Test free form object
+[**test_echo_body_pet**](BodyApi.md#test_echo_body_pet) | **POST** /echo/body/Pet | Test body parameter(s)
+[**test_echo_body_pet_response_string**](BodyApi.md#test_echo_body_pet_response_string) | **POST** /echo/body/Pet/response_string | Test empty response body
+[**test_echo_body_tag_response_string**](BodyApi.md#test_echo_body_tag_response_string) | **POST** /echo/body/Tag/response_string | Test empty json (request body)
+
+
+# **test_binary_gif**
+> bytearray test_binary_gif()
+
+Test binary (gif) response body
+
+Test binary (gif) response body
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+
+ try:
+ # Test binary (gif) response body
+ api_response = api_instance.test_binary_gif()
+ print("The response of BodyApi->test_binary_gif:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_binary_gif: %s\n" % e)
+```
+
+
+
+### Parameters
+This endpoint does not need any parameter.
+
+### Return type
+
+**bytearray**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: image/gif
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_body_application_octetstream_binary**
+> str test_body_application_octetstream_binary(body=body)
+
+Test body parameter(s)
+
+Test body parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ body = None # bytearray | (optional)
+
+ try:
+ # Test body parameter(s)
+ api_response = api_instance.test_body_application_octetstream_binary(body=body)
+ print("The response of BodyApi->test_body_application_octetstream_binary:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_body_application_octetstream_binary: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **bytearray**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/octet-stream
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_body_multipart_formdata_array_of_binary**
+> str test_body_multipart_formdata_array_of_binary(files)
+
+Test array of binary in multipart mime
+
+Test array of binary in multipart mime
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ files = None # List[bytearray] |
+
+ try:
+ # Test array of binary in multipart mime
+ api_response = api_instance.test_body_multipart_formdata_array_of_binary(files)
+ print("The response of BodyApi->test_body_multipart_formdata_array_of_binary:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_body_multipart_formdata_array_of_binary: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **files** | **List[bytearray]**| |
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: multipart/form-data
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_echo_body_free_form_object_response_string**
+> str test_echo_body_free_form_object_response_string(body=body)
+
+Test free form object
+
+Test free form object
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ body = None # object | Free form object (optional)
+
+ try:
+ # Test free form object
+ api_response = api_instance.test_echo_body_free_form_object_response_string(body=body)
+ print("The response of BodyApi->test_echo_body_free_form_object_response_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_echo_body_free_form_object_response_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **body** | **object**| Free form object | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_echo_body_pet**
+> Pet test_echo_body_pet(pet=pet)
+
+Test body parameter(s)
+
+Test body parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.pet import Pet
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ pet = openapi_client.Pet() # Pet | Pet object that needs to be added to the store (optional)
+
+ try:
+ # Test body parameter(s)
+ api_response = api_instance.test_echo_body_pet(pet=pet)
+ print("The response of BodyApi->test_echo_body_pet:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_echo_body_pet: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | [optional]
+
+### Return type
+
+[**Pet**](Pet.md)
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: application/json
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_echo_body_pet_response_string**
+> str test_echo_body_pet_response_string(pet=pet)
+
+Test empty response body
+
+Test empty response body
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.pet import Pet
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ pet = openapi_client.Pet() # Pet | Pet object that needs to be added to the store (optional)
+
+ try:
+ # Test empty response body
+ api_response = api_instance.test_echo_body_pet_response_string(pet=pet)
+ print("The response of BodyApi->test_echo_body_pet_response_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_echo_body_pet_response_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **pet** | [**Pet**](Pet.md)| Pet object that needs to be added to the store | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_echo_body_tag_response_string**
+> str test_echo_body_tag_response_string(tag=tag)
+
+Test empty json (request body)
+
+Test empty json (request body)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.tag import Tag
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.BodyApi(api_client)
+ tag = openapi_client.Tag() # Tag | Tag object (optional)
+
+ try:
+ # Test empty json (request body)
+ api_response = api_instance.test_echo_body_tag_response_string(tag=tag)
+ print("The response of BodyApi->test_echo_body_tag_response_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling BodyApi->test_echo_body_tag_response_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **tag** | [**Tag**](Tag.md)| Tag object | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/json
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Category.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Category.md
new file mode 100644
index 00000000000..bf23e3b044d
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Category.md
@@ -0,0 +1,29 @@
+# Category
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**name** | **str** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.category import Category
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Category from a JSON string
+category_instance = Category.from_json(json)
+# print the JSON string representation of the object
+print Category.to_json()
+
+# convert the object into a dict
+category_dict = category_instance.to_dict()
+# create an instance of Category from a dict
+category_form_dict = category.from_dict(category_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DataQuery.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DataQuery.md
new file mode 100644
index 00000000000..bac43a6cc70
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DataQuery.md
@@ -0,0 +1,30 @@
+# DataQuery
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**suffix** | **str** | test suffix | [optional]
+**text** | **str** | Some text containing white spaces | [optional]
+**var_date** | **datetime** | A date | [optional]
+
+## Example
+
+```python
+from openapi_client.models.data_query import DataQuery
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of DataQuery from a JSON string
+data_query_instance = DataQuery.from_json(json)
+# print the JSON string representation of the object
+print DataQuery.to_json()
+
+# convert the object into a dict
+data_query_dict = data_query_instance.to_dict()
+# create an instance of DataQuery from a dict
+data_query_form_dict = data_query.from_dict(data_query_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DefaultValue.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DefaultValue.md
new file mode 100644
index 00000000000..fcdbebf0e0a
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/DefaultValue.md
@@ -0,0 +1,36 @@
+# DefaultValue
+
+to test the default value of properties
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**array_string_enum_ref_default** | [**List[StringEnumRef]**](StringEnumRef.md) | | [optional] [default to ["success","failure"]]
+**array_string_enum_default** | **List[str]** | | [optional] [default to ["success","failure"]]
+**array_string_default** | **List[str]** | | [optional] [default to ["failure","skipped"]]
+**array_integer_default** | **List[int]** | | [optional] [default to [1,3]]
+**array_string** | **List[str]** | | [optional]
+**array_string_nullable** | **List[str]** | | [optional]
+**array_string_extension_nullable** | **List[str]** | | [optional]
+**string_nullable** | **str** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.default_value import DefaultValue
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of DefaultValue from a JSON string
+default_value_instance = DefaultValue.from_json(json)
+# print the JSON string representation of the object
+print DefaultValue.to_json()
+
+# convert the object into a dict
+default_value_dict = default_value_instance.to_dict()
+# create an instance of DefaultValue from a dict
+default_value_form_dict = default_value.from_dict(default_value_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/FormApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/FormApi.md
new file mode 100644
index 00000000000..c823e4b82ae
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/FormApi.md
@@ -0,0 +1,156 @@
+# openapi_client.FormApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_form_integer_boolean_string**](FormApi.md#test_form_integer_boolean_string) | **POST** /form/integer/boolean/string | Test form parameter(s)
+[**test_form_oneof**](FormApi.md#test_form_oneof) | **POST** /form/oneof | Test form parameter(s) for oneOf schema
+
+
+# **test_form_integer_boolean_string**
+> str test_form_integer_boolean_string(integer_form=integer_form, boolean_form=boolean_form, string_form=string_form)
+
+Test form parameter(s)
+
+Test form parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.FormApi(api_client)
+ integer_form = 56 # int | (optional)
+ boolean_form = True # bool | (optional)
+ string_form = 'string_form_example' # str | (optional)
+
+ try:
+ # Test form parameter(s)
+ api_response = api_instance.test_form_integer_boolean_string(integer_form=integer_form, boolean_form=boolean_form, string_form=string_form)
+ print("The response of FormApi->test_form_integer_boolean_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling FormApi->test_form_integer_boolean_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **integer_form** | **int**| | [optional]
+ **boolean_form** | **bool**| | [optional]
+ **string_form** | **str**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_form_oneof**
+> str test_form_oneof(form1=form1, form2=form2, form3=form3, form4=form4, id=id, name=name)
+
+Test form parameter(s) for oneOf schema
+
+Test form parameter(s) for oneOf schema
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.FormApi(api_client)
+ form1 = 'form1_example' # str | (optional)
+ form2 = 56 # int | (optional)
+ form3 = 'form3_example' # str | (optional)
+ form4 = True # bool | (optional)
+ id = 56 # int | (optional)
+ name = 'name_example' # str | (optional)
+
+ try:
+ # Test form parameter(s) for oneOf schema
+ api_response = api_instance.test_form_oneof(form1=form1, form2=form2, form3=form3, form4=form4, id=id, name=name)
+ print("The response of FormApi->test_form_oneof:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling FormApi->test_form_oneof: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **form1** | **str**| | [optional]
+ **form2** | **int**| | [optional]
+ **form3** | **str**| | [optional]
+ **form4** | **bool**| | [optional]
+ **id** | **int**| | [optional]
+ **name** | **str**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: application/x-www-form-urlencoded
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/HeaderApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/HeaderApi.md
new file mode 100644
index 00000000000..740eb149074
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/HeaderApi.md
@@ -0,0 +1,79 @@
+# openapi_client.HeaderApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_header_integer_boolean_string**](HeaderApi.md#test_header_integer_boolean_string) | **GET** /header/integer/boolean/string | Test header parameter(s)
+
+
+# **test_header_integer_boolean_string**
+> str test_header_integer_boolean_string(integer_header=integer_header, boolean_header=boolean_header, string_header=string_header)
+
+Test header parameter(s)
+
+Test header parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.HeaderApi(api_client)
+ integer_header = 56 # int | (optional)
+ boolean_header = True # bool | (optional)
+ string_header = 'string_header_example' # str | (optional)
+
+ try:
+ # Test header parameter(s)
+ api_response = api_instance.test_header_integer_boolean_string(integer_header=integer_header, boolean_header=boolean_header, string_header=string_header)
+ print("The response of HeaderApi->test_header_integer_boolean_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling HeaderApi->test_header_integer_boolean_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **integer_header** | **int**| | [optional]
+ **boolean_header** | **bool**| | [optional]
+ **string_header** | **str**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/NumberPropertiesOnly.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/NumberPropertiesOnly.md
new file mode 100644
index 00000000000..7051e6165ac
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/NumberPropertiesOnly.md
@@ -0,0 +1,29 @@
+# NumberPropertiesOnly
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**number** | **float** | | [optional]
+**double** | **float** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.number_properties_only import NumberPropertiesOnly
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of NumberPropertiesOnly from a JSON string
+number_properties_only_instance = NumberPropertiesOnly.from_json(json)
+# print the JSON string representation of the object
+print NumberPropertiesOnly.to_json()
+
+# convert the object into a dict
+number_properties_only_dict = number_properties_only_instance.to_dict()
+# create an instance of NumberPropertiesOnly from a dict
+number_properties_only_form_dict = number_properties_only.from_dict(number_properties_only_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/PathApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/PathApi.md
new file mode 100644
index 00000000000..122a0c33c71
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/PathApi.md
@@ -0,0 +1,77 @@
+# openapi_client.PathApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**tests_path_string_path_string_integer_path_integer**](PathApi.md#tests_path_string_path_string_integer_path_integer) | **GET** /path/string/{path_string}/integer/{path_integer} | Test path parameter(s)
+
+
+# **tests_path_string_path_string_integer_path_integer**
+> str tests_path_string_path_string_integer_path_integer(path_string, path_integer)
+
+Test path parameter(s)
+
+Test path parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.PathApi(api_client)
+ path_string = 'path_string_example' # str |
+ path_integer = 56 # int |
+
+ try:
+ # Test path parameter(s)
+ api_response = api_instance.tests_path_string_path_string_integer_path_integer(path_string, path_integer)
+ print("The response of PathApi->tests_path_string_path_string_integer_path_integer:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling PathApi->tests_path_string_path_string_integer_path_integer: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **path_string** | **str**| |
+ **path_integer** | **int**| |
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Pet.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Pet.md
new file mode 100644
index 00000000000..bd578ba9a50
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Pet.md
@@ -0,0 +1,33 @@
+# Pet
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**name** | **str** | |
+**category** | [**Category**](Category.md) | | [optional]
+**photo_urls** | **List[str]** | |
+**tags** | [**List[Tag]**](Tag.md) | | [optional]
+**status** | **str** | pet status in the store | [optional]
+
+## Example
+
+```python
+from openapi_client.models.pet import Pet
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Pet from a JSON string
+pet_instance = Pet.from_json(json)
+# print the JSON string representation of the object
+print Pet.to_json()
+
+# convert the object into a dict
+pet_dict = pet_instance.to_dict()
+# create an instance of Pet from a dict
+pet_form_dict = pet.from_dict(pet_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Query.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Query.md
new file mode 100644
index 00000000000..8a346212089
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Query.md
@@ -0,0 +1,29 @@
+# Query
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | Query | [optional]
+**outcomes** | **List[str]** | | [optional] [default to ["SUCCESS","FAILURE"]]
+
+## Example
+
+```python
+from openapi_client.models.query import Query
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Query from a JSON string
+query_instance = Query.from_json(json)
+# print the JSON string representation of the object
+print Query.to_json()
+
+# convert the object into a dict
+query_dict = query_instance.to_dict()
+# create an instance of Query from a dict
+query_form_dict = query.from_dict(query_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/QueryApi.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/QueryApi.md
new file mode 100644
index 00000000000..11c486b7382
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/QueryApi.md
@@ -0,0 +1,556 @@
+# openapi_client.QueryApi
+
+All URIs are relative to *http://localhost:3000*
+
+Method | HTTP request | Description
+------------- | ------------- | -------------
+[**test_enum_ref_string**](QueryApi.md#test_enum_ref_string) | **GET** /query/enum_ref_string | Test query parameter(s)
+[**test_query_datetime_date_string**](QueryApi.md#test_query_datetime_date_string) | **GET** /query/datetime/date/string | Test query parameter(s)
+[**test_query_integer_boolean_string**](QueryApi.md#test_query_integer_boolean_string) | **GET** /query/integer/boolean/string | Test query parameter(s)
+[**test_query_style_deep_object_explode_true_object**](QueryApi.md#test_query_style_deep_object_explode_true_object) | **GET** /query/style_deepObject/explode_true/object | Test query parameter(s)
+[**test_query_style_deep_object_explode_true_object_all_of**](QueryApi.md#test_query_style_deep_object_explode_true_object_all_of) | **GET** /query/style_deepObject/explode_true/object/allOf | Test query parameter(s)
+[**test_query_style_form_explode_true_array_string**](QueryApi.md#test_query_style_form_explode_true_array_string) | **GET** /query/style_form/explode_true/array_string | Test query parameter(s)
+[**test_query_style_form_explode_true_object**](QueryApi.md#test_query_style_form_explode_true_object) | **GET** /query/style_form/explode_true/object | Test query parameter(s)
+[**test_query_style_form_explode_true_object_all_of**](QueryApi.md#test_query_style_form_explode_true_object_all_of) | **GET** /query/style_form/explode_true/object/allOf | Test query parameter(s)
+
+
+# **test_enum_ref_string**
+> str test_enum_ref_string(enum_ref_string_query=enum_ref_string_query)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.string_enum_ref import StringEnumRef
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ enum_ref_string_query = openapi_client.StringEnumRef() # StringEnumRef | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_enum_ref_string(enum_ref_string_query=enum_ref_string_query)
+ print("The response of QueryApi->test_enum_ref_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_enum_ref_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **enum_ref_string_query** | [**StringEnumRef**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_datetime_date_string**
+> str test_query_datetime_date_string(datetime_query=datetime_query, date_query=date_query, string_query=string_query)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ datetime_query = '2013-10-20T19:20:30+01:00' # datetime | (optional)
+ date_query = '2013-10-20' # date | (optional)
+ string_query = 'string_query_example' # str | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_datetime_date_string(datetime_query=datetime_query, date_query=date_query, string_query=string_query)
+ print("The response of QueryApi->test_query_datetime_date_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_datetime_date_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **datetime_query** | **datetime**| | [optional]
+ **date_query** | **date**| | [optional]
+ **string_query** | **str**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_integer_boolean_string**
+> str test_query_integer_boolean_string(integer_query=integer_query, boolean_query=boolean_query, string_query=string_query)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ integer_query = 56 # int | (optional)
+ boolean_query = True # bool | (optional)
+ string_query = 'string_query_example' # str | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_integer_boolean_string(integer_query=integer_query, boolean_query=boolean_query, string_query=string_query)
+ print("The response of QueryApi->test_query_integer_boolean_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_integer_boolean_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **integer_query** | **int**| | [optional]
+ **boolean_query** | **bool**| | [optional]
+ **string_query** | **str**| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_style_deep_object_explode_true_object**
+> str test_query_style_deep_object_explode_true_object(query_object=query_object)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.pet import Pet
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ query_object = openapi_client.Pet() # Pet | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_style_deep_object_explode_true_object(query_object=query_object)
+ print("The response of QueryApi->test_query_style_deep_object_explode_true_object:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_style_deep_object_explode_true_object: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query_object** | [**Pet**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_style_deep_object_explode_true_object_all_of**
+> str test_query_style_deep_object_explode_true_object_all_of(query_object=query_object)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ query_object = openapi_client.TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter() # TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_style_deep_object_explode_true_object_all_of(query_object=query_object)
+ print("The response of QueryApi->test_query_style_deep_object_explode_true_object_all_of:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_style_deep_object_explode_true_object_all_of: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query_object** | [**TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_style_form_explode_true_array_string**
+> str test_query_style_form_explode_true_array_string(query_object=query_object)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ query_object = openapi_client.TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter() # TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_style_form_explode_true_array_string(query_object=query_object)
+ print("The response of QueryApi->test_query_style_form_explode_true_array_string:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_style_form_explode_true_array_string: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query_object** | [**TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_style_form_explode_true_object**
+> str test_query_style_form_explode_true_object(query_object=query_object)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.models.pet import Pet
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ query_object = openapi_client.Pet() # Pet | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_style_form_explode_true_object(query_object=query_object)
+ print("The response of QueryApi->test_query_style_form_explode_true_object:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_style_form_explode_true_object: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query_object** | [**Pet**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
+# **test_query_style_form_explode_true_object_all_of**
+> str test_query_style_form_explode_true_object_all_of(query_object=query_object)
+
+Test query parameter(s)
+
+Test query parameter(s)
+
+### Example
+
+```python
+import time
+import os
+import openapi_client
+from openapi_client.rest import ApiException
+from pprint import pprint
+
+# Defining the host is optional and defaults to http://localhost:3000
+# See configuration.py for a list of all supported configuration parameters.
+configuration = openapi_client.Configuration(
+ host = "http://localhost:3000"
+)
+
+
+# Enter a context with an instance of the API client
+with openapi_client.ApiClient(configuration) as api_client:
+ # Create an instance of the API class
+ api_instance = openapi_client.QueryApi(api_client)
+ query_object = openapi_client.DataQuery() # DataQuery | (optional)
+
+ try:
+ # Test query parameter(s)
+ api_response = api_instance.test_query_style_form_explode_true_object_all_of(query_object=query_object)
+ print("The response of QueryApi->test_query_style_form_explode_true_object_all_of:\n")
+ pprint(api_response)
+ except Exception as e:
+ print("Exception when calling QueryApi->test_query_style_form_explode_true_object_all_of: %s\n" % e)
+```
+
+
+
+### Parameters
+
+Name | Type | Description | Notes
+------------- | ------------- | ------------- | -------------
+ **query_object** | [**DataQuery**](.md)| | [optional]
+
+### Return type
+
+**str**
+
+### Authorization
+
+No authorization required
+
+### HTTP request headers
+
+ - **Content-Type**: Not defined
+ - **Accept**: text/plain
+
+### HTTP response details
+| Status code | Description | Response headers |
+|-------------|-------------|------------------|
+**200** | Successful operation | - |
+
+[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/StringEnumRef.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/StringEnumRef.md
new file mode 100644
index 00000000000..f59594fb861
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/StringEnumRef.md
@@ -0,0 +1,10 @@
+# StringEnumRef
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Tag.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Tag.md
new file mode 100644
index 00000000000..febb268b144
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/Tag.md
@@ -0,0 +1,29 @@
+# Tag
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**id** | **int** | | [optional]
+**name** | **str** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.tag import Tag
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of Tag from a JSON string
+tag_instance = Tag.from_json(json)
+# print the JSON string representation of the object
+print Tag.to_json()
+
+# convert the object into a dict
+tag_dict = tag_instance.to_dict()
+# create an instance of Tag from a dict
+tag_form_dict = tag.from_dict(tag_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.md
new file mode 100644
index 00000000000..3b0a87b71c5
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.md
@@ -0,0 +1,31 @@
+# TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**size** | **str** | | [optional]
+**color** | **str** | | [optional]
+**id** | **int** | | [optional]
+**name** | **str** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string
+test_query_style_deep_object_explode_true_object_all_of_query_object_parameter_instance = TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.from_json(json)
+# print the JSON string representation of the object
+print TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.to_json()
+
+# convert the object into a dict
+test_query_style_deep_object_explode_true_object_all_of_query_object_parameter_dict = test_query_style_deep_object_explode_true_object_all_of_query_object_parameter_instance.to_dict()
+# create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict
+test_query_style_deep_object_explode_true_object_all_of_query_object_parameter_form_dict = test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.from_dict(test_query_style_deep_object_explode_true_object_all_of_query_object_parameter_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.md b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.md
new file mode 100644
index 00000000000..c741b723f00
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/docs/TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.md
@@ -0,0 +1,28 @@
+# TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**values** | **List[str]** | | [optional]
+
+## Example
+
+```python
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+
+# TODO update the JSON string below
+json = "{}"
+# create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string
+test_query_style_form_explode_true_array_string_query_object_parameter_instance = TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.from_json(json)
+# print the JSON string representation of the object
+print TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.to_json()
+
+# convert the object into a dict
+test_query_style_form_explode_true_array_string_query_object_parameter_dict = test_query_style_form_explode_true_array_string_query_object_parameter_instance.to_dict()
+# create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict
+test_query_style_form_explode_true_array_string_query_object_parameter_form_dict = test_query_style_form_explode_true_array_string_query_object_parameter.from_dict(test_query_style_form_explode_true_array_string_query_object_parameter_dict)
+```
+[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/git_push.sh b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/git_push.sh
new file mode 100644
index 00000000000..f53a75d4fab
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/git_push.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/
+#
+# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com"
+
+git_user_id=$1
+git_repo_id=$2
+release_note=$3
+git_host=$4
+
+if [ "$git_host" = "" ]; then
+ git_host="github.com"
+ echo "[INFO] No command line input provided. Set \$git_host to $git_host"
+fi
+
+if [ "$git_user_id" = "" ]; then
+ git_user_id="GIT_USER_ID"
+ echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id"
+fi
+
+if [ "$git_repo_id" = "" ]; then
+ git_repo_id="GIT_REPO_ID"
+ echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id"
+fi
+
+if [ "$release_note" = "" ]; then
+ release_note="Minor update"
+ echo "[INFO] No command line input provided. Set \$release_note to $release_note"
+fi
+
+# Initialize the local directory as a Git repository
+git init
+
+# Adds the files in the local repository and stages them for commit.
+git add .
+
+# Commits the tracked changes and prepares them to be pushed to a remote repository.
+git commit -m "$release_note"
+
+# Sets the new remote
+git_remote=$(git remote)
+if [ "$git_remote" = "" ]; then # git remote not defined
+
+ if [ "$GIT_TOKEN" = "" ]; then
+ echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment."
+ git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git
+ else
+ git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git
+ fi
+
+fi
+
+git pull origin master
+
+# Pushes (Forces) the changes in the local repository up to the remote repository
+echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git"
+git push origin master 2>&1 | grep -v 'To https'
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/__init__.py
new file mode 100644
index 00000000000..7b67f7c597f
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/__init__.py
@@ -0,0 +1,50 @@
+# coding: utf-8
+
+# flake8: noqa
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+__version__ = "1.0.0"
+
+# import apis into sdk package
+from openapi_client.api.auth_api import AuthApi
+from openapi_client.api.body_api import BodyApi
+from openapi_client.api.form_api import FormApi
+from openapi_client.api.header_api import HeaderApi
+from openapi_client.api.path_api import PathApi
+from openapi_client.api.query_api import QueryApi
+
+# import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.api_client import ApiClient
+from openapi_client.configuration import Configuration
+from openapi_client.exceptions import OpenApiException
+from openapi_client.exceptions import ApiTypeError
+from openapi_client.exceptions import ApiValueError
+from openapi_client.exceptions import ApiKeyError
+from openapi_client.exceptions import ApiAttributeError
+from openapi_client.exceptions import ApiException
+
+# import models into sdk package
+from openapi_client.models.bird import Bird
+from openapi_client.models.category import Category
+from openapi_client.models.data_query import DataQuery
+from openapi_client.models.default_value import DefaultValue
+from openapi_client.models.number_properties_only import NumberPropertiesOnly
+from openapi_client.models.pet import Pet
+from openapi_client.models.query import Query
+from openapi_client.models.string_enum_ref import StringEnumRef
+from openapi_client.models.tag import Tag
+from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/__init__.py
new file mode 100644
index 00000000000..9c9ae790c3b
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/__init__.py
@@ -0,0 +1,10 @@
+# flake8: noqa
+
+# import apis into api package
+from openapi_client.api.auth_api import AuthApi
+from openapi_client.api.body_api import BodyApi
+from openapi_client.api.form_api import FormApi
+from openapi_client.api.header_api import HeaderApi
+from openapi_client.api.path_api import PathApi
+from openapi_client.api.query_api import QueryApi
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/auth_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/auth_api.py
new file mode 100644
index 00000000000..4e7959696e7
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/auth_api.py
@@ -0,0 +1,173 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class AuthApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def test_auth_http_basic(self, **kwargs) -> str: # noqa: E501
+ """To test HTTP basic authentication # noqa: E501
+
+ To test HTTP basic authentication # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_auth_http_basic(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_auth_http_basic_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_auth_http_basic_with_http_info(**kwargs) # noqa: E501
+
+ @validate_call
+ def test_auth_http_basic_with_http_info(self, **kwargs) -> ApiResponse: # noqa: E501
+ """To test HTTP basic authentication # noqa: E501
+
+ To test HTTP basic authentication # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_auth_http_basic_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_auth_http_basic" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = ['http_auth'] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/auth/http/basic', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/body_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/body_api.py
new file mode 100644
index 00000000000..e3465a71db4
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/body_api.py
@@ -0,0 +1,1069 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+from pydantic import Field
+from typing_extensions import Annotated
+from pydantic import StrictBytes, StrictStr
+
+from typing import Any, Dict, List, Optional, Union
+
+from openapi_client.models.pet import Pet
+from openapi_client.models.tag import Tag
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class BodyApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def test_binary_gif(self, **kwargs) -> bytearray: # noqa: E501
+ """Test binary (gif) response body # noqa: E501
+
+ Test binary (gif) response body # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_binary_gif(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: bytearray
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_binary_gif_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_binary_gif_with_http_info(**kwargs) # noqa: E501
+
+ @validate_call
+ def test_binary_gif_with_http_info(self, **kwargs) -> ApiResponse: # noqa: E501
+ """Test binary (gif) response body # noqa: E501
+
+ Test binary (gif) response body # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_binary_gif_with_http_info(async_req=True)
+ >>> result = thread.get()
+
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(bytearray, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_binary_gif" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['image/gif']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "bytearray",
+ }
+
+ return self.api_client.call_api(
+ '/binary/gif', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_body_application_octetstream_binary(self, body : Optional[Union[StrictBytes, StrictStr]] = None, **kwargs) -> str: # noqa: E501
+ """Test body parameter(s) # noqa: E501
+
+ Test body parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_body_application_octetstream_binary(body, async_req=True)
+ >>> result = thread.get()
+
+ :param body:
+ :type body: bytearray
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_body_application_octetstream_binary_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_body_application_octetstream_binary_with_http_info(body, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_body_application_octetstream_binary_with_http_info(self, body : Optional[Union[StrictBytes, StrictStr]] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test body parameter(s) # noqa: E501
+
+ Test body parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_body_application_octetstream_binary_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param body:
+ :type body: bytearray
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'body'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_body_application_octetstream_binary" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ if _params['body'] is not None:
+ _body_params = _params['body']
+ # convert to byte array if the input is a file name (str)
+ if isinstance(_body_params, str):
+ with io.open(_body_params, "rb") as _fp:
+ _body_params_from_file = _fp.read()
+ _body_params = _body_params_from_file
+
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/octet-stream']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/body/application/octetstream/binary', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_body_multipart_formdata_array_of_binary(self, files : List[Union[StrictBytes, StrictStr]], **kwargs) -> str: # noqa: E501
+ """Test array of binary in multipart mime # noqa: E501
+
+ Test array of binary in multipart mime # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_body_multipart_formdata_array_of_binary(files, async_req=True)
+ >>> result = thread.get()
+
+ :param files: (required)
+ :type files: List[bytearray]
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_body_multipart_formdata_array_of_binary_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_body_multipart_formdata_array_of_binary_with_http_info(files, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_body_multipart_formdata_array_of_binary_with_http_info(self, files : List[Union[StrictBytes, StrictStr]], **kwargs) -> ApiResponse: # noqa: E501
+ """Test array of binary in multipart mime # noqa: E501
+
+ Test array of binary in multipart mime # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_body_multipart_formdata_array_of_binary_with_http_info(files, async_req=True)
+ >>> result = thread.get()
+
+ :param files: (required)
+ :type files: List[bytearray]
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'files'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_body_multipart_formdata_array_of_binary" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ if _params['files'] is not None:
+ _files['files'] = _params['files']
+ _collection_formats['files'] = 'csv'
+
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['multipart/form-data']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/body/application/octetstream/array_of_binary', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_echo_body_free_form_object_response_string(self, body : Annotated[Optional[Dict[str, Any]], Field(description="Free form object")] = None, **kwargs) -> str: # noqa: E501
+ """Test free form object # noqa: E501
+
+ Test free form object # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_free_form_object_response_string(body, async_req=True)
+ >>> result = thread.get()
+
+ :param body: Free form object
+ :type body: object
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_echo_body_free_form_object_response_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_echo_body_free_form_object_response_string_with_http_info(body, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_echo_body_free_form_object_response_string_with_http_info(self, body : Annotated[Optional[Dict[str, Any]], Field(description="Free form object")] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test free form object # noqa: E501
+
+ Test free form object # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_free_form_object_response_string_with_http_info(body, async_req=True)
+ >>> result = thread.get()
+
+ :param body: Free form object
+ :type body: object
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'body'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_echo_body_free_form_object_response_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ if _params['body'] is not None:
+ _body_params = _params['body']
+
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/json']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/echo/body/FreeFormObject/response_string', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_echo_body_pet(self, pet : Annotated[Optional[Pet], Field(description="Pet object that needs to be added to the store")] = None, **kwargs) -> Pet: # noqa: E501
+ """Test body parameter(s) # noqa: E501
+
+ Test body parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_pet(pet, async_req=True)
+ >>> result = thread.get()
+
+ :param pet: Pet object that needs to be added to the store
+ :type pet: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: Pet
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_echo_body_pet_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_echo_body_pet_with_http_info(pet, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_echo_body_pet_with_http_info(self, pet : Annotated[Optional[Pet], Field(description="Pet object that needs to be added to the store")] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test body parameter(s) # noqa: E501
+
+ Test body parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_pet_with_http_info(pet, async_req=True)
+ >>> result = thread.get()
+
+ :param pet: Pet object that needs to be added to the store
+ :type pet: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(Pet, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'pet'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_echo_body_pet" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ if _params['pet'] is not None:
+ _body_params = _params['pet']
+
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['application/json']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/json']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "Pet",
+ }
+
+ return self.api_client.call_api(
+ '/echo/body/Pet', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_echo_body_pet_response_string(self, pet : Annotated[Optional[Pet], Field(description="Pet object that needs to be added to the store")] = None, **kwargs) -> str: # noqa: E501
+ """Test empty response body # noqa: E501
+
+ Test empty response body # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_pet_response_string(pet, async_req=True)
+ >>> result = thread.get()
+
+ :param pet: Pet object that needs to be added to the store
+ :type pet: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_echo_body_pet_response_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_echo_body_pet_response_string_with_http_info(pet, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_echo_body_pet_response_string_with_http_info(self, pet : Annotated[Optional[Pet], Field(description="Pet object that needs to be added to the store")] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test empty response body # noqa: E501
+
+ Test empty response body # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_pet_response_string_with_http_info(pet, async_req=True)
+ >>> result = thread.get()
+
+ :param pet: Pet object that needs to be added to the store
+ :type pet: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'pet'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_echo_body_pet_response_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ if _params['pet'] is not None:
+ _body_params = _params['pet']
+
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/json']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/echo/body/Pet/response_string', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_echo_body_tag_response_string(self, tag : Annotated[Optional[Tag], Field(description="Tag object")] = None, **kwargs) -> str: # noqa: E501
+ """Test empty json (request body) # noqa: E501
+
+ Test empty json (request body) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_tag_response_string(tag, async_req=True)
+ >>> result = thread.get()
+
+ :param tag: Tag object
+ :type tag: Tag
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_echo_body_tag_response_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_echo_body_tag_response_string_with_http_info(tag, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_echo_body_tag_response_string_with_http_info(self, tag : Annotated[Optional[Tag], Field(description="Tag object")] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test empty json (request body) # noqa: E501
+
+ Test empty json (request body) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_echo_body_tag_response_string_with_http_info(tag, async_req=True)
+ >>> result = thread.get()
+
+ :param tag: Tag object
+ :type tag: Tag
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'tag'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_echo_body_tag_response_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ if _params['tag'] is not None:
+ _body_params = _params['tag']
+
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/json']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/echo/body/Tag/response_string', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/form_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/form_api.py
new file mode 100644
index 00000000000..7d92389ace7
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/form_api.py
@@ -0,0 +1,395 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+from pydantic import StrictBool, StrictInt, StrictStr
+
+from typing import Optional
+
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class FormApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def test_form_integer_boolean_string(self, integer_form : Optional[StrictInt] = None, boolean_form : Optional[StrictBool] = None, string_form : Optional[StrictStr] = None, **kwargs) -> str: # noqa: E501
+ """Test form parameter(s) # noqa: E501
+
+ Test form parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_form_integer_boolean_string(integer_form, boolean_form, string_form, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_form:
+ :type integer_form: int
+ :param boolean_form:
+ :type boolean_form: bool
+ :param string_form:
+ :type string_form: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_form_integer_boolean_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_form_integer_boolean_string_with_http_info(integer_form, boolean_form, string_form, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_form_integer_boolean_string_with_http_info(self, integer_form : Optional[StrictInt] = None, boolean_form : Optional[StrictBool] = None, string_form : Optional[StrictStr] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test form parameter(s) # noqa: E501
+
+ Test form parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_form_integer_boolean_string_with_http_info(integer_form, boolean_form, string_form, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_form:
+ :type integer_form: int
+ :param boolean_form:
+ :type boolean_form: bool
+ :param string_form:
+ :type string_form: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'integer_form',
+ 'boolean_form',
+ 'string_form'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_form_integer_boolean_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ if _params['integer_form'] is not None:
+ _form_params.append(('integer_form', _params['integer_form']))
+
+ if _params['boolean_form'] is not None:
+ _form_params.append(('boolean_form', _params['boolean_form']))
+
+ if _params['string_form'] is not None:
+ _form_params.append(('string_form', _params['string_form']))
+
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/x-www-form-urlencoded']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/form/integer/boolean/string', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_form_oneof(self, form1 : Optional[StrictStr] = None, form2 : Optional[StrictInt] = None, form3 : Optional[StrictStr] = None, form4 : Optional[StrictBool] = None, id : Optional[StrictInt] = None, name : Optional[StrictStr] = None, **kwargs) -> str: # noqa: E501
+ """Test form parameter(s) for oneOf schema # noqa: E501
+
+ Test form parameter(s) for oneOf schema # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_form_oneof(form1, form2, form3, form4, id, name, async_req=True)
+ >>> result = thread.get()
+
+ :param form1:
+ :type form1: str
+ :param form2:
+ :type form2: int
+ :param form3:
+ :type form3: str
+ :param form4:
+ :type form4: bool
+ :param id:
+ :type id: int
+ :param name:
+ :type name: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_form_oneof_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_form_oneof_with_http_info(form1, form2, form3, form4, id, name, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_form_oneof_with_http_info(self, form1 : Optional[StrictStr] = None, form2 : Optional[StrictInt] = None, form3 : Optional[StrictStr] = None, form4 : Optional[StrictBool] = None, id : Optional[StrictInt] = None, name : Optional[StrictStr] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test form parameter(s) for oneOf schema # noqa: E501
+
+ Test form parameter(s) for oneOf schema # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_form_oneof_with_http_info(form1, form2, form3, form4, id, name, async_req=True)
+ >>> result = thread.get()
+
+ :param form1:
+ :type form1: str
+ :param form2:
+ :type form2: int
+ :param form3:
+ :type form3: str
+ :param form4:
+ :type form4: bool
+ :param id:
+ :type id: int
+ :param name:
+ :type name: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'form1',
+ 'form2',
+ 'form3',
+ 'form4',
+ 'id',
+ 'name'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_form_oneof" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ if _params['form1'] is not None:
+ _form_params.append(('form1', _params['form1']))
+
+ if _params['form2'] is not None:
+ _form_params.append(('form2', _params['form2']))
+
+ if _params['form3'] is not None:
+ _form_params.append(('form3', _params['form3']))
+
+ if _params['form4'] is not None:
+ _form_params.append(('form4', _params['form4']))
+
+ if _params['id'] is not None:
+ _form_params.append(('id', _params['id']))
+
+ if _params['name'] is not None:
+ _form_params.append(('name', _params['name']))
+
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # set the HTTP header `Content-Type`
+ _content_types_list = _params.get('_content_type',
+ self.api_client.select_header_content_type(
+ ['application/x-www-form-urlencoded']))
+ if _content_types_list:
+ _header_params['Content-Type'] = _content_types_list
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/form/oneof', 'POST',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/header_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/header_api.py
new file mode 100644
index 00000000000..5a1bef8ba30
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/header_api.py
@@ -0,0 +1,201 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+from pydantic import StrictBool, StrictInt, StrictStr
+
+from typing import Optional
+
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class HeaderApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def test_header_integer_boolean_string(self, integer_header : Optional[StrictInt] = None, boolean_header : Optional[StrictBool] = None, string_header : Optional[StrictStr] = None, **kwargs) -> str: # noqa: E501
+ """Test header parameter(s) # noqa: E501
+
+ Test header parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_header_integer_boolean_string(integer_header, boolean_header, string_header, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_header:
+ :type integer_header: int
+ :param boolean_header:
+ :type boolean_header: bool
+ :param string_header:
+ :type string_header: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_header_integer_boolean_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_header_integer_boolean_string_with_http_info(integer_header, boolean_header, string_header, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_header_integer_boolean_string_with_http_info(self, integer_header : Optional[StrictInt] = None, boolean_header : Optional[StrictBool] = None, string_header : Optional[StrictStr] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test header parameter(s) # noqa: E501
+
+ Test header parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_header_integer_boolean_string_with_http_info(integer_header, boolean_header, string_header, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_header:
+ :type integer_header: int
+ :param boolean_header:
+ :type boolean_header: bool
+ :param string_header:
+ :type string_header: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'integer_header',
+ 'boolean_header',
+ 'string_header'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_header_integer_boolean_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ if _params['integer_header'] is not None:
+ _header_params['integer_header'] = _params['integer_header']
+
+ if _params['boolean_header'] is not None:
+ _header_params['boolean_header'] = _params['boolean_header']
+
+ if _params['string_header'] is not None:
+ _header_params['string_header'] = _params['string_header']
+
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/header/integer/boolean/string', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/path_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/path_api.py
new file mode 100644
index 00000000000..99f144742ab
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/path_api.py
@@ -0,0 +1,191 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+from pydantic import StrictInt, StrictStr
+
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class PathApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def tests_path_string_path_string_integer_path_integer(self, path_string : StrictStr, path_integer : StrictInt, **kwargs) -> str: # noqa: E501
+ """Test path parameter(s) # noqa: E501
+
+ Test path parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.tests_path_string_path_string_integer_path_integer(path_string, path_integer, async_req=True)
+ >>> result = thread.get()
+
+ :param path_string: (required)
+ :type path_string: str
+ :param path_integer: (required)
+ :type path_integer: int
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the tests_path_string_path_string_integer_path_integer_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.tests_path_string_path_string_integer_path_integer_with_http_info(path_string, path_integer, **kwargs) # noqa: E501
+
+ @validate_call
+ def tests_path_string_path_string_integer_path_integer_with_http_info(self, path_string : StrictStr, path_integer : StrictInt, **kwargs) -> ApiResponse: # noqa: E501
+ """Test path parameter(s) # noqa: E501
+
+ Test path parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.tests_path_string_path_string_integer_path_integer_with_http_info(path_string, path_integer, async_req=True)
+ >>> result = thread.get()
+
+ :param path_string: (required)
+ :type path_string: str
+ :param path_integer: (required)
+ :type path_integer: int
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'path_string',
+ 'path_integer'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method tests_path_string_path_string_integer_path_integer" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+ if _params['path_string'] is not None:
+ _path_params['path_string'] = _params['path_string']
+
+ if _params['path_integer'] is not None:
+ _path_params['path_integer'] = _params['path_integer']
+
+
+ # process the query parameters
+ _query_params = []
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/path/string/{path_string}/integer/{path_integer}', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/query_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/query_api.py
new file mode 100644
index 00000000000..caca1968b16
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api/query_api.py
@@ -0,0 +1,1208 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import re # noqa: F401
+import io
+import warnings
+
+from pydantic import validate_call, ValidationError
+
+from datetime import date, datetime
+
+from pydantic import StrictBool, StrictInt, StrictStr
+
+from typing import Any, Optional
+
+from openapi_client.models.pet import Pet
+from openapi_client.models.string_enum_ref import StringEnumRef
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+
+from openapi_client.api_client import ApiClient
+from openapi_client.api_response import ApiResponse
+from openapi_client.exceptions import ( # noqa: F401
+ ApiTypeError,
+ ApiValueError
+)
+
+
+class QueryApi:
+ """NOTE: This class is auto generated by OpenAPI Generator
+ Ref: https://openapi-generator.tech
+
+ Do not edit the class manually.
+ """
+
+ def __init__(self, api_client=None) -> None:
+ if api_client is None:
+ api_client = ApiClient.get_default()
+ self.api_client = api_client
+
+ @validate_call
+ def test_enum_ref_string(self, enum_ref_string_query : Optional[StringEnumRef] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_enum_ref_string(enum_ref_string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param enum_ref_string_query:
+ :type enum_ref_string_query: StringEnumRef
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_enum_ref_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_enum_ref_string_with_http_info(enum_ref_string_query, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_enum_ref_string_with_http_info(self, enum_ref_string_query : Optional[StringEnumRef] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_enum_ref_string_with_http_info(enum_ref_string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param enum_ref_string_query:
+ :type enum_ref_string_query: StringEnumRef
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'enum_ref_string_query'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_enum_ref_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('enum_ref_string_query') is not None: # noqa: E501
+ _query_params.append(('enum_ref_string_query', _params['enum_ref_string_query'].value))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/enum_ref_string', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_datetime_date_string(self, datetime_query : Optional[datetime] = None, date_query : Optional[date] = None, string_query : Optional[StrictStr] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_datetime_date_string(datetime_query, date_query, string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param datetime_query:
+ :type datetime_query: datetime
+ :param date_query:
+ :type date_query: date
+ :param string_query:
+ :type string_query: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_datetime_date_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_datetime_date_string_with_http_info(datetime_query, date_query, string_query, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_datetime_date_string_with_http_info(self, datetime_query : Optional[datetime] = None, date_query : Optional[date] = None, string_query : Optional[StrictStr] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_datetime_date_string_with_http_info(datetime_query, date_query, string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param datetime_query:
+ :type datetime_query: datetime
+ :param date_query:
+ :type date_query: date
+ :param string_query:
+ :type string_query: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'datetime_query',
+ 'date_query',
+ 'string_query'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_datetime_date_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('datetime_query') is not None: # noqa: E501
+ if isinstance(_params['datetime_query'], datetime):
+ _query_params.append(('datetime_query', _params['datetime_query'].strftime(self.api_client.configuration.datetime_format)))
+ else:
+ _query_params.append(('datetime_query', _params['datetime_query']))
+
+ if _params.get('date_query') is not None: # noqa: E501
+ if isinstance(_params['date_query'], date):
+ _query_params.append(('date_query', _params['date_query'].strftime(self.api_client.configuration.date_format)))
+ else:
+ _query_params.append(('date_query', _params['date_query']))
+
+ if _params.get('string_query') is not None: # noqa: E501
+ _query_params.append(('string_query', _params['string_query']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/datetime/date/string', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_integer_boolean_string(self, integer_query : Optional[StrictInt] = None, boolean_query : Optional[StrictBool] = None, string_query : Optional[StrictStr] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_integer_boolean_string(integer_query, boolean_query, string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_query:
+ :type integer_query: int
+ :param boolean_query:
+ :type boolean_query: bool
+ :param string_query:
+ :type string_query: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_integer_boolean_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_integer_boolean_string_with_http_info(integer_query, boolean_query, string_query, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_integer_boolean_string_with_http_info(self, integer_query : Optional[StrictInt] = None, boolean_query : Optional[StrictBool] = None, string_query : Optional[StrictStr] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_integer_boolean_string_with_http_info(integer_query, boolean_query, string_query, async_req=True)
+ >>> result = thread.get()
+
+ :param integer_query:
+ :type integer_query: int
+ :param boolean_query:
+ :type boolean_query: bool
+ :param string_query:
+ :type string_query: str
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'integer_query',
+ 'boolean_query',
+ 'string_query'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_integer_boolean_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('integer_query') is not None: # noqa: E501
+ _query_params.append(('integer_query', _params['integer_query']))
+
+ if _params.get('boolean_query') is not None: # noqa: E501
+ _query_params.append(('boolean_query', _params['boolean_query']))
+
+ if _params.get('string_query') is not None: # noqa: E501
+ _query_params.append(('string_query', _params['string_query']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/integer/boolean/string', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_style_deep_object_explode_true_object(self, query_object : Optional[Pet] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_deep_object_explode_true_object(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_style_deep_object_explode_true_object_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_style_deep_object_explode_true_object_with_http_info(query_object, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_style_deep_object_explode_true_object_with_http_info(self, query_object : Optional[Pet] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_deep_object_explode_true_object_with_http_info(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'query_object'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_style_deep_object_explode_true_object" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('query_object') is not None: # noqa: E501
+ _query_params.append(('query_object', _params['query_object']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/style_deepObject/explode_true/object', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_style_deep_object_explode_true_object_all_of(self, query_object : Optional[Any] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_deep_object_explode_true_object_all_of(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_style_deep_object_explode_true_object_all_of_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_style_deep_object_explode_true_object_all_of_with_http_info(query_object, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_style_deep_object_explode_true_object_all_of_with_http_info(self, query_object : Optional[Any] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_deep_object_explode_true_object_all_of_with_http_info(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'query_object'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_style_deep_object_explode_true_object_all_of" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('query_object') is not None: # noqa: E501
+ _query_params.append(('query_object', _params['query_object']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/style_deepObject/explode_true/object/allOf', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_style_form_explode_true_array_string(self, query_object : Optional[TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_array_string(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_style_form_explode_true_array_string_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_style_form_explode_true_array_string_with_http_info(query_object, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_style_form_explode_true_array_string_with_http_info(self, query_object : Optional[TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_array_string_with_http_info(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'query_object'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_style_form_explode_true_array_string" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('query_object') is not None: # noqa: E501
+ _query_params.append(('query_object', _params['query_object']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/style_form/explode_true/array_string', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_style_form_explode_true_object(self, query_object : Optional[Pet] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_object(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_style_form_explode_true_object_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_style_form_explode_true_object_with_http_info(query_object, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_style_form_explode_true_object_with_http_info(self, query_object : Optional[Pet] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_object_with_http_info(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: Pet
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'query_object'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_style_form_explode_true_object" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('query_object') is not None: # noqa: E501
+ _query_params.append(('query_object', _params['query_object']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/style_form/explode_true/object', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
+
+ @validate_call
+ def test_query_style_form_explode_true_object_all_of(self, query_object : Optional[Any] = None, **kwargs) -> str: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_object_all_of(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: DataQuery
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _request_timeout: timeout setting for this request.
+ If one number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: str
+ """
+ kwargs['_return_http_data_only'] = True
+ if '_preload_content' in kwargs:
+ message = "Error! Please call the test_query_style_form_explode_true_object_all_of_with_http_info method with `_preload_content` instead and obtain raw data from ApiResponse.raw_data" # noqa: E501
+ raise ValueError(message)
+ return self.test_query_style_form_explode_true_object_all_of_with_http_info(query_object, **kwargs) # noqa: E501
+
+ @validate_call
+ def test_query_style_form_explode_true_object_all_of_with_http_info(self, query_object : Optional[Any] = None, **kwargs) -> ApiResponse: # noqa: E501
+ """Test query parameter(s) # noqa: E501
+
+ Test query parameter(s) # noqa: E501
+ This method makes a synchronous HTTP request by default. To make an
+ asynchronous HTTP request, please pass async_req=True
+
+ >>> thread = api.test_query_style_form_explode_true_object_all_of_with_http_info(query_object, async_req=True)
+ >>> result = thread.get()
+
+ :param query_object:
+ :type query_object: DataQuery
+ :param async_req: Whether to execute the request asynchronously.
+ :type async_req: bool, optional
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :type _preload_content: bool, optional
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :type _return_http_data_only: bool, optional
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_auth: dict, optional
+ :type _content_type: string, optional: force content-type for the request
+ :return: Returns the result object.
+ If the method is called asynchronously,
+ returns the request thread.
+ :rtype: tuple(str, status_code(int), headers(HTTPHeaderDict))
+ """
+
+ _params = locals()
+
+ _all_params = [
+ 'query_object'
+ ]
+ _all_params.extend(
+ [
+ 'async_req',
+ '_return_http_data_only',
+ '_preload_content',
+ '_request_timeout',
+ '_request_auth',
+ '_content_type',
+ '_headers'
+ ]
+ )
+
+ # validate the arguments
+ for _key, _val in _params['kwargs'].items():
+ if _key not in _all_params:
+ raise ApiTypeError(
+ "Got an unexpected keyword argument '%s'"
+ " to method test_query_style_form_explode_true_object_all_of" % _key
+ )
+ _params[_key] = _val
+ del _params['kwargs']
+
+ _collection_formats = {}
+
+ # process the path parameters
+ _path_params = {}
+
+ # process the query parameters
+ _query_params = []
+ if _params.get('query_object') is not None: # noqa: E501
+ _query_params.append(('query_object', _params['query_object']))
+
+ # process the header parameters
+ _header_params = dict(_params.get('_headers', {}))
+ # process the form parameters
+ _form_params = []
+ _files = {}
+ # process the body parameter
+ _body_params = None
+ # set the HTTP header `Accept`
+ _header_params['Accept'] = self.api_client.select_header_accept(
+ ['text/plain']) # noqa: E501
+
+ # authentication setting
+ _auth_settings = [] # noqa: E501
+
+ _response_types_map = {
+ '200': "str",
+ }
+
+ return self.api_client.call_api(
+ '/query/style_form/explode_true/object/allOf', 'GET',
+ _path_params,
+ _query_params,
+ _header_params,
+ body=_body_params,
+ post_params=_form_params,
+ files=_files,
+ response_types_map=_response_types_map,
+ auth_settings=_auth_settings,
+ async_req=_params.get('async_req'),
+ _return_http_data_only=_params.get('_return_http_data_only'), # noqa: E501
+ _preload_content=_params.get('_preload_content', True),
+ _request_timeout=_params.get('_request_timeout'),
+ collection_formats=_collection_formats,
+ _request_auth=_params.get('_request_auth'))
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py
new file mode 100644
index 00000000000..962fad87d68
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_client.py
@@ -0,0 +1,760 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import atexit
+import datetime
+from dateutil.parser import parse
+import json
+import mimetypes
+from multiprocessing.pool import ThreadPool
+import os
+import re
+import tempfile
+
+from urllib.parse import quote
+
+from openapi_client.configuration import Configuration
+from openapi_client.api_response import ApiResponse
+import openapi_client.models
+from openapi_client import rest
+from openapi_client.exceptions import ApiValueError, ApiException
+
+
+class ApiClient:
+ """Generic API client for OpenAPI client library builds.
+
+ OpenAPI generic API client. This client handles the client-
+ server communication, and is invariant across implementations. Specifics of
+ the methods and models for each application are generated from the OpenAPI
+ templates.
+
+ :param configuration: .Configuration object for this client
+ :param header_name: a header to pass when making calls to the API.
+ :param header_value: a header value to pass when making calls to
+ the API.
+ :param cookie: a cookie to include in the header when making calls
+ to the API
+ :param pool_threads: The number of threads to use for async requests
+ to the API. More threads means more concurrent API requests.
+ """
+
+ PRIMITIVE_TYPES = (float, bool, bytes, str, int)
+ NATIVE_TYPES_MAPPING = {
+ 'int': int,
+ 'long': int, # TODO remove as only py3 is supported?
+ 'float': float,
+ 'str': str,
+ 'bool': bool,
+ 'date': datetime.date,
+ 'datetime': datetime.datetime,
+ 'object': object,
+ }
+ _pool = None
+
+ def __init__(self, configuration=None, header_name=None, header_value=None,
+ cookie=None, pool_threads=1) -> None:
+ # use default configuration if none is provided
+ if configuration is None:
+ configuration = Configuration.get_default()
+ self.configuration = configuration
+ self.pool_threads = pool_threads
+
+ self.rest_client = rest.RESTClientObject(configuration)
+ self.default_headers = {}
+ if header_name is not None:
+ self.default_headers[header_name] = header_value
+ self.cookie = cookie
+ # Set default User-Agent.
+ self.user_agent = 'OpenAPI-Generator/1.0.0/python'
+ self.client_side_validation = configuration.client_side_validation
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type, exc_value, traceback):
+ self.close()
+
+ def close(self):
+ if self._pool:
+ self._pool.close()
+ self._pool.join()
+ self._pool = None
+ if hasattr(atexit, 'unregister'):
+ atexit.unregister(self.close)
+
+ @property
+ def pool(self):
+ """Create thread pool on first request
+ avoids instantiating unused threadpool for blocking clients.
+ """
+ if self._pool is None:
+ atexit.register(self.close)
+ self._pool = ThreadPool(self.pool_threads)
+ return self._pool
+
+ @property
+ def user_agent(self):
+ """User agent for this API client"""
+ return self.default_headers['User-Agent']
+
+ @user_agent.setter
+ def user_agent(self, value):
+ self.default_headers['User-Agent'] = value
+
+ def set_default_header(self, header_name, header_value):
+ self.default_headers[header_name] = header_value
+
+
+ _default = None
+
+ @classmethod
+ def get_default(cls):
+ """Return new instance of ApiClient.
+
+ This method returns newly created, based on default constructor,
+ object of ApiClient class or returns a copy of default
+ ApiClient.
+
+ :return: The ApiClient object.
+ """
+ if cls._default is None:
+ cls._default = ApiClient()
+ return cls._default
+
+ @classmethod
+ def set_default(cls, default):
+ """Set default instance of ApiClient.
+
+ It stores default ApiClient.
+
+ :param default: object of ApiClient.
+ """
+ cls._default = default
+
+ def __call_api(
+ self, resource_path, method, path_params=None,
+ query_params=None, header_params=None, body=None, post_params=None,
+ files=None, response_types_map=None, auth_settings=None,
+ _return_http_data_only=None, collection_formats=None,
+ _preload_content=True, _request_timeout=None, _host=None,
+ _request_auth=None):
+
+ config = self.configuration
+
+ # header parameters
+ header_params = header_params or {}
+ header_params.update(self.default_headers)
+ if self.cookie:
+ header_params['Cookie'] = self.cookie
+ if header_params:
+ header_params = self.sanitize_for_serialization(header_params)
+ header_params = dict(self.parameters_to_tuples(header_params,
+ collection_formats))
+
+ # path parameters
+ if path_params:
+ path_params = self.sanitize_for_serialization(path_params)
+ path_params = self.parameters_to_tuples(path_params,
+ collection_formats)
+ for k, v in path_params:
+ # specified safe chars, encode everything
+ resource_path = resource_path.replace(
+ '{%s}' % k,
+ quote(str(v), safe=config.safe_chars_for_path_param)
+ )
+
+ # post parameters
+ if post_params or files:
+ post_params = post_params if post_params else []
+ post_params = self.sanitize_for_serialization(post_params)
+ post_params = self.parameters_to_tuples(post_params,
+ collection_formats)
+ post_params.extend(self.files_parameters(files))
+
+ # auth setting
+ self.update_params_for_auth(
+ header_params, query_params, auth_settings,
+ resource_path, method, body,
+ request_auth=_request_auth)
+
+ # body
+ if body:
+ body = self.sanitize_for_serialization(body)
+
+ # request url
+ if _host is None:
+ url = self.configuration.host + resource_path
+ else:
+ # use server/host defined in path or operation instead
+ url = _host + resource_path
+
+ # query parameters
+ if query_params:
+ query_params = self.sanitize_for_serialization(query_params)
+ url_query = self.parameters_to_url_query(query_params,
+ collection_formats)
+ url += "?" + url_query
+
+ try:
+ # perform request and return response
+ response_data = self.request(
+ method, url,
+ query_params=query_params,
+ headers=header_params,
+ post_params=post_params, body=body,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout)
+ except ApiException as e:
+ if e.body:
+ e.body = e.body.decode('utf-8')
+ raise e
+
+ self.last_response = response_data
+
+ return_data = None # assuming deserialization is not needed
+ # data needs deserialization or returns HTTP data (deserialized) only
+ if _preload_content or _return_http_data_only:
+ response_type = response_types_map.get(str(response_data.status), None)
+ if not response_type and isinstance(response_data.status, int) and 100 <= response_data.status <= 599:
+ # if not found, look for '1XX', '2XX', etc.
+ response_type = response_types_map.get(str(response_data.status)[0] + "XX", None)
+
+ if response_type == "bytearray":
+ response_data.data = response_data.data
+ else:
+ match = None
+ content_type = response_data.getheader('content-type')
+ if content_type is not None:
+ match = re.search(r"charset=([a-zA-Z\-\d]+)[\s;]?", content_type)
+ encoding = match.group(1) if match else "utf-8"
+ response_data.data = response_data.data.decode(encoding)
+
+ # deserialize response data
+ if response_type == "bytearray":
+ return_data = response_data.data
+ elif response_type:
+ return_data = self.deserialize(response_data, response_type)
+ else:
+ return_data = None
+
+ if _return_http_data_only:
+ return return_data
+ else:
+ return ApiResponse(status_code = response_data.status,
+ data = return_data,
+ headers = response_data.getheaders(),
+ raw_data = response_data.data)
+
+ def sanitize_for_serialization(self, obj):
+ """Builds a JSON POST object.
+
+ If obj is None, return None.
+ If obj is str, int, long, float, bool, return directly.
+ If obj is datetime.datetime, datetime.date
+ convert to string in iso8601 format.
+ If obj is list, sanitize each element in the list.
+ If obj is dict, return the dict.
+ If obj is OpenAPI model, return the properties dict.
+
+ :param obj: The data to serialize.
+ :return: The serialized form of data.
+ """
+ if obj is None:
+ return None
+ elif isinstance(obj, self.PRIMITIVE_TYPES):
+ return obj
+ elif isinstance(obj, list):
+ return [self.sanitize_for_serialization(sub_obj)
+ for sub_obj in obj]
+ elif isinstance(obj, tuple):
+ return tuple(self.sanitize_for_serialization(sub_obj)
+ for sub_obj in obj)
+ elif isinstance(obj, (datetime.datetime, datetime.date)):
+ return obj.isoformat()
+
+ if isinstance(obj, dict):
+ obj_dict = obj
+ else:
+ # Convert model obj to dict except
+ # attributes `openapi_types`, `attribute_map`
+ # and attributes which value is not None.
+ # Convert attribute name to json key in
+ # model definition for request.
+ obj_dict = obj.to_dict()
+
+ return {key: self.sanitize_for_serialization(val)
+ for key, val in obj_dict.items()}
+
+ def deserialize(self, response, response_type):
+ """Deserializes response into an object.
+
+ :param response: RESTResponse object to be deserialized.
+ :param response_type: class literal for
+ deserialized object, or string of class name.
+
+ :return: deserialized object.
+ """
+ # handle file downloading
+ # save response body into a tmp file and return the instance
+ if response_type == "file":
+ return self.__deserialize_file(response)
+
+ # fetch data from response object
+ try:
+ data = json.loads(response.data)
+ except ValueError:
+ data = response.data
+
+ return self.__deserialize(data, response_type)
+
+ def __deserialize(self, data, klass):
+ """Deserializes dict, list, str into an object.
+
+ :param data: dict, list or str.
+ :param klass: class literal, or string of class name.
+
+ :return: object.
+ """
+ if data is None:
+ return None
+
+ if isinstance(klass, str):
+ if klass.startswith('List['):
+ sub_kls = re.match(r'List\[(.*)]', klass).group(1)
+ return [self.__deserialize(sub_data, sub_kls)
+ for sub_data in data]
+
+ if klass.startswith('Dict['):
+ sub_kls = re.match(r'Dict\[([^,]*), (.*)]', klass).group(2)
+ return {k: self.__deserialize(v, sub_kls)
+ for k, v in data.items()}
+
+ # convert str to class
+ if klass in self.NATIVE_TYPES_MAPPING:
+ klass = self.NATIVE_TYPES_MAPPING[klass]
+ else:
+ klass = getattr(openapi_client.models, klass)
+
+ if klass in self.PRIMITIVE_TYPES:
+ return self.__deserialize_primitive(data, klass)
+ elif klass == object:
+ return self.__deserialize_object(data)
+ elif klass == datetime.date:
+ return self.__deserialize_date(data)
+ elif klass == datetime.datetime:
+ return self.__deserialize_datetime(data)
+ else:
+ return self.__deserialize_model(data, klass)
+
+ def call_api(self, resource_path, method,
+ path_params=None, query_params=None, header_params=None,
+ body=None, post_params=None, files=None,
+ response_types_map=None, auth_settings=None,
+ async_req=None, _return_http_data_only=None,
+ collection_formats=None, _preload_content=True,
+ _request_timeout=None, _host=None, _request_auth=None):
+ """Makes the HTTP request (synchronous) and returns deserialized data.
+
+ To make an async_req request, set the async_req parameter.
+
+ :param resource_path: Path to method endpoint.
+ :param method: Method to call.
+ :param path_params: Path parameters in the url.
+ :param query_params: Query parameters in the url.
+ :param header_params: Header parameters to be
+ placed in the request header.
+ :param body: Request body.
+ :param post_params dict: Request post form parameters,
+ for `application/x-www-form-urlencoded`, `multipart/form-data`.
+ :param auth_settings list: Auth Settings names for the request.
+ :param response: Response data type.
+ :param files dict: key -> filename, value -> filepath,
+ for `multipart/form-data`.
+ :param async_req bool: execute request asynchronously
+ :param _return_http_data_only: response data instead of ApiResponse
+ object with status code, headers, etc
+ :param _preload_content: if False, the ApiResponse.data will
+ be set to none and raw_data will store the
+ HTTP response body without reading/decoding.
+ Default is True.
+ :param collection_formats: dict of collection formats for path, query,
+ header, and post parameters.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ :param _request_auth: set to override the auth_settings for an a single
+ request; this effectively ignores the authentication
+ in the spec for a single request.
+ :type _request_token: dict, optional
+ :return:
+ If async_req parameter is True,
+ the request will be called asynchronously.
+ The method will return the request thread.
+ If parameter async_req is False or missing,
+ then the method will return the response directly.
+ """
+ args = (
+ resource_path,
+ method,
+ path_params,
+ query_params,
+ header_params,
+ body,
+ post_params,
+ files,
+ response_types_map,
+ auth_settings,
+ _return_http_data_only,
+ collection_formats,
+ _preload_content,
+ _request_timeout,
+ _host,
+ _request_auth,
+ )
+ if not async_req:
+ return self.__call_api(*args)
+
+ return self.pool.apply_async(self.__call_api, args)
+
+ def request(self, method, url, query_params=None, headers=None,
+ post_params=None, body=None, _preload_content=True,
+ _request_timeout=None):
+ """Makes the HTTP request using RESTClient."""
+ if method == "GET":
+ return self.rest_client.get_request(url,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ headers=headers)
+ elif method == "HEAD":
+ return self.rest_client.head_request(url,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ headers=headers)
+ elif method == "OPTIONS":
+ return self.rest_client.options_request(url,
+ query_params=query_params,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout)
+ elif method == "POST":
+ return self.rest_client.post_request(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "PUT":
+ return self.rest_client.put_request(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "PATCH":
+ return self.rest_client.patch_request(url,
+ query_params=query_params,
+ headers=headers,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ elif method == "DELETE":
+ return self.rest_client.delete_request(url,
+ query_params=query_params,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+ else:
+ raise ApiValueError(
+ "http method must be `GET`, `HEAD`, `OPTIONS`,"
+ " `POST`, `PATCH`, `PUT` or `DELETE`."
+ )
+
+ def parameters_to_tuples(self, params, collection_formats):
+ """Get parameters as list of tuples, formatting collections.
+
+ :param params: Parameters as dict or list of two-tuples
+ :param dict collection_formats: Parameter collection formats
+ :return: Parameters as list of tuples, collections formatted
+ """
+ new_params = []
+ if collection_formats is None:
+ collection_formats = {}
+ for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
+ if k in collection_formats:
+ collection_format = collection_formats[k]
+ if collection_format == 'multi':
+ new_params.extend((k, value) for value in v)
+ else:
+ if collection_format == 'ssv':
+ delimiter = ' '
+ elif collection_format == 'tsv':
+ delimiter = '\t'
+ elif collection_format == 'pipes':
+ delimiter = '|'
+ else: # csv is the default
+ delimiter = ','
+ new_params.append(
+ (k, delimiter.join(str(value) for value in v)))
+ else:
+ new_params.append((k, v))
+ return new_params
+
+ def parameters_to_url_query(self, params, collection_formats):
+ """Get parameters as list of tuples, formatting collections.
+
+ :param params: Parameters as dict or list of two-tuples
+ :param dict collection_formats: Parameter collection formats
+ :return: URL query string (e.g. a=Hello%20World&b=123)
+ """
+ new_params = []
+ if collection_formats is None:
+ collection_formats = {}
+ for k, v in params.items() if isinstance(params, dict) else params: # noqa: E501
+ if isinstance(v, (int, float)):
+ v = str(v)
+ if isinstance(v, bool):
+ v = str(v).lower()
+ if isinstance(v, dict):
+ v = json.dumps(v)
+
+ if k in collection_formats:
+ collection_format = collection_formats[k]
+ if collection_format == 'multi':
+ new_params.extend((k, value) for value in v)
+ else:
+ if collection_format == 'ssv':
+ delimiter = ' '
+ elif collection_format == 'tsv':
+ delimiter = '\t'
+ elif collection_format == 'pipes':
+ delimiter = '|'
+ else: # csv is the default
+ delimiter = ','
+ new_params.append(
+ (k, delimiter.join(quote(str(value)) for value in v)))
+ else:
+ new_params.append((k, quote(str(v))))
+
+ return "&".join(["=".join(item) for item in new_params])
+
+ def files_parameters(self, files=None):
+ """Builds form parameters.
+
+ :param files: File parameters.
+ :return: Form parameters with files.
+ """
+ params = []
+
+ if files:
+ for k, v in files.items():
+ if not v:
+ continue
+ file_names = v if type(v) is list else [v]
+ for n in file_names:
+ with open(n, 'rb') as f:
+ filename = os.path.basename(f.name)
+ filedata = f.read()
+ mimetype = (mimetypes.guess_type(filename)[0] or
+ 'application/octet-stream')
+ params.append(
+ tuple([k, tuple([filename, filedata, mimetype])]))
+
+ return params
+
+ def select_header_accept(self, accepts):
+ """Returns `Accept` based on an array of accepts provided.
+
+ :param accepts: List of headers.
+ :return: Accept (e.g. application/json).
+ """
+ if not accepts:
+ return
+
+ for accept in accepts:
+ if re.search('json', accept, re.IGNORECASE):
+ return accept
+
+ return accepts[0]
+
+ def select_header_content_type(self, content_types):
+ """Returns `Content-Type` based on an array of content_types provided.
+
+ :param content_types: List of content-types.
+ :return: Content-Type (e.g. application/json).
+ """
+ if not content_types:
+ return None
+
+ for content_type in content_types:
+ if re.search('json', content_type, re.IGNORECASE):
+ return content_type
+
+ return content_types[0]
+
+ def update_params_for_auth(self, headers, queries, auth_settings,
+ resource_path, method, body,
+ request_auth=None):
+ """Updates header and query params based on authentication setting.
+
+ :param headers: Header parameters dict to be updated.
+ :param queries: Query parameters tuple list to be updated.
+ :param auth_settings: Authentication setting identifiers list.
+ :resource_path: A string representation of the HTTP request resource path.
+ :method: A string representation of the HTTP request method.
+ :body: A object representing the body of the HTTP request.
+ The object type is the return value of sanitize_for_serialization().
+ :param request_auth: if set, the provided settings will
+ override the token in the configuration.
+ """
+ if not auth_settings:
+ return
+
+ if request_auth:
+ self._apply_auth_params(headers, queries,
+ resource_path, method, body,
+ request_auth)
+ return
+
+ for auth in auth_settings:
+ auth_setting = self.configuration.auth_settings().get(auth)
+ if auth_setting:
+ self._apply_auth_params(headers, queries,
+ resource_path, method, body,
+ auth_setting)
+
+ def _apply_auth_params(self, headers, queries,
+ resource_path, method, body,
+ auth_setting):
+ """Updates the request parameters based on a single auth_setting
+
+ :param headers: Header parameters dict to be updated.
+ :param queries: Query parameters tuple list to be updated.
+ :resource_path: A string representation of the HTTP request resource path.
+ :method: A string representation of the HTTP request method.
+ :body: A object representing the body of the HTTP request.
+ The object type is the return value of sanitize_for_serialization().
+ :param auth_setting: auth settings for the endpoint
+ """
+ if auth_setting['in'] == 'cookie':
+ headers['Cookie'] = auth_setting['value']
+ elif auth_setting['in'] == 'header':
+ if auth_setting['type'] != 'http-signature':
+ headers[auth_setting['key']] = auth_setting['value']
+ elif auth_setting['in'] == 'query':
+ queries.append((auth_setting['key'], auth_setting['value']))
+ else:
+ raise ApiValueError(
+ 'Authentication token must be in `query` or `header`'
+ )
+
+ def __deserialize_file(self, response):
+ """Deserializes body to file
+
+ Saves response body into a file in a temporary folder,
+ using the filename from the `Content-Disposition` header if provided.
+
+ :param response: RESTResponse.
+ :return: file path.
+ """
+ fd, path = tempfile.mkstemp(dir=self.configuration.temp_folder_path)
+ os.close(fd)
+ os.remove(path)
+
+ content_disposition = response.getheader("Content-Disposition")
+ if content_disposition:
+ filename = re.search(r'filename=[\'"]?([^\'"\s]+)[\'"]?',
+ content_disposition).group(1)
+ path = os.path.join(os.path.dirname(path), filename)
+
+ with open(path, "wb") as f:
+ f.write(response.data)
+
+ return path
+
+ def __deserialize_primitive(self, data, klass):
+ """Deserializes string to primitive type.
+
+ :param data: str.
+ :param klass: class literal.
+
+ :return: int, long, float, str, bool.
+ """
+ try:
+ return klass(data)
+ except UnicodeEncodeError:
+ return str(data)
+ except TypeError:
+ return data
+
+ def __deserialize_object(self, value):
+ """Return an original value.
+
+ :return: object.
+ """
+ return value
+
+ def __deserialize_date(self, string):
+ """Deserializes string to date.
+
+ :param string: str.
+ :return: date.
+ """
+ try:
+ return parse(string).date()
+ except ImportError:
+ return string
+ except ValueError:
+ raise rest.ApiException(
+ status=0,
+ reason="Failed to parse `{0}` as date object".format(string)
+ )
+
+ def __deserialize_datetime(self, string):
+ """Deserializes string to datetime.
+
+ The string should be in iso8601 datetime format.
+
+ :param string: str.
+ :return: datetime.
+ """
+ try:
+ return parse(string)
+ except ImportError:
+ return string
+ except ValueError:
+ raise rest.ApiException(
+ status=0,
+ reason=(
+ "Failed to parse `{0}` as datetime object"
+ .format(string)
+ )
+ )
+
+ def __deserialize_model(self, data, klass):
+ """Deserializes list or dict to model.
+
+ :param data: dict, list.
+ :param klass: class literal.
+ :return: model object.
+ """
+
+ return klass.from_dict(data)
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_response.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_response.py
new file mode 100644
index 00000000000..a0b62b95246
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/api_response.py
@@ -0,0 +1,25 @@
+"""API response object."""
+
+from __future__ import annotations
+from typing import Any, Dict, Optional
+from pydantic import Field, StrictInt, StrictStr
+
+class ApiResponse:
+ """
+ API response object
+ """
+
+ status_code: Optional[StrictInt] = Field(None, description="HTTP status code")
+ headers: Optional[Dict[StrictStr, StrictStr]] = Field(None, description="HTTP headers")
+ data: Optional[Any] = Field(None, description="Deserialized data given the data type")
+ raw_data: Optional[Any] = Field(None, description="Raw data (HTTP response body)")
+
+ def __init__(self,
+ status_code=None,
+ headers=None,
+ data=None,
+ raw_data=None) -> None:
+ self.status_code = status_code
+ self.headers = headers
+ self.data = data
+ self.raw_data = raw_data
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/configuration.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/configuration.py
new file mode 100644
index 00000000000..8ff03cff3b9
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/configuration.py
@@ -0,0 +1,459 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import copy
+import logging
+import multiprocessing
+import sys
+import urllib3
+
+import http.client as httplib
+
+JSON_SCHEMA_VALIDATION_KEYWORDS = {
+ 'multipleOf', 'maximum', 'exclusiveMaximum',
+ 'minimum', 'exclusiveMinimum', 'maxLength',
+ 'minLength', 'pattern', 'maxItems', 'minItems'
+}
+
+class Configuration:
+ """This class contains various settings of the API client.
+
+ :param host: Base url.
+ :param api_key: Dict to store API key(s).
+ Each entry in the dict specifies an API key.
+ The dict key is the name of the security scheme in the OAS specification.
+ The dict value is the API key secret.
+ :param api_key_prefix: Dict to store API prefix (e.g. Bearer).
+ The dict key is the name of the security scheme in the OAS specification.
+ The dict value is an API key prefix when generating the auth data.
+ :param username: Username for HTTP basic authentication.
+ :param password: Password for HTTP basic authentication.
+ :param access_token: Access token.
+ :param server_index: Index to servers configuration.
+ :param server_variables: Mapping with string values to replace variables in
+ templated server configuration. The validation of enums is performed for
+ variables with defined enum values before.
+ :param server_operation_index: Mapping from operation ID to an index to server
+ configuration.
+ :param server_operation_variables: Mapping from operation ID to a mapping with
+ string values to replace variables in templated server configuration.
+ The validation of enums is performed for variables with defined enum
+ values before.
+ :param ssl_ca_cert: str - the path to a file of concatenated CA certificates
+ in PEM format.
+
+ :Example:
+
+ HTTP Basic Authentication Example.
+ Given the following security scheme in the OpenAPI specification:
+ components:
+ securitySchemes:
+ http_basic_auth:
+ type: http
+ scheme: basic
+
+ Configure API client with HTTP basic authentication:
+
+conf = openapi_client.Configuration(
+ username='the-user',
+ password='the-password',
+)
+
+ """
+
+ _default = None
+
+ def __init__(self, host=None,
+ api_key=None, api_key_prefix=None,
+ username=None, password=None,
+ access_token=None,
+ server_index=None, server_variables=None,
+ server_operation_index=None, server_operation_variables=None,
+ ssl_ca_cert=None,
+ ) -> None:
+ """Constructor
+ """
+ self._base_path = "http://localhost:3000" if host is None else host
+ """Default Base url
+ """
+ self.server_index = 0 if server_index is None and host is None else server_index
+ self.server_operation_index = server_operation_index or {}
+ """Default server index
+ """
+ self.server_variables = server_variables or {}
+ self.server_operation_variables = server_operation_variables or {}
+ """Default server variables
+ """
+ self.temp_folder_path = None
+ """Temp file folder for downloading files
+ """
+ # Authentication Settings
+ self.api_key = {}
+ if api_key:
+ self.api_key = api_key
+ """dict to store API key(s)
+ """
+ self.api_key_prefix = {}
+ if api_key_prefix:
+ self.api_key_prefix = api_key_prefix
+ """dict to store API prefix (e.g. Bearer)
+ """
+ self.refresh_api_key_hook = None
+ """function hook to refresh API key if expired
+ """
+ self.username = username
+ """Username for HTTP basic authentication
+ """
+ self.password = password
+ """Password for HTTP basic authentication
+ """
+ self.access_token = access_token
+ """Access token
+ """
+ self.logger = {}
+ """Logging Settings
+ """
+ self.logger["package_logger"] = logging.getLogger("openapi_client")
+ self.logger["urllib3_logger"] = logging.getLogger("urllib3")
+ self.logger_format = '%(asctime)s %(levelname)s %(message)s'
+ """Log format
+ """
+ self.logger_stream_handler = None
+ """Log stream handler
+ """
+ self.logger_file_handler = None
+ """Log file handler
+ """
+ self.logger_file = None
+ """Debug file location
+ """
+ self.debug = False
+ """Debug switch
+ """
+
+ self.verify_ssl = True
+ """SSL/TLS verification
+ Set this to false to skip verifying SSL certificate when calling API
+ from https server.
+ """
+ self.ssl_ca_cert = ssl_ca_cert
+ """Set this to customize the certificate file to verify the peer.
+ """
+ self.cert_file = None
+ """client certificate file
+ """
+ self.key_file = None
+ """client key file
+ """
+ self.assert_hostname = None
+ """Set this to True/False to enable/disable SSL hostname verification.
+ """
+ self.tls_server_name = None
+ """SSL/TLS Server Name Indication (SNI)
+ Set this to the SNI value expected by the server.
+ """
+
+ self.connection_pool_maxsize = multiprocessing.cpu_count() * 5
+ """urllib3 connection pool's maximum number of connections saved
+ per pool. urllib3 uses 1 connection as default value, but this is
+ not the best value when you are making a lot of possibly parallel
+ requests to the same host, which is often the case here.
+ cpu_count * 5 is used as default value to increase performance.
+ """
+
+ self.proxy = None
+ """Proxy URL
+ """
+ self.proxy_headers = None
+ """Proxy headers
+ """
+ self.safe_chars_for_path_param = ''
+ """Safe chars for path_param
+ """
+ self.retries = None
+ """Adding retries to override urllib3 default value 3
+ """
+ # Enable client side validation
+ self.client_side_validation = True
+
+ self.socket_options = None
+ """Options to pass down to the underlying urllib3 socket
+ """
+
+ self.datetime_format = "%Y-%m-%dT%H:%M:%S.%f%z"
+ """datetime format
+ """
+
+ self.date_format = "%Y-%m-%d"
+ """date format
+ """
+
+ def __deepcopy__(self, memo):
+ cls = self.__class__
+ result = cls.__new__(cls)
+ memo[id(self)] = result
+ for k, v in self.__dict__.items():
+ if k not in ('logger', 'logger_file_handler'):
+ setattr(result, k, copy.deepcopy(v, memo))
+ # shallow copy of loggers
+ result.logger = copy.copy(self.logger)
+ # use setters to configure loggers
+ result.logger_file = self.logger_file
+ result.debug = self.debug
+ return result
+
+ def __setattr__(self, name, value):
+ object.__setattr__(self, name, value)
+
+ @classmethod
+ def set_default(cls, default):
+ """Set default instance of configuration.
+
+ It stores default configuration, which can be
+ returned by get_default_copy method.
+
+ :param default: object of Configuration
+ """
+ cls._default = default
+
+ @classmethod
+ def get_default_copy(cls):
+ """Deprecated. Please use `get_default` instead.
+
+ Deprecated. Please use `get_default` instead.
+
+ :return: The configuration object.
+ """
+ return cls.get_default()
+
+ @classmethod
+ def get_default(cls):
+ """Return the default configuration.
+
+ This method returns newly created, based on default constructor,
+ object of Configuration class or returns a copy of default
+ configuration.
+
+ :return: The configuration object.
+ """
+ if cls._default is None:
+ cls._default = Configuration()
+ return cls._default
+
+ @property
+ def logger_file(self):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :param value: The logger_file path.
+ :type: str
+ """
+ return self.__logger_file
+
+ @logger_file.setter
+ def logger_file(self, value):
+ """The logger file.
+
+ If the logger_file is None, then add stream handler and remove file
+ handler. Otherwise, add file handler and remove stream handler.
+
+ :param value: The logger_file path.
+ :type: str
+ """
+ self.__logger_file = value
+ if self.__logger_file:
+ # If set logging file,
+ # then add file handler and remove stream handler.
+ self.logger_file_handler = logging.FileHandler(self.__logger_file)
+ self.logger_file_handler.setFormatter(self.logger_formatter)
+ for _, logger in self.logger.items():
+ logger.addHandler(self.logger_file_handler)
+
+ @property
+ def debug(self):
+ """Debug status
+
+ :param value: The debug status, True or False.
+ :type: bool
+ """
+ return self.__debug
+
+ @debug.setter
+ def debug(self, value):
+ """Debug status
+
+ :param value: The debug status, True or False.
+ :type: bool
+ """
+ self.__debug = value
+ if self.__debug:
+ # if debug status is True, turn on debug logging
+ for _, logger in self.logger.items():
+ logger.setLevel(logging.DEBUG)
+ # turn on httplib debug
+ httplib.HTTPConnection.debuglevel = 1
+ else:
+ # if debug status is False, turn off debug logging,
+ # setting log level to default `logging.WARNING`
+ for _, logger in self.logger.items():
+ logger.setLevel(logging.WARNING)
+ # turn off httplib debug
+ httplib.HTTPConnection.debuglevel = 0
+
+ @property
+ def logger_format(self):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :param value: The format string.
+ :type: str
+ """
+ return self.__logger_format
+
+ @logger_format.setter
+ def logger_format(self, value):
+ """The logger format.
+
+ The logger_formatter will be updated when sets logger_format.
+
+ :param value: The format string.
+ :type: str
+ """
+ self.__logger_format = value
+ self.logger_formatter = logging.Formatter(self.__logger_format)
+
+ def get_api_key_with_prefix(self, identifier, alias=None):
+ """Gets API key (with prefix if set).
+
+ :param identifier: The identifier of apiKey.
+ :param alias: The alternative identifier of apiKey.
+ :return: The token for api key authentication.
+ """
+ if self.refresh_api_key_hook is not None:
+ self.refresh_api_key_hook(self)
+ key = self.api_key.get(identifier, self.api_key.get(alias) if alias is not None else None)
+ if key:
+ prefix = self.api_key_prefix.get(identifier)
+ if prefix:
+ return "%s %s" % (prefix, key)
+ else:
+ return key
+
+ def get_basic_auth_token(self):
+ """Gets HTTP basic authentication header (string).
+
+ :return: The token for basic HTTP authentication.
+ """
+ username = ""
+ if self.username is not None:
+ username = self.username
+ password = ""
+ if self.password is not None:
+ password = self.password
+ return urllib3.util.make_headers(
+ basic_auth=username + ':' + password
+ ).get('authorization')
+
+ def auth_settings(self):
+ """Gets Auth Settings dict for api client.
+
+ :return: The Auth Settings information dict.
+ """
+ auth = {}
+ if self.username is not None and self.password is not None:
+ auth['http_auth'] = {
+ 'type': 'basic',
+ 'in': 'header',
+ 'key': 'Authorization',
+ 'value': self.get_basic_auth_token()
+ }
+ return auth
+
+ def to_debug_report(self):
+ """Gets the essential information for debugging.
+
+ :return: The report for debugging.
+ """
+ return "Python SDK Debug Report:\n"\
+ "OS: {env}\n"\
+ "Python Version: {pyversion}\n"\
+ "Version of the API: 0.1.0\n"\
+ "SDK Package Version: 1.0.0".\
+ format(env=sys.platform, pyversion=sys.version)
+
+ def get_host_settings(self):
+ """Gets an array of host settings
+
+ :return: An array of host settings
+ """
+ return [
+ {
+ 'url': "http://localhost:3000",
+ 'description': "No description provided",
+ }
+ ]
+
+ def get_host_from_settings(self, index, variables=None, servers=None):
+ """Gets host URL based on the index and variables
+ :param index: array index of the host settings
+ :param variables: hash of variable and the corresponding value
+ :param servers: an array of host settings or None
+ :return: URL based on host settings
+ """
+ if index is None:
+ return self._base_path
+
+ variables = {} if variables is None else variables
+ servers = self.get_host_settings() if servers is None else servers
+
+ try:
+ server = servers[index]
+ except IndexError:
+ raise ValueError(
+ "Invalid index {0} when selecting the host settings. "
+ "Must be less than {1}".format(index, len(servers)))
+
+ url = server['url']
+
+ # go through variables and replace placeholders
+ for variable_name, variable in server.get('variables', {}).items():
+ used_value = variables.get(
+ variable_name, variable['default_value'])
+
+ if 'enum_values' in variable \
+ and used_value not in variable['enum_values']:
+ raise ValueError(
+ "The variable `{0}` in the host URL has invalid value "
+ "{1}. Must be {2}.".format(
+ variable_name, variables[variable_name],
+ variable['enum_values']))
+
+ url = url.replace("{" + variable_name + "}", used_value)
+
+ return url
+
+ @property
+ def host(self):
+ """Return generated host."""
+ return self.get_host_from_settings(self.server_index, variables=self.server_variables)
+
+ @host.setter
+ def host(self, value):
+ """Fix base path."""
+ self._base_path = value
+ self.server_index = None
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/exceptions.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/exceptions.py
new file mode 100644
index 00000000000..ae3e985d2fe
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/exceptions.py
@@ -0,0 +1,167 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+class OpenApiException(Exception):
+ """The base exception class for all OpenAPIExceptions"""
+
+
+class ApiTypeError(OpenApiException, TypeError):
+ def __init__(self, msg, path_to_item=None, valid_classes=None,
+ key_type=None) -> None:
+ """ Raises an exception for TypeErrors
+
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (list): a list of keys an indices to get to the
+ current_item
+ None if unset
+ valid_classes (tuple): the primitive classes that current item
+ should be an instance of
+ None if unset
+ key_type (bool): False if our value is a value in a dict
+ True if it is a key in a dict
+ False if our item is an item in a list
+ None if unset
+ """
+ self.path_to_item = path_to_item
+ self.valid_classes = valid_classes
+ self.key_type = key_type
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiTypeError, self).__init__(full_msg)
+
+
+class ApiValueError(OpenApiException, ValueError):
+ def __init__(self, msg, path_to_item=None) -> None:
+ """
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (list) the path to the exception in the
+ received_data dict. None if unset
+ """
+
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiValueError, self).__init__(full_msg)
+
+
+class ApiAttributeError(OpenApiException, AttributeError):
+ def __init__(self, msg, path_to_item=None) -> None:
+ """
+ Raised when an attribute reference or assignment fails.
+
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (None/list) the path to the exception in the
+ received_data dict
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiAttributeError, self).__init__(full_msg)
+
+
+class ApiKeyError(OpenApiException, KeyError):
+ def __init__(self, msg, path_to_item=None) -> None:
+ """
+ Args:
+ msg (str): the exception message
+
+ Keyword Args:
+ path_to_item (None/list) the path to the exception in the
+ received_data dict
+ """
+ self.path_to_item = path_to_item
+ full_msg = msg
+ if path_to_item:
+ full_msg = "{0} at {1}".format(msg, render_path(path_to_item))
+ super(ApiKeyError, self).__init__(full_msg)
+
+
+class ApiException(OpenApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ if http_resp:
+ self.status = http_resp.status
+ self.reason = http_resp.reason
+ self.body = http_resp.data
+ self.headers = http_resp.getheaders()
+ else:
+ self.status = status
+ self.reason = reason
+ self.body = None
+ self.headers = None
+
+ def __str__(self):
+ """Custom error messages for exception"""
+ error_message = "({0})\n"\
+ "Reason: {1}\n".format(self.status, self.reason)
+ if self.headers:
+ error_message += "HTTP response headers: {0}\n".format(
+ self.headers)
+
+ if self.body:
+ error_message += "HTTP response body: {0}\n".format(self.body)
+
+ return error_message
+
+class BadRequestException(ApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ super(BadRequestException, self).__init__(status, reason, http_resp)
+
+class NotFoundException(ApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ super(NotFoundException, self).__init__(status, reason, http_resp)
+
+
+class UnauthorizedException(ApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ super(UnauthorizedException, self).__init__(status, reason, http_resp)
+
+
+class ForbiddenException(ApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ super(ForbiddenException, self).__init__(status, reason, http_resp)
+
+
+class ServiceException(ApiException):
+
+ def __init__(self, status=None, reason=None, http_resp=None) -> None:
+ super(ServiceException, self).__init__(status, reason, http_resp)
+
+
+def render_path(path_to_item):
+ """Returns a string representation of a path"""
+ result = ""
+ for pth in path_to_item:
+ if isinstance(pth, int):
+ result += "[{0}]".format(pth)
+ else:
+ result += "['{0}']".format(pth)
+ return result
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/__init__.py
new file mode 100644
index 00000000000..4b981699e6a
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/__init__.py
@@ -0,0 +1,28 @@
+# coding: utf-8
+
+# flake8: noqa
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+# import models into model package
+from openapi_client.models.bird import Bird
+from openapi_client.models.category import Category
+from openapi_client.models.data_query import DataQuery
+from openapi_client.models.default_value import DefaultValue
+from openapi_client.models.number_properties_only import NumberPropertiesOnly
+from openapi_client.models.pet import Pet
+from openapi_client.models.query import Query
+from openapi_client.models.string_enum_ref import StringEnumRef
+from openapi_client.models.tag import Tag
+from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/bird.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/bird.py
new file mode 100644
index 00000000000..8906f983144
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/bird.py
@@ -0,0 +1,81 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import Optional
+from pydantic import BaseModel, StrictStr
+
+class Bird(BaseModel):
+ """
+ Bird
+ """
+ size: Optional[StrictStr] = None
+ color: Optional[StrictStr] = None
+ __properties: ClassVar[List[str]] = ["size", "color"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Bird:
+ """Create an instance of Bird from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> Bird:
+ """Create an instance of Bird from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return Bird.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in Bird) in the input: " + _key)
+
+ _obj = Bird.model_validate({
+ "size": obj.get("size"),
+ "color": obj.get("color")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/category.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/category.py
new file mode 100644
index 00000000000..43202dea0f2
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/category.py
@@ -0,0 +1,81 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import Optional
+from pydantic import BaseModel, StrictInt, StrictStr
+
+class Category(BaseModel):
+ """
+ Category
+ """
+ id: Optional[StrictInt] = None
+ name: Optional[StrictStr] = None
+ __properties: ClassVar[List[str]] = ["id", "name"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Category:
+ """Create an instance of Category from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> Category:
+ """Create an instance of Category from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return Category.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in Category) in the input: " + _key)
+
+ _obj = Category.model_validate({
+ "id": obj.get("id"),
+ "name": obj.get("name")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/data_query.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/data_query.py
new file mode 100644
index 00000000000..8ee7d09e92f
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/data_query.py
@@ -0,0 +1,87 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+from datetime import datetime
+from typing import Optional
+from pydantic import StrictStr
+from pydantic import Field
+from openapi_client.models.query import Query
+
+class DataQuery(Query):
+ """
+ DataQuery
+ """
+ suffix: Optional[StrictStr] = Field(default=None, description="test suffix")
+ text: Optional[StrictStr] = Field(default=None, description="Some text containing white spaces")
+ var_date: Optional[datetime] = Field(default=None, description="A date", alias="date")
+ __properties: ClassVar[List[str]] = ["id", "outcomes", "suffix", "text", "date"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> DataQuery:
+ """Create an instance of DataQuery from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> DataQuery:
+ """Create an instance of DataQuery from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return DataQuery.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in DataQuery) in the input: " + _key)
+
+ _obj = DataQuery.model_validate({
+ "id": obj.get("id"),
+ "outcomes": obj.get("outcomes"),
+ "suffix": obj.get("suffix"),
+ "text": obj.get("text"),
+ "date": obj.get("date")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/default_value.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/default_value.py
new file mode 100644
index 00000000000..bb8a2ccd963
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/default_value.py
@@ -0,0 +1,120 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import List, Optional
+from pydantic import BaseModel, StrictInt, StrictStr, field_validator
+from openapi_client.models.string_enum_ref import StringEnumRef
+
+class DefaultValue(BaseModel):
+ """
+ to test the default value of properties # noqa: E501
+ """
+ array_string_enum_ref_default: Optional[List[StringEnumRef]] = None
+ array_string_enum_default: Optional[List[StrictStr]] = None
+ array_string_default: Optional[List[StrictStr]] = None
+ array_integer_default: Optional[List[StrictInt]] = None
+ array_string: Optional[List[StrictStr]] = None
+ array_string_nullable: Optional[List[StrictStr]] = None
+ array_string_extension_nullable: Optional[List[StrictStr]] = None
+ string_nullable: Optional[StrictStr] = None
+ __properties: ClassVar[List[str]] = ["array_string_enum_ref_default", "array_string_enum_default", "array_string_default", "array_integer_default", "array_string", "array_string_nullable", "array_string_extension_nullable", "string_nullable"]
+
+ @field_validator('array_string_enum_default')
+ def array_string_enum_default_validate_enum(cls, value):
+ """Validates the enum"""
+ if value is None:
+ return value
+
+ for i in value:
+ if i not in ('success', 'failure', 'unclassified'):
+ raise ValueError("each list item must be one of ('success', 'failure', 'unclassified')")
+ return value
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> DefaultValue:
+ """Create an instance of DefaultValue from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ # set to None if array_string_nullable (nullable) is None
+ # and model_fields_set contains the field
+ if self.array_string_nullable is None and "array_string_nullable" in self.model_fields_set:
+ _dict['array_string_nullable'] = None
+
+ # set to None if array_string_extension_nullable (nullable) is None
+ # and model_fields_set contains the field
+ if self.array_string_extension_nullable is None and "array_string_extension_nullable" in self.model_fields_set:
+ _dict['array_string_extension_nullable'] = None
+
+ # set to None if string_nullable (nullable) is None
+ # and model_fields_set contains the field
+ if self.string_nullable is None and "string_nullable" in self.model_fields_set:
+ _dict['string_nullable'] = None
+
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> DefaultValue:
+ """Create an instance of DefaultValue from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return DefaultValue.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in DefaultValue) in the input: " + _key)
+
+ _obj = DefaultValue.model_validate({
+ "array_string_enum_ref_default": obj.get("array_string_enum_ref_default"),
+ "array_string_enum_default": obj.get("array_string_enum_default"),
+ "array_string_default": obj.get("array_string_default"),
+ "array_integer_default": obj.get("array_integer_default"),
+ "array_string": obj.get("array_string"),
+ "array_string_nullable": obj.get("array_string_nullable"),
+ "array_string_extension_nullable": obj.get("array_string_extension_nullable"),
+ "string_nullable": obj.get("string_nullable")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/number_properties_only.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/number_properties_only.py
new file mode 100644
index 00000000000..23ed8e356fc
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/number_properties_only.py
@@ -0,0 +1,83 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import Optional, Union
+from pydantic import BaseModel, StrictFloat, StrictInt
+from pydantic import Field
+from typing_extensions import Annotated
+
+class NumberPropertiesOnly(BaseModel):
+ """
+ NumberPropertiesOnly
+ """
+ number: Optional[Union[StrictFloat, StrictInt]] = None
+ double: Optional[Union[Annotated[float, Field(le=50.2, strict=True, ge=0.8)], Annotated[int, Field(le=50, strict=True, ge=1)]]] = None
+ __properties: ClassVar[List[str]] = ["number", "double"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> NumberPropertiesOnly:
+ """Create an instance of NumberPropertiesOnly from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> NumberPropertiesOnly:
+ """Create an instance of NumberPropertiesOnly from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return NumberPropertiesOnly.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in NumberPropertiesOnly) in the input: " + _key)
+
+ _obj = NumberPropertiesOnly.model_validate({
+ "number": obj.get("number"),
+ "double": obj.get("double")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/pet.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/pet.py
new file mode 100644
index 00000000000..232a7d61828
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/pet.py
@@ -0,0 +1,112 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import List, Optional
+from pydantic import BaseModel, StrictInt, StrictStr, field_validator
+from pydantic import Field
+from openapi_client.models.category import Category
+from openapi_client.models.tag import Tag
+
+class Pet(BaseModel):
+ """
+ Pet
+ """
+ id: Optional[StrictInt] = None
+ name: StrictStr
+ category: Optional[Category] = None
+ photo_urls: List[StrictStr] = Field(alias="photoUrls")
+ tags: Optional[List[Tag]] = None
+ status: Optional[StrictStr] = Field(default=None, description="pet status in the store")
+ __properties: ClassVar[List[str]] = ["id", "name", "category", "photoUrls", "tags", "status"]
+
+ @field_validator('status')
+ def status_validate_enum(cls, value):
+ """Validates the enum"""
+ if value is None:
+ return value
+
+ if value not in ('available', 'pending', 'sold'):
+ raise ValueError("must be one of enum values ('available', 'pending', 'sold')")
+ return value
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Pet:
+ """Create an instance of Pet from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ # override the default output from pydantic by calling `to_dict()` of category
+ if self.category:
+ _dict['category'] = self.category.to_dict()
+ # override the default output from pydantic by calling `to_dict()` of each item in tags (list)
+ _items = []
+ if self.tags:
+ for _item in self.tags:
+ if _item:
+ _items.append(_item.to_dict())
+ _dict['tags'] = _items
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> Pet:
+ """Create an instance of Pet from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return Pet.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in Pet) in the input: " + _key)
+
+ _obj = Pet.model_validate({
+ "id": obj.get("id"),
+ "name": obj.get("name"),
+ "category": Category.from_dict(obj.get("category")) if obj.get("category") is not None else None,
+ "photoUrls": obj.get("photoUrls"),
+ "tags": [Tag.from_dict(_item) for _item in obj.get("tags")] if obj.get("tags") is not None else None,
+ "status": obj.get("status")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/query.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/query.py
new file mode 100644
index 00000000000..0821271f829
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/query.py
@@ -0,0 +1,77 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import List, Optional
+from pydantic import BaseModel, StrictInt, StrictStr, field_validator
+from pydantic import Field
+
+class Query(BaseModel):
+ """
+ Query
+ """
+ id: Optional[StrictInt] = Field(default=None, description="Query")
+ outcomes: Optional[List[StrictStr]] = None
+ __properties: ClassVar[List[str]] = ["id", "outcomes"]
+
+ @field_validator('outcomes')
+ def outcomes_validate_enum(cls, value):
+ """Validates the enum"""
+ if value is None:
+ return value
+
+ for i in value:
+ if i not in ('SUCCESS', 'FAILURE', 'SKIPPED'):
+ raise ValueError("each list item must be one of ('SUCCESS', 'FAILURE', 'SKIPPED')")
+ return value
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Query:
+ """Create an instance of Query from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> Query:
+ """Create an instance of Query from a dict"""
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/string_enum_ref.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/string_enum_ref.py
new file mode 100644
index 00000000000..f200a1dafb8
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/string_enum_ref.py
@@ -0,0 +1,42 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import json
+import pprint
+import re # noqa: F401
+from aenum import Enum, no_arg
+
+
+
+
+
+class StringEnumRef(str, Enum):
+ """
+ StringEnumRef
+ """
+
+ """
+ allowed enum values
+ """
+ SUCCESS = 'success'
+ FAILURE = 'failure'
+ UNCLASSIFIED = 'unclassified'
+
+ @classmethod
+ def from_json(cls, json_str: str) -> StringEnumRef:
+ """Create an instance of StringEnumRef from a JSON string"""
+ return StringEnumRef(json.loads(json_str))
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/tag.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/tag.py
new file mode 100644
index 00000000000..20b098a4269
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/tag.py
@@ -0,0 +1,81 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import Optional
+from pydantic import BaseModel, StrictInt, StrictStr
+
+class Tag(BaseModel):
+ """
+ Tag
+ """
+ id: Optional[StrictInt] = None
+ name: Optional[StrictStr] = None
+ __properties: ClassVar[List[str]] = ["id", "name"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> Tag:
+ """Create an instance of Tag from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> Tag:
+ """Create an instance of Tag from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return Tag.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in Tag) in the input: " + _key)
+
+ _obj = Tag.model_validate({
+ "id": obj.get("id"),
+ "name": obj.get("name")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py
new file mode 100644
index 00000000000..28380a635d3
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py
@@ -0,0 +1,85 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import Optional
+from pydantic import BaseModel, StrictInt, StrictStr
+
+class TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(BaseModel):
+ """
+ TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+ """
+ size: Optional[StrictStr] = None
+ color: Optional[StrictStr] = None
+ id: Optional[StrictInt] = None
+ name: Optional[StrictStr] = None
+ __properties: ClassVar[List[str]] = ["size", "color", "id", "name"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter:
+ """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter:
+ """Create an instance of TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter) in the input: " + _key)
+
+ _obj = TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter.model_validate({
+ "size": obj.get("size"),
+ "color": obj.get("color"),
+ "id": obj.get("id"),
+ "name": obj.get("name")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_form_explode_true_array_string_query_object_parameter.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_form_explode_true_array_string_query_object_parameter.py
new file mode 100644
index 00000000000..221e15cfb14
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/models/test_query_style_form_explode_true_array_string_query_object_parameter.py
@@ -0,0 +1,79 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from __future__ import annotations
+import pprint
+import re # noqa: F401
+import json
+
+
+from typing import List, Optional
+from pydantic import BaseModel, StrictStr
+
+class TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(BaseModel):
+ """
+ TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+ """
+ values: Optional[List[StrictStr]] = None
+ __properties: ClassVar[List[str]] = ["values"]
+
+ model_config = {
+ "populate_by_name": True,
+ "validate_assignment": True
+ }
+
+
+ def to_str(self) -> str:
+ """Returns the string representation of the model using alias"""
+ return pprint.pformat(self.model_dump(by_alias=True))
+
+ def to_json(self) -> str:
+ """Returns the JSON representation of the model using alias"""
+ # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
+ return json.dumps(self.to_dict())
+
+ @classmethod
+ def from_json(cls, json_str: str) -> TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter:
+ """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a JSON string"""
+ return cls.from_dict(json.loads(json_str))
+
+ def to_dict(self):
+ """Returns the dictionary representation of the model using alias"""
+ _dict = self.model_dump(by_alias=True,
+ exclude={
+ },
+ exclude_none=True)
+ return _dict
+
+ @classmethod
+ def from_dict(cls, obj: dict) -> TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter:
+ """Create an instance of TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter from a dict"""
+ if obj is None:
+ return None
+
+ if not isinstance(obj, dict):
+ return TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.model_validate(obj)
+
+ # raise errors for additional fields in the input
+ for _key in obj.keys():
+ if _key not in cls.__properties:
+ raise ValueError("Error due to additional fields (not defined in TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter) in the input: " + _key)
+
+ _obj = TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter.model_validate({
+ "values": obj.get("values")
+ })
+ return _obj
+
+
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/py.typed b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/py.typed
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/rest.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/rest.py
new file mode 100644
index 00000000000..d05e077260d
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/openapi_client/rest.py
@@ -0,0 +1,304 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import io
+import json
+import logging
+import re
+import ssl
+
+from urllib.parse import urlencode, quote_plus
+import urllib3
+
+from openapi_client.exceptions import ApiException, UnauthorizedException, ForbiddenException, NotFoundException, ServiceException, ApiValueError, BadRequestException
+
+
+logger = logging.getLogger(__name__)
+
+
+class RESTResponse(io.IOBase):
+
+ def __init__(self, resp) -> None:
+ self.urllib3_response = resp
+ self.status = resp.status
+ self.reason = resp.reason
+ self.data = resp.data
+
+ def getheaders(self):
+ """Returns a dictionary of the response headers."""
+ return self.urllib3_response.headers
+
+ def getheader(self, name, default=None):
+ """Returns a given response header."""
+ return self.urllib3_response.headers.get(name, default)
+
+
+class RESTClientObject:
+
+ def __init__(self, configuration, pools_size=4, maxsize=None) -> None:
+ # urllib3.PoolManager will pass all kw parameters to connectionpool
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/poolmanager.py#L75 # noqa: E501
+ # https://github.com/shazow/urllib3/blob/f9409436f83aeb79fbaf090181cd81b784f1b8ce/urllib3/connectionpool.py#L680 # noqa: E501
+ # maxsize is the number of requests to host that are allowed in parallel # noqa: E501
+ # Custom SSL certificates and client certificates: http://urllib3.readthedocs.io/en/latest/advanced-usage.html # noqa: E501
+
+ # cert_reqs
+ if configuration.verify_ssl:
+ cert_reqs = ssl.CERT_REQUIRED
+ else:
+ cert_reqs = ssl.CERT_NONE
+
+ addition_pool_args = {}
+ if configuration.assert_hostname is not None:
+ addition_pool_args['assert_hostname'] = configuration.assert_hostname # noqa: E501
+
+ if configuration.retries is not None:
+ addition_pool_args['retries'] = configuration.retries
+
+ if configuration.tls_server_name:
+ addition_pool_args['server_hostname'] = configuration.tls_server_name
+
+
+ if configuration.socket_options is not None:
+ addition_pool_args['socket_options'] = configuration.socket_options
+
+ if maxsize is None:
+ if configuration.connection_pool_maxsize is not None:
+ maxsize = configuration.connection_pool_maxsize
+ else:
+ maxsize = 4
+
+ # https pool manager
+ if configuration.proxy:
+ self.pool_manager = urllib3.ProxyManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=configuration.ssl_ca_cert,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ proxy_url=configuration.proxy,
+ proxy_headers=configuration.proxy_headers,
+ **addition_pool_args
+ )
+ else:
+ self.pool_manager = urllib3.PoolManager(
+ num_pools=pools_size,
+ maxsize=maxsize,
+ cert_reqs=cert_reqs,
+ ca_certs=configuration.ssl_ca_cert,
+ cert_file=configuration.cert_file,
+ key_file=configuration.key_file,
+ **addition_pool_args
+ )
+
+ def request(self, method, url, query_params=None, headers=None,
+ body=None, post_params=None, _preload_content=True,
+ _request_timeout=None):
+ """Perform requests.
+
+ :param method: http request method
+ :param url: http request url
+ :param query_params: query parameters in the url
+ :param headers: http request headers
+ :param body: request json body, for `application/json`
+ :param post_params: request post parameters,
+ `application/x-www-form-urlencoded`
+ and `multipart/form-data`
+ :param _preload_content: if False, the urllib3.HTTPResponse object will
+ be returned without reading/decoding response
+ data. Default is True.
+ :param _request_timeout: timeout setting for this request. If one
+ number provided, it will be total request
+ timeout. It can also be a pair (tuple) of
+ (connection, read) timeouts.
+ """
+ method = method.upper()
+ assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
+ 'PATCH', 'OPTIONS']
+
+ if post_params and body:
+ raise ApiValueError(
+ "body parameter cannot be used with post_params parameter."
+ )
+
+ post_params = post_params or {}
+ headers = headers or {}
+ # url already contains the URL query string
+ # so reset query_params to empty dict
+ query_params = {}
+
+ timeout = None
+ if _request_timeout:
+ if isinstance(_request_timeout, (int,float)): # noqa: E501,F821
+ timeout = urllib3.Timeout(total=_request_timeout)
+ elif (isinstance(_request_timeout, tuple) and
+ len(_request_timeout) == 2):
+ timeout = urllib3.Timeout(
+ connect=_request_timeout[0], read=_request_timeout[1])
+
+ try:
+ # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
+ if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
+
+ # no content type provided or payload is json
+ if not headers.get('Content-Type') or re.search('json', headers['Content-Type'], re.IGNORECASE):
+ request_body = None
+ if body is not None:
+ request_body = json.dumps(body)
+ r = self.pool_manager.request(
+ method, url,
+ body=request_body,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ elif headers['Content-Type'] == 'application/x-www-form-urlencoded': # noqa: E501
+ r = self.pool_manager.request(
+ method, url,
+ fields=post_params,
+ encode_multipart=False,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ elif headers['Content-Type'] == 'multipart/form-data':
+ # must del headers['Content-Type'], or the correct
+ # Content-Type which generated by urllib3 will be
+ # overwritten.
+ del headers['Content-Type']
+ r = self.pool_manager.request(
+ method, url,
+ fields=post_params,
+ encode_multipart=True,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ # Pass a `string` parameter directly in the body to support
+ # other content types than Json when `body` argument is
+ # provided in serialized form
+ elif isinstance(body, str) or isinstance(body, bytes):
+ request_body = body
+ r = self.pool_manager.request(
+ method, url,
+ body=request_body,
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ else:
+ # Cannot generate the request from given parameters
+ msg = """Cannot prepare a request message for provided
+ arguments. Please check that your arguments match
+ declared content type."""
+ raise ApiException(status=0, reason=msg)
+ # For `GET`, `HEAD`
+ else:
+ r = self.pool_manager.request(method, url,
+ fields={},
+ preload_content=_preload_content,
+ timeout=timeout,
+ headers=headers)
+ except urllib3.exceptions.SSLError as e:
+ msg = "{0}\n{1}".format(type(e).__name__, str(e))
+ raise ApiException(status=0, reason=msg)
+
+ if _preload_content:
+ r = RESTResponse(r)
+
+ # log response body
+ logger.debug("response body: %s", r.data)
+
+ if not 200 <= r.status <= 299:
+ if r.status == 400:
+ raise BadRequestException(http_resp=r)
+
+ if r.status == 401:
+ raise UnauthorizedException(http_resp=r)
+
+ if r.status == 403:
+ raise ForbiddenException(http_resp=r)
+
+ if r.status == 404:
+ raise NotFoundException(http_resp=r)
+
+ if 500 <= r.status <= 599:
+ raise ServiceException(http_resp=r)
+
+ raise ApiException(http_resp=r)
+
+ return r
+
+ def get_request(self, url, headers=None, query_params=None, _preload_content=True,
+ _request_timeout=None):
+ return self.request("GET", url,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ query_params=query_params)
+
+ def head_request(self, url, headers=None, query_params=None, _preload_content=True,
+ _request_timeout=None):
+ return self.request("HEAD", url,
+ headers=headers,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ query_params=query_params)
+
+ def options_request(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("OPTIONS", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def delete_request(self, url, headers=None, query_params=None, body=None,
+ _preload_content=True, _request_timeout=None):
+ return self.request("DELETE", url,
+ headers=headers,
+ query_params=query_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def post_request(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("POST", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def put_request(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("PUT", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
+
+ def patch_request(self, url, headers=None, query_params=None, post_params=None,
+ body=None, _preload_content=True, _request_timeout=None):
+ return self.request("PATCH", url,
+ headers=headers,
+ query_params=query_params,
+ post_params=post_params,
+ _preload_content=_preload_content,
+ _request_timeout=_request_timeout,
+ body=body)
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/pyproject.toml b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/pyproject.toml
new file mode 100644
index 00000000000..c79828a122d
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/pyproject.toml
@@ -0,0 +1,31 @@
+[tool.poetry]
+name = "openapi_client"
+version = "1.0.0"
+description = "Echo Server API"
+authors = ["OpenAPI Generator Community "]
+license = "Apache 2.0"
+readme = "README.md"
+repository = "https://github.com/GIT_USER_ID/GIT_REPO_ID"
+keywords = ["OpenAPI", "OpenAPI-Generator", "Echo Server API"]
+include = ["openapi_client/py.typed"]
+
+[tool.poetry.dependencies]
+python = "^3.7"
+
+urllib3 = ">= 1.25.3"
+python-dateutil = ">=2.8.2"
+pydantic = ">=2"
+aenum = ">=3.1.11"
+typing-extensions = ">=4.7.1"
+
+[tool.poetry.dev-dependencies]
+pytest = ">=7.2.1"
+tox = ">=3.9.0"
+flake8 = ">=4.0.0"
+
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[tool.pylint.'MESSAGES CONTROL']
+extension-pkg-whitelist = "pydantic"
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/requirements.txt b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/requirements.txt
new file mode 100644
index 00000000000..4407c81fb74
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/requirements.txt
@@ -0,0 +1,6 @@
+python_dateutil >= 2.5.3
+setuptools >= 21.0.0
+urllib3 >= 1.25.3, < 2.1.0
+pydantic >= 2
+aenum >= 3.1.11
+typing-extensions >= 4.7.1
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.cfg b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.cfg
new file mode 100644
index 00000000000..11433ee875a
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.cfg
@@ -0,0 +1,2 @@
+[flake8]
+max-line-length=99
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.py
new file mode 100644
index 00000000000..54a88267fb4
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/setup.py
@@ -0,0 +1,52 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+from setuptools import setup, find_packages # noqa: H301
+
+# To install the library, run the following
+#
+# python setup.py install
+#
+# prerequisite: setuptools
+# http://pypi.python.org/pypi/setuptools
+NAME = "openapi-client"
+VERSION = "1.0.0"
+PYTHON_REQUIRES = ">=3.7"
+REQUIRES = [
+ "urllib3 >= 1.25.3, < 2.1.0",
+ "python-dateutil",
+ "pydantic >= 2",
+ "aenum",
+ "typing-extensions >= 4.7.1",
+]
+
+setup(
+ name=NAME,
+ version=VERSION,
+ description="Echo Server API",
+ author="OpenAPI Generator community",
+ author_email="team@openapitools.org",
+ url="",
+ keywords=["OpenAPI", "OpenAPI-Generator", "Echo Server API"],
+ install_requires=REQUIRES,
+ packages=find_packages(exclude=["test", "tests"]),
+ include_package_data=True,
+ license="Apache 2.0",
+ long_description_content_type='text/markdown',
+ long_description="""\
+ Echo Server API
+ """, # noqa: E501
+ package_data={"openapi_client": ["py.typed"]},
+)
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test-requirements.txt b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test-requirements.txt
new file mode 100644
index 00000000000..3a0d0b939a1
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test-requirements.txt
@@ -0,0 +1,3 @@
+pytest~=7.1.3
+pytest-cov>=2.8.1
+pytest-randomly>=3.12.0
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/__init__.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/__init__.py
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_auth_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_auth_api.py
new file mode 100644
index 00000000000..bfd827933bd
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_auth_api.py
@@ -0,0 +1,39 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+""" # noqa: E501
+
+
+import unittest
+
+from openapi_client.api.auth_api import AuthApi # noqa: E501
+
+
+class TestAuthApi(unittest.TestCase):
+ """AuthApi unit test stubs"""
+
+ def setUp(self) -> None:
+ self.api = AuthApi() # noqa: E501
+
+ def tearDown(self) -> None:
+ pass
+
+ def test_test_auth_http_basic(self) -> None:
+ """Test case for test_auth_http_basic
+
+ To test HTTP basic authentication # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_bird.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_bird.py
new file mode 100644
index 00000000000..d95a104d714
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_bird.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.bird import Bird # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestBird(unittest.TestCase):
+ """Bird unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test Bird
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `Bird`
+ """
+ model = openapi_client.models.bird.Bird() # noqa: E501
+ if include_optional :
+ return Bird(
+ size = '',
+ color = ''
+ )
+ else :
+ return Bird(
+ )
+ """
+
+ def testBird(self):
+ """Test Bird"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_body_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_body_api.py
new file mode 100644
index 00000000000..e5e24ace810
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_body_api.py
@@ -0,0 +1,41 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import openapi_client
+from openapi_client.api.body_api import BodyApi # noqa: E501
+from openapi_client.rest import ApiException
+
+
+class TestBodyApi(unittest.TestCase):
+ """BodyApi unit test stubs"""
+
+ def setUp(self):
+ self.api = openapi_client.api.body_api.BodyApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_echo_body_pet(self):
+ """Test case for test_echo_body_pet
+
+ Test body parameter(s) # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_category.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_category.py
new file mode 100644
index 00000000000..b5771c572d3
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_category.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.category import Category # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestCategory(unittest.TestCase):
+ """Category unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test Category
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `Category`
+ """
+ model = openapi_client.models.category.Category() # noqa: E501
+ if include_optional :
+ return Category(
+ id = 1,
+ name = 'Dogs'
+ )
+ else :
+ return Category(
+ )
+ """
+
+ def testCategory(self):
+ """Test Category"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_data_query.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_data_query.py
new file mode 100644
index 00000000000..f33d8daabae
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_data_query.py
@@ -0,0 +1,57 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.data_query import DataQuery # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestDataQuery(unittest.TestCase):
+ """DataQuery unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test DataQuery
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `DataQuery`
+ """
+ model = openapi_client.models.data_query.DataQuery() # noqa: E501
+ if include_optional :
+ return DataQuery(
+ suffix = '',
+ text = 'Some text',
+ var_date = datetime.datetime.strptime('2013-10-20 19:20:30.00', '%Y-%m-%d %H:%M:%S.%f')
+ )
+ else :
+ return DataQuery(
+ )
+ """
+
+ def testDataQuery(self):
+ """Test DataQuery"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_default_value.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_default_value.py
new file mode 100644
index 00000000000..6e5f35fd2ef
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_default_value.py
@@ -0,0 +1,70 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.default_value import DefaultValue # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestDefaultValue(unittest.TestCase):
+ """DefaultValue unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test DefaultValue
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `DefaultValue`
+ """
+ model = openapi_client.models.default_value.DefaultValue() # noqa: E501
+ if include_optional :
+ return DefaultValue(
+ array_string_enum_default = [
+ 'success'
+ ],
+ array_string_default = [
+ ''
+ ],
+ array_integer_default = [
+ 56
+ ],
+ array_string = [
+ ''
+ ],
+ array_string_nullable = [
+ ''
+ ],
+ string_nullable = ''
+ )
+ else :
+ return DefaultValue(
+ )
+ """
+
+ def testDefaultValue(self):
+ """Test DefaultValue"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_form_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_form_api.py
new file mode 100644
index 00000000000..6422432c79b
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_form_api.py
@@ -0,0 +1,41 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import openapi_client
+from openapi_client.api.form_api import FormApi # noqa: E501
+from openapi_client.rest import ApiException
+
+
+class TestFormApi(unittest.TestCase):
+ """FormApi unit test stubs"""
+
+ def setUp(self):
+ self.api = openapi_client.api.form_api.FormApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_form_integer_boolean_string(self):
+ """Test case for test_form_integer_boolean_string
+
+ Test form parameter(s) # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_header_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_header_api.py
new file mode 100644
index 00000000000..c1b7ed44e8f
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_header_api.py
@@ -0,0 +1,41 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import openapi_client
+from openapi_client.api.header_api import HeaderApi # noqa: E501
+from openapi_client.rest import ApiException
+
+
+class TestHeaderApi(unittest.TestCase):
+ """HeaderApi unit test stubs"""
+
+ def setUp(self):
+ self.api = openapi_client.api.header_api.HeaderApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_header_integer_boolean_string(self):
+ """Test case for test_header_integer_boolean_string
+
+ Test header parameter(s) # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_manual.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_manual.py
new file mode 100644
index 00000000000..ab1684f333a
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_manual.py
@@ -0,0 +1,216 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+import base64
+import os
+
+import openapi_client
+from openapi_client.api.query_api import QueryApi # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestManual(unittest.TestCase):
+ """Manually written tests"""
+
+ gif_base64 = "R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="
+
+ def setUpFiles(self):
+ self.test_file_dir = os.path.join(os.path.dirname(__file__), "..", "testfiles")
+ self.test_file_dir = os.path.realpath(self.test_file_dir)
+ self.test_gif = os.path.join(self.test_file_dir, "test.gif")
+
+ def setUp(self):
+ self.setUpFiles()
+
+ def tearDown(self):
+ pass
+
+ def testEnumRefString(self):
+ api_instance = openapi_client.QueryApi()
+ q = openapi_client.StringEnumRef("unclassified")
+
+ # Test query parameter(s)
+ api_response = api_instance.test_enum_ref_string(enum_ref_string_query=q)
+ e = EchoServerResponseParser(api_response)
+ self.assertEqual(e.path, "/query/enum_ref_string?enum_ref_string_query=unclassified")
+
+
+ def testDateTimeQueryWithDateTimeFormat(self):
+ api_instance = openapi_client.QueryApi()
+ datetime_format_backup = api_instance.api_client.configuration.datetime_format # backup dateime_format
+ api_instance.api_client.configuration.datetime_format = "%Y-%m-%d %a %H:%M:%S%Z"
+ datetime_query = datetime.datetime.fromisoformat('2013-10-20T19:20:30-05:00') # datetime | (optional)
+ date_query = '2013-10-20' # date | (optional)
+ string_query = 'string_query_example' # str | (optional)
+
+ # Test query parameter(s)
+ api_response = api_instance.test_query_datetime_date_string(datetime_query=datetime_query, date_query=date_query, string_query=string_query)
+ e = EchoServerResponseParser(api_response)
+ self.assertEqual(e.path, "/query/datetime/date/string?datetime_query=2013-10-20%20Sun%2019%3A20%3A30UTC-05%3A00&date_query=2013-10-20&string_query=string_query_example")
+
+ # restore datetime format
+ api_instance.api_client.configuration.datetime_format = datetime_format_backup
+
+ def testDateTimeQueryWithDateTime(self):
+ api_instance = openapi_client.QueryApi()
+ datetime_query = datetime.datetime.fromisoformat('2013-10-20T19:20:30-05:00') # datetime | (optional)
+ date_query = '2013-10-20' # date | (optional)
+ string_query = 'string_query_example' # str | (optional)
+
+ # Test query parameter(s)
+ api_response = api_instance.test_query_datetime_date_string(datetime_query=datetime_query, date_query=date_query, string_query=string_query)
+ e = EchoServerResponseParser(api_response)
+ self.assertEqual(e.path, "/query/datetime/date/string?datetime_query=2013-10-20T19%3A20%3A30.000000-0500&date_query=2013-10-20&string_query=string_query_example")
+
+ def testBinaryGif(self):
+ api_instance = openapi_client.BodyApi()
+
+ # Test binary response
+ api_response = api_instance.test_binary_gif()
+ self.assertEqual((base64.b64encode(api_response)).decode("utf-8"), self.gif_base64)
+
+ def testAdditionalPropertiesNotDefined(self):
+ try:
+ n = openapi_client.NumberPropertiesOnly.from_json('{"number": 123, "float": 456, "double": 34}')
+ except ValueError as err:
+ self.assertEqual("Error due to additional fields (not defined in NumberPropertiesOnly) in the input: float", str(err))
+
+ def testApplicatinOctetStreamBinaryBodyParameter(self):
+ api_instance = openapi_client.BodyApi()
+ binary_body = base64.b64decode(self.gif_base64)
+ api_response = api_instance.test_body_application_octetstream_binary(binary_body)
+ e = EchoServerResponseParser(api_response)
+ self.assertEqual(e.path, "/body/application/octetstream/binary")
+ self.assertEqual(e.headers["Content-Type"], 'application/octet-stream')
+ self.assertEqual(bytes(e.body, "utf-8"), b'GIF89a\x01\x00\x01\x00\xef\xbf\xbd\x01\x00\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\x00\x00\x00!\xef\xbf\xbd\x04\x01\n\x00\x01\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02L\x01\x00;')
+
+ def testApplicatinOctetStreamBinaryBodyParameterWithFile(self):
+ api_instance = openapi_client.BodyApi()
+ try:
+ api_response = api_instance.test_body_application_octetstream_binary("invalid_file_path")
+ except FileNotFoundError as err:
+ self.assertEqual("[Errno 2] No such file or directory: 'invalid_file_path'", str(err))
+
+ api_response = api_instance.test_body_application_octetstream_binary(self.test_gif)
+ e = EchoServerResponseParser(api_response)
+ self.assertEqual(e.path, "/body/application/octetstream/binary")
+ self.assertEqual(e.headers["Content-Type"], 'application/octet-stream')
+ self.assertEqual(bytes(e.body, "utf-8"), b'GIF89a\x01\x00\x01\x00\xef\xbf\xbd\x01\x00\xef\xbf\xbd\xef\xbf\xbd\xef\xbf\xbd\x00\x00\x00!\xef\xbf\xbd\x04\x01\n\x00\x01\x00,\x00\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02L\x01\x00;')
+
+ def testBodyParameter(self):
+ n = openapi_client.Pet.from_dict({"name": "testing", "photoUrls": ["http://1", "http://2"]})
+ api_instance = openapi_client.BodyApi()
+ api_response = api_instance.test_echo_body_pet_response_string(n)
+ self.assertEqual(api_response, "{'name': 'testing', 'photoUrls': ['http://1', 'http://2']}")
+
+ t = openapi_client.Tag()
+ api_response = api_instance.test_echo_body_tag_response_string(t)
+ self.assertEqual(api_response, "{}") # assertion to ensure {} is sent in the body
+
+ api_response = api_instance.test_echo_body_tag_response_string(None)
+ self.assertEqual(api_response, "") # assertion to ensure emtpy string is sent in the body
+
+ api_response = api_instance.test_echo_body_free_form_object_response_string({})
+ self.assertEqual(api_response, "{}") # assertion to ensure {} is sent in the body
+
+ def testAuthHttpBasic(self):
+ api_instance = openapi_client.AuthApi()
+ api_response = api_instance.test_auth_http_basic()
+ e = EchoServerResponseParser(api_response)
+ self.assertFalse("Authorization" in e.headers)
+
+ api_instance.api_client.configuration.username = "test_username"
+ api_instance.api_client.configuration.password = "test_password"
+ api_response = api_instance.test_auth_http_basic()
+ e = EchoServerResponseParser(api_response)
+ self.assertTrue("Authorization" in e.headers)
+ self.assertEqual(e.headers["Authorization"], "Basic dGVzdF91c2VybmFtZTp0ZXN0X3Bhc3N3b3Jk")
+
+ # test from_json, to_json, to_dict, from_dict
+ def test_from_to_methods(self):
+ json_str = ("{\"category\": {\"id\": 1, \"name\": \"dog\"},\n"
+ " \"id\": 1,\n"
+ " \"name\": \"test name\",\n"
+ " \"photoUrls\": [\"string\"],\n"
+ " \"status\": \"available\",\n"
+ " \"tags\": [{\"id\": 1, \"name\": \"None\"}]}")
+ pet = openapi_client.Pet.from_json(json_str)
+ self.assertEqual(pet.id, 1)
+ self.assertEqual(pet.status, "available")
+ self.assertEqual(pet.photo_urls, ["string"])
+ self.assertEqual(pet.tags[0].id, 1)
+ self.assertEqual(pet.tags[0].name, "None")
+ self.assertEqual(pet.category.id, 1)
+ # test to_json
+ self.assertEqual(pet.to_json(),
+ '{"id": 1, "name": "test name", "category": {"id": 1, "name": "dog"}, "photoUrls": ['
+ '"string"], "tags": [{"id": 1, "name": "None"}], "status": "available"}')
+
+ # test to_dict
+ self.assertEqual(pet.to_dict(),
+ {"id": 1, "name": "test name", "category": {"id": 1, "name": "dog"}, "photoUrls": ["string"],
+ "tags": [{"id": 1, "name": "None"}], "status": "available"})
+
+ # test from_dict
+ pet2 = openapi_client.Pet.from_dict(pet.to_dict())
+ self.assertEqual(pet2.id, 1)
+ self.assertEqual(pet2.status, "available")
+ self.assertEqual(pet2.photo_urls, ["string"])
+ self.assertEqual(pet2.tags[0].id, 1)
+ self.assertEqual(pet2.tags[0].name, "None")
+ self.assertEqual(pet2.category.id, 1)
+
+ def echoServerResponseParaserTest(self):
+ s = """POST /echo/body/Pet/response_string HTTP/1.1
+Host: localhost:3000
+Accept-Encoding: identity
+Content-Length: 58
+Accept: text/plain
+Content-Type: application/json
+User-Agent: OpenAPI-Generator/1.0.0/python
+
+{"name": "testing", "photoUrls": ["http://1", "http://2"]}"""
+ e = EchoServerResponseParser(s)
+ self.assertEqual(e.body, '{"name": "testing", "photoUrls": ["http://1", "http://2"]}')
+ self.assertEqual(e.path, '/echo/body/Pet/response_string')
+ self.assertEqual(e.headers["Accept"], 'text/plain')
+ self.assertEqual(e.method, 'POST')
+
+class EchoServerResponseParser():
+ def __init__(self, http_response):
+ if http_response is None:
+ raise ValueError("http response must not be None.")
+
+ lines = http_response.splitlines()
+ self.headers = dict()
+ x = 0
+ while x < len(lines):
+ if x == 0:
+ items = lines[x].split(" ")
+ self.method = items[0];
+ self.path = items[1];
+ self.protocol = items[2];
+ elif lines[x] == "": # blank line
+ self.body = "\n".join(lines[x+1:])
+ break
+ else:
+ key_value = lines[x].split(": ")
+ # store the header key-value pair in headers
+ if len(key_value) == 2:
+ self.headers[key_value[0]] = key_value[1]
+ x = x+1
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_number_properties_only.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_number_properties_only.py
new file mode 100644
index 00000000000..68aa757f9df
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_number_properties_only.py
@@ -0,0 +1,57 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
+
+ Do not edit the class manually.
+"""
+
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.number_properties_only import NumberPropertiesOnly # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestNumberPropertiesOnly(unittest.TestCase):
+ """NumberPropertiesOnly unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test NumberPropertiesOnly
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `NumberPropertiesOnly`
+ """
+ model = openapi_client.models.number_properties_only.NumberPropertiesOnly() # noqa: E501
+ if include_optional :
+ return NumberPropertiesOnly(
+ number = 1.337,
+ float = 1.337,
+ double = ''
+ )
+ else :
+ return NumberPropertiesOnly(
+ )
+ """
+
+ def testNumberPropertiesOnly(self):
+ """Test NumberPropertiesOnly"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_path_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_path_api.py
new file mode 100644
index 00000000000..4d8e71f7ce6
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_path_api.py
@@ -0,0 +1,41 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import openapi_client
+from openapi_client.api.path_api import PathApi # noqa: E501
+from openapi_client.rest import ApiException
+
+
+class TestPathApi(unittest.TestCase):
+ """PathApi unit test stubs"""
+
+ def setUp(self):
+ self.api = openapi_client.api.path_api.PathApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_tests_path_string_path_string_integer_path_integer(self):
+ """Test case for tests_path_string_path_string_integer_path_integer
+
+ Test path parameter(s) # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_pet.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_pet.py
new file mode 100644
index 00000000000..e02d8615bc0
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_pet.py
@@ -0,0 +1,72 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.pet import Pet # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestPet(unittest.TestCase):
+ """Pet unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test Pet
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `Pet`
+ """
+ model = openapi_client.models.pet.Pet() # noqa: E501
+ if include_optional :
+ return Pet(
+ id = 10,
+ name = 'doggie',
+ category = openapi_client.models.category.Category(
+ id = 1,
+ name = 'Dogs', ),
+ photo_urls = [
+ ''
+ ],
+ tags = [
+ openapi_client.models.tag.Tag(
+ id = 56,
+ name = '', )
+ ],
+ status = 'available'
+ )
+ else :
+ return Pet(
+ name = 'doggie',
+ photo_urls = [
+ ''
+ ],
+ )
+ """
+
+ def testPet(self):
+ """Test Pet"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query.py
new file mode 100644
index 00000000000..a7652e1ae59
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query.py
@@ -0,0 +1,58 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.query import Query # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestQuery(unittest.TestCase):
+ """Query unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test Query
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `Query`
+ """
+ model = openapi_client.models.query.Query() # noqa: E501
+ if include_optional :
+ return Query(
+ id = 56,
+ outcomes = [
+ 'SUCCESS'
+ ]
+ )
+ else :
+ return Query(
+ )
+ """
+
+ def testQuery(self):
+ """Test Query"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query_api.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query_api.py
new file mode 100644
index 00000000000..829a635d99b
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_query_api.py
@@ -0,0 +1,55 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+
+import openapi_client
+from openapi_client.api.query_api import QueryApi # noqa: E501
+from openapi_client.rest import ApiException
+
+
+class TestQueryApi(unittest.TestCase):
+ """QueryApi unit test stubs"""
+
+ def setUp(self):
+ self.api = openapi_client.api.query_api.QueryApi() # noqa: E501
+
+ def tearDown(self):
+ pass
+
+ def test_test_query_integer_boolean_string(self):
+ """Test case for test_query_integer_boolean_string
+
+ Test query parameter(s) # noqa: E501
+ """
+ pass
+
+ def test_test_query_style_form_explode_true_array_string(self):
+ """Test case for test_query_style_form_explode_true_array_string
+
+ Test query parameter(s) # noqa: E501
+ """
+ pass
+
+ def test_test_query_style_form_explode_true_object(self):
+ """Test case for test_query_style_form_explode_true_object
+
+ Test query parameter(s) # noqa: E501
+ """
+ pass
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_string_enum_ref.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_string_enum_ref.py
new file mode 100644
index 00000000000..60a3f0781b1
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_string_enum_ref.py
@@ -0,0 +1,37 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.string_enum_ref import StringEnumRef # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestStringEnumRef(unittest.TestCase):
+ """StringEnumRef unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def testStringEnumRef(self):
+ """Test StringEnumRef"""
+ # inst = StringEnumRef()
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_tag.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_tag.py
new file mode 100644
index 00000000000..8e48170ab6a
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_tag.py
@@ -0,0 +1,56 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.tag import Tag # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestTag(unittest.TestCase):
+ """Tag unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test Tag
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `Tag`
+ """
+ model = openapi_client.models.tag.Tag() # noqa: E501
+ if include_optional :
+ return Tag(
+ id = 56,
+ name = ''
+ )
+ else :
+ return Tag(
+ )
+ """
+
+ def testTag(self):
+ """Test Tag"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py
new file mode 100644
index 00000000000..39540734561
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.py
@@ -0,0 +1,58 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter import TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestTestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(unittest.TestCase):
+ """TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter`
+ """
+ model = openapi_client.models.test_query_style_deep_object_explode_true_object_all_of_query_object_parameter.TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter() # noqa: E501
+ if include_optional :
+ return TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(
+ size = '',
+ color = '',
+ id = 1,
+ name = 'Dogs'
+ )
+ else :
+ return TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(
+ )
+ """
+
+ def testTestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter(self):
+ """Test TestQueryStyleDeepObjectExplodeTrueObjectAllOfQueryObjectParameter"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_form_explode_true_array_string_query_object_parameter.py b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_form_explode_true_array_string_query_object_parameter.py
new file mode 100644
index 00000000000..6366b5c2358
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/test/test_test_query_style_form_explode_true_array_string_query_object_parameter.py
@@ -0,0 +1,57 @@
+# coding: utf-8
+
+"""
+ Echo Server API
+
+ Echo Server API # noqa: E501
+
+ The version of the OpenAPI document: 0.1.0
+ Contact: team@openapitools.org
+ Generated by: https://openapi-generator.tech
+"""
+
+
+from __future__ import absolute_import
+
+import unittest
+import datetime
+
+import openapi_client
+from openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter import TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter # noqa: E501
+from openapi_client.rest import ApiException
+
+class TestTestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(unittest.TestCase):
+ """TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter unit test stubs"""
+
+ def setUp(self):
+ pass
+
+ def tearDown(self):
+ pass
+
+ def make_instance(self, include_optional):
+ """Test TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter
+ include_option is a boolean, when False only required
+ params are included, when True both required and
+ optional params are included """
+ # uncomment below to create an instance of `TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter`
+ """
+ model = openapi_client.models.test_query_style_form_explode_true_array_string_query_object_parameter.TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter() # noqa: E501
+ if include_optional :
+ return TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(
+ values = [
+ ''
+ ]
+ )
+ else :
+ return TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(
+ )
+ """
+
+ def testTestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter(self):
+ """Test TestQueryStyleFormExplodeTrueArrayStringQueryObjectParameter"""
+ # inst_req_only = self.make_instance(include_optional=False)
+ # inst_req_and_optional = self.make_instance(include_optional=True)
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/testfiles/test.gif b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/testfiles/test.gif
new file mode 100644
index 00000000000..9884f476b9c
Binary files /dev/null and b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/testfiles/test.gif differ
diff --git a/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/tox.ini b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/tox.ini
new file mode 100644
index 00000000000..1a9028b78cc
--- /dev/null
+++ b/samples/client/echo_api/python-disallowAdditionalPropertiesIfNotPresent-true/tox.ini
@@ -0,0 +1,9 @@
+[tox]
+envlist = py3
+
+[testenv]
+deps=-r{toxinidir}/requirements.txt
+ -r{toxinidir}/test-requirements.txt
+
+commands=
+ pytest --cov=openapi_client
diff --git a/samples/client/echo_api/python/test/test_manual.py b/samples/client/echo_api/python/test/test_manual.py
index a498d903ada..878253e023b 100644
--- a/samples/client/echo_api/python/test/test_manual.py
+++ b/samples/client/echo_api/python/test/test_manual.py
@@ -145,6 +145,40 @@ class TestManual(unittest.TestCase):
self.assertTrue("Authorization" in e.headers)
self.assertEqual(e.headers["Authorization"], "Basic dGVzdF91c2VybmFtZTp0ZXN0X3Bhc3N3b3Jk")
+ # test from_json, to_json, to_dict, from_dict
+ def test_from_to_methods(self):
+ json_str = ("{\"category\": {\"id\": 1, \"name\": \"dog\"},\n"
+ " \"id\": 1,\n"
+ " \"name\": \"test name\",\n"
+ " \"photoUrls\": [\"string\"],\n"
+ " \"status\": \"available\",\n"
+ " \"tags\": [{\"id\": 1, \"name\": \"None\"}]}")
+ pet = openapi_client.Pet.from_json(json_str)
+ self.assertEqual(pet.id, 1)
+ self.assertEqual(pet.status, "available")
+ self.assertEqual(pet.photo_urls, ["string"])
+ self.assertEqual(pet.tags[0].id, 1)
+ self.assertEqual(pet.tags[0].name, "None")
+ self.assertEqual(pet.category.id, 1)
+ # test to_json
+ self.assertEqual(pet.to_json(),
+ '{"id": 1, "name": "test name", "category": {"id": 1, "name": "dog"}, "photoUrls": ['
+ '"string"], "tags": [{"id": 1, "name": "None"}], "status": "available"}')
+
+ # test to_dict
+ self.assertEqual(pet.to_dict(),
+ {"id": 1, "name": "test name", "category": {"id": 1, "name": "dog"}, "photoUrls": ["string"],
+ "tags": [{"id": 1, "name": "None"}], "status": "available"})
+
+ # test from_dict
+ pet2 = openapi_client.Pet.from_dict(pet.to_dict())
+ self.assertEqual(pet2.id, 1)
+ self.assertEqual(pet2.status, "available")
+ self.assertEqual(pet2.photo_urls, ["string"])
+ self.assertEqual(pet2.tags[0].id, 1)
+ self.assertEqual(pet2.tags[0].name, "None")
+ self.assertEqual(pet2.category.id, 1)
+
def echoServerResponseParaserTest(self):
s = """POST /echo/body/Pet/response_string HTTP/1.1
Host: localhost:3000