Skip to main content

Jira Integration

Connect Plura AI with Jira to automate issue creation, status updates, work logging, and team collaboration.

Overview

The Jira integration enables your AI agents to interact with Jira’s issue tracking and project management capabilities. Create issues from conversations, update statuses, assign tasks, log work time, search for issues, and add comments—all without leaving your workflow.
Supports both API Token (Basic Auth) and OAuth 2.0 authentication methods for maximum flexibility.

Authentication

The Jira integration supports two authentication methods:

API Token (Basic Auth)

Recommended for server-to-server integrations and internal workflows. Required Parameters:
  • apiKey — Your Jira API token (Generate here)
  • email — Your Jira account email address
  • instanceUrl — Your Jira instance URL (e.g., https://your-domain.atlassian.net)

OAuth 2.0

Recommended for user-facing integrations where users authenticate with their own Jira accounts. Required Parameters:
  • userId — User identifier (instanceUrl retrieved automatically from token metadata)
For most automation use cases, API Token authentication is simpler to set up and maintain.

Available Actions

The Jira integration supports six core automation actions:
ActionDescriptionUse Case
create_issueCreate new Jira issuesLog bugs, create tasks from conversations
update_statusTransition issues between statusesMove issues through workflow stages
assign_issueAssign issues to team membersDistribute work based on conversation context
log_workLog time spent on issuesTrack work automatically from conversations
search_issuesSearch and filter issuesFind relevant issues based on criteria
add_commentAdd comments to issuesUpdate issues with conversation context

Action 1: Create Issue

Create new Jira issues with full field support including custom fields.

Supported Issue Types

  • Task — General work items
  • Bug — Software defects and issues
  • Feature — New feature requests
  • Story — User stories (Agile)

Basic Example

{
  "automationType": "jira",
  "nodeId": "jira-create-issue-001",
  "nodeParams": {
    "action": "create_issue",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "project": {
        "key": "PROJ"
      },
      "issuetype": {
        "name": "Task"
      },
      "summary": "Fix login bug",
      "description": "Users cannot log in with their email addresses"
    }
  }
}

With Priority and Assignment

{
  "automationType": "jira",
  "nodeId": "jira-create-bug-001",
  "nodeParams": {
    "action": "create_issue",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "project": {
        "key": "PROJ"
      },
      "issuetype": {
        "name": "Bug"
      },
      "summary": "Login button not responding",
      "description": "The login button does not respond when clicked on mobile devices running iOS 15.",
      "priority": {
        "name": "High"
      },
      "assignee": {
        "emailAddress": "[email protected]"
      }
    }
  }
}

OAuth Example

{
  "automationType": "jira",
  "nodeId": "jira-create-issue-oauth-001",
  "userId": "[email protected]",
  "nodeParams": {
    "action": "create_issue",
    "params": {
      "project": {
        "key": "PROJ"
      },
      "issuetype": {
        "name": "Bug"
      },
      "summary": "Application crashes on startup",
      "description": "The application crashes immediately after launching",
      "priority": {
        "name": "Highest"
      }
    }
  }
}

Required Fields

FieldTypeDescription
project.key or project.idstringProject identifier
issuetype.namestringTask, Bug, Feature, or Story
summarystringIssue title

Optional Fields

FieldTypeOptionsDescription
descriptionstringDetailed description
priority.namestringHighest, High, Medium, Low, LowestPriority level
assignee.emailAddressstringAssignee email
assignee.accountIdstringJira account ID
assignee.displayNamestringDisplay name
customFieldsobjectCustom field key-value pairs

Action 2: Update Status

Transition issues through your Jira workflow by specifying transition IDs.

Example

{
  "automationType": "jira",
  "nodeId": "jira-update-status-001",
  "nodeParams": {
    "action": "update_status",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "transitionId": "21"
    }
  }
}

Required Fields

FieldTypeDescription
issueIdstringIssue key (e.g., PROJ-123)
transitionIdstringNumeric transition ID
Finding Transition IDs: Use the Jira API /rest/api/3/issue/{issueKey}/transitions to retrieve available transitions for an issue.

Action 3: Assign Issue

Assign issues to team members by email address or account ID.

Assign by Email

{
  "automationType": "jira",
  "nodeId": "jira-assign-issue-001",
  "nodeParams": {
    "action": "assign_issue",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "assignee": {
        "emailAddress": "[email protected]"
      }
    }
  }
}

Assign by Account ID

{
  "automationType": "jira",
  "nodeId": "jira-assign-by-account-id-001",
  "nodeParams": {
    "action": "assign_issue",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "assignee": {
        "accountId": "5d5f8a8b8c8d8e8f8a8b8c8d"
      }
    }
  }
}

Required Fields

FieldTypeDescription
issueIdstringIssue key
assignee.emailAddress or assignee.accountIdstringUser identifier

Action 4: Log Work

Track time spent on issues with optional comments and start timestamps.

With Comment and Start Time

{
  "automationType": "jira",
  "nodeId": "jira-log-work-001",
  "nodeParams": {
    "action": "log_work",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "timeSpent": "2h 30m",
      "comment": "Fixed the bug and added unit tests",
      "started": "2024-01-15T10:00:00.000Z"
    }
  }
}

Minimal Example

{
  "automationType": "jira",
  "nodeId": "jira-log-work-minimal-001",
  "nodeParams": {
    "action": "log_work",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "timeSpent": "1d"
    }
  }
}

Time Format

Jira supports flexible time formats:
  • Minutes: 30m, 45m
  • Hours: 2h, 3h 30m
  • Days: 1d, 2d
  • Weeks: 1w, 2w
  • Combined: 2h 30m, 1d 4h

Required Fields

FieldTypeDescription
issueIdstringIssue key
timeSpentstringTime in Jira format

Optional Fields

FieldTypeDescription
commentstringWork log description
startedstringISO 8601 timestamp

Action 5: Search Issues

Search and filter issues using multiple criteria with pagination support.

Multiple Filters

{
  "automationType": "jira",
  "nodeId": "jira-search-issues-001",
  "nodeParams": {
    "action": "search_issues",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "status": "In Progress",
      "priority": "High",
      "project": "PROJ",
      "maxResults": 50,
      "startAt": 0
    }
  }
}

Search by Status

{
  "automationType": "jira",
  "nodeId": "jira-search-by-status-001",
  "nodeParams": {
    "action": "search_issues",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "status": "To Do",
      "maxResults": 25
    }
  }
}

Search by Assignee

{
  "automationType": "jira",
  "nodeId": "jira-search-by-assignee-001",
  "nodeParams": {
    "action": "search_issues",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "assignee": "[email protected]",
      "status": "In Progress",
      "maxResults": 50,
      "startAt": 0
    }
  }
}

Filter Options

ParameterTypeDescription
statusstringFilter by status name
prioritystringHighest, High, Medium, Low, Lowest
projectstringProject key
assigneestringEmail or account ID
reporterstringEmail or account ID
maxResultsintegerResults per page (1-100, default: 50)
startAtintegerPagination offset (default: 0)

Action 6: Add Comment

Add comments to issues with optional visibility restrictions.

Basic Comment

{
  "automationType": "jira",
  "nodeId": "jira-add-comment-001",
  "nodeParams": {
    "action": "add_comment",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "body": "This issue has been resolved in the latest release."
    }
  }
}

Comment with Visibility

{
  "automationType": "jira",
  "nodeId": "jira-add-comment-visibility-001",
  "nodeParams": {
    "action": "add_comment",
    "params": {
      "apiKey": "YOUR_JIRA_API_TOKEN",
      "email": "[email protected]",
      "instanceUrl": "https://your-domain.atlassian.net",
      "issueId": "PROJ-123",
      "body": "Internal note: This requires additional review.",
      "visibility": {
        "type": "role",
        "value": "Administrators"
      }
    }
  }
}

Required Fields

FieldTypeDescription
issueIdstringIssue key
bodystringComment text

Optional Fields

FieldTypeDescription
visibility.typestringrole or group
visibility.valuestringRole or group name

Response Format

All Jira actions return a consistent response structure:

Success Response

{
  "success": true,
  "data": {
    "id": "10001",
    "key": "PROJ-123",
    "self": "https://your-domain.atlassian.net/rest/api/3/issue/10001"
  }
}

Error Response

{
  "success": false,
  "error": "Invalid parameters provided"
}

Common Use Cases

Bug Tracking from Conversations

Automatically create bug issues when users report problems during conversations, with full context captured.

Task Assignment

Route issues to appropriate team members based on conversation analysis and expertise mapping.

Status Updates

Progress issues through workflows automatically based on conversation milestones and confirmations.

Work Time Tracking

Log time spent on issues directly from conversation interactions and agent activities.

Error Handling

Status CodeDescriptionCommon Causes
400Bad RequestInvalid parameters, missing required fields
401UnauthorizedInvalid API token or expired OAuth token
403ForbiddenInsufficient permissions for the action
404Not FoundIssue, project, or user not found
Ensure your API token or OAuth scope has the necessary permissions for the actions you want to perform. Check your Jira project permissions and user roles.

Setup Guide

1

Generate API Token

Navigate to Atlassian Account Security and create a new API token.
2

Configure Integration

In Plura, add the Jira integration with your API token, email, and instance URL.
3

Test Connection

Create a test issue to verify authentication and permissions are configured correctly.
4

Add to Workflow

Use the API Call Node to integrate Jira actions into your AI agent workflows.

Best Practices

  1. Use Issue Keys: Always reference issues by their key (e.g., PROJ-123) for consistency
  2. Validate Before Creation: Check for duplicate issues before creating new ones using search
  3. Add Context: Include relevant conversation context in issue descriptions and comments
  4. Set Priorities: Automatically set priorities based on conversation sentiment and urgency
  5. Track Updates: Use comments to maintain an audit trail of AI-driven updates

Next Steps