How to use Confluence REST API to post HTML content?

Dirce Richards May 1, 2017

I have done a lot of reading both here and in Stackoverflow. I still cannot make this work, and I am wondering if it is possible. I am using this example:

https://community.atlassian.com/t5/Answers-Developer-Questions/How-to-update-a-page-with-Python-using-REST-API/qaq-p/480627

For some reason I can't reply on that page, so I am writing a new question here.

If I use the field:

'body': {
'storage':
{
'representation': 'storage',
'value': str(content)
}
}

where the content is:

<table><tbody><tr><th>H1</th><th>H2</th></tr><tr><td>column1</td><td>column2</td></tr></tbody></table>

This posts the string in content, i.e., it doesn't get formatted as a table - actually it adds a space between the tag elements.

Am I missing something, such as the 'html/body' elements in the string that I send in the storage/data field? I also tried adding these, and still it posts the actual string.

Thanks,

Dirce

PS: I also tried this simple html string: <!DOCTYPE html> <html> <head> <title>Page Title</title> </head> <body> <h1>My First Heading</h1> <p>My first paragraph.</p> </body> </html>

and that also posts the string itself. So my problem is not about the table, but in figuring out what am I doing wrong in posting HTML so that Confluence will interpret it.

 

1 answer

0 votes
Thomas Jüstel May 4, 2017

Hi , I'm Thomas (beginner)

I work on the same challenge. Dont get the "REST API" example running. Is there a step by step tutorial.

Another interface might be "html-migration" - macro. I activated it but I can not see it in the macro-browser. Same request: is there a step by step tutorial.

Dirce Richards May 5, 2017

I got it to work. In my code, where I show 'value': str(content)
I was making the mistake where I had encoded the content, as you would to for an http encoding. In this case, once I put in the actual string (beginning with<table> ), it worked. 

Like leo pineau likes this
Stan Ry
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
November 27, 2019

Hi Dirce, how did you manage to post the str with HTML content?

If I don't escape special HTML characters like "<" and ">" to "&lt;" and "&gt;", I get HTTP error 400 when posting HTML string to Confluence:

HTTPError: 400 Client Error: for url: https://example.net/instance_name/rest/api/content/12343567890

However, if I escape HTML, I get the HTML string posted to Confluence page as-is. For example, I get links displayed as HTML code, like <a href="some_url">Some text</a>. How did you manage to get this code to post HTML?

Thank you.

Like Zachary Hayes likes this
Zachary Hayes February 24, 2020

Having the same issue as Stan. Any solution? 

Akshay Modi November 24, 2021

Hi All,

Even I am facing the same issue to post HTML table content to confluence page. It was working fine before. 

I am using lambda function where I am using requests module to post .

```

r = requests.post(url=url, data=json.dumps(data), headers=headers)

```

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events