Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

How to use Confluence REST API to post HTML content?

Dirce Richards May 1, 2017 edited

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
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
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
Contributor
February 24, 2020

Having the same issue as Stan. Any solution? 

Akshay Modi
Contributor
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