arazzo: 1.0.1 info: title: Confluence Reply to a Page Comment Thread summary: List the footer comments on a page, read the thread being answered, post a reply, and read the thread back. description: >- Bots and integrations that answer questions in Confluence need to reply into an existing thread rather than start a new one. The flow lists the footer comments on a page, reads the specific comment being answered to confirm it is still open and belongs to that page, posts a reply carrying the parentCommentId that nests it under the original, and then reads the thread's children back to confirm the reply landed. Every step spells out its request inline so the flow can be read and executed without opening the underlying OpenAPI description. version: 1.0.0 sourceDescriptions: - name: confluenceCloudV2 url: ../openapi/confluence-cloud-v2.yml type: openapi workflows: - workflowId: reply-to-comment-thread summary: Post a threaded reply to an existing footer comment on a Confluence page. description: >- Lists a page's footer comments, reads the parent comment, creates a nested reply, and reads the parent's children back to verify the reply is attached. inputs: type: object required: - pageId - parentCommentId - replyBody properties: pageId: type: string description: The id of the page carrying the comment thread. parentCommentId: type: string description: The id of the comment being replied to. replyBody: type: string description: The reply body in Confluence storage format (XHTML). steps: - stepId: listPageComments description: >- List the footer comments on the page in storage format so the caller can see the thread it is about to join. operationId: getFooterComments parameters: - name: id in: path value: $inputs.pageId - name: body-format in: query value: storage - name: limit in: query value: 250 successCriteria: - condition: $statusCode == 200 outputs: comments: $response.body#/results nextCursor: $response.body#/_links/next - stepId: readParentComment description: >- Read the comment being answered to confirm it exists, is still current, and is anchored to the page the caller supplied. operationId: getCommentById parameters: - name: id in: path value: $inputs.parentCommentId - name: body-format in: query value: storage successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.status == 'current' type: jsonpath outputs: parentPageId: $response.body#/pageId parentAuthorId: $response.body#/authorId resolutionStatus: $response.body#/resolutionStatus parentVersion: $response.body#/version/number - stepId: postReply description: >- Create the reply as a footer comment nested under the parent by supplying both the pageId and the parentCommentId. operationId: createFooterComment requestBody: contentType: application/json payload: pageId: $inputs.pageId parentCommentId: $inputs.parentCommentId body: representation: storage value: $inputs.replyBody successCriteria: - condition: $statusCode == 200 outputs: replyId: $response.body#/id replyStatus: $response.body#/status replyVersion: $response.body#/version/number webui: $response.body#/_links/webui - stepId: readThreadBack description: >- Read the parent comment's children to confirm the new reply is attached to the thread rather than orphaned at the page level. operationId: getChildComments parameters: - name: id in: path value: $inputs.parentCommentId - name: body-format in: query value: storage - name: limit in: query value: 250 successCriteria: - condition: $statusCode == 200 - context: $response.body condition: $.results.length > 0 type: jsonpath outputs: replies: $response.body#/results outputs: replyId: $steps.postReply.outputs.replyId webui: $steps.postReply.outputs.webui replies: $steps.readThreadBack.outputs.replies