Jira Spaces Skill
Manage Confluence spaces through the Confluence Cloud REST API. Spaces are the top-level containers for organizing project documentation, wikis, and knowledge bases.
When to Use
- Setting up documentation structure for a new project
- Creating spaces for different teams or initiatives
- Listing available spaces to find documentation
- Archiving or deleting obsolete spaces
Prerequisites
- Confluence Cloud instance (same Atlassian account as Jira)
- API token with Confluence access
- Environment variables configured in
.env
API Reference
Base URL
Confluence Cloud uses the same base URL as Jira Cloud but different API path:
https://your-domain.atlassian.net/wiki/rest/api
Authentication
Same as Jira - Basic Auth with email:token.
Key Endpoints
| Endpoint | Method | Description |
|---|---|---|
/space | GET | List all spaces |
/space | POST | Create a new space |
/space/{spaceKey} | GET | Get space details |
/space/{spaceKey} | DELETE | Delete a space |
/space/{spaceKey}/content | GET | List space content |
Space Types
| Type | Description | Use Case |
|---|---|---|
global | Site-wide space | Company wikis, shared docs |
personal | User's personal space | Individual notes, drafts |
Creating a Space
Request
typescriptconst response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space`, { method: 'POST', headers: { 'Authorization': `Basic ${auth}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ key: 'PROJ', // Unique space key (uppercase) name: 'Project Docs', // Display name type: 'global', // 'global' or 'personal' description: { plain: { value: 'Documentation for the project', representation: 'plain' } } }) });
Response
json{ "id": 12345, "key": "PROJ", "name": "Project Docs", "type": "global", "status": "current", "_links": { "webui": "/spaces/PROJ", "self": "https://your-domain.atlassian.net/wiki/rest/api/space/PROJ" } }
Listing Spaces
Request
typescriptconst response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space?limit=25&type=global`, { headers: { 'Authorization': `Basic ${auth}`, 'Accept': 'application/json' } });
Response
json{ "results": [ { "id": 12345, "key": "PROJ", "name": "Project Docs", "type": "global", "status": "current" } ], "start": 0, "limit": 25, "size": 1, "_links": {} }
Deleting a Space
WARNING: Deleting a space removes all pages and content permanently!
Request
typescriptconst response = await fetch(`${CONFLUENCE_URL}/wiki/rest/api/space/PROJ`, { method: 'DELETE', headers: { 'Authorization': `Basic ${auth}` } });
Returns 202 Accepted (deletion is async) or 204 No Content.
Space Keys
Space keys must:
- Be unique across the Confluence instance
- Use only uppercase letters and numbers
- Be 1-255 characters
- Not start with a number
Conventions:
PROJ- Project-specificTEAM- Team-specificDOC- DocumentationKB- Knowledge base
Common Patterns
Create Project Documentation Space
typescript// Create space with home page await createSpace({ key: 'TUSTLE', name: 'Tustle Project Documentation', description: 'Technical documentation and guides for Tustle MVP' }); // Add standard pages await createPage('TUSTLE', 'Getting Started', 'Overview and setup instructions...'); await createPage('TUSTLE', 'Architecture', 'System architecture documentation...'); await createPage('TUSTLE', 'API Reference', 'API endpoint documentation...');
List Team Spaces
typescriptconst spaces = await listSpaces({ type: 'global', limit: 50 }); const teamSpaces = spaces.filter(s => s.name.includes('Team'));
Error Handling
| Status | Meaning | Resolution |
|---|---|---|
| 400 | Invalid space key | Check key format (uppercase, no special chars) |
| 401 | Unauthorized | Check API token and email |
| 403 | Forbidden | User lacks space admin permissions |
| 404 | Space not found | Verify space key exists |
| 409 | Conflict | Space key already exists |
Scripts
| Script | Description |
|---|---|
create-space | Create a new Confluence space |
delete-space | Delete a space (with confirmation) |
list-spaces | List all accessible spaces |
Usage Examples
bash# List all spaces node run.js list-spaces # Create a new space node run.js create-space DOCS "Documentation Space" # Delete a space (interactive confirmation) node run.js delete-space DOCS # Force delete without confirmation node run.js delete-space DOCS --confirm
Related Skills
jira-projects- Jira project managementjira-issues- Issue creation for documentation tasks

