I hope you enjoy my first post on the subject: CRUD RTC work items using cURL (Part 1: Read)
At this point we should have all the inputs to create a new work item using the OSLC APIs. It is time to retrieve the OSLC factory service used to create a work item. Actually, by calling the REST API answering the list of services provides by a project area:
rem Authentication
...
rem Request the url using the authentication
curl.exe -k -b %COOKIES% https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/services.xml
you can retrieve the Work Item creation service. Actually, you will retrieve for each of your Work Item type a corresponding “factory” service.
So, if you want to create a task, retrieve the factory title “Location for creation of Task change requests”, the associate oslc_cm:url element provides the REST API to create a Task.
<oslc_cm:factory calm:id="requirementChangeRequest">
<dc:title>Location for creation of Task change requests </dc:title>
<oslc_cm:url>https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/task</oslc_cm:url>
</oslc_cm:factory>
Now to create a work item you can run the following code:
rem Authentication
...
curl.exe -k -b %COOKIES% -H "Content-Type: application/x-oslc-cm-change-request+xml" -H "Accept: text/xml" -X POST -d @newtask.xml https://jazz.server.com:9443/ccm/oslc/contexts/_TN0swJPUEeOnRa9khWwR1A/workitems/task
The cURL instruction references several important parameters:
- The “-H” parameters specify the format of the body request (“Content-Type: application/x-oslc-cm-change-request+xml”) as well as the answer format (“Accept: text/xml”).
- The “-X” parameter specifies the HTTP method to use: a POST method to create a new work item.
- The “-d” parameter designates the content of the request body. You can either provide a string with the XML code of your new work item or you can use the character @ and reference a file containing the XML code of your new work item.
In our case we decided to use a separate file named “newtask.xml” containing the following XML code:
<oslc_cm:ChangeRequest
xmlns:oslc_cm="http://open-services.net/xmlns/cm/1.0/"
xmlns:dc="http://purl.org/dc/terms/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:calm="http://jazz.net/xmlns/prod/jazz/calm/1.0/"
xmlns:rtc_cm="http://jazz.net/xmlns/prod/jazz/rtc/cm/1.0/"
xmlns:oslc_pl="http://open-services.net/ns/pl#">
<rtc_cm:filedAgainst rdf:resource="https://jazz.server.com:9443/ccm/resource/itemOid/com.ibm.team.workitem.Category/_UFKkcJPUEeOnRa9khWwR1A"/>
<oslc_cm:priority <span="" class="hiddenSpellError" pre="priority " data-mce-bogus="1">rdf:resource="https://jazz.server.com:9443/ccm/oslc/enumerations/_TN0swJPUEeOnRa9khWwR1A/priority/priority.literal.l01"/>
<oslc_cm:severity <span="" class="hiddenSpellError" pre="severity " data-mce-bogus="1">rdf:resource="https://jazz.server.com:9443/ccm/oslc/enumerations/_TN0swJPUEeOnRa9khWwR1A/severity/severity.literal.l3"/>
<dc:title>New PK Task</dc:title>
<rtc_cm:plannedFor rdf:resource="https://jazz.server.com:9443/ccm/oslc/iterations/_TPm1c5PUEeOpAbBwyZpuzw"/>
</oslc_cm:ChangeRequest></pre>
<pre>
As you can see this file doesn’t mention the work-item ID, it will be provided by the JTS during the creation of the work item and it will be returned in the request answer.
<dc:identifier>173</dc:identifier>
The answer has the same format as the one returned when we access to a work item.
The second post was easy to write once the first one is posted.
The third one will be more complex because it will talk about ETag which is concept I’m discovering.
In mid time, I hope this one will help you…