We ran into an interoperability issue where servers don't accept "@odata.type" in request payload (this is for a case where there is no inheritance in model).
Client is sending "@odata.type" because previously we encountered servers that required "@odata.type".
Now we were hoping to argue that servers not accepting "@odata.type" in request payload were non-compliant with the spec, however...
The “minimal” and “full” metadata are defined in subsections of OData 4.01 JSON section 3.1 Controlling the Amount of Control Information in Responses.
Nowhere do we appear to define the amount of control information in requests.
Although we could take it as an unstated assumption that "@odata.type" MAY appear even where it isn’t required to appear, it would be best if we have a separate section describing what control information MAY (and MUST, in the case of entity inheritance) appear in request payloads.