Confluence Structure vs StackOne Model
- Duality of Pages:
Confluence pages can behave as both folders and files. StackOne surfaces this by:
- Including all pages in both the
listFoldersandlistFilesendpoints - Adding metadata flags to indicate whether a page has content, children, or both
- Including all pages in both the
File Download
Confluence offers two endpoints for downloading files:GET exportword?pageId={.id}GET /wiki/rest/api/content/{id}?expand=body.export_view
- Word
- HTML
File Picker Flow
The Confluence File Picker is custom-built by StackOne to present a consistent folder-like interface.Navigation Flow
- Site Selection Users first select a site (Confluence instance), if multiple are connected.
- Space Listing StackOne loads all spaces (mapped to drives) within the site.
- Top-Level Pages
Once a space is selected, users see a tree of pages. Each page is:
- Clickable as a file (if it has content)
- Expandable as a folder (if it has children)
- Nested Pages Pages can be expanded recursively to reveal their nested children.
- Selection Options
Users can:
- Select a page as a file (if it contains content)
- Navigate through it as a folder (if it contains child pages)
StackOne Modeling Approach
API Usage
StackOne uses the CQL (Confluence Query Language) API to efficiently retrieve content and metadata.- Search Strategy:
- StackOne uses CQL queries to list content scoped to a space and parent page
- This allows accurate retrieval of both files and folders under any point in the hierarchy
- Handling Dual-Use Pages:
- A page may appear as both a file and a folder
- StackOne reflects this with flags and exposes both capabilities in the picker
File Semantics
- Pages without content or children are still shown but cannot be selected
- Pages with both content and children can be both selected and expanded
Permissions and authentication
- API Token with optional scopes
- Maximum 1-year expiry
- Full set of integration scopes:
write:confluence-contentread:confluence-space.summaryread:confluence-propswrite:confluence-propsread:confluence-content.allread:confluence-content.summarysearch:confluencereadonly:content.attachment:confluence