It's all about the answers!

Ask a question

Downloading an attachment from RTC workitem via REST using Python

Yogesh Ranjitkar (153) | asked Sep 16 '21, 1:40 a.m.
edited Sep 16 '21, 1:42 a.m.

Hi All,

I am trying to download an attachment of workitem via REST using python. However, I haven't been able to locate any useful APIs to do so. I found the JAVA API that does the download but is there any REST Api I can use in my python code. I tried with python module called rtcclient but it didn't work for me.
Thanks in advance.

Accepted answer

permanent link
Ian Barnard (1.8k613) | answered Sep 22 '21, 8:39 a.m.

Hi Yogesh

It is possible to download attachments although TBH I'm not sure if this is formally part of the "OSLC" API, but the steps below do require the header OSLC-Core-Version: 2.0 to work.


1. Using perhaps OSLC Query, retrieve the workitem URI e.g.

2. GET from that URI with headers OSLC-Core-Version: 2.0 and Accept: application/rdf+xml
In the returned RDF, for each attachment there is a property like:
    < rdf:ID="n6" rdf:resource=""/>

3. GET from URI in the tag using the same headers, this gives you the name of the attachment in a dcterms:title tag and a link to its content in a tag rtc_cm:content e.g.:

<?xml version="1.0" encoding="UTF-8"?>
    <dcterms:creator rdf:resource=""/>
    <rtc_cm:contentLength rdf:datatype="">1923</rtc_cm:contentLength>
    <rtc_cm:modifiedBy rdf:resource=""/>
    <dcterms:description rdf:parseType="Literal">buildexe.bat</dcterms:description>

4. GET from that rtc_cm:content URI using the OSLC-Core-Version: 2.0 header and with the Referer header set to the URI, and you'll get the (binary) content

5. Save to the file named from the dcterms:title name

All this can be done using Python; I use the Requests package using a requests session with ElementTree or lxml to handle XML and it works admirably :-)


Yogesh Ranjitkar selected this answer as the correct answer

Ralph Schoon commented Sep 22 '21, 9:13 a.m.

Nice. Thanks for looking into it. 

Yogesh Ranjitkar commented Sep 22 '21, 6:52 p.m.

Hi Ian Barnard,

Thanks for the reply. I have got this thing working and the process you mentioned was exactly what I did in my script as well. It works perfectly.. Thanks again.


3 other answers

permanent link
Ralph Schoon (62.7k33643) | answered Sep 16 '21, 3:11 a.m.
This question has been asked here several times and answered several times.

To my knowledge the answer is that there is no supported REST API to download work item attachments.

The Java API you found is supported. There is no other API. I know that others have reverse engineered the API used by the Web client. This is possible but not supported. It is also not a REST API as far as I know.

Yogesh Ranjitkar commented Sep 16 '21, 6:45 p.m. | edited Sep 16 '21, 6:49 p.m.

Hi Ralph,

Thanks for your response. So does that mean there is no python way to achieve it. Can I use OSLC approach in python. Not sure though if that helps

Ralph Schoon commented Sep 17 '21, 2:13 a.m. | edited Sep 17 '21, 8:40 a.m.

I am unsure what is left open in the answer, but ok.

I am not a Python hero, but I would assume you can call an application e.g. based on the RTC Plain Java Client Libraries in Python. So you could use the Java API and develop a tool like and use that. Then you would have a way to download attachments in Python, just not using OLSC.

Unrelated to the question, yes, it is possible to use OSLC APIS in Python (use the requests library). 

But as there is no OSLC support for downloading attachments, you can't solve that specific task you ask about with OSLC. Not in Python, not in any other language or tool that could be used to create REST/OSLC calls.  

permanent link
manh manhquynh (11) | answered Sep 28 '21, 3:03 a.m.

 I also need the same material as you. Hope everybody help please

permanent link
Michelle Xie (11) | answered Jun 07 '22, 2:17 p.m.

Ian Barnard  @Yogesh Ranjitkar

Nice that you got all details figured out and got it work in Python. Any chance you can share the Python code, or would be interested to add this function to rtcclient, (, another related OSS package? Thanks!

Ian Barnard commented Jun 08 '22, 3:10 a.m.

There's an example of downloading an attachment in my OSS package elmclient - see - the example code is here


Your answer

Register or to post your answer.