164212720450216e98675584e9e63c3a72322633source_git · iljasorokin/confluence-dc-advops-mcp · current release
Observed 2026-08-25T18:47:02.467Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
confluence_addCommentAdd a footer comment under a page (POST /rest/api/content type=comment). Not inline — quote the relevant page text in the body if needed. bodyFormat plain (default) wraps text in <p>; storage passes Confluence storage XML as-is.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"body": {
"type": "string",
"description": "Comment text. Plain: use blank lines for paragraphs. Tip: start with a quote from the page so the subject is clear."
},
"bodyFormat": {
"type": "string",
"enum": [
"plain",
"storage"
],
"description": "plain (default) or storage XML"
}
},
"required": [
"contentId",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_addLabelsAdd labels to a page (POST /rest/api/content/{id}/label). Does not remove existing labels. Global prefix.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Label names to add, e.g. [\"draft\"]"
}
},
"required": [
"contentId",
"labels"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_createSpaceTemplateFromFileCreate a new space page template from a local storage XML file via POST /rest/experimental/template. Fails if a template with the same name already exists.Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"name": {
"type": "string",
"description": "New template name, e.g. SRS-XXX-DB-01 Модель данных"
},
"filePath": {
"type": "string",
"description": "Absolute path to storage XML (usually dumped from source page)"
},
"description": {
"type": "string",
"description": "Template description shown in Create from template"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Label names on the template (copied onto pages created from it)"
},
"copyLabelsFromContentId": {
"type": "string",
"description": "Copy global labels from this page onto the new template (ignored if labels is set)"
}
},
"required": [
"spaceKey",
"name",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_deleteSpaceTemplateDESTRUCTIVE. Delete one space Create template (DELETE /rest/experimental/template/{id}). ALWAYS stop and get explicit human approval in chat first — never invent confirm. Requires confirm="DELETE" and confirmName=exact template name. No trash restore; archive dump first.Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"templateId": {
"type": "string",
"description": "Space template ID to delete"
},
"name": {
"type": "string",
"description": "Template name or substring if id unknown"
},
"confirm": {
"type": "string",
"const": "DELETE",
"description": "Pass only after human approved in this chat. Exact string DELETE (not true/yes)."
},
"confirmName": {
"type": "string",
"description": "Exact template name from listSpaceTemplates; must match the resolved template or delete is refused"
}
},
"required": [
"spaceKey",
"confirm",
"confirmName"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Annotations{
"title": "Delete space template (needs human confirm)",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": true
} | — | Writes · Destructive | — |
confluence_deleteSpaceTemplatesDESTRUCTIVE. Delete several space Create templates by id. ALWAYS get explicit human approval in chat first. Requires confirm="DELETE" and confirmNames[] exact names (same order as templateIds). Continues on per-item errors. Archive dump first.Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"templateIds": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Template IDs to delete, e.g. [\"104005670\",\"110428188\"]"
},
"confirm": {
"type": "string",
"const": "DELETE",
"description": "Pass only after human approved in this chat. Exact string DELETE (not true/yes)."
},
"confirmNames": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Exact template names, same length/order as templateIds"
}
},
"required": [
"spaceKey",
"templateIds",
"confirm",
"confirmNames"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Annotations{
"title": "Delete space templates batch (needs human confirm)",
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true,
"openWorldHint": true
} | — | Writes · Destructive | — |
confluence_downloadAttachmentToFileDownload a page attachment binary to a local file. Identify by attachmentId and/or filename on contentId. Prefer this over stuffing binaries into chat.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Parent page ID"
},
"attachmentId": {
"type": "string",
"description": "Attachment content ID"
},
"filename": {
"type": "string",
"description": "Attachment title/filename, e.g. onbording.zip"
},
"filePath": {
"type": "string",
"description": "Absolute local path to write the file"
}
},
"required": [
"contentId",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_getSpaceTemplateToFileDownload a space page template body.storage to a local XML file. Requires spaceKey (GET by id alone 404s on DC). Identify by templateId and/or exact/partial name.Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"templateId": {
"type": "string",
"description": "Space template ID"
},
"name": {
"type": "string",
"description": "Template name or substring, e.g. CR-XXX-BRD"
},
"filePath": {
"type": "string",
"description": "Absolute path to write storage XML"
}
},
"required": [
"spaceKey",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_getStorageToFileDownload Confluence page body.storage XML to a local file for surgical edits (large templates). Returns version/title/path. Prefer this over stuffing huge storage into chat.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Confluence page ID"
},
"filePath": {
"type": "string",
"description": "Absolute path to write storage XML (e.g. /path/to/page.xml)"
}
},
"required": [
"contentId",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listAttachmentsList attachments on a Confluence page (GET /rest/api/content/{id}/child/attachment). Optional exact filename filter.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Parent page ID"
},
"filename": {
"type": "string",
"description": "Exact filename filter, e.g. onbording.zip"
}
},
"required": [
"contentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listChildPagesList direct child pages of a parent with tree position (GET /rest/api/content/{id}/child/page?expand=extensions.position). Use before/after reorder.Input schema{
"type": "object",
"properties": {
"parentId": {
"type": "string",
"description": "Parent page ID"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 500,
"description": "Max children to return (default 200)"
}
},
"required": [
"parentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listCommentsList footer (page) comments on a Confluence page. GET /rest/api/content/{id}/child/comment?location=footer. Inline comments are not included — put document quotes in the comment body instead.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"depth": {
"type": "string",
"enum": [
"root",
"all"
],
"description": "root = top-level only; all = include replies (default all)"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 200,
"description": "Page size per request (default 50)"
}
},
"required": [
"contentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listInlineCommentsList inline comments on a page (read-only listing). Distinguishes open (visible on page, location=inline) vs resolved (location=resolved). Does not create new inline anchors.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"status": {
"type": "string",
"enum": [
"open",
"resolved",
"all"
],
"description": "open = visible on page; resolved = in Resolved; all = both (default all)"
},
"depth": {
"type": "string",
"enum": [
"root",
"all"
],
"description": "root = top-level only; all = include replies (default all)"
},
"limit": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 200,
"description": "Page size per request (default 50)"
}
},
"required": [
"contentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listLabelsList labels on a Confluence page (GET /rest/api/content/{id}/label). Optional prefix filter (global|my).Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"prefix": {
"type": "string",
"enum": [
"global",
"my"
],
"description": "Filter by label prefix (default: all)"
}
},
"required": [
"contentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_listSpaceTemplatesList space page templates via /rest/experimental/template/page (DC). spaceKey required. Optional nameContains filter. Does not expand body by default (fast).Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"nameContains": {
"type": "string",
"description": "Case-insensitive substring filter on template name"
},
"expandBody": {
"type": "boolean",
"description": "If true, expand body (slow). Default false."
}
},
"required": [
"spaceKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_movePageMove (reparent) a Confluence Data Center page under a new parent. Uses PUT /rest/api/content/{id} with ancestors. Does not change page body.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "ID of the page to move"
},
"parentId": {
"type": "string",
"description": "ID of the new parent page"
},
"versionComment": {
"type": "string",
"description": "Optional Confluence version comment for the move"
}
},
"required": [
"contentId",
"parentId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_movePagesMove several Confluence pages under new parents, sequentially. Each item reports success/error.Input schema{
"type": "object",
"properties": {
"moves": {
"type": "array",
"items": {
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "ID of the page to move"
},
"parentId": {
"type": "string",
"description": "ID of the new parent page"
}
},
"required": [
"contentId",
"parentId"
],
"additionalProperties": false
},
"minItems": 1,
"description": "List of move operations"
},
"versionComment": {
"type": "string",
"description": "Optional version comment applied to each successful move"
}
},
"required": [
"moves"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_removeLabelsRemove labels from a page (DELETE /rest/api/content/{id}/label?name=). Continues on per-label errors.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Label names to remove"
}
},
"required": [
"contentId",
"labels"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_reorderPageChange page order among siblings (or append under target). DC 9.x: POST /pages/movepage.action with position above|below|append. Prefer listChildPages first. above/below = same parent as target; append = become child of target.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID to move in the tree"
},
"targetId": {
"type": "string",
"description": "Reference page ID"
},
"position": {
"type": "string",
"enum": [
"above",
"below",
"append"
],
"description": "above/below = sibling of target; append = child of target (reparent+last)"
}
},
"required": [
"contentId",
"targetId",
"position"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_replyToCommentReply in a footer comment thread (POST comment with ancestors = parent). Same bodyFormat as addComment.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID (container of the thread)"
},
"parentCommentId": {
"type": "string",
"description": "Parent footer comment ID"
},
"body": {
"type": "string",
"description": "Reply text (plain or storage per bodyFormat)"
},
"bodyFormat": {
"type": "string",
"enum": [
"plain",
"storage"
],
"description": "plain (default) or storage XML"
}
},
"required": [
"contentId",
"parentCommentId",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_replyToInlineCommentReply in an existing inline comment thread (open or resolved). Does not create a new text selection / anchor. bodyFormat plain|storage like footer comments.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID (optional if resolvable from parent comment container)"
},
"parentCommentId": {
"type": "string",
"description": "Parent inline comment ID"
},
"body": {
"type": "string",
"description": "Reply text"
},
"bodyFormat": {
"type": "string",
"enum": [
"plain",
"storage"
],
"description": "plain (default) or storage XML"
}
},
"required": [
"parentCommentId",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_resolveTinyUrlResolve a Confluence tiny link (/x/{code} or bare code) to page id, title, space, version. Decodes locally then GET /content/{id} — does not follow tinyurl.action. Use before getContent / getStorageToFile when the user pasted a short URL.Input schema{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"description": "Full tiny URL (https://…/x/nf16Dw), path (/x/nf16Dw), bare code (nf16Dw), or tinyurl.action?urlIdentifier=…"
}
},
"required": [
"url"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_setChildPageOrderSet exact order of all direct children under a parent. childIds must be a full permutation of current children. Uses sequential movepage above/below (DC has no bulk REST). Prefer listChildPages first; ask human before large reorder.Input schema{
"type": "object",
"properties": {
"parentId": {
"type": "string",
"description": "Parent page whose children to reorder"
},
"childIds": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Desired child page IDs from first to last (full set)"
}
},
"required": [
"parentId",
"childIds"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_setLabelsReplace global labels on a page (add missing, remove extras). Leaves personal (my) labels untouched.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Page ID"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Desired global label names (empty array clears global labels)"
}
},
"required": [
"contentId",
"labels"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_setSpaceTemplateLabelsSet labels on a space template (PUT, body unchanged). Create from template copies these onto the new page. Pass [] to clear.Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"templateId": {
"type": "string",
"description": "Space template ID"
},
"name": {
"type": "string",
"description": "Template name or substring if id unknown"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Desired label names (empty array clears template labels)"
}
},
"required": [
"spaceKey",
"labels"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_storage_getSectionRead one section from a local storage XML file (heading until next same-or-higher heading). Default format=text. Does not return the whole page. Ambiguous heading → error + candidates. format=text/markdown inlines expand macro bodies (e.g. KTalk transcripts).Input schema{
"type": "object",
"properties": {
"filePath": {
"type": "string",
"description": "Absolute path to dumped storage XML"
},
"heading": {
"type": "string",
"description": "Exact heading text from listHeadings (whitespace-normalized)"
},
"headingIndex": {
"type": "integer",
"minimum": 0,
"description": "Index from listHeadings when heading text is ambiguous"
},
"includeHeading": {
"type": "boolean",
"description": "Include the heading node (default true)"
},
"format": {
"type": "string",
"enum": [
"text",
"markdown",
"storage"
],
"description": "text (default), markdown (lossy), or storage fragment"
},
"maxChars": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Optional cap on returned body. Omit to return the full section."
}
},
"required": [
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_storage_listHeadingsList h1–h6 headings in a local Confluence storage XML file (order, level, visible text). Does not return section bodies or full XML. Run after getStorageToFile.Input schema{
"type": "object",
"properties": {
"filePath": {
"type": "string",
"description": "Absolute path to dumped storage XML"
}
},
"required": [
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_storage_listMacrosInventory ac:structured-macro / ac:macro in a local storage XML file. Returns names, ids, params, parentHeading, bodyKind — not macro bodies.Input schema{
"type": "object",
"properties": {
"filePath": {
"type": "string",
"description": "Absolute path to dumped storage XML"
},
"name": {
"type": "string",
"description": "Filter by macro name, e.g. mermaid-macro"
}
},
"required": [
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_storage_replaceMacroBodyReplace the body of one macro in a local storage XML file. Wrapper and parameters unchanged. Selector: exactly one of macroId, name+parentHeading, or name+index. plain body goes in CDATA (no HTML-escape of -->). Does not publish.Input schema{
"type": "object",
"properties": {
"filePath": {
"type": "string",
"description": "Absolute path to dumped storage XML"
},
"macroId": {
"type": "string",
"description": "ac:macro-id"
},
"name": {
"type": "string",
"description": "Macro name, e.g. mermaid-macro"
},
"parentHeading": {
"type": [
"string",
"null"
],
"description": "Nearest preceding heading text (with name)"
},
"index": {
"type": "integer",
"minimum": 0,
"description": "Index from listMacros (with name)"
},
"body": {
"type": "string",
"description": "New macro body"
},
"bodyKind": {
"type": "string",
"enum": [
"plain",
"rich"
],
"description": "plain (default, CDATA) or rich (inner storage)"
},
"dryRun": {
"type": "boolean",
"description": "Compute without writing the file"
}
},
"required": [
"filePath",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_storage_replaceSectionReplace the body of one section in a local storage XML file (heading kept). Does not publish. Markdown default; storage fragment allowed. Does not convert mermaid/layout/Jira. Ambiguous heading → error, file unchanged.Input schema{
"type": "object",
"properties": {
"filePath": {
"type": "string",
"description": "Absolute path to dumped storage XML"
},
"heading": {
"type": "string",
"description": "Exact heading text from listHeadings"
},
"headingIndex": {
"type": "integer",
"minimum": 0,
"description": "Index from listHeadings when heading is ambiguous"
},
"body": {
"type": "string",
"description": "New section body only (not the whole page)"
},
"bodyFormat": {
"type": "string",
"enum": [
"markdown",
"storage"
],
"description": "markdown (default) or storage XML fragment"
},
"dryRun": {
"type": "boolean",
"description": "Compute diff without writing the file"
},
"replaceHeading": {
"type": "boolean",
"description": "Also replace the heading text (default false)"
},
"newHeading": {
"type": "string",
"description": "New heading text when replaceHeading is true"
}
},
"required": [
"filePath",
"body"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_syncPageToSpaceTemplateFast path: copy page body.storage (and by default global labels) into a space template. Create from template then stamps those labels on the new page.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Source page ID"
},
"spaceKey": {
"type": "string",
"description": "Target space key"
},
"templateId": {
"type": "string",
"description": "Target space template ID"
},
"name": {
"type": "string",
"description": "Target template name if id unknown"
},
"description": {
"type": "string",
"description": "Replace template description entirely"
},
"descriptionSuffix": {
"type": "string",
"description": "Append/replace trailing sync note in template description"
},
"copyPageLabels": {
"type": "boolean",
"description": "Copy global labels from the source page onto the template (default true). If the page has none, keep current template labels."
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Explicit template labels (wins over copyPageLabels)"
}
},
"required": [
"contentId",
"spaceKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_updateSpaceTemplateFromFileUpdate a space page template body from a local storage XML file via PUT /rest/experimental/template. Preserves labels by default. Source page remains SoT — this publishes a snapshot for Create from template. To rename: pass templateId + new `name` (id alone is used for lookup).Input schema{
"type": "object",
"properties": {
"spaceKey": {
"type": "string",
"description": "Space key, e.g. MYSPACE"
},
"templateId": {
"type": "string",
"description": "Space template ID"
},
"name": {
"type": "string",
"description": "Template name (used to find and/or rename)"
},
"filePath": {
"type": "string",
"description": "Absolute path to storage XML"
},
"description": {
"type": "string",
"description": "New description; default keep current"
},
"keepLabels": {
"type": "boolean",
"description": "Keep existing labels (default true)"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace template labels with these names (wins over keepLabels / copy)"
},
"copyLabelsFromContentId": {
"type": "string",
"description": "Copy global labels from this page onto the template"
}
},
"required": [
"spaceKey",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_updateStorageFromFilePublish page body from a local storage XML file via the Confluence proxy (same auth as confluence-dc). Auto-increments version unless you pass version (= current+1). Pass content as-is — do not re-escape entities. Optional parentId to reparent in the same PUT.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Confluence page ID"
},
"filePath": {
"type": "string",
"description": "Absolute path to storage XML file"
},
"version": {
"type": "number",
"description": "New version number; must be current+1. Omit to auto-bump."
},
"title": {
"type": "string",
"description": "New title (default: keep current)"
},
"versionComment": {
"type": "string",
"description": "Confluence version comment"
},
"parentId": {
"type": "string",
"description": "Optional new parent page ID (reparent + body update)"
}
},
"required": [
"contentId",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
confluence_uploadAttachmentFromFileUpload (or add a new version of) a local file as a page attachment via multipart POST /rest/api/content/{id}/child/attachment. Sets X-Atlassian-Token: no-check.Input schema{
"type": "object",
"properties": {
"contentId": {
"type": "string",
"description": "Parent page ID"
},
"filePath": {
"type": "string",
"description": "Absolute path to the local file to upload"
},
"filename": {
"type": "string",
"description": "Override attachment title (default: basename of filePath)"
},
"comment": {
"type": "string",
"description": "Attachment comment"
},
"minorEdit": {
"type": "boolean",
"description": "minorEdit flag (default true)"
}
},
"required": [
"contentId",
"filePath"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |