Portal Community

When to Use

Configuration

Connection

FieldRequiredDescription
HostRequiredJira instance base URL. Example: https://acmecorp.atlassian.net
EmailRequiredAtlassian account email. Example: automation@acmecorp.com
ApiTokenRequiredAPI token from Atlassian security settings. Store in Credentials Manager.

Operation Fields

FieldRequiredDescription
IssueKeyRequiredThe key of the issue that contains the comment. Example: PROJ-123.
CommentIdRequiredThe numeric ID of the comment to update. Must have been stored from a prior comment/add response. Example: "10281".
BodyRequiredThe new comment body text. Fully replaces the current body — the previous text is not preserved. Plain text with newline support.
Full replace, not append: comment/update replaces the entire comment body with the new text. If you want to append to an existing comment, first call comment/get to read the current body, concatenate your addition, then call comment/update with the combined text.

Sample Configuration

Update a living deployment status comment after a successful deployment:

{
  "resource": "comment",
  "operation": "update",
  "Host": "https://acmecorp.atlassian.net",
  "Email": "automation@acmecorp.com",
  "ApiToken": "{{ $credentials.jiraApiToken }}",
  "IssueKey": "{{ $json.issueKey }}",
  "CommentId": "{{ $json.statusCommentId }}",
  "Body": "*DEPLOYMENT STATUS — {{ $now | date('YYYY-MM-DD HH:mm') }} UTC*\n\nStage: {{ $json.currentStage }}\nEnvironment: {{ $json.environment }}\nVersion: {{ $json.version }}\nProgress: {{ $json.completedSteps }}/{{ $json.totalSteps }} steps complete\n\nLast update: {{ $json.lastStepDescription }}\nNext: {{ $json.nextStep }}\n\n_Updated by BizFirst automation_"
}

Validation Errors

Error CodeCause
VAL_MISSING_ISSUE_KEYIssueKey is empty or null.
VAL_MISSING_COMMENT_IDCommentId is empty or null.
VAL_MISSING_BODYBody is empty or null.
COMMENT_NOT_FOUNDNo comment exists with the given ID on this issue.
PERMISSION_DENIEDThe API token user is not the author of the comment and lacks admin permission to edit others' comments.
AUTH_FAILEDInvalid credentials or expired API token.

Output Fields

FieldTypeDescription
statusstring"success" or "error"
commentIdstringID of the updated comment.
issueKeystringKey of the issue the comment belongs to.
resourcestringAlways "comment"
operationstringAlways "update"

Sample Output

{
  "status": "success",
  "commentId": "10281",
  "issueKey": "PROJ-123",
  "resource": "comment",
  "operation": "update"
}

Expression Reference

ExpressionTypeExample ValueUse
{{ $output.updateComment.commentId }}string"10281"Confirm which comment was updated
{{ $output.updateComment.status }}string"success"Gate continuation of multi-stage workflow

Node Policies & GuardRails

Workflow Example — Living Deployment Status Comment

// Step 1 (deployment start): comment/add — create initial comment
{
  "IssueKey": "PROJ-456",
  "Body": "DEPLOYMENT STARTED — {{ $now }}\nStage: Initialising\nProgress: 0/5 steps"
}
// Store commentId: {{ $output.addComment.commentId }} → VariableAssignment

// Step 2 (at each deployment stage): comment/update
{
  "IssueKey": "PROJ-456",
  "CommentId": "{{ $vars.deploymentCommentId }}",
  "Body": "DEPLOYMENT IN PROGRESS — {{ $now }}\nStage: {{ $json.currentStage }}\nProgress: {{ $json.step }}/5 steps\n\n{{ $json.stageDetails }}"
}

// Step 3 (on completion): comment/update — final status
{
  "IssueKey": "PROJ-456",
  "CommentId": "{{ $vars.deploymentCommentId }}",
  "Body": "DEPLOYMENT COMPLETE — {{ $now }}\nVersion: {{ $json.version }}\nAll 5/5 stages successful\nHealth checks: PASSING"
}