{"formatVersion":"1","kind":"dock_integration","slug":"confluence-cloud-api","title":"Confluence Cloud API","summary":"Import a Harbor-safe Confluence starter set for page search, page lookup, and approval-friendly page creation.","description":"A Dock-hosted Confluence Cloud starter integration for Harbor. Importing it creates a local http_api port shell plus a Harbor-safe Confluence action set using Harbor's Action Model for explicit page identifiers, bounded page search filters, and reviewable page creation.","version":"0.1.0","publisher":{"slug":"atlassian","name":"Atlassian","websiteUrl":"https://developer.atlassian.com/cloud/confluence/rest/v2/"},"category":"Knowledge Base","tags":["confluence","atlassian","wiki","pages","documentation"],"compatibility":{"harborNode":">=0.1.0","notes":"Requires local operator-configured auth after import. Confluence Cloud also requires the local operator to set the tenant-specific site base URL before use. Templates use location-based inputs such as input.path, input.query, and input.body at execution time."},"requiredPlan":"community","portTemplates":[{"kind":"http_api","label":"Confluence Cloud API","description":"Confluence Cloud API connection managed locally through Harbor.","baseUrl":"https://your-domain.atlassian.net/","authMode":"header_token","authHeaderName":"Authorization","authTokenPrefix":"Bearer"}],"actionTemplates":[{"slug":"list-spaces","label":"List Spaces","description":"List Confluence spaces using bounded type, status, and pagination filters so Harbor can discover valid space IDs safely.","method":"GET","path":"/wiki/api/v2/spaces","inputs":{"parameters":[{"name":"keys","in":"query","schema":{"type":"string"},"description":"Optional comma-separated Confluence space keys to keep results bounded."},{"name":"type","in":"query","schema":{"type":"string","enum":["global","personal"]},"description":"Optional Confluence space type filter."},{"name":"status","in":"query","schema":{"type":"string","enum":["current","archived"]},"default":"current","description":"Space status filter."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Continuation cursor from a previous Confluence spaces response."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250},"default":25,"description":"Maximum number of spaces to return in one response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"search-pages","label":"Search Pages","description":"List Confluence pages using bounded title, space, and status filters with typed pagination inputs.","method":"GET","path":"/wiki/api/v2/pages","inputs":{"parameters":[{"name":"title","in":"query","schema":{"type":"string"},"description":"Optional exact or narrow title filter for the pages list."},{"name":"space-id","in":"query","schema":{"type":"string"},"description":"Optional Confluence space ID to narrow the pages list."},{"name":"status","in":"query","schema":{"type":"string","enum":["current","draft","archived"]},"default":"current","description":"Page status filter. Keep searches bounded to expected content state."},{"name":"body-format","in":"query","schema":{"type":"string","enum":["storage","atlas_doc_format"]},"description":"Optional body representation to include for returned pages."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Continuation cursor from a previous Confluence pages response."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250},"default":25,"description":"Maximum number of pages to return in one response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-space","label":"Get Space","description":"Fetch a single Confluence space using an explicit space ID.","method":"GET","path":"/wiki/api/v2/spaces/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence space ID to fetch."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-space-pages","label":"List Space Pages","description":"List pages for a specific Confluence space using an explicit space ID and typed pagination inputs.","method":"GET","path":"/wiki/api/v2/spaces/{id}/pages","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence space ID whose pages should be listed."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Continuation cursor from a previous Confluence pages response."},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":250},"default":25,"description":"Maximum number of pages to return in one response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"list-page-comments","label":"List Page Comments","description":"List footer comments for a specific Confluence page using an explicit page ID.","method":"GET","path":"/wiki/api/v2/pages/{id}/footer-comments","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence page ID."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"get-page","label":"Get Page","description":"Fetch a single Confluence page using an explicit page ID.","method":"GET","path":"/wiki/api/v2/pages/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence page ID to fetch."},{"name":"body-format","in":"query","schema":{"type":"string","enum":["storage","atlas_doc_format","view"]},"description":"Optional body representation to include for the page."},{"name":"include-labels","in":"query","schema":{"type":"boolean"},"description":"Whether to include label data in the page response."},{"name":"include-properties","in":"query","schema":{"type":"boolean"},"description":"Whether to include page properties in the response."}]},"approvalMode":"automatic","requestBodyMode":"none","resultMode":"json_summary"},{"slug":"create-page","label":"Create Page","description":"Create a Confluence page using a bounded JSON request body under input.body.","method":"POST","path":"/wiki/api/v2/pages","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"create-page-comment","label":"Create Page Comment","description":"Create a Confluence page footer comment using an explicit page ID and a bounded JSON request body.","method":"POST","path":"/wiki/api/v2/footer-comments","approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"update-page","label":"Update Page","description":"Update a Confluence page using an explicit page ID with a bounded JSON request body.","method":"PUT","path":"/wiki/api/v2/pages/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence page ID to update."}]},"approvalMode":"require_approval","requestBodyMode":"json","resultMode":"json_summary"},{"slug":"delete-page","label":"Delete Page","description":"Delete a Confluence page using an explicit page ID.","method":"DELETE","path":"/wiki/api/v2/pages/{id}","inputs":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1},"description":"Confluence page ID to delete."}]},"approvalMode":"require_approval","requestBodyMode":"none","resultMode":"json_summary"}],"workflowTemplates":[{"slug":"page-search-draft-check","title":"Page Search Draft Check","summary":"Future workflow template for bounded page search, page inspection, and operator-reviewed Confluence page creation."}],"helpText":"Import to Harbor, set the local Confluence Cloud site URL, configure local auth, then validate and test search-pages and get-page before enabling create-page. Keep searches bounded and keep create-page on approval unless your local policy explicitly allows operator-reviewed writes.","installNotes":"Dock shares only safe metadata. Hidden auth must be configured locally inside Harbor after import, and the placeholder base URL must be replaced with your own Confluence Cloud tenant URL. Confluence search-pages uses input.query for page filters and pagination values, get-page uses input.path.id, and create-page uses input.body for the page payload."}