Description
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:
(...)
properties:
pets:
type: array
items:
type: Pet
Payload:
{
pets: [
{
name: "Some generic pet"
},
{
@type: Dog
name: "Some dog"
packSize: ...
},
{
@type: Cat
name: "Some cat"
huntingSkill: ...
},
{
name: "Some other generic pet"
}
}
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.