There are some description in DSP0266_1.11.0 about handling OData annotations for PATCH(update).
The service shall ignore OData annotations in the request body, such as resource identifier, type, and ETag properties.
And my question is :
1. If client provides a property like "@odata.test", is this also one OData annotation and PATCH(update) should ignore this property? Or the OData annotation should only be "@odata.etag", "@odata.context", "@odata.id", and "@odata.type"? 2. Is there any definition in Spec for this part? 3. How the other operations (e.g. POST(create), PUT(replace) ) would handle the OData annotation?
Thank you, Alvin
Last Edit: Apr 22, 2021 9:01:16 GMT by alvin: Clarify my questions
This is effectively anything containing "@odata." in the property name. We do not enumerate the complete list since there are implementations that support more OData functionality than specified by Redfish. We only define terms that are directly used by Redfish. The OData JSON Format Specification contains a section called "Control Information" that defines all of the possible terms: docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html. I would expect the same behavior with regards to POST and PUT, so we should make that clear.
One thing that came to mind though is there are some cases where we have writable links to other resources. For example, "Endpoints" within the "Links" property of "EndpointGroup" is writable for assigning and removing endpoints from a group. In this case "@odata.id" is processed in these requests. So, we'll also need to clarify that "@odata.id" is something that isn't necessarily ignored in PATCH requests.