Trying to update an attachment via the REST API in Confluence cloud. The following code 'should' do the trick, but it doesn't. The result is always 'HTTP Status 403 - Request not in an authorized API scope'. The code is executed in the clients browser and not on the either server.
var formdata = new FormData(); var blob = new Blob([xml], { type: "text/xml"}); formdata.append(document.getElementById("modelname").value, xml); AP.request({ url: '/rest/api/latest/content/'+location.context.contentId+'/child/attachment', type: 'POST', contentType: 'multipart/form-data', data: {comment: 'Edited', minorEdit: false, file: formdata}, success: function(responseText){ console.info(responseText); }, error: function(xhr, statusText, errorThrownText) { console.error('Wrongsie!'+statusText); } });
My scopes as set in atlassian-connect.json
"scopes": [ "read", "write", "delete" ]
What am I doing wrong?
The REST API call was wrong - seems like there are different versions out there and mixing them up is not a good idea...
Documentation is here: https://docs.atlassian.com/confluence/REST/latest/
Dropping the "latest" part in the URL did the trick. Corrent call goes to: POST /rest/api/content/{id}/child/attachment/{attachmentId}/data
I have a question indirectly related to your answer. Whenever I have tried this call from the browser, it results in an XSRF check failed because the X-Atlassian-Token header is missing, and AP limits the headers you are allowed to set? Were you able to set the header or make the request through AP without it?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.