Created by: nshaaban-cPacket
Generates oneOf enums.
openapi: 3.0.1
info:
version: "1.0.0"
title: rust one-of fix
paths: {}
components:
schemas:
Foo:
x-one-of-name: Foo
oneOf:
- type: object
required:
- field_one
properties:
field_one:
type: string
field_two:
type: string
- type: object
required:
- field_three
properties:
field_three:
type: number
Expected behavior: Able to fill in struct fields in such a way that creates a valid request Actual behavior (on master): Impossible to fill the struct Foo to make it a valid schema (as BOTH required fields (field_one and field_three) are required to be filled in rust, yet the openapi schema only allows one or the other to be set. Actual behavior (on this PR): able to fill fields by using the corresponding variant on the enum Foo.
use super::FooOneOf;
use super::FooOneOf1;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub enum Foo {
FooOneOf(Box<FooOneOf>),
FooOneOf1(Box<FooOneOf1>),
}
Known Limitations
- oneOf and properties on the same level.
- model.mds still need to be updated to match the new enum scheme
- (existing) oneOf and discriminator where mapping is not explicit
Related issue
https://github.com/OpenAPITools/openapi-generator/issues/9497
PR checklist
-
Read the contribution guidelines. -
Pull Request title clearly describes the work in the pull request and Pull Request description provides details about how to validate the work. Missing information here may result in delayed response from the community. -
Run the following to build the project and update samples: ./mvnw clean package ./bin/generate-samples.sh ./bin/utils/export_docs_generators.sh
./bin/generate-samples.sh bin/configs/java*
. For Windows users, please run the script in Git BASH. -
File the PR against the correct branch: master
(6.3.0) (minor release - breaking changes with fallbacks),7.0.x
(breaking changes without fallbacks) -
If your PR is targeting a particular programming language, @mention the technical committee members, so they are more likely to review the pull request.
@frol @farcaller @richardwhiuk @paladinzh @jacob-pro