To add an attachment to a work package, a client needs to issue a request of type
multipart/form-data
with exactly two parts.
The first part
must
be called
metadata
. Its content type is expected to be
application/json
, the body
must
be a single JSON object, containing at least the
fileName
and optionally the attachments
description
.
The second part
must
be called
file
, its content type
should
match the mime type of the file. The body
must
be the raw content of the file. Note that a
filename
must be indicated in the
Content-Disposition
of this part, however it will be ignored. Instead the
fileName
inside the JSON of the metadata part will be used."
I have tried coding a solution to this, I've tried a mock in Postman.
Possibly this is a language barrier, however, I nonetheless remain at a loss on how to upload a file and attach it to a workpackage via the API.
In postman, the response I get is simply a "400 bad request":
fromrequests_toolbelt.multipart.encoderimportMultipartEncoderimportrequestsimportjson# data
filename="test.xlsx"filepath="/download/test.xlsx"content_type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"multipart_encoder=MultipartEncoder(fields={'metadata':json.dumps({"fileName":filename}),'file':(filename,open(filepath,'rb').read(),content_type)upload_files_url="https://xxx/api/v3/work_packages/{id}/attachments"# header
encoded_api_key="xxxx"file_headers={'Authorization':f'Basic {encoded_api_key}'file_headers['Content-Type']=multipart_encoder.content_type# request
response=requests.post(upload_files_url,headers=file_headers,data=multipart_encoder)RE: "Add attachment to work package" API Endpoint - difficulties
Added by Markus Kahlalmost 2 years ago
This may come a little bit late, but there is a fairly straight-forward way to do this using bash. We link to a script for this in our docs.
But here is the essence of it:
To add an attachment to a work package, a client needs to issue a request of type multipart/form-data with exactly two parts.
The first part must be called metadata. Its content type is expected to be application/json, the body must be a single JSON object, containing at least the fileName and optionally the attachments description.
The second part must be called file, its content type should match the mime type of the file. The body must be the raw content of the file. Note that a filename must be indicated in the Content-Disposition of this part, however it will be ignored. Instead the fileName inside the JSON of the metadata part will be used."
I have tried coding a solution to this, I've tried a mock in Postman.
Possibly this is a language barrier, however, I nonetheless remain at a loss on how to upload a file and attach it to a workpackage via the API.
In postman, the response I get is simply a "400 bad request":
I have been struggling with this as well. The API call seems to succeed but doesn't actually upload my file as an attachment; instead, it returns the count of current attachments in the work package. I would appreciate any help or pointers on this issue.