I can create a page in a space using the confluence api and ajax/jquery but I can't specify for it to be created at a particular part of the page tree structure. For instance, the code below will error off even though EXPERTISE/Personal+Pages is part of my Page Tree structure. The code will successfully create a page if I change the bold part to just the name of the space which is EXPERTISE, however I'd like to create the page in EXPERTISE/Personal+Pages. I've been over the documentation at this link but haven't found a clear answer https://developer.atlassian.com/server/confluence/page-tree-api-documentation/.
// Create a Personal Page var new_personalpage_data = { type: "page", title: user_name_first + "+" + user_name_last, space: { key: "EXPERTISE/Personal+Pages" }, body: { storage: { value: "<p>This is a new page</p>", representation: "storage" } } }; $.ajax({ type:"POST", url: "https://wiki.company.net/rest/api/content/", data: JSON.stringify(new_personalpage_data), contentType: "application/json; charset=utf-8", success: function () {alert('Personal Page Created!');}, error: function() {alert('Unable to Create a Personal Page for you');} }) }
Hi Daniel,
I believe the problem you're experiencing is you're supplying a path to your desired page in key: { space:{ "EXPERTISE/Personal+pages"}} when the API only accepts a space key as the input.
In order to create a page as a descendant of another page, you need to supply the id of the parent page. Please see
https://developer.atlassian.com/server/confluence/confluence-rest-api-examples/#finding-content
Under the heading 'Create a new page as a child of another page'.
e.g.
// Create a Personal Page var new_personalpage_data = { type: "page", title: user_name_first + "+" + user_name_last,
"ancestors":[{"id":"page-id"}], space: { key: "EXPERTISE" }, body: { storage: { value: "<p>This is a new page</p>", representation: "storage" } } }; $.ajax({ type:"POST", url: "https://wiki.company.net/rest/api/content/", data: JSON.stringify(new_personalpage_data), contentType: "application/json; charset=utf-8", success: function () {alert('Personal Page Created!');}, error: function() {alert('Unable to Create a Personal Page for you');} });
In order to get the ID of a page that you know the title and space key of, you can query the API described here:
https://developer.atlassian.com/server/confluence/confluence-rest-api-examples/
under the heading 'Find a page by title and space key'
e.g.
curl -u admin:admin -X GET "http://localhost:8080/confluence/rest/api/content?title=myPage%20Title &spaceKey=TST&expand=history" | python -mjson.tool
I hope this helps with your question.
Cheers
Thanks a lot. I'm a little confused about syntax with quotes though. The page id wasn't hard to find but I'm getting a bad request error with the syntaxes
var new_personalpage_data = {
title: user_name_first + "+" + user_name_last,
ancestors:[{"id":9030060}],
Sometimes it seems like using quotes around keys is necessary and sometimes not. Does that look right to you?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
can I use the same code in the HTML Macro and trigger it by button?
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.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.