Content
"Add attachment to work package" API Endpoint - difficulties
Added by R B almost 3 years ago
https://www.openproject.org/docs/api/endpoints/attachments/
"/api/v3/work_packages/{id}/attachmentsTo add an attachment to a work package, a client needs to issue a request of type
multipart/form-datawith exactly two parts.The first part must be called
metadata. Its content type is expected to beapplication/json, the body must be a single JSON object, containing at least thefileNameand optionally the attachmentsdescription.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 afilenamemust be indicated in theContent-Dispositionof this part, however it will be ignored. Instead thefileNameinside 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":
https://***/api/v3/work_packages/23921/attachments
"form-data" checked.
The below key value pairs:
Key: Value:
metadata {"fileName":"test.png"}
file file.png
I would very much appreciate anyone's time in pointing me in the right direction.
My eventual plan is to implement in Axios, but with a workable mock, I assume I can resolve this...
Replies (5)
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:
R B wrote:
any one have solution in nodejs?
Hello:
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.
ps. I also tried Markus Kahl's suggestion above (CURL) but that doesn't work either. Perhaps the script he refers to (https://www.openproject.org/docs/enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq/op-file-upload.sh) should be updated as well.
Actually, I was able to make it work using Curl just by leaving out the header:
curl "https:myOpenProject/api/v3/work_packages/168/attachments" -u "xxxxx" -F 'metadata = {"fileName" : "foo.txt"}' -F 'file=@foo.txt'