Updating a single tag in ETM using OSLC URI with HTTP Put shows changes in other attributes
Hi,
I am able to update ETM Test artifact data such as custom attribute of all the Test artifact and Test schedule for Test plan
1. Custom Attribute update
Query url : <serverURL>/service/com.ibm.rqm.integration.service.IIntegrationService/resources/<PAUUID>/testplan/urn:com.ibm.rqm:testplan:2053
HTTP PUT
Headers : context-type: application/rdf+xml
Tag : ns2:customAttributes
The response code is 200, but when i check the history , it shows there are other changes made in other section.
Other |
A web service POST/PUT event has triggered this state of the resource. Not all details can be determined.
|
2. Test Schedule of Test plan
Query url : <serverURI>/oslc_qm/contexts/<PAID>/resources/com.ibm.rqm.planning.VersionedTestPlan/_0v87sLUEaEeu4z6MCs9ft2Q
HTTP PUT
Headers : context-type: application/rdf+xml
Tag : <process:iteration rdf:resource="<serverURI>/process/iterations/ITerationItermID" />
Under History i see below updated
Other | A web service POST/PUT event has triggered this state of the resource. Not all details can be determined. |
Other | Created a link of type com.ibm.rqm.planning.linktype.referencedplan to <serverURL>/oslc_qm/contexts/<PAID>/resources/com.ibm.rqm.planning.VersionedTestPlan/ChildtestplanIDs |
Other |
This is a bit concerning since i had expected to only see the changes of one attribute instead it is affecting other attributes
One answer
I do not have a lot of experience with the ETM Reportable REST API. However, here is the documentation: https://jazz.net/wiki/bin/view/Main/RqmApi#HTTP_PUT_POST_Requests especially for PUT and POST.
- The headers do support Content Type: application/xml and not context type: application/rdf+xml (Typo?) or Content Type:application/rdf+xml
- If you do a PUT, you usually do a GET first, modify the XML the ways you want and then do a PUT. You would get and provide an E-Tag. I do not know about the Reportable REST API, but usually you would not just sent addition of a tag only. All the data from the GET you do not send could be interpreted as a removal of that information. At least this is how the OSLC API works. So how did the request body for the PUT did look like really?
- The ETag is used to detect if the resource has changed in the repository and would allow to prevent conflicting changes to happen. This is only interesting for the TEM Reportable REST API, as all other applications Reportable REST APIs are read only.