Updating attachment in Confluence cloud will lead to 403

Clemens Jütte May 16, 2017

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?

1 answer

0 votes
ClemensJ May 22, 2017

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

Jan Revis November 5, 2017

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?

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events