How do you insert a confluence macro into a page created by the Confluence Rest Api?

RickL picture RickL · May 12, 2015 · Viewed 8.2k times · Source

I've successfully used the Confluence Rest API to create a page and attach it to a Space. MY json looks much like that from the example:

{
"type":"page","title":"My Example Page 1", "space": {"key":"DAT"},
"body":{"storage":{"value":"<p>This is a new page</p>","representation":"storage"}}
}

If I create a page interactively in Confluence, I'm given a list of canned macros when I click the 'Edit' button like 'Attachments' or 'Activity Stream'.

What is the right json value to create a page with the Attachments Macro as the body instead of 'This is a new page'?

Something like below (which is totally made up):

{
"type":"page","title":"My Example Page 1", "space": {"key":"DAT"},
"body":{"storage":{"value":"**Attachments_Macro_Block**","representation":"storage"}}
}

What would I substitute for 'Attachments_Macro_Block' in the json to get the resultant page to display the macro block?

Answer

RickL picture RickL · May 12, 2015

As luck would have it, after I posted this question I stumbled on the answer. So for the benefit of others, here is what I found.

This page provided the missing pieces: Confluence Attachment Macro Help

My JSON looked like this:

{
"type":"page",
"ancestors":
    [
        {
            "type":"page",
            "id":12355342
        }
    ],
"title":"Page Title 1",
"space":
    {
        "key":"DAT"
    },
"body":
    {
        "storage":
            {
                "value":"<ac:structured-macro ac:name=\"attachments\">
                <ac:parameter ac:name=\"old\">false<\/ac:parameter> <ac:parameter ac:name=\"patterns\">*<\/ac:parameter> 
                <ac:parameter ac:name=\"sortBy\">name<\/ac:parameter> <ac:parameter ac:name=\"sortOrder\">ascending<\/ac:parameter> 
                <ac:parameter ac:name=\"labels\"><\/ac:parameter> <ac:parameter ac:name=\"upload\">false<\/ac:parameter> <\/ac:structured-macro>",
                "representation":"storage"
            }
    }
}