The specification says HttpPushUriTargets object need to be set with the URIs of the target to which the image uploaded by HttpPushUri method to be applied Why does HttpPushUriTargets need to be set with URI? instead of whole firmware inventory URI why can't we use a string corresponding to firmware inventory item ?
If its that we need to use whole URI as HttpPushUriTargets, can we have POST method supported on FirmwareInventory item.
GET of https://<bmc-ip>/redfish/v1/UpdateService/FirmwareInventory lists as below. Out of this, are we allowed to support POST method directly on "/redfish/v1/UpdateService/FirmwareInventory/bmc" ?
HttpPushUriTargets is a property that allows the client to configure which targets are updated when the client performs a POST to the URI specified by HttpPushUri. This is important in cases where a single manager is responsible for multiple systems, and a user only wants to perform an update for a single system.
I would expect clients to first configure HttpPushUriTargets to specify what devices/components in the service are to be updated (which could be a URI to a ComputerSystem, a URI to something in the Firmware Inventory Collection, or something else), and then the client would perform a POST to the URI specified by "HttpPushUri". If HttpPushUriTargets property is an empty array, I would expect the service to make decisions internally as to where the image is applied.
One thing to point out is the forum is trying to move away from HttpPushUri; we've seen interop problems with it since the current definition is very loose and up to implementers to decide the protocol aspects of it. As of specification 1.8.0, we've introduced "MultipartPushUri" and specified how clients and services use that functionality.