-
Notifications
You must be signed in to change notification settings - Fork 9.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Discriminator field (unnecessarily) required #708
Comments
Related: #707. |
Any comments on this? |
I like this proposal, OData also omits the |
Tackling PR: #741 |
@webron #741 was closed in favour of merged #894. Is this being tracked on a new PR? As an aside, having the ability to shortcut any/all/one Of sounds like a nice thing! Maybe we should look at putting this into JSON Schema itself!? |
@Relequestual |
No, that's fine. The same functionality can be provided using if/then/else. |
another use-case for an optional discriminator is API-evolution. i.e. we may have an API that only supports one type (e.g. Dogs) and thus has no discriminator Then we can change the API in a backwards compatible way
|
@OAI/tsc review request: Do we want to consider this for 3.2+? We are already tracking discriminator replacement in Moonwalk so if we don't want to do this in 3.x we should close it. |
I'm in favour of closing. I think if we didn't do it in the first 8 years of this issue's lifetime, we should probably make 4.0 the host for changes in this area. |
Two TSC votes to close, so I'm going to close this as that's our threshold for merging PRs. |
Is it possible to remove the restriction of making the field that acts as discriminator required (and assume that when not returned, the object is just of the 'base' type defined in the schema)?
i.e (using the Pet example from the docs)
Schema:
Payload:
The first and third items are just of type "Pet" which would be explicit from the schema of the "pets" field. "Pet" would therefore define the @type field but it won't be required.
We use schema.org and rely on polymorphic schemas extensively but we currently only return a type discriminator when is not obvious from the schema (i.e when returning a subtype). Unless I misunderstand it, adhering to the spec would require us to return @type everywhere which would significantly increase payload size (and thus would prob be a non-starter).
Let me know if you have any thoughts or reasons to not go this route.
The text was updated successfully, but these errors were encountered: