Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Generator refactoring #425

Merged
merged 44 commits into from
Apr 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
903d654
Extracts OpenapApiProcessor interface out of Generator
spacether Apr 13, 2024
780edf1
Deprecates more generator methods
spacether Apr 13, 2024
41916de
Deprecates toResponseModuleName
spacether Apr 13, 2024
7aa734c
Deprecates toParamName
spacether Apr 13, 2024
84d06f6
Deprecates more methods, removes packagePath from generator interface
spacether Apr 14, 2024
51c1786
Adjusts generator instantiation
spacether Apr 14, 2024
334c97e
Deprecates getOutputDir
spacether Apr 14, 2024
a0cc297
Deprecates outputFolder
spacether Apr 14, 2024
bb78fff
Deprecates templateDir
spacether Apr 14, 2024
da1eac1
Deprecates embeddedTemplateDir
spacether Apr 14, 2024
3e1b394
Deprecates packageName
spacether Apr 14, 2024
b6a68ea
Passes strict spec behaviort in generator new
spacether Apr 14, 2024
e403f1c
Deprecates isEnableMinimalUpdate
spacether Apr 14, 2024
536b16a
Removes setRemoveOperationIdPrefix
spacether Apr 14, 2024
8c1aa59
Updates IgnoreFilePathOverride
spacether Apr 14, 2024
1ca47e6
Handles isSkipOperationExample
spacether Apr 14, 2024
98e4d5a
Updates 2 more generator settings
spacether Apr 14, 2024
62d251e
Saves input spec location in new
spacether Apr 14, 2024
4df0810
Stops using serviceloader for generators
spacether Apr 15, 2024
86314cd
Fixes java test testRemoveOperationIdPrefix
spacether Apr 15, 2024
e6c15d4
Fixes smokeTestAuthorTemplateCommand
spacether Apr 15, 2024
fd43dc4
Fixes java tests
spacether Apr 15, 2024
1ecf67f
Moves reservedWords into generator metadata
spacether Apr 17, 2024
f7b06dd
Moves instantiationTypes into metadata
spacether Apr 17, 2024
914c257
Reprecates languageSpecificPrimitives
spacether Apr 17, 2024
7dea688
Adds hide genration timestamp option
spacether Apr 17, 2024
3a8840f
Removes defaultIncludes
spacether Apr 17, 2024
bdb8644
Fixes referencing issue
spacether Apr 17, 2024
bd0884d
Docs regen
spacether Apr 17, 2024
47bbf1a
Fixes java docs
spacether Apr 17, 2024
3abf681
Fixes setting package name
spacether Apr 17, 2024
94fe515
Samples regen
spacether Apr 18, 2024
dccf7e8
Updates batch to watn about deprecated additional properties
spacether Apr 18, 2024
4d54774
Samples regen
spacether Apr 18, 2024
93fbd38
Samples regen with fixed java config file inputs
spacether Apr 18, 2024
181cb90
Changes generatorMetadata usages to use the getGeneratorMetadata method
spacether Apr 18, 2024
d0cadbb
Samples regen
spacether Apr 18, 2024
df224b6
Removes lingering unused folder
spacether Apr 18, 2024
2dd672c
Removes other unsed folder
spacether Apr 18, 2024
43eb4b0
Removes not files from python 303
spacether Apr 18, 2024
4e4185a
Removes not files from python 310
spacether Apr 18, 2024
9cfadb4
Removes files generated from when reservedWords was not integrated co…
spacether Apr 18, 2024
aaf1b82
Fixes java tests, adjusts where logging is done for deprecated additi…
spacether Apr 19, 2024
b3eaeb2
Fixes hideGenerationTimestamp conversion
spacether Apr 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion bin/generate-samples.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ if [ ! -f "$executable" ]; then
(cd "${root}" && mvn -B --no-snapshot-updates clean package -DskipTests=true -Dmaven.javadoc.skip=true -Djacoco.skip=true)
fi

# -ea -> enable assertions
# -server -> server version of the VM which has more complex optimizations, + is tuned to maximize performance
export JAVA_OPTS="${JAVA_OPTS} -ea -server -Duser.timezone=UTC"
export BATCH_OPTS="${BATCH_OPTS:-}"

Expand Down Expand Up @@ -53,10 +55,10 @@ if [[ ${#files[@]} -eq 1 && "${files[0]}" != *'*'* ]]; then
java ${JAVA_OPTS} -jar "$executable" generate -c ${files[0]} ${args[@]}
else
echo "Please press CTRL+C to stop or the script will continue in 5 seconds."
sleep 5
if [ ${#files[@]} -eq 0 ]; then
files=("${root}"/bin/generate_samples_configs/*.yaml)
fi
sleep 5

# shellcheck disable=SC2086
# shellcheck disable=SC2068
Expand Down
2 changes: 1 addition & 1 deletion bin/generate_samples_configs/java_3_0_3_unit_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ generatorName: java
outputDir: samples/client/3_0_3_unit_test/java
inputSpec: src/test/resources/3_0/unit_test_spec/3_0_3_unit_test_spec_nopaths.yaml
additionalProperties:
artifactId: petstore
artifactId: unit-test-api
hideGenerationTimestamp: "true"
2 changes: 1 addition & 1 deletion bin/generate_samples_configs/java_3_1_0_unit_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ generatorName: java
outputDir: samples/client/3_1_0_unit_test/java
inputSpec: src/test/resources/3_1/unit_test_spec/3_1_0_unit_test_spec_nopaths.yaml
additionalProperties:
packageName: unit_test_api
artifactId: unit-test-api
5 changes: 1 addition & 4 deletions docs/generators/java.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,22 @@ title: Documentation for the java generator
| generator language | Java | |
| generator language version | 17 | |
| generator default templating engine | handlebars | |
| helpTxt | Generates a Java client library<br /><br />Features in this generator:<br />- v3.0.0 - [v3.1.0](#schema-feature) OpenAPI Specification support<br />- Very thorough documentation generated in the style of javadocs<br />- Input types constrained for a Schema in SomeSchema.validate<br /> - validate method can accept arbitrary List/Map/null/int/long/double/float/String json data<br />- Immutable List output classes generated and returned by validate for List&lt;?&gt; input<br />- Immutable Map output classes generated and returned by validate for Map&lt;?, ?&gt; input<br />- Strictly typed list input can be instantiated in client code using generated ListBuilders<br />- Strictly typed map input can be instantiated in client code using generated MapBuilders<br /> - Sequential map builders are generated ensuring that required properties are set before build is invoked. Looks like:<br /> - `new MapBuilder().requiredA("a").requiredB("b").build()`<br /> - `new MapBuilder().requiredA("a").requiredB("b").optionalProp("c").additionalProperty("someAddProp", "d").build()`<br />- Run time type checking and validation when<br /> - validating schema payloads<br /> - instantiating List output class (validation run)<br /> - instantiating Map output class (validation run)<br /> - Note: if needed, validation of json schema keywords can be deactivated via a SchemaConfiguration class<br />- Enums classes are generated and may be input into Schema.validate or the List/MapBuilder add/setter methods<br />- The [Checker-Framework's](https://github.com/typetools/checker-framework) NullnessChecker and @Nullable annotations are used in the java client<br /> - ensuring that null pointer exceptions will not happen<br />- Invalid (in java) property names supported like `class`, `1var`, `hi-there` etc in<br /> - component schema names<br /> - schema property names (a fallback setter is written in the MapBuilder)<br />- Generated interfaces are largely consistent with the python code<br />- Openapi spec inline schemas supported at any depth in any location<br />- Format support for: int32, int64, float, double, date, datetime, uuid<br />- Payload values are not coerced when validated, so a date/date-time value can pass other validations that describe the payload only as type string<br />- enum types are generated for enums of type string/integer/number/boolean/null<br />- String transmission of numbers supported with type: string, format: number | |
| helpMsg | Generates a Java client library<br /><br />Features in this generator:<br />- v3.0.0 - [v3.1.0](#schema-feature) OpenAPI Specification support<br />- Very thorough documentation generated in the style of javadocs<br />- Input types constrained for a Schema in SomeSchema.validate<br /> - validate method can accept arbitrary List/Map/null/int/long/double/float/String json data<br />- Immutable List output classes generated and returned by validate for List&lt;?&gt; input<br />- Immutable Map output classes generated and returned by validate for Map&lt;?, ?&gt; input<br />- Strictly typed list input can be instantiated in client code using generated ListBuilders<br />- Strictly typed map input can be instantiated in client code using generated MapBuilders<br /> - Sequential map builders are generated ensuring that required properties are set before build is invoked. Looks like:<br /> - `new MapBuilder().requiredA("a").requiredB("b").build()`<br /> - `new MapBuilder().requiredA("a").requiredB("b").optionalProp("c").additionalProperty("someAddProp", "d").build()`<br />- Run time type checking and validation when<br /> - validating schema payloads<br /> - instantiating List output class (validation run)<br /> - instantiating Map output class (validation run)<br /> - Note: if needed, validation of json schema keywords can be deactivated via a SchemaConfiguration class<br />- Enums classes are generated and may be input into Schema.validate or the List/MapBuilder add/setter methods<br />- The [Checker-Framework's](https://github.com/typetools/checker-framework) NullnessChecker and @Nullable annotations are used in the java client<br /> - ensuring that null pointer exceptions will not happen<br />- Invalid (in java) property names supported like `class`, `1var`, `hi-there` etc in<br /> - component schema names<br /> - schema property names (a fallback setter is written in the MapBuilder)<br />- Generated interfaces are largely consistent with the python code<br />- Openapi spec inline schemas supported at any depth in any location<br />- Format support for: int32, int64, float, double, date, datetime, uuid<br />- Payload values are not coerced when validated, so a date/date-time value can pass other validations that describe the payload only as type string<br />- enum types are generated for enums of type string/integer/number/boolean/null<br />- String transmission of numbers supported with type: string, format: number | |

## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.

| Option | Description | Values | Default |
| ------ | ----------- | ------ | ------- |
|allowUnicodeIdentifiers|boolean, toggles whether unicode identifiers are allowed in names or not, default is false| |false|
|apiPackage|package for generated api classes| |apis|
|artifactDescription|artifact description in generated pom.xml| |OpenAPI Java|
|artifactId|artifactId in generated pom.xml. This also becomes part of the generated library's filename| |openapi-java-client|
|artifactUrl|artifact URL in generated pom.xml| |https://github.com/openapi-json-schema-tools/openapi-json-schema-generator|
|artifactVersion|artifact version in generated pom.xml. This also becomes part of the generated library's filename| |1.0.0|
|developerEmail|developer email in generated pom.xml| |[email protected]|
|developerName|developer name in generated pom.xml| |OpenAPI-Generator Contributors|
|developerOrganization|developer organization in generated pom.xml| |OpenAPITools.org|
|developerOrganizationUrl|developer organization URL in generated pom.xml| |http://openapijsonschematools.org|
|groupId|groupId in generated pom.xml| |org.openapijsonschematools|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |false|
|invokerPackage|root package for generated code| |org.openapijsonschematools.client|
|licenseName|The name of the license| |Unlicense|
|licenseUrl|The URL of the license| |http://unlicense.org|
Expand Down
22 changes: 17 additions & 5 deletions docs/generators/python.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ title: Documentation for the python generator
| generator language | Python | |
| generator language version | >=3.8 | |
| generator default templating engine | handlebars | |
| helpTxt | Generates a Python client library<br /><br />Features in this generator:<br />- type hints on endpoints and model creation<br />- model parameter names use the spec defined keys and cases<br />- robust composition (oneOf/anyOf/allOf/not) where payload data is stored in one instance only<br />- endpoint parameter names use the spec defined keys and cases<br />- inline schemas are supported at any location including composition<br />- multiple content types supported in request body and response bodies<br />- run time type checking + json schema validation<br />- json schema keyword validation may be selectively disabled with SchemaConfiguration<br />- enums of type string/integer/boolean typed using typing.Literal<br />- mypy static type checking run on generated sample<br />- Sending/receiving decimals as strings supported with type:string format: number -> DecimalSchema<br />- Sending/receiving uuids as strings supported with type:string format: uuid -> UUIDSchema<br />- quicker load time for python modules (a single endpoint can be imported and used without loading others)<br />- composed schemas with type constraints supported (type:object + oneOf/anyOf/allOf)<br />- schemas are not coerced/cast. For example string + date are both stored as string, and there is a date accessor | |
| helpMsg | Generates a Python client library<br /><br />Features in this generator:<br />- type hints on endpoints and model creation<br />- model parameter names use the spec defined keys and cases<br />- robust composition (oneOf/anyOf/allOf/not) where payload data is stored in one instance only<br />- endpoint parameter names use the spec defined keys and cases<br />- inline schemas are supported at any location including composition<br />- multiple content types supported in request body and response bodies<br />- run time type checking + json schema validation<br />- json schema keyword validation may be selectively disabled with SchemaConfiguration<br />- enums of type string/integer/boolean typed using typing.Literal<br />- mypy static type checking run on generated sample<br />- Sending/receiving decimals as strings supported with type:string format: number -> DecimalSchema<br />- Sending/receiving uuids as strings supported with type:string format: uuid -> UUIDSchema<br />- quicker load time for python modules (a single endpoint can be imported and used without loading others)<br />- composed schemas with type constraints supported (type:object + oneOf/anyOf/allOf)<br />- schemas are not coerced/cast. For example string + date are both stored as string, and there is a date accessor | |

## CONFIG OPTIONS
These options may be applied as additional-properties (cli) or configOptions (plugins). Refer to [configuration docs](https://openapi-generator.tech/docs/configuration) for more details.
Expand All @@ -22,12 +22,10 @@ These options may be applied as additional-properties (cli) or configOptions (pl
|generateSourceCodeOnly|Specifies that only a library source code is to be generated.| |false|
|hideGenerationTimestamp|Hides the generation timestamp when files are generated.| |true|
|nonCompliantUseDiscriminatorIfCompositionFails|When true, If the payload fails to validate against composed schemas (allOf/anyOf/oneOf/not) and a discriminator is present, then ignore the composition validation errors and attempt to use the discriminator to validate the payload.<br />Note: setting this to true makes the generated client not comply with json schema because it ignores composition validation errors. Please consider making your schemas more restrictive rather than setting this to true. You can do that by:<ul><li>defining the propertyName as an enum with only one value in the schemas that are in your discriminator map</li><li>setting additionalProperties: false in your schemas</li></ul>|<dl><dt>**true**</dt><dd>If composition fails and a discriminator exists, the composition errors will be ignored and validation will be attempted with the discriminator</dd><dt>**false**</dt><dd>Composition validation must succeed. Discriminator validation must succeed.</dd></dl>|false|
|packageName|python package name (convention: snake_case).| |openapi_client|
|packageUrl|python package URL.| |null|
|packageVersion|python package version.| |1.0.0|
|projectName|python project name in setup.py (e.g. petstore-api).| |null|
|recursionLimit|Set the recursion limit. If not set, use the system default value.| |null|
|templatingEngine|template engine|<dl><dt>**handlebars**</dt><dd>handlebars templating engine</dd></dl>|handlebars|
|useNose|use the nose test framework| |false|

## SUPPORTED VENDOR EXTENSIONS
Expand All @@ -54,24 +52,24 @@ These options may be applied as additional-properties (cli) or configOptions (pl
## LANGUAGE PRIMITIVES

<ul class="column-ul">
<li>None</li>
<li>bool</li>
<li>bytes</li>
<li>date</li>
<li>datetime</li>
<li>dict</li>
<li>file</li>
<li>file_type</li>
<li>float</li>
<li>int</li>
<li>list</li>
<li>none_type</li>
<li>object</li>
<li>str</li>
</ul>

## RESERVED WORDS

<ul class="column-ul">
<li>@property</li>
<li>and</li>
<li>as</li>
<li>assert</li>
Expand All @@ -81,6 +79,9 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>break</li>
<li>class</li>
<li>continue</li>
<li>cookie_params</li>
<li>datetime</li>
<li>decimal</li>
<li>def</li>
<li>del</li>
<li>dict</li>
Expand All @@ -93,12 +94,15 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>float</li>
<li>for</li>
<li>from</li>
<li>functools</li>
<li>global</li>
<li>header_params</li>
<li>if</li>
<li>immutabledict</li>
<li>import</li>
<li>in</li>
<li>int</li>
<li>io</li>
<li>is</li>
<li>lambda</li>
<li>list</li>
Expand All @@ -107,15 +111,23 @@ These options may be applied as additional-properties (cli) or configOptions (pl
<li>not</li>
<li>or</li>
<li>pass</li>
<li>path_params</li>
<li>print</li>
<li>property</li>
<li>query_params</li>
<li>raise</li>
<li>re</li>
<li>resource_path</li>
<li>return</li>
<li>schemas</li>
<li>self</li>
<li>str</li>
<li>true</li>
<li>try</li>
<li>tuple</li>
<li>typing</li>
<li>typing_extensions</li>
<li>uuid</li>
<li>while</li>
<li>with</li>
<li>yield</li>
Expand Down
6 changes: 3 additions & 3 deletions samples/client/3_0_3_unit_test/java/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# petstore
# unit-test-api
sample spec for testing openapi functionality, built from json schema tests for draft6

This Java package is automatically generated by the [OpenAPI JSON Schema Generator](https://github.com/openapi-json-schema-tools/openapi-json-schema-generator) project:
Expand Down Expand Up @@ -35,7 +35,7 @@ Add this dependency to your project's POM:
```xml
<dependency>
<groupId>org.openapijsonschematools</groupId>
<artifactId>petstore</artifactId>
<artifactId>unit-test-api</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
Expand All @@ -51,7 +51,7 @@ mvn clean package

Then manually install the following JARs:

- `target/petstore-0.0.1.jar`
- `target/unit-test-api-0.0.1.jar`
- `target/lib/*.jar`


Expand Down
4 changes: 2 additions & 2 deletions samples/client/3_0_3_unit_test/java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openapijsonschematools</groupId>
<artifactId>petstore</artifactId>
<artifactId>unit-test-api</artifactId>
<packaging>jar</packaging>
<name>petstore</name>
<name>unit-test-api</name>
<version>0.0.1</version>
<url>https://github.com/openapi-json-schema-tools/openapi-json-schema-generator</url>
<description>OpenAPI Java</description>
Expand Down
6 changes: 3 additions & 3 deletions samples/client/3_1_0_unit_test/java/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# openapi-java-client
# unit-test-api
sample spec for testing openapi functionality, built from json schema tests for draft2020-12

This Java package is automatically generated by the [OpenAPI JSON Schema Generator](https://github.com/openapi-json-schema-tools/openapi-json-schema-generator) project:
Expand Down Expand Up @@ -35,7 +35,7 @@ Add this dependency to your project's POM:
```xml
<dependency>
<groupId>org.openapijsonschematools</groupId>
<artifactId>openapi-java-client</artifactId>
<artifactId>unit-test-api</artifactId>
<version>0.0.1</version>
<scope>compile</scope>
</dependency>
Expand All @@ -51,7 +51,7 @@ mvn clean package

Then manually install the following JARs:

- `target/openapi-java-client-0.0.1.jar`
- `target/unit-test-api-0.0.1.jar`
- `target/lib/*.jar`


Expand Down
4 changes: 2 additions & 2 deletions samples/client/3_1_0_unit_test/java/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.openapijsonschematools</groupId>
<artifactId>openapi-java-client</artifactId>
<artifactId>unit-test-api</artifactId>
<packaging>jar</packaging>
<name>openapi-java-client</name>
<name>unit-test-api</name>
<version>0.0.1</version>
<url>https://github.com/openapi-json-schema-tools/openapi-json-schema-generator</url>
<description>OpenAPI Java</description>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ base class: schemas.immutabledict[str, schemas.OUTPUT_BASE_TYPES]
### &lowbar;&lowbar;new&lowbar;&lowbar; method
Keyword Argument | Type | Description | Notes
---------------- | ---- | ----------- | -----
**uuid** | dict, schemas.immutabledict, str, datetime.date, datetime.datetime, uuid.UUID, int, float, bool, None, list, tuple, bytes, io.FileIO, io.BufferedReader, schemas.Unset | | [optional] value must be a uuid
**date** | dict, schemas.immutabledict, str, datetime.date, datetime.datetime, uuid.UUID, int, float, bool, None, list, tuple, bytes, io.FileIO, io.BufferedReader, schemas.Unset | | [optional] value must conform to RFC-3339 full-date YYYY-MM-DD
**number** | dict, schemas.immutabledict, str, datetime.date, datetime.datetime, uuid.UUID, int, float, bool, None, list, tuple, bytes, io.FileIO, io.BufferedReader, schemas.Unset | | [optional] value must be int or float numeric
**binary** | dict, schemas.immutabledict, str, datetime.date, datetime.datetime, uuid.UUID, int, float, bool, None, list, tuple, bytes, io.FileIO, io.BufferedReader, schemas.Unset | | [optional]
Expand All @@ -46,7 +45,6 @@ Keyword Argument | Type | Description | Notes
### properties
Property | Type | Description | Notes
-------- | ---- | ----------- | -----
**uuid** | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO, schemas.Unset | | [optional] value must be a uuid
**date** | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO, schemas.Unset | | [optional] value must conform to RFC-3339 full-date YYYY-MM-DD
**number** | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO, schemas.Unset | | [optional] value must be int or float numeric
**binary** | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO, schemas.Unset | | [optional]
Expand All @@ -58,7 +56,7 @@ Property | Type | Description | Notes
Method | Input Type | Return Type | Notes
------ | ---------- | ----------- | ------
from_dict_ | [AnyTypeAndFormatDictInput](#anytypeandformatdictinput), [AnyTypeAndFormatDict](#anytypeandformatdict) | [AnyTypeAndFormatDict](#anytypeandformatdict) | a constructor
&lowbar;&lowbar;getitem&lowbar;&lowbar; | str | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO | This model has invalid python names so this method is used under the hood when you access instance["date-time"], instance["float"],
&lowbar;&lowbar;getitem&lowbar;&lowbar; | str | schemas.immutabledict, str, float, int, bool, None, tuple, bytes, io.FileIO | This model has invalid python names so this method is used under the hood when you access instance["uuid"], instance["date-time"], instance["float"],
get_additional_property_ | str | schemas.immutabledict, tuple, float, int, str, bool, None, bytes, schemas.FileIO, schemas.Unset | provides type safety for additional properties

[[Back to top]](#top) [[Back to Component Schemas]](../../../README.md#Component-Schemas) [[Back to README]](../../../README.md)
Loading