← Back to Skills Marketplace
jeffersonling1217-png

Publish Confluence

by AlienTree · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ✓ Security Clean
88
Downloads
0
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install confluence-atlassian
Description
Full-featured Confluence Cloud REST API v2 skill. Manage pages, spaces, blogposts, attachments, comments, labels, and more via direct Atlassian API calls. Us...
README (SKILL.md)

\r \r

Confluence REST API v2 Skill\r

\r Interact with Atlassian Confluence Cloud using the REST API v2. This skill enables reading, creating, updating, and deleting Confluence content including pages, blog posts, attachments, comments, spaces, labels, and more.\r \r

Authentication\r

\r

Basic Auth (Email + API Token)\r

\r Required Environment Variables:\r

[email protected]\r
CONFLUENCE_API_TOKEN=your_api_token\r
CONFLUENCE_DOMAIN=your_domain  # e.g. "yourcompany" for yourcompany.atlassian.net\r
```\r
\r
### Base URL\r
```\r
https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2\r
```\r
\r
### Generate API Token\r
1. Go to https://id.atlassian.com/manage-profile/security/api-tokens\r
2. Click "Create API token"\r
3. Label it (e.g., "nanobot")\r
4. Copy the token\r
\r
### curl Authentication\r
```bash\r
--user "$CONFLUENCE_EMAIL:$CONFLUENCE_API_TOKEN"\r
```\r
\r
**curl Authentication Header:**\r
```bash\r
-H "Authorization: Basic $(echo -n '$CONFLUENCE_EMAIL:$CONFLUENCE_API_TOKEN' | base64)"\r
```\r
\r
### Generate Base64 Auth String\r
```bash\r
# Linux/Mac\r
echo -n "$CONFLUENCE_EMAIL:$CONFLUENCE_API_TOKEN" | base64\r
\r
# Windows PowerShell\r
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("$CONFLUENCE_EMAIL:$CONFLUENCE_API_TOKEN"))\r
```\r
\r
## Rate Limiting\r
\r
- If you encounter HTTP 429 (Too Many Requests), wait 5-10 seconds and retry automatically\r
- Maximum 3 retries with exponential backoff\r
\r
## Common Headers\r
```bash\r
-H "Accept: application/json"\r
-H "Content-Type: application/json"\r
-H "Authorization: Basic \x3Cbase64_encoded_auth>"\r
```\r
\r
---\r
\r
## API Endpoints Reference\r
\r
Total: **100+ API Endpoints** across 29 API Groups\r
\r
---\r
\r
### 1. Admin Key (3 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/admin-key` | Get Admin Key status |\r
| POST | `/admin-key` | Enable Admin Key |\r
| DELETE | `/admin-key` | Disable Admin Key |\r
\r
**Get Admin Key:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/admin-key" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Enable Admin Key (10 min default):**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/admin-key" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{"durationInMinutes": 10}'\r
```\r
\r
---\r
\r
### 2. Attachment (8 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/attachments` | Get all attachments |\r
| GET | `/attachments/{id}` | Get attachment by ID |\r
| DELETE | `/attachments/{id}` | Delete attachment |\r
| GET | `/attachments/{id}/labels` | Get labels for attachment |\r
| GET | `/attachments/{id}/operations` | Get permitted operations |\r
| GET | `/attachments/{id}/versions` | Get attachment versions |\r
| GET | `/attachments/{id}/versions/{version-number}` | Get version details |\r
| GET | `/attachments/{id}/footer-comments` | Get attachment comments |\r
\r
**Get All Attachments:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/attachments?limit=25" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Get Attachment by ID:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/attachments/att123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Delete Attachment (move to trash):**\r
```bash\r
curl -X DELETE "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/attachments/att123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Purge (permanently delete) trashed attachment:**\r
```bash\r
curl -X DELETE "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/attachments/att123456?purge=true" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
---\r
\r
### 3. Blog Post (15 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/blogposts` | Get all blog posts |\r
| POST | `/blogposts` | Create blog post |\r
| GET | `/blogposts/{id}` | Get blog post by ID |\r
| PUT | `/blogposts/{id}` | Update blog post |\r
| DELETE | `/blogposts/{id}` | Delete blog post |\r
| GET | `/blogposts/{id}/attachments` | Get attachments |\r
| GET | `/blogposts/{id}/custom-content` | Get custom content |\r
| GET | `/blogposts/{id}/labels` | Get labels |\r
| GET | `/blogposts/{id}/likes/count` | Get like count |\r
| GET | `/blogposts/{id}/likes/users` | Get users who liked |\r
| GET | `/blogposts/{id}/operations` | Get operations |\r
| GET | `/blogposts/{id}/versions` | Get versions |\r
| GET | `/blogposts/{id}/versions/{version-number}` | Get version details |\r
| GET | `/blogposts/{id}/footer-comments` | Get footer comments |\r
| GET | `/blogposts/{id}/inline-comments` | Get inline comments |\r
\r
**Get All Blog Posts:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/blogposts?limit=25&space-id=123" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Create Blog Post:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/blogposts" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "spaceId": "SPACE_KEY",\r
    "title": "My Blog Post",\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Blog post content here\x3C/p>"\r
    }\r
  }'\r
```\r
\r
**Get Blog Post with Body:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/blogposts/123?body-format=storage" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
---\r
\r
### 4. Comment (12 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/footer-comments` | Get all footer comments |\r
| POST | `/footer-comments` | Create footer comment |\r
| GET | `/footer-comments/{comment-id}` | Get footer comment |\r
| PUT | `/footer-comments/{comment-id}` | Update footer comment |\r
| DELETE | `/footer-comments/{comment-id}` | Delete footer comment |\r
| GET | `/footer-comments/{id}/children` | Get child comments |\r
| GET | `/inline-comments` | Get all inline comments |\r
| POST | `/inline-comments` | Create inline comment |\r
| GET | `/inline-comments/{comment-id}` | Get inline comment |\r
| PUT | `/inline-comments/{comment-id}` | Update inline comment |\r
| DELETE | `/inline-comments/{comment-id}` | Delete inline comment |\r
| GET | `/inline-comments/{id}/children` | Get child inline comments |\r
\r
**Create Footer Comment on Page:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/footer-comments" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "pageId": "123456",\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Comment content\x3C/p>"\r
    }\r
  }'\r
```\r
\r
**Create Inline Comment:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/inline-comments" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "pageId": "123456",\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Inline comment\x3C/p>"\r
    },\r
    "inlineCommentProperties": {\r
      "textSelection": "selected text",\r
      "textSelectionMatchCount": 1,\r
      "textSelectionMatchIndex": 0\r
    }\r
  }'\r
```\r
\r
**Resolve Inline Comment:**\r
```bash\r
curl -X PUT "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/inline-comments/123" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "version": {"number": 2},\r
    "resolved": true\r
  }'\r
```\r
\r
---\r
\r
### 5. Content Properties (40 endpoints)\r
\r
For: Attachments, Blog Posts, Pages, Custom Content, Whiteboards, Databases, Folders, Comments, Smart Links\r
\r
| Method | Endpoint Pattern | Description |\r
|--------|-----------------|-------------|\r
| GET | `/{type}/{id}/properties` | Get all properties |\r
| POST | `/{type}/{id}/properties` | Create property |\r
| GET | `/{type}/{id}/properties/{property-id}` | Get property |\r
| PUT | `/{type}/{id}/properties/{property-id}` | Update property |\r
| DELETE | `/{type}/{id}/properties/{property-id}` | Delete property |\r
\r
**Get Page Properties:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/properties" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Create Page Property:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/properties" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "key": "custom-key",\r
    "value": {"nested": "value"}\r
  }'\r
```\r
\r
**Update Page Property:**\r
```bash\r
curl -X PUT "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/properties/789" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "key": "custom-key",\r
    "value": {"updated": "value"},\r
    "version": {"number": 2}\r
  }'\r
```\r
\r
---\r
\r
### 6. Label (14 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/labels` | Get all labels |\r
| GET | `/labels/{id}/attachments` | Get attachments with label |\r
| GET | `/labels/{id}/blogposts` | Get blog posts with label |\r
| GET | `/labels/{id}/pages` | Get pages with label |\r
| GET | `/attachments/{id}/labels` | Get attachment labels |\r
| GET | `/blogposts/{id}/labels` | Get blog post labels |\r
| GET | `/custom-content/{id}/labels` | Get custom content labels |\r
| GET | `/pages/{id}/labels` | Get page labels |\r
| GET | `/spaces/{id}/labels` | Get space labels |\r
| GET | `/spaces/{id}/content/labels` | Get space content labels |\r
\r
**Get Page Labels:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/labels" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
---\r
\r
### 7. Page (14 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/pages` | Get all pages |\r
| POST | `/pages` | Create page |\r
| GET | `/pages/{id}` | Get page by ID |\r
| PUT | `/pages/{id}` | Update page |\r
| DELETE | `/pages/{id}` | Delete page |\r
| PUT | `/pages/{id}/title` | Update page title |\r
| GET | `/pages/{id}/attachments` | Get attachments |\r
| GET | `/pages/{id}/custom-content` | Get custom content |\r
| GET | `/pages/{id}/labels` | Get labels |\r
| GET | `/pages/{id}/operations` | Get operations |\r
| GET | `/pages/{id}/versions` | Get versions |\r
| GET | `/pages/{id}/versions/{version-number}` | Get version details |\r
| GET | `/pages/{id}/footer-comments` | Get footer comments |\r
| GET | `/pages/{id}/inline-comments` | Get inline comments |\r
\r
**Get All Pages in Space:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages?space-id=123&limit=50" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Get Page with Body:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456?body-format=storage" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Create Page:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "spaceId": "SPACE_KEY",\r
    "title": "My New Page",\r
    "parentId": "123456",\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Page content in storage format\x3C/p>"\r
    }\r
  }'\r
```\r
\r
**Update Page:**\r
```bash\r
curl -X PUT "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "id": "123456",\r
    "status": "current",\r
    "title": "Updated Page Title",\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Updated content\x3C/p>"\r
    },\r
    "version": {\r
      "number": 5,\r
      "message": "Updated page content"\r
    }\r
  }'\r
```\r
\r
**Delete Page (move to trash):**\r
```bash\r
curl -X DELETE "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
---\r
\r
### 8. Space (22 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/spaces` | Get all spaces |\r
| POST | `/spaces` | Create space |\r
| GET | `/spaces/{id}` | Get space by ID |\r
| PUT | `/spaces/{id}` | Update space |\r
| DELETE | `/spaces/{id}` | Delete space |\r
| GET | `/spaces/{id}/pages` | Get space pages |\r
| GET | `/spaces/{id}/pages/search` | Search pages in space |\r
| GET | `/spaces/{id}/blogposts` | Get space blog posts |\r
| GET | `/spaces/{id}/content` | Get space content |\r
| GET | `/spaces/{id}/content/types` | Get content types |\r
| GET | `/spaces/{id}/labels` | Get space labels |\r
| GET | `/spaces/{id}/content/labels` | Get space content labels |\r
| GET | `/spaces/{id}/operations` | Get space operations |\r
| GET | `/spaces/{id}/permissions` | Get space permissions |\r
| GET | `/spaces/{id}/properties` | Get space properties |\r
| POST | `/spaces/{id}/properties` | Create space property |\r
| GET | `/spaces/{id}/properties/{property-id}` | Get space property |\r
| PUT | `/spaces/{id}/properties/{property-id}` | Update space property |\r
| DELETE | `/spaces/{id}/properties/{property-id}` | Delete space property |\r
| GET | `/spaces/{id}/icons` | Get space icons |\r
| POST | `/spaces/{id}/icons` | Set space icon |\r
| GET | `/spaces/{id}/lookups` | Lookup space by key |\r
\r
**Get All Spaces:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/spaces?limit=50" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Get Space by Key:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/spaces?keys=SPACE_KEY" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Create Space:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/spaces" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "name": "My New Space",\r
    "key": "MYSpace",\r
    "description": {\r
      "plain": {\r
        "value": "Space description"\r
      }\r
    }\r
  }'\r
```\r
\r
---\r
\r
### 9. User (9 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/users/me` | Get current user |\r
| GET | `/users/{id}` | Get user by ID |\r
| GET | `/users/bulk` | Get multiple users |\r
| POST | `/users/bulk` | Bulk get users by emails |\r
| GET | `/user/access/check-access-by-email` | Check user access by email |\r
| POST | `/user/access/check-access-by-email` | Check user access |\r
| GET | `/user/access/invite-by-email` | Get user invite by email |\r
| POST | `/user/access/invite-by-email` | Invite user by email |\r
| POST | `/user/access/batch-invite-by-email` | Batch invite users |\r
\r
**Get Current User:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/users/me" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Get User by ID:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/users/123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Bulk Get Users:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/users/bulk?ids=123,456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
---\r
\r
### 10. Version History (8 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/pages/{id}/versions` | Get page versions |\r
| GET | `/pages/{id}/versions/{version-number}` | Get specific version |\r
| GET | `/blogposts/{id}/versions` | Get blog post versions |\r
| GET | `/blogposts/{id}/versions/{version-number}` | Get specific version |\r
| GET | `/attachments/{id}/versions` | Get attachment versions |\r
| GET | `/attachments/{id}/versions/{version-number}` | Get specific version |\r
| POST | `/pages/{id}/versions/restore` | Restore page version |\r
| POST | `/blogposts/{id}/versions/restore` | Restore blog post version |\r
\r
**Get Page Versions:**\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/versions?limit=10" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Restore Page Version:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/versions/restore" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{"newVersion": {"message": "Restoring previous version"}}'\r
```\r
\r
---\r
\r
### 11. Whiteboard (7 endpoints)\r
\r
| Method | Endpoint | Description |\r
|--------|----------|-------------|\r
| GET | `/whiteboards` | Get all whiteboards |\r
| POST | `/whiteboards` | Create whiteboard |\r
| GET | `/whiteboards/{id}` | Get whiteboard by ID |\r
| PUT | `/whiteboards/{id}` | Update whiteboard |\r
| DELETE | `/whiteboards/{id}` | Delete whiteboard |\r
| GET | `/whiteboards/{id}/connections` | Get whiteboard connections |\r
| GET | `/whiteboards/{id}/operations` | Get whiteboard operations |\r
\r
**Create Whiteboard:**\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/whiteboards" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "spaceId": "123456",\r
    "title": "My Whiteboard"\r
  }'\r
```\r
\r
---\r
\r
## Pagination\r
\r
The V2 API uses cursor-based pagination. Responses include a `_links.next` URL when more results are available.\r
\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages?space-id=123456&limit=100" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
**Response:**\r
```json\r
{\r
  "results": [...],\r
  "_links": {\r
    "next": "/wiki/api/v2/pages?cursor=abc123",\r
    "base": "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki"\r
  }\r
}\r
```\r
\r
---\r
\r
## Search\r
\r
### Search Pages by Title\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages?title=My%20Page&space-id=123456" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
### Get Page with All Details\r
```bash\r
curl -X GET "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456?include-labels=true&include-properties=true&include-versions=true&body-format=storage" \\r
  -H "Authorization: Basic \x3Cbase64_auth>"\r
```\r
\r
### Update Page Title\r
```bash\r
curl -X PUT "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/title" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{"value": "New Page Title"}'\r
```\r
\r
### Redact Page Content (remove sensitive content)\r
```bash\r
curl -X POST "https://$CONFLUENCE_DOMAIN.atlassian.net/wiki/api/v2/pages/123456/redact" \\r
  -H "Authorization: Basic \x3Cbase64_auth>" \\r
  -H "Content-Type: application/json" \\r
  -d '{\r
    "version": {"number": 3},\r
    "body": {\r
      "representation": "storage",\r
      "value": "\x3Cp>Redacted content\x3C/p>"\r
    }\r
  }'\r
```\r
\r
---\r
\r
## Error Handling\r
\r
| Status | Meaning |\r
|--------|---------|\r
| 400 | Bad request or malformed data |\r
| 401 | Invalid credentials or expired token |\r
| 403 | Permission denied |\r
| 404 | Resource not found |\r
| 409 | Conflict (e.g., duplicate title) |\r
| 429 | Rate limited - wait and retry |\r
| 500 | Internal server error |\r
\r
---\r
\r
## Notes\r
\r
- **Confluence Storage Format**: Content uses XML-like storage format. Example: `\x3Cp>Paragraph\x3C/p>`, `\x3Ch1>Heading\x3C/h1>`, `\x3Cul>\x3Cli>Item\x3C/li>\x3C/ul>`\r
- **Version Numbers**: When updating pages, you must increment the version number\r
- **DELETE Returns 204**: DELETE operations return 204 No Content\r
- **IDs are Strings**: All IDs are passed as strings\r
- **Cursor Pagination**: Use the cursor from `_links.next` for pagination\r
Usage Guidance
This skill appears coherent for managing Confluence via the Cloud REST API. Before installing: (1) store CONFLUENCE_API_TOKEN securely (do not paste it into chat), (2) prefer a least-privilege API token or service account rather than a global admin token, (3) be aware the documented endpoints include destructive actions (delete/purge) — review and restrict who can invoke the skill, and (4) rotate tokens regularly and test in a staging Confluence space first. If you need the skill to run autonomously, consider limiting its invocation scope and monitoring API usage/logs.
Capability Analysis
Type: OpenClaw Skill Name: confluence-atlassian Version: 1.0.0 The skill bundle is a comprehensive and well-documented interface for the Confluence Cloud REST API v2. It provides instructions and curl examples for managing pages, spaces, users, and administrative keys. While it requires sensitive environment variables (CONFLUENCE_API_TOKEN), the instructions correctly direct all traffic to the official Atlassian domain (atlassian.net) and lack any indicators of data exfiltration, malicious execution, or prompt injection.
Capability Assessment
Purpose & Capability
Name/description, required env vars (CONFLUENCE_EMAIL, CONFLUENCE_API_TOKEN, CONFLUENCE_DOMAIN), and the documented curl examples all match a Confluence Cloud API client; nothing requested appears unrelated to the stated purpose.
Instruction Scope
SKILL.md is instruction-only and contains curl examples and API endpoint references for Confluence v2. It does not instruct reading arbitrary local files, other env vars, or sending data to non-Atlassian endpoints. It documents authentication and retry behavior only.
Install Mechanism
No install spec or external downloads — instruction-only skill (lowest install risk).
Credentials
Only the three Confluence-related environment variables are required; these are appropriate and proportionate for authenticating to the Atlassian REST API.
Persistence & Privilege
always is false and the skill does not request persistent or cross-skill configuration changes. Autonomous invocation is allowed by default but not combined with other red flags here.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install confluence-atlassian
  3. After installation, invoke the skill by name or use /confluence-atlassian
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release of confluence-atlassian skill. - Provides full-featured access to Atlassian Confluence Cloud REST API v2. - Supports managing pages, blog posts, spaces, attachments, comments, and labels via direct API calls. - Includes documentation for authentication setup using Atlassian email and API token. - Covers 100+ endpoints across 29 API groups, with detailed usage examples. - Features built-in rate limiting guidance with auto-retry recommendations for HTTP 429 errors.
Metadata
Slug confluence-atlassian
Version 1.0.0
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Publish Confluence?

Full-featured Confluence Cloud REST API v2 skill. Manage pages, spaces, blogposts, attachments, comments, labels, and more via direct Atlassian API calls. Us... It is an AI Agent Skill for Claude Code / OpenClaw, with 88 downloads so far.

How do I install Publish Confluence?

Run "/install confluence-atlassian" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Publish Confluence free?

Yes, Publish Confluence is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Publish Confluence support?

Publish Confluence is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Publish Confluence?

It is built and maintained by AlienTree (@jeffersonling1217-png); the current version is v1.0.0.

💬 Comments