Web Request: GET Get Page into PUT Update Page is not working with regards to storage value
Asked by Anthony Nguyen:

I am working with Automation and web request action. The first step is below:

GET https://{site}/wiki/api/v2/pages?spaceid={spaceid}\&title={title}\&body-format=storage

I then store {{webResponse.body.results.body.storage.value}} in variable {{content}} and log it.

Next, I use below:

PUT https://{site}/wiki/api/v2/pages/{pageid}

```
{ 

"id": "{{webResponse.body.results.id}}", 

"status": "current", 

"title": "{{webResponse.body.results.title}}", 

"body": { "representation": "storage", "value": "{{content}}" }, 

"version": { "number": {{#increment}}{{webResponse.body.results.version.number}}{{/}}, "message": "" }

}
```

There appears to be a problem with me passing back in {{content}}. Unfortunately, while this works if the page is super simple (just text), anything more complicated like elements or pictures causes the below:

Error publishing web request. Response HTTP status:  
400  
Error response HTTP body:  
{"errors":\[{"status":400,"code":"INVALID_MESSAGE","title":"Invalid message","detail":null}\]}  

*** ** * ** ***

The main idea is that I can change the title and append more information to the page, i.e. {{content}} {{issue.summary}}. However, I cannot get this first part to function correctly. I am basing this process on the details provided here:

<https://community.atlassian.com/t5/Automation-articles/Jira-Automation-Updating-a-Confluence-page-with-information-from/ba-p/2660113>

*** ** * ** ***

UPDATE: I believe I found one of the problems! If the {{content}} contains any " without escaping them first, it just won't work. So to fix, I need to figure out a way to do a regex replacement.

*** ** * ** ***

UPDATE2: Use replace("\\"", "\\\\\\"") to fix the issue. Everything's working now, I could almost cry!


Answers:
author: Anthony Nguyen
body: If {{content}} contains any " without escaping them first, it won't work. Use replace("\\"", "\\\\\\"") to fix the issue.


author: Shawn Doyle - ReleaseTEAM
body: body-format=storage is XML. I would guess this isn't formatted correctly, and it is expecting a string and not XML.

```
"body": { "representation": "storage", "value": 
```

If I have time later today I will attempt to reproduce what you are attempting, and see if I can help.

comments: author: Anthony Nguyen
body: Thank you! I was pulling my hair out because this process seemed to work for everyone else. That's the thing though, even in the linked example, they passed it right back in without issue.


author: Anthony Nguyen
body: I've updated my question, but it has to do with unescaped " in {{content}}. I need to set up regex replacement so that " are instead \\".


author: Shawn Doyle - ReleaseTEAM
body: There are several regex generators on line, google and bookmark your favorite.

Or ask your favorite AI tool.


author: Anthony Nguyen
body: Is there anyway to do it in Automation? I tried {{content.replace(""","\\"")}} but that didn't work.


author: Shawn Doyle - ReleaseTEAM
body: [replace(String target, String replacement)](https://support.atlassian.com/cloud-automation/docs/jira-smart-values-text-fields/#replace-String-target--String-replacement-)

[replaceAll(String regex, String replacement)](https://support.atlassian.com/cloud-automation/docs/jira-smart-values-text-fields/#replaceAll-String-regex--String-replacement-)


author: Anthony Nguyen
body: Ok, it's replace("\\"", "\\\\\\"") for posterity's sake.


Tags: cloud

confluence-cloud