Jira
Overview
The Jira connector enables your AI Colleagues to integrate with your organization's Jira platform, facilitating automated issue management, project tracking, and service desk workflows.
Jira is Atlassian's project management and issue tracking platform that allows teams to plan, track, and manage software development projects, IT service requests, and business workflows. The Jira connector allows Leena AI to automate issue workflows, manage projects, and interact with Jira entities seamlessly.
API Details
Leena AI integrates with Jira via REST APIs.
Documentation link: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/
Setup
The Jira connector supports two authentication methods: Basic Authentication (using API Token) and Connect App Authentication (OAuth 2.0 with user impersonation).
Prerequisites
Before setting up the Jira connector, ensure you have:
- Administrator access to your Jira Cloud instance
- Access to Atlassian Account Settings for API token generation
- Ability to manage apps in Jira (for Connect App authentication)
- Access to your Leena AI workspace with connector management permissions
Get credentials
Option 1: Basic Authentication (API Token)
Here is how to create an API token in Atlassian:
- Log in to your Atlassian Account
- Navigate to API Tokens:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Or click your profile picture > Manage Account > Security > API tokens
- Create API Token:
- Click "Create API token"
- Enter a memorable label for your token (e.g., "Leena AI Integration")
- Click "Create"
- Copy and Store Token:
- Click "Copy" to copy the token to your clipboard
- Store the token securely - it will only be shown once
- Note your Atlassian account email address for authentication
Option 2: Connect App Authentication (OAuth 2.0)
For advanced user impersonation capabilities:
- Create the Connection in Leena AI first (see Add connection section)
- Copy the Descriptor URL from Leena AI
- In Jira, go to Apps > Manage Apps
- Click "Upload app" and paste the Descriptor URL
- Install the app to receive OAuth Client ID and Shared Secret
- The credentials will be automatically populated in Leena AI
Add connection
Here is how to add a connection on Leena AI:
For Basic Authentication:
- Log in to your Leena AI workspace
- Navigate to Settings > Integrations
- Search for "Jira" and select it from the list to add its new connector
- Select "Basic Auth" as the authentication method
- Start configuring the connector:
- Site URL: Your Jira Cloud site URL (e.g., https://yourcompany.atlassian.net)
- User Email: Your Atlassian account email address
- API Token: The API token generated from Atlassian Account
- Click Save to complete the connection
For Connect App Authentication:
- Log in to your Leena AI workspace
- Navigate to Settings > Integrations
- Search for "Jira" and select it from the list to add its new connector
- Select "Connect App Auth" as the authentication method
- Start configuring the connector:
- Site URL: Your Jira Cloud site URL (e.g., https://yourcompany.atlassian.net)
- User Email: Admin user email for initial setup
- API Token: Admin API token for initial setup
- OAuth Client Id: Auto-populated after app installation in Jira
- Shared Secret: Auto-populated after app installation in Jira
- Copy the Descriptor URL and install the app in Jira
- The connection will be saved once the app is successfully installed
Actions
The following actions are supported for the Jira connector:
Issue: Create Issue
Creates a new issue in Jira. The Agent can leverage the skill (workflow), which has been designed to create a new issue in Jira, once the user raises a query to do so.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Fields | JSON object containing issue screen fields to set, specifying the sub-field and its value for each field |
Optional
Name | Description |
|---|---|
Update History | Whether to add the project to the user's Recently viewed list, options:
|
History Metadata | Additional metadata about the history entry for this operation |
Properties | List of entity properties to set on the issue, each containing:
|
Transition Id | The ID of the issue transition to undertake during creation |
Transition Looped | Whether the transition is looped |
Update | A map containing the field name and list of operations to perform on the issue screen field |
Additional Properties | Extra properties of any type to be provided to this object |
Here is a sample JSON input:
// Create a Bug Issue
{
"updateHistory": false,
"fields": {
"project": {
"key": "PROJ"
},
"issuetype": {
"name": "Bug"
},
"summary": "Login button not working on mobile",
"description": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Users are unable to click the login button on mobile devices running iOS 17."
}
]
}
]
},
"priority": {
"name": "High"
},
"assignee": {
"accountId": "5b10ac8d82e05b22cc7d4ef5"
},
"labels": ["mobile", "urgent"]
}
}
// Create a Task Issue
{
"fields": {
"project": {
"key": "TASK"
},
"issuetype": {
"name": "Task"
},
"summary": "Update documentation for API v3",
"description": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Update all API documentation to reflect the new v3 endpoints."
}
]
}
]
},
"duedate": "2025-09-15"
}
}Response
Upon successful creation, the action returns the created issue details including:
- Issue ID
- Issue Key
- Self URL
Issue: Edit Issue
Updates an existing issue in Jira. The Agent can leverage the skill (workflow), which has been designed to modify an existing issue in Jira, once the user provides the issue details to be updated. Here are some common use cases:
- Update Status: Change issue status through transitions
- Reassign Issues: Change the assignee of an issue
- Update Priority: Modify issue priority based on urgency
- Add Details: Update description, labels, or custom fields
- Link Issues: Add issue links or dependencies
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
Optional
Name | Description |
|---|---|
Notify Users | Whether to send notification email to watchers, options:
|
Override Screen Security | Whether screen security is overridden to enable hidden fields to be edited |
Override Editable Flag | Whether screen security is overridden to enable uneditable fields to be edited |
Return Issue | Whether the response should contain the issue with fields edited in this request |
Expand | The Get issue API expand parameter to use in the response if returnIssue is true |
Fields | List of issue screen fields to update, specifying the sub-field and its value |
History Metadata | Additional metadata about the history entry for this operation |
Properties | List of entity properties to set on the issue |
Transition Id | The ID of the issue transition to undertake |
Update | A map containing the field name and list of operations to perform |
Additional Properties | Extra properties of any type to be provided to this object |
Here is a sample JSON input:
// Update Issue Priority and Assignee
{
"issueIdOrKey": "PROJ-123",
"notifyUsers": true,
"fields": {
"priority": {
"name": "Highest"
},
"assignee": {
"accountId": "5b10ac8d82e05b22cc7d4ef5"
}
}
}
// Update Issue Description
{
"issueIdOrKey": "PROJ-123",
"notifyUsers": true,
"fields": {
"description": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Updated description with more details about the issue."
}
]
}
]
}
}
}
// Update Labels and Due Date
{
"issueIdOrKey": "PROJ-123",
"fields": {
"labels": ["backend", "api", "urgent"],
"duedate": "2025-10-01"
}
}Response
Upon successful update, the action returns:
- HTTP status code (204 for success without return, 200 with issue data)
- Updated issue details (if returnIssue is true)
Issue: Get Issue
Retrieves the details of a specific issue from Jira. This action can be leveraged by Leena AI Orchestrator/Agent to fetch complete information about an issue including its fields, comments, and attachments.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
Optional
Name | Description |
|---|---|
Fields | A list of fields to return for the issue, use it to retrieve a subset of fields |
Fields By Keys | Reference fields by their key rather than ID, options:
|
Expand | Use expand to include additional information about the issue in the response (e.g., renderedFields, changelog, transitions) |
Properties | A list of up to 5 issue properties to include in the results |
Update History | Whether the project is added to the user's Recently viewed project list |
Fail Fast | Whether to fail the request quickly in case of an error while loading fields |
Here is a sample JSON input:
// Get Basic Issue Details
{
"issueIdOrKey": "PROJ-123"
}
// Get Issue with Specific Fields
{
"issueIdOrKey": "PROJ-123",
"fields": ["summary", "status", "assignee", "priority", "description"],
"fieldsByKeys": false
}
// Get Issue with Expanded Data
{
"issueIdOrKey": "PROJ-123",
"expand": ["changelog", "renderedFields", "transitions"]
}Response
The action returns the issue details including:
- Issue ID and Key
- Summary (title)
- Description
- Status
- Priority
- Assignee
- Reporter
- Created and Updated timestamps
- Custom fields
- Comments (if expanded)
- Changelog (if expanded)
Issue: Search for Issues Using JQL
Searches for issues using Jira Query Language (JQL). This action enables powerful querying capabilities to find issues based on various criteria. Here are some common use cases:
- Find My Issues: Search for issues assigned to a specific user
- Sprint Planning: Find all issues in a specific sprint
- Bug Tracking: List all open bugs in a project
- Overdue Tasks: Find issues past their due date
- Status Reports: Get issues by status for reporting
Input Parameters
Here are the input parameters required to set up this action:
Optional
| Name | Description |
|---|---|
| JQL | The JQL query string to search for issues |
| Fields | A list of fields to return for each issue |
| Fields By Keys | Reference fields by their key rather than ID (default: false) |
| Max Results | The maximum number of items to return (default: 50) |
| Next Page Token | The token for fetching the next page of results |
| Expand | Use expand to include additional information about issues in the response |
| Properties | A list of up to 5 issue properties to include in the results |
| Reconcile Issues | A list of issue IDs to reconcile |
Here is a sample JSON input:
// Search for Open Bugs in a Project
{
"jql": "project = PROJ AND issuetype = Bug AND status != Done",
"maxResults": 50,
"fields": ["summary", "status", "priority", "assignee"]
}
// Search for Issues Assigned to Current User
{
"jql": "assignee = currentUser() AND status != Done ORDER BY priority DESC",
"maxResults": 25
}
// Search for Overdue Issues
{
"jql": "duedate < now() AND status != Done ORDER BY duedate ASC",
"maxResults": 100
}
// Search with Pagination
{
"jql": "project = PROJ ORDER BY created DESC",
"maxResults": 50,
"nextPageToken": "eyJhbGciOiJIUzI1NiJ9..."
}Response
The action returns a list of issues matching the JQL query, each containing:
- Issue ID and Key
- Requested fields for each issue
- Total count of matching issues
- Next page token (if more results exist)
- Names and schema information
Issue: Assign Issue
Assigns an issue to a specific user. The Agent can leverage this action to quickly reassign issues based on workload or expertise.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
| Account Id | The account ID of the user to assign |
Here is a sample JSON input:
// Assign Issue to a User
{
"issueIdOrKey": "PROJ-123",
"accountId": "5b10ac8d82e05b22cc7d4ef5"
}
// Unassign Issue (set to unassigned)
{
"issueIdOrKey": "PROJ-123",
"accountId": null
}Response
Upon successful assignment, the action returns:
- HTTP status code (204 for success)
- Confirmation of assignment change
Comment: Add Comment
Adds a comment to an existing issue. The Agent can leverage this action to add updates, notes, or communication to issues.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
| Body | The comment text in Atlassian Document Format (ADF) |
Optional
Name | Description |
|---|---|
Expand | Use expand to include additional information about comments (e.g., renderedBody for HTML) |
Properties | List of entity properties to set on the comment |
Visibility Identifier | The ID of the group or the name of the role that visibility is restricted to |
Visibility Type | Whether visibility is restricted to a group or role, options:
|
Visibility Value | The name of the group or role that visibility is restricted to |
Additional Properties | Extra properties of any type to be provided to this object |
Here is a sample JSON input:
// Add a Simple Comment
{
"issueIdOrKey": "PROJ-123",
"body": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "This issue has been reviewed and approved for development."
}
]
}
]
}
}
// Add a Comment with Restricted Visibility
{
"issueIdOrKey": "PROJ-123",
"body": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"type": "text",
"text": "Internal note: Customer has been contacted about this issue."
}
]
}
]
},
"visibility": {
"type": "role",
"value": "Administrators"
}
}Response
Upon successful creation, the action returns the created comment details including:
- Comment ID
- Author information
- Body content
- Created timestamp
- Visibility settings (if applied)
Comment: Get Comments
Retrieves comments from a specific issue. This action can be used to fetch the communication history on an issue.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
Optional
| Name | Description |
|---|---|
| Start At | The index of the first item to return (for pagination) |
| Max Results | The maximum number of comments to return |
| Order By | Order the results by a field (e.g., created, -created for descending) |
| Expand | Use expand to include additional information (e.g., renderedBody for HTML) |
Here is a sample JSON input:
// Get All Comments
{
"issueIdOrKey": "PROJ-123"
}
// Get Comments with Pagination
{
"issueIdOrKey": "PROJ-123",
"startAt": 0,
"maxResults": 20,
"orderBy": "-created"
}Response
The action returns a list of comments including:
- Comment ID
- Author information
- Body content
- Created and Updated timestamps
- Visibility settings
- Total count of comments
Attachment: Add Attachment
Adds an attachment to an existing issue. The Agent can leverage this action to attach files, screenshots, or documents to issues.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
| File Name | The name of the file to be uploaded |
| File Data (Url/Base64) | The file data as a URL or Base64 encoded string |
Here is a sample JSON input:
// Add Attachment from URL
{
"issueIdOrKey": "PROJ-123",
"fileName": "screenshot.png",
"fileData": "https://example.com/files/screenshot.png"
}
// Add Attachment from Base64
{
"issueIdOrKey": "PROJ-123",
"fileName": "error-log.txt",
"fileData": "VGhpcyBpcyBhIHNhbXBsZSBlcnJvciBsb2cgZmlsZS4="
}Response
Upon successful upload, the action returns the attachment details including:
- Attachment ID
- File name
- File size
- MIME type
- Content URL
- Author information
- Created timestamp
Attachment: Get Attachment
Downloads an attachment from Jira. This action can be used to retrieve file contents from an issue attachment.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Attachment Id | The ID of the attachment to download |
Optional
| Name | Description |
|---|---|
| Redirect | Whether a redirect is provided for the attachment download (default: true) |
Here is a sample JSON input:
// Get Attachment Content
{
"attachmentId": "10001",
"redirect": true
}
// Get Attachment Without Redirect
{
"attachmentId": "10001",
"redirect": false
}Response
The action returns:
- Base64 encoded file content
- HTTP status code
Project: Create Project
Creates a new project in Jira. The Agent can leverage this action to set up new projects for teams or initiatives.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Project Key | Unique identifier for the project (e.g., "PROJ") |
| Project Name | Display name of the project |
| Lead Account Id | Account ID of the project lead |
| Project Type Key | The type of project (e.g., software, business) |
Optional
| Name | Description |
|---|---|
| Assignee Type | The default assignee type for issues |
| Avatar Id | The ID of the project avatar |
| Category Id | The ID of the project category |
| Description | Description of the project |
| Issue Security Scheme | The ID of the issue security scheme |
| Project Template Key | The key of the project template |
| Field Configuration Scheme | The ID of the field configuration scheme |
| Issue Type Scheme | The ID of the issue type scheme |
| Issue Type Screen Scheme | The ID of the issue type screen scheme |
| Workflow Scheme | The ID of the workflow scheme |
| URL | A link to information about the project |
| Notification Scheme | The ID of the notification scheme |
| Permission Scheme | The ID of the permission scheme |
Here is a sample JSON input:
// Create a Software Project
{
"key": "NEWPROJ",
"name": "New Software Project",
"projectTypeKey": "software",
"leadAccountId": "5b10ac8d82e05b22cc7d4ef5",
"description": "A new software development project for the mobile app",
"assigneeType": "PROJECT_LEAD"
}
// Create a Business Project
{
"key": "BUSPR",
"name": "Business Operations Project",
"projectTypeKey": "business",
"leadAccountId": "5b10ac8d82e05b22cc7d4ef5"
}Response
Upon successful creation, the action returns the project details including:
- Project ID
- Project Key
- Self URL
Project: Get Project By ProjectId
Retrieves details of a specific project.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Project Id Or Key | The ID or key of the project |
Optional
| Name | Description |
|---|---|
| Expand | Use expand to include additional information about the project |
| Properties | A list of project properties to include in the results |
Here is a sample JSON input:
// Get Project Details
{
"projectIdOrKey": "PROJ"
}
// Get Project with Expanded Information
{
"projectIdOrKey": "PROJ",
"expand": ["description", "lead", "issueTypes", "projectKeys"]
}Response
The action returns the project details including:
- Project ID and Key
- Name and Description
- Lead information
- Project type
- Category
- Issue types
- Components
- Versions
Project: Get Projects Paginated
Retrieves a paginated list of projects. This action can be used to browse and search through available projects.
Input Parameters
Here are the input parameters required to set up this action:
Optional
| Name | Description |
|---|---|
| Start At | The index of the first item to return (default: 0) |
| Max Results | The maximum number of projects to return |
| Order By | The field to order results by |
| Id | Filter by project IDs |
| Keys | Filter by project keys |
| Query | Search query to filter projects by name or key |
| Type Key | Filter by project type |
| Category Id | Filter by project category |
| Action | Filter by user permission (view, browse, edit, create) |
| Expand | Use expand to include additional information |
| Status | Filter by project status |
| Properties | A list of project properties to include |
| Property Query | Query to filter projects by properties |
Here is a sample JSON input:
// Get All Projects
{
"startAt": 0,
"maxResults": 50
}
// Search Projects by Query
{
"query": "mobile",
"maxResults": 25,
"orderBy": "name"
}
// Get Projects by Type
{
"typeKey": "software",
"maxResults": 50
}Response
The action returns a paginated list of projects including:
- Project ID and Key
- Name and Description
- Project type
- Category
- Lead information
- Pagination information (total, startAt, maxResults)
Project: Delete Project
Deletes a project from Jira. Use with caution as this action may be irreversible.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Project Id Or Key | The ID or key of the project |
Optional
| Name | Description |
|---|---|
| Enable Undo | Whether to place the project in the recycle bin (if available) |
Here is a sample JSON input:
// Delete Project
{
"projectIdOrKey": "OLDPROJ"
}
// Delete Project with Undo Option
{
"projectIdOrKey": "OLDPROJ",
"enableUndo": true
}Response
Upon successful deletion, the action returns:
- HTTP status code (204 for success)
- Confirmation of deletion
Issue: Get All Issue Types
Retrieves all issue types available in the Jira instance or for a specific project.
Input Parameters
Here are the input parameters required to set up this action:
Optional
| Name | Description |
|---|---|
| Project Id | Filter issue types by project ID |
| Level | Filter by issue type level |
Here is a sample JSON input:
// Get All Issue Types
{}
// Get Issue Types for a Project
{
"projectId": "10001"
}Response
The action returns a list of issue types including:
- Issue type ID
- Name
- Description
- Icon URL
- Subtask indicator
Issue: Get Create Issue Metadata
Retrieves the metadata required to create an issue, including available fields and their configurations for a specific project and issue type.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Project Id | The ID of the project |
| Issue Type Id | The ID of the issue type |
Here is a sample JSON input:
// Get Metadata for Creating a Bug
{
"projectId": "10001",
"issueTypeId": "10002"
}Response
The action returns the create issue metadata including:
- Available fields
- Field configurations
- Required fields
- Allowed values for each field
- Field schema information
Issue: Get Edit Issue Metadata
Retrieves the metadata required to edit an issue, including available fields and their configurations.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the issue |
Optional
| Name | Description |
|---|---|
| Override Screen Security | Whether screen security is overridden to enable hidden fields |
| Override Editable Flag | Whether to allow editing of uneditable fields |
Here is a sample JSON input:
// Get Edit Metadata
{
"issueIdOrKey": "PROJ-123"
}
// Get Edit Metadata with Overrides
{
"issueIdOrKey": "PROJ-123",
"overrideScreenSecurity": true,
"overrideEditableFlag": false
}Response
The action returns the edit issue metadata including:
- Editable fields
- Field configurations
- Allowed values
- Field operations
Jira Service Desk: Create Service Request
Creates a new service request in Jira Service Management. The Agent can leverage this action to submit IT service requests, HR requests, or other service desk tickets.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Service Desk Id | The ID of the service desk where the request will be created |
| Request Type Id | The ID of the request type |
| Request Field Values | JSON object containing the field values for the service request |
Here is a sample JSON input:
// Create IT Support Request
{
"serviceDeskId": "1",
"requestTypeId": "10",
"requestFieldValues": {
"summary": "Unable to access email",
"description": "I am unable to access my email account since this morning. Getting authentication error."
}
}
// Create Hardware Request
{
"serviceDeskId": "1",
"requestTypeId": "15",
"requestFieldValues": {
"summary": "Request for new laptop",
"description": "Need a new laptop for the new team member joining next week.",
"customfield_10001": "Dell XPS 15"
}
}Response
Upon successful creation, the action returns the service request details including:
- Issue ID and Key
- Request type information
- Current status
- Created timestamp
- Reporter information
Jira Service Desk: Add Comment
Adds a comment to a service request. Comments can be marked as public (visible to customers) or internal (visible only to agents).
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the service request |
| Comment Body | The content of the comment |
Optional
| Name | Description |
|---|---|
| Public Comment | Whether the comment is visible to customers (true) or internal (false) |
| Temporary Attachment Ids | List of temporary attachment IDs to include with the comment |
Here is a sample JSON input:
// Add Public Comment
{
"issueIdOrKey": "DESK-123",
"body": "We have received your request and are working on it. You will receive an update within 24 hours.",
"public": true
}
// Add Internal Comment
{
"issueIdOrKey": "DESK-123",
"body": "Escalated to Level 2 support team. Contact: John Smith",
"public": false
}Response
Upon successful creation, the action returns the comment details including:
- Comment ID
- Author information
- Body content
- Public/Internal indicator
- Created timestamp
Jira Service Desk: Transition Issue
Transitions a service request to a new status in its workflow.
Input Parameters
Here are the input parameters required to set up this action:
Mandatory
| Name | Description |
|---|---|
| Issue Id Or Key | The ID or key of the service request |
| Id | The ID of the transition to perform |
Optional
| Name | Description |
|---|---|
| Additional Comment | Optional comment to add when transitioning the issue |
Here is a sample JSON input:
// Transition to In Progress
{
"issueIdOrKey": "DESK-123",
"id": "21"
}
// Transition with Comment
{
"issueIdOrKey": "DESK-123",
"id": "31",
"additionalComment": {
"body": "Issue resolved. Closing the ticket."
}
}Response
Upon successful transition, the action returns:
- HTTP status code
- Confirmation of transition
Updated 1 day ago
