Confluence
Let hires search and read your Confluence pages, write new ones, keep existing ones up to date and comment, on Confluence Cloud or your own Data Center.
Explore 6 actions and their permissionsExact inputs, sign-in scopes, access limits and approval rules.
With Confluence, a hire can:
- list your spaces and search pages and blog posts by the words in them,
- read a page as plain text, with its latest comments,
- write a new page in a space, under a parent page if you like,
- add to a page (new paragraphs at the end, leaving its tables and macros as they are), or replace its text and rename it when asked,
- comment at the bottom of a page.
Your runbooks, specs, postmortems and help articles become something hires answer from, and
keep up to date. It works on Confluence Cloud (atlassian.net) and on Confluence Data Center
or Server that you run yourself.
Using Jira Service Management?
Service desk requests are Jira issues, so the Jira integration already lets hires find, read, comment on and move them. Connect Confluence for the knowledge base behind them.
1. Choose how Roster signs in
Confluence signs in the same three ways as Jira:
- Confluence Cloud: email and API token. Open
your Atlassian API tokens (the
form in Roster links there too) as the account hires should act as, click Create API
token, name it
Rosterand copy it. - Confluence Cloud: an OAuth app of yours. At
developer.atlassian.com/console/myapps,
create an OAuth 2.0 integration, add the Confluence API with
read:page:confluence,write:page:confluence,read:space:confluence,read:comment:confluence,write:comment:confluenceandsearch:confluence, and set the callback URL to the address Roster shows on the connection (it ends in/api/integrations/confluence/oauth/callback). - Confluence Data Center or Server: personal access token. In Confluence, click your avatar → Settings → Personal Access Tokens → Create token.
What hires write shows as the account the token or app belongs to, so you may want an account just for Roster, with access to the spaces hires work in.
2. Connect it in Roster
- Open Integrations → Tools → Add a tool, search for Confluence and choose it.
- How Roster signs in: pick the way you chose above. Only its fields are shown.
- Paste the email and API token, the personal access token, or the OAuth app's client ID and secret.
- Confluence address: like
https://acme.atlassian.net(with or without/wiki), or your own server's address, likehttps://wiki.example.com/confluence. - Click Connect. With an API token or a personal access token, Roster asks Confluence who it belongs to, and the connection shows Connected as that account and your site. If Confluence refuses it, Roster says so and saves nothing. With an OAuth app, then click Connect with Confluence and accept.
3. Give hires access
On the hire's Tools tab, click Give access on Confluence:
- Read only: it can list spaces, search and read pages, and nothing else.
- Read and write: it can also write pages, add to or rewrite them, and comment.
- Spaces: space keys like
ENGorSUPPORT. Leave it empty for every space the account can reach. Anything outside the list is refused, searches included, and a new page can only go under a parent in the same space.
Hires refer to pages by their id, the number in the page's address. Every change a hire makes is a new version of the page, so Confluence's page history shows it and can undo it.
Watching for changes
A hire's responsibility can watch Confluence: when pages in its spaces change, the hire is woken with the list. Checking is one search and costs nothing when nothing changed.
If something goes wrong
- "Didn't accept the connection's credential": the token was revoked or expired, or the email doesn't match the token's account.
- "Says that conflicts" when updating: someone saved the page at the same moment. Ask the hire to try again; it reads the latest version first.
- Search finds nothing new: Confluence indexes changes within a minute or so.
Tools and permissions reference
This reference is built from the same definitions Roster uses to connect Confluence and give hires access. It updates with each release.
Authentication and requested permissions
The account or app you connect sets the outer limit. Each hire's access can narrow it further. Connecting a tool gives it to no hire until you give access on that hire's Tools tab.
User name and password or key pair
The email of the Atlassian account hires act as. Make the token at id.atlassian.com → Security → API tokens.
For: How Roster signs in: Confluence Cloud: email and API token.
API key or access token
In Confluence: your avatar → Profile → Personal Access Tokens → Create token.
For: How Roster signs in: Confluence Data Center or Server: personal access token.
OAuth 2.0
From the OAuth 2.0 (3LO) app you made at developer.atlassian.com.
For: How Roster signs in: Confluence Cloud: an OAuth app of yours.
Requested scopes:
read:page:confluencewrite:page:confluenceread:space:confluenceread:comment:confluencewrite:comment:confluencesearch:confluenceoffline_access
Connection fields
| Field | What to provide |
|---|---|
How Roster signs insignInOptional | Confluence Cloud (atlassian.net) with an API token is quickest. Data Center and Server use a personal access token. Choices: Confluence Cloud: email and API token (cloud-token); Confluence Cloud: an OAuth app of yours (cloud-oauth); Confluence Data Center or Server: personal access token (datacenter). Starts with: |
Atlassian account emailemailRequired | The email of the Atlassian account hires act as. Make the token at id.atlassian.com → Security → API tokens. Shown when |
API tokenapiTokenRequired · sealed secret | Use the value for your account or connection. Shown when |
Personal access tokenpersonalTokenRequired · sealed secret | In Confluence: your avatar → Profile → Personal Access Tokens → Create token. Shown when |
OAuth app client IDclientIdOptional | From the OAuth 2.0 (3LO) app you made at developer.atlassian.com. Shown when |
OAuth app client secretclientSecretOptional · sealed secret | Use the value for your account or connection. Shown when |
Confluence addressurlRequired | The address you open Confluence at: https://acme.atlassian.net for Cloud, or your own server's address (with any path, like /jira). |
Per-hire limits
Read-only hires receive only actions that read. Read-and-write access also allows actions that change things, where the connection itself permits them. An empty resource allowlist usually means everything the connected account can reach; each field below explains its meaning.
| Field | What to provide |
|---|---|
SpacesspacesOptional | Space keys like ENG or SUPPORT, one per line. Leave empty for every space the account can reach. |
Actions
6 actions: 3 only read and 3 change something. A read action may still need approval when your workspace or hire is set to ask. A locked approval requirement always applies.
6 of 6 actions. Open an action for its arguments and full input schema.
list_spacesRead only
The Confluence spaces this hire can use, with their keys.
Approval: Uses your workspace and hire approval settings.
This action takes no arguments.
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
}searchRead only
Find pages and blog posts by words in their title or text, most recently changed first.
Approval: Uses your workspace and hire approval settings.
| Argument | Type | Details |
|---|---|---|
textRequired | string | words to look for |
spaceOptional | string | space key, e.g. ENG |
limitOptional | integer | See input schema below.Default: 15 |
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"text": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "words to look for"
},
"space": {
"type": "string",
"pattern": "^~?[A-Za-z0-9][A-Za-z0-9:_-]{0,254}$",
"description": "space key, e.g. ENG"
},
"limit": {
"default": 15,
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"required": [
"text"
]
}get_pageRead only
A page's text (tables and macros as plain text) and its latest comments.
Approval: Uses your workspace and hire approval settings.
| Argument | Type | Details |
|---|---|---|
idRequired | string | the page's id, the number in its address |
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,20}$",
"description": "the page's id, the number in its address"
}
},
"required": [
"id"
]
}create_pageRead and write
Write a new page in a space, optionally under a parent page.
Approval: Uses your workspace and hire approval settings.
| Argument | Type | Details |
|---|---|---|
spaceRequired | string | space key, e.g. ENG |
titleRequired | string | See input schema below. |
bodyRequired | string | plain text; blank lines start new paragraphs |
parentOptional | string | the parent page's id; it must be in the same space |
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"space": {
"type": "string",
"pattern": "^~?[A-Za-z0-9][A-Za-z0-9:_-]{0,254}$",
"description": "space key, e.g. ENG"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"body": {
"type": "string",
"minLength": 1,
"description": "plain text; blank lines start new paragraphs"
},
"parent": {
"description": "the parent page's id; it must be in the same space",
"type": "string",
"pattern": "^\\d{1,20}$"
}
},
"required": [
"space",
"title",
"body"
]
}update_pageRead and write
Add to a page (the default: new paragraphs at the end, keeping its tables and macros) or replace its whole text, and optionally rename it.
Approval: Uses your workspace and hire approval settings.
| Argument | Type | Details |
|---|---|---|
idRequired | string | the page's id, the number in its address |
bodyOptional | string | plain text to add, or the whole new text with mode replace |
modeOptional | "append" | "replace" | See input schema below.Default: "append" |
titleOptional | string | See input schema below. |
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,20}$",
"description": "the page's id, the number in its address"
},
"body": {
"description": "plain text to add, or the whole new text with mode replace",
"type": "string"
},
"mode": {
"default": "append",
"type": "string",
"enum": [
"append",
"replace"
]
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 255
}
},
"required": [
"id"
]
}commentRead and write
Comment at the bottom of a page.
Approval: Uses your workspace and hire approval settings.
| Argument | Type | Details |
|---|---|---|
idRequired | string | the page's id, the number in its address |
bodyRequired | string | plain text |
Full input schema (JSON)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^\\d{1,20}$",
"description": "the page's id, the number in its address"
},
"body": {
"type": "string",
"minLength": 1,
"description": "plain text"
}
},
"required": [
"id",
"body"
]
}Watches and incoming events
- This integration supports a responsibility that watches for changes. The guide above explains what it checks and how to limit it.
- No incoming webhook handler is declared for this integration.
Limits and troubleshooting
- Permission errors: check both the connected account's rights and the hire's resource and read/write limits.
- Expired or revoked access: reconnect or replace the key on the connection.
- Rate limits and unavailable services can interrupt work. The hire's timecard records the outcome.
- The action schema describes accepted inputs. It does not grant additional access or bypass approvals.