This Confluence Cloud macro fetches all content properties from the current page or a user-defined page ID using the REST API v2 properties endpoint with automatic pagination through _links.next. It stores every returned property, formats the property creation date into a readable lozenge using DateUtils, fetches author details by accountId to display avatar and name, and renders everything inside an AUI sortable table with numeration, property key, raw JSON value, created date, and author information.
## Resolve page ID
#set($targetPageId = $page.id)
#if($parameters.pageID && $parameters.pageID != "")
#set($targetPageId = $parameters.pageID)
#end
#set ($baseUrl = $StringUtils.replace($baseUrl,"/wiki",""))
## Set storage
#set($allProps = [])
#set($propEndpoint = "/wiki/api/v2/pages/${targetPageId}/properties?limit=250")
#set($continueProps = true)
## Collect all properties with pagination
#foreach($x in [1..50])
#if($continueProps)
#set($propResp = $ConfluenceManager.get($propEndpoint))
#if($propResp.results)
#foreach($pr in $propResp.results)
#set($discard = $allProps.add($pr))
#end
#end
#if($propResp._links && $propResp._links.next && $propResp._links.next != "")
#set($propEndpoint = $propResp._links.next)
#else
#set($continueProps = false)
#end
#end
#end
## Handle empty state
#if($allProps.size() == 0)
<div>No content properties found for this page.</div>
#stop
#end
#set($apiDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
## Render sortable table
<table class="aui aui-table-sortable" style="width: 100%;">
<thead>
<tr>
<th style="width: 5%;">#</th>
<th style="width: 20%;">Property Key</th>
<th style="width: 45%;">Property Value</th>
<th style="width: 15%;">Date Created</th>
<th style="width: 15%;">Author</th>
</tr>
</thead>
<tbody>
#set($rowNum = 1)
#foreach($prop in $allProps)
## Parse property metadata
#set($propKey = $prop.key)
#set($propValue = $prop.value)
#set($createdAtRaw = $prop.version.createdAt)
#set($authorId = $prop.version.authorId)
## Format date
#set($createdDate = $DateUtils.parseDate($createdAtRaw, $apiDateFormat))
## Fetch author info
#set($author = $ConfluenceManager.get("/wiki/rest/api/user?accountId=${authorId}"))
<tr>
<td>$rowNum</td>
<td>
<code>$propKey</code>
</td>
<td style="word-break: break-word;">
<pre style="white-space: pre-wrap; margin: 0;">$propValue</pre>
</td>
<td>
<span class="aui-lozenge aui-lozenge-subtle">
$createdDate
</span>
</td>
<td>
<span class="aui-avatar aui-avatar-small">
<span class="aui-avatar-inner">
<img src="$baseUrl$author.profilePicture.path" alt="$author.displayName"/>
</span>
</span>
<span style="margin-left: 6px;">$author.displayName</span>
</td>
</tr>
#set($rowNum = $rowNum + 1)
#end
</tbody>
</table>Allow users to retrieve all pages from the current space despite the 250-page limit per request
Display an overview of all pages in a space, including title, version, and last updated date
Display Confluence page edit and view restrictions to provide essential permission details, including users, groups, and inherited access
Insert a page break in documents generated from a Confluence page
Show an expandable page tree for a selected parent page, defaulting to the current page
Read and display the fixed version of Confluence pages by checking page or ancestor labels
Find images within page attachments. Handy for reusing files and updating them all at once.
Display a custom list of recently updated content
Display space details such as type, status, creation date, and links to permissions and calendars
Based on CQL, show a table with the following columns: Page Title, Author, Updated, and Status