GregWringle
GregWringle

Reputation: 475

Update a page in Confluence using REST API

This is what I've currently got and it creates a new Confluence page. It doesn't update it. Also it posts it in the root space, TST, but I want it to be in TST/space1/subsection2/updateThisPage.

curl -v -u admin:admin -X POST -H Content-Type: application/json -d  "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage

This is the error message I get

{"statusCode":400,"message":"A page with this title already exists: A page already exists with the title new page in the space with key TST"}

Would it be a permissions error? I know I do not have access to delete.

Upvotes: 10

Views: 16701

Answers (3)

ThePavolC
ThePavolC

Reputation: 1738

Use request path PUT /rest/api/content/{id}.

This worked for me.

curl -u admin:admin -X PUT -H "Content-Type: application/json" -d "{\"id\":\"26738701\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"RO\"},\"body\":{\"storage\":{\"value\":\"<p>UPDATE This is a new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":2}}" http://localost:10080/rest/api/content/26738701

JSON Payload:

{  
   "id":"26738701",
   "type":"page",
   "title":"new page",
   "space":{  
      "key":"RO"
   },
   "body":{  
      "storage":{  
         "value":"<p>UPDATE This is a new page</p>",
         "representation":"storage"
      }
   },
   "version":{  
      "number":2
   }
}

Don't forget to use:

  • content ID in the data part
  • version number in data part
  • PUT request
  • content ID in the request

Upvotes: 13

Katya Pavlenko
Katya Pavlenko

Reputation: 3383

If anyone is looking for javascript solution, here is my answer to another question like that Unexpected grunt-http error when posting to Atlassian Confluence api

And here you can find working code i've developed on confluence hackathon https://github.com/devex-web-frontend/dxWebPlugins/blob/master/src/confluence/helpers/buffer.js

Upvotes: 0

ThePavolC
ThePavolC

Reputation: 1738

Try to use PUT instead of POST.

curl -v -u admin:admin -X PUT -H Content-Type: application/json -d  "{\"id\":\"123456\",\"type\":\"page\",\"title\":\"new page\",\"space\":{\"key\":\"TST\",\"title\":\"updateThisPage\"},\"body\":{\"storage\":{\"value\":\"<p>This is the updated text for the new page</p>\",\"representation\":\"storage\"}},\"version\":{\"number\":3}}" http://localhost:8090/rest/api/content?spaceKey=TST&title=updateThisPage

Upvotes: 0

Related Questions