Hi,
We are using confluence cloud instance,
we are trying to edit the existing confluence page using the page ID.I have attached the code below.
public static void main(String[] args) throws JSONException,
AuthenticationException, ClientHandlerException,
ClassNotFoundException, SQLException, ParseException, IOException {
String urlLink = "";
String auth = new String(Base64.encode(""));
String updatePage =
"{\n" +
"\"type\":\"page\",\n" +
"\"ancestors\":\n" +
" [\n" +
" {\n" +
" \"type\":\"page\",\n" +
" \"id\":1501003952\n" +
" }\n" +
" ],\n" +
"\"title\":\"Sprint Macro\",\n" +
"\"space\":\n" +
" {\n" +
" \"key\":\"LAS\"\n" +
" },\n" +
"\"body\":\n" +
" {\n" +
" \"storage\":\n" +
" {\n" +
" \"value\":\"<ac:structured-macro ac:name=\\\"attachments\\\">\n" +
" <ac:parameter ac:name=\\\"old\\\">false<\\/ac:parameter> <ac:parameter ac:name=\\\"patterns\\\">*<\\/ac:parameter> \n" +
" <ac:parameter ac:name=\\\"sortBy\\\">name<\\/ac:parameter> <ac:parameter ac:name=\\\"sortOrder\\\">ascending<\\/ac:parameter> \n" +
" <ac:parameter ac:name=\\\"labels\\\"><\\/ac:parameter> <ac:parameter ac:name=\\\"upload\\\">false<\\/ac:parameter> <\\/ac:structured-macro>\",\n" +
" \"representation\":\"storage\"\n" +
" }\n" +
" }\n" +
"}";
// rest/api/content/
// System.out.println(updatePage);
String Page = invokePostMethod(auth, urlLink ,updatePage);
}
private static String invokePostMethod(String auth, String url, String data)
throws AuthenticationException, ClientHandlerException {
Client client = Client.create();
WebResource webResource = client.resource(url);
ClientResponse response = webResource
.header("Authorization", "Basic " + auth)
.type("application/json").accept("application/json")
.post(ClientResponse.class, data);
System.out.println("Client Responce " + response);
int statusCode = response.getStatus();
System.out.println("Status Code " + statusCode);
if (statusCode == 401) {
throw new AuthenticationException("Invalid Username or Password");
}
return response.getEntity(String.class);
}
}
Please correct me if i missed anywhere in the code.
Thanks
Naveen
@Naveen Kumar D P Can you please elaborate on error you are getting?
When i run the above command i got the following error,
returned a response status of 500 Internal Server Error
Status Code 500
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Naveen Kumar D P Can you please validate if this curl works for you?
curl -u '<EMAIL>:<TOKEN>' -X PUT -H 'Content-Type: application/json' -d'{"id":"<PAGE_ID>","type":"page","title":"Sample Page","space":{"key":"<SPACE_KEY_OF_PAGE>"},"body":{"storage":{"value":"<p>This is the updated text for the new page</p>","representation":"storage"}},"version":{"number": <PAGE_VERSION_PLUS_ONE>}}' https://<SITE_NAME>.atlassian.net/wiki/rest/api/content/<PAGE_ID>
Few things you can notice here are,
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you very much @DPKJ it was working ,
I am able to update the message to the page.
But i am not able to add the JIRA Macro to this page using this curl command.
curl -u '<EMAIL >: <Tokens> -X PUT -H 'Content-Type: application/json' -d'{"id":"1501003952","type":"page","title":"Sprint Macro","space":{"key":"LAS"},"body":{"storage":{"value":"<p /><ac:structured-macro ac:name="jira" ac:schema-version="1" data-layout="full-width" ac:macro-id="fab6f027-6261-4a0c-a326-e38efd4a27a2"><ac:parameter ac:name="server">System JIRA</ac:parameter><ac:parameter ac:name="maximumIssues">20</ac:parameter><ac:parameter ac:name="columns">key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution</ac:parameter><ac:parameter ac:name="jqlQuery">sprint = "2019.11.s2" and status in(Done,Close) and project = "Last Mile" </ac:parameter><ac:parameter ac:name="serverId">***-**-***-***</ac:parameter></ac:structured-macro>
<p />","representation":"storage"}},"version":{"number": "3"}}' https://***/rest/api/content/1501003952
When i tried the above command i got this error.
{"statusCode":500,"message":"org.codehaus.jackson.JsonParseException: Unexpected character ('j' (code 106)): was expecting comma to separate OBJECT entries\n at [Source: com.atlassian.plugins.rest.common.limitrequest.jersey.LimitingRequestFilter$1@7f0896c5; line: 1, column: 143]"}%
Could you please help me on this.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@Naveen Kumar D P I was able to add history macro to page this way, you can replace this with other kind of macro.
curl --request PUT \
--url 'https://<SITE>.atlassian.net/wiki/rest/api/content/<PAGE_ID>' \
--user '<EMAIL>:<TOKEN>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"id":"<PAGE_ID>",
"type":"page",
"title":"Sample Page",
"space":{"key":"<PAGE_SPACE_KEY>"},
"body":{
"storage":{
"value":"<p>This is the updated text for the new page</p><ac:structured-macro ac:name=\"change-history\" ac:schema-version=\"1\" ac:macro-id=\"360a0d80-082e-4c82-9ee5-0aac5b72f828\" />",
"representation":"storage"
}
},
"version":{"number":<NEXT_VERSION_NUMBER>}
}'
Check if this works.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
@DPKJ Thanks for your help,
I am new to the curl.
In the macro name i used the JIRA name but i am not able to succeed .
curl --request PUT \
--url '***' \
--user '<<:>>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"id":"1501003952",
"type":"page",
"title":"Sprint Macro",
"space":{"key":"LAS"},
"body":{
"storage":{
"value":"<p>This is the updated text for the new page</p><ac:structured-macro ac:name=\"jira\" ac:schema-version=\"1\" ac:macro-id=\"fab6f027-6261-4a0c-a326-e38efd4a27a2\">
<ac:parameter ac:name="columns">key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution</ac:parameter>
<ac:parameter ac:name="jqlQuery">sprint = "2019.11.s2" and status in(Done,Close) and project = "Last Mile"
</ac:parameter><ac:parameter ac:name="serverId">3f701a8d-470a-3309-8926-3b7be06fa653</ac:parameter></ac:structured-macro>",
"representation":"storage"
}
},
"version":{"number":3}
}'
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Let me give it a trial.
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.
@Naveen Kumar D P Below worked for me while using Jira Issue Macro,
curl --request PUT \
--url 'https://<SITE>.atlassian.net/wiki/rest/api/content/<PAGE_ID>' \
--user '<EMAIL>:<TOKEN>' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--data '{
"id":"<PAGE_ID>",
"type":"page",
"title":"Sample Page",
"space":{"key":"<PAGE_SPACE>"},
"body":{
"storage":{
"value":"<p>This is the updated text for the new page</p><ac:structured-macro ac:name=\"jira\" ac:schema-version=\"1\" ac:macro-id=\"85529c8c-75ad-4bf1-8bc3-da4e55f6d9d7\"><ac:parameter ac:name=\"columns\">key,summary,type</ac:parameter><ac:parameter ac:name=\"jqlQuery\">project=SP</ac:parameter><ac:parameter ac:name=\"server\">System JIRA</ac:parameter><ac:parameter ac:name=\"serverId\">e70747f5-eb31-3622-acda-6395ba8705ce</ac:parameter></ac:structured-macro>",
"representation":"storage"
}
},
"version":{"number":13}
}'
I think only difference is that I have escaped value of parameters in macro, you will be easily able to compare this.
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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.