Fortinet black logo

JIRA v1.1.0

Copy Link
Copy Doc ID 0fd3fdb8-bba0-11ea-8b7d-00505692583a:41

About the connector

Atlassian has developed Jira as a proprietary issue tracking product. Jira provides bug tracking, issue tracking, and project management functions.

This document provides information about the Jira connector, which facilitates automated interactions, with a Jira server using FortiSOAR™ playbooks. Add the Jira connector as a step in FortiSOAR™ playbooks and perform automated operations, such as automatically creating Jira tickets and retrieving the status of an issue.

Version information

Connector Version: 1.1.0

FortiSOAR™ Version Tested on: 6.0.0-790

Jira Version Tested on: 2.1

Authored By: Fortinet

Certified: Yes

Release Notes for version 1.1.0

Following enhancements have been made to the Jira Connector in version 1.1.0:

  • Added the following new operations and playbooks:
    • Get Comments
    • Add Attachment
    • Add Remote Link
  • Removed the "Additional Search Parameters" input parameter from the List Tickets operation.

Installing the connector

From version 5.0.0 onwards, use the Connector Store to install the connector. For the detailed procedure to install a connector, click here.
You can also use the yum command to install connectors. Connectors provided by FortiSOAR™ are delivered using a FortiSOAR™ repository. Therefore, you must set up your FortiSOAR™ repository and run the yum command as a root user to install connectors:

yum install cyops-connector-jira

Prerequisites to configuring the connector

  • You must have the URL and credentials (username-API token pair) to access a Jira server from where the connector will get notifications.
  • You must also have the credentials of a user, who has a right to configure WebHooks on the Jira server.
  • You must configure and enable the Jira WebHook. See the Configuring the Jira WebHook section.
  • To access the FortiSOAR™ UI, ensure that port 443 is open through the firewall for the FortiSOAR™ instance.

Configuring the connector

For the procedure to configure a connector, click here.

Configuration parameters

In FortiSOAR™, on the Connectors page, click the Jira connector row (if you are in the Grid view on the Connectors page) and in the Configurations tab enter the required configuration details:

Parameter Description
Server URL URL for the Jira server from where the connector gets notifications.
Username Username configured for your account to access the Jira server from where the connector gets notifications.
API Token API Token configured for your account to access the Jira server from where the connector gets notifications.
Verify SSL Specifies whether the SSL certificate for the server is to be verified or not.
Defaults to True.

Configuring the Jira WebHook

On the Jira server where the connector connects, enable the Get Notification from JiraWebHook, so that Jira can forward activities to FortiSOAR™. The Jira WebHook pushes configured activities to FortiSOAR™.

Note: Refer to Jira documentation for the detailed procedure for adding and enabling WebHooks.

  1. To enable the Get Notification from Jira WebHook:
  2. Open the Jira server where you have connected the Jira connector.
  3. To add a WebHook, click Settings > System > Advanced > WebHooks > Add WebHooks.
  4. In the URL field, enter the FortiSOAR™ Playbooks API Trigger URL of the server for the WebHook.
    URLs are in the format: <IP Address of the FortiSOAR instance>/api/triggers/1/deferred/<name of the action trigger given by the user>
  5. Ensure that the Status is Enabled.
  6. Configure other parameters as required.
  7. Click Save.

The following image displays a configured Jira WebHook:

Screenshot of a configured Jira WebHook

Actions supported by the connector

The following automated operations can be included in playbooks and you can also use the annotations to access operations from version 4.10.0 onwards:

Function Description Annotation and Category
Create Ticket Creates a Jira ticket on your configured Jira server based on the project key, ticket summary, type, and description, and other input parameters you have specified. create_ticket
Investigation
Get Ticket Information Retrieves details for a particular Jira ticket from the Jira server based on the ticket ID you have specified. get_ticket_information
Investigation
List Projects Retrieves a list and details of all projects from your configured Jira server. list_projects
Investigation
List Tickets Retrieves a list and details of tickets associated with a project from your configured Jira server, based on the project key and other input parameters you have specified. list_tickets
Investigation
Add Comment Adds a comment to an existing Jira ticket on your configured Jira server based on the ticket ID and comment you have specified. add_comments
Investigation
Set Ticket Status Updates the status of an existing Jira ticket on your configured Jira server based on the ticket ID and status you have specified. set_status
Investigation
Update Ticket Updates an existing Jira ticket on your configured Jira server based on the project key, ticket ID and other input parameters you have specified. update_ticket
Investigation
Update FortiSOAR Record Updates a FortiSOAR record with information on an existing Jira ticket based on the ticket ID and other input parameters you have specified. update_fortisoar_record
Investigation
Delete Ticket Deletes a ticket from your configured Jira server based on the ticket ID and other input parameters you have specified. delete_ticket
Investigation
Get Comments Retrieves a list of comments associated with an existing Jira ticket on your configured Jira server based on the ticket ID and other input parameters you have specified. get_comments
Investigation
Add Attachment Attaches a file that is present in FortiSOAR™ to an existing Jira ticket on your configured Jira server based on the ticket ID and FortiSOAR™ file or attachment IRI you have specified. submit_file
Investigation
Add Remote Link Adds a remote link of an issue to an existing ticket in Jira based on the ticket ID, URL, and title you have specified. add_remote_link
Investigation

operation: Create Ticket

Input parameters

For information on the Create issue method, see https://docs.atlassian.com/software/jira/docs/api/REST/7.1.0-m01/#api/2/issue-createIssue.

Parameter Description
Project Key Unique project ID that represents the project under which you want to create the Jira ticket.
Ticket Summary Summary or heading of the ticket that you want to create on your configured Jira server.
Ticket Description Description of the ticket that you want to create on your configured Jira server.
Ticket Type Type of ticket that you want to create on your configured Jira server.
You can add one of the following ticket types: IT Help, Service Request, Service Request with Approvals, Task, or Sub-task.
Priority (Optional) Priority that you want to set for the Jira ticket that you want to update on your configured Jira server.
You can add one of the following priorities: Highest, High, Medium, Low, or Lowest.
Other Fields (Optional) Fields such as Reporter, Assignee, Components that you need to set while creating a ticket.
For example: {"reporter": {"name":"admin"}, "assignee":{"name":"admin"}, "components":[{"name":"Intranet"}]}

Output

The JSON output contains the ID of the Jira ticket created on your configured Jira server.

The output contains the following populated JSON schema:
{
"self": "",
"key": "",
"status": "",
"id": ""
}

operation: Get Ticket Information

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID whose information you want to retrieve from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.

Output

A JSON output contains the details of the ticket, including the updated status of the Jira ticket, retrieved from your configured Jira server, based on the ticket ID that you have specified.

The output contains the following populated JSON schema:
{
"self": "",
"key": "",
"fields": {
"resolution": "",
"timetracking": {},
"customfield_10126": "",
"project": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"projectTypeKey": "",
"key": "",
"name": "",
"id": ""
},
"aggregatetimeestimate": "",
"resolutiondate": "",
"customfield_10102": "",
"customfield_10111": "",
"customfield_10125": "",
"priority": {
"self": "",
"name": "",
"id": "",
"iconUrl": ""
},
"customfield_10140": "",
"security": "",
"customfield_10122": "",
"timeestimate": "",
"subtasks": [],
"customfield_10139": {
"completedCycles": [
{
"startTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"stopTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
}
}
],
"_links": {
"self": ""
},
"name": "",
"id": ""
},
"customfield_10123": "",
"customfield_10141": "",
"customfield_10131": "",
"customfield_10101": "",
"aggregatetimespent": "",
"issuelinks": [],
"customfield_10114": "",
"customfield_10001": [],
"customfield_10110": "",
"customfield_10116": "",
"timespent": "",
"customfield_10200": "",
"created": "",
"issuetype": {
"self": "",
"description": "",
"avatarId": "",
"name": "",
"id": "",
"subtask": "",
"iconUrl": ""
},
"customfield_10128": "",
"attachment": [],
"fixVersions": [],
"customfield_10130": "",
"customfield_10115": [],
"timeoriginalestimate": "",
"customfield_10100": "",
"labels": [],
"updated": "",
"customfield_10105": "",
"customfield_10121": "",
"customfield_10117": "",
"assignee": "",
"workratio": "",
"customfield_10104": "",
"customfield_10112": "",
"customfield_10133": "",
"summary": "",
"customfield_10120": "",
"lastViewed": "",
"customfield_10129": "",
"customfield_10137": "",
"worklog": {
"worklogs": [],
"total": "",
"maxResults": "",
"startAt": ""
},
"customfield_10119": [],
"environment": "",
"votes": {
"self": "",
"hasVoted": "",
"votes": ""
},
"customfield_10000": "{}",
"description": "",
"creator": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10138": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"aggregateprogress": {
"total": "",
"progress": ""
},
"customfield_10134": "",
"customfield_10118": "",
"customfield_10127": "",
"customfield_10132": "",
"progress": {
"total": "",
"progress": ""
},
"aggregatetimeoriginalestimate": "",
"customfield_10107": "",
"customfield_10106": "",
"versions": [],
"reporter": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10136": "",
"status": {
"self": "",
"description": "",
"iconUrl": "",
"name": "",
"statusCategory": {
"self": "",
"key": "",
"colorName": "",
"name": "",
"id": ""
},
"id": ""
},
"components": [],
"comment": {
"comments": [
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
}
],
"total": "",
"maxResults": "",
"startAt": ""
},
"watches": {
"self": "",
"watchCount": "",
"isWatching": ""
},
"customfield_10108": "",
"customfield_10124": "",
"customfield_10135": "",
"customfield_10113": "",
"customfield_10103": "",
"duedate": "",
"customfield_10005": "",
"customfield_10109": ""
},
"expand": "",
"id": ""
}

operation: List Projects

Input parameters

None

Output

A JSON output contains a list and details of all projects retrieved from your configured Jira server

The output contains the following populated JSON schema:
{
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"properties": {},
"expand": "",
"isPrivate": "",
"projectTypeKey": "",
"simplified": "",
"key": "",
"style": "",
"name": "",
"id": ""
}

operation: List Tickets

Input parameters

For information on the searching for Jira issues, see https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/#searching-for-issues-examples and https://confluence.atlassian.com/jiracore/blog/2015/07/search-jira-like-a-boss-with-jql.

Parameter Description
Project Key Unique project ID that represents the project for which you want to retrieve the list and details of Jira tickets from your configured Jira server.
Start At (Optional) Starting index for retrieving tickets from Jira.
By default, this is set to 0.
Max Results (Optional) Maximum number of tickets that this operation should return.
By default, this is set to 50.
Status (Optional) Status based on which you want to retrieve the list and details of Jira tickets.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.
Fields (Optional) Fields such as, Id, Key, Status, Priority, and Reporter are different types of information in the system that you can choose to be included and displayed in the output.
For example: ["id","key","status","priority"]

Output

A JSON output contains a list and details of tickets associated with a project retrieved from your configured Jira server, based on the project key you have specified.

The output contains the following populated JSON schema:
{
"total": "",
"issues": [
{
"self": "",
"key": "",
"fields": {
"resolution": "",
"customfield_10126": "",
"project": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"projectTypeKey": "",
"key": "",
"name": "",
"id": ""
},
"aggregatetimeestimate": "",
"resolutiondate": "",
"customfield_10122": "",
"customfield_10102": "",
"customfield_10111": "",
"customfield_10125": "",
"priority": {
"self": "",
"name": "",
"id": "",
"iconUrl": ""
},
"description": "",
"security": "",
"components": [],
"customfield_10118": "",
"subtasks": [],
"customfield_10107": "",
"customfield_10114": "",
"customfield_10141": "",
"customfield_10139": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"customfield_10101": "",
"workratio": "",
"issuelinks": [],
"customfield_10115": [],
"customfield_10001": [],
"customfield_10110": "",
"aggregatetimeoriginalestimate": "",
"timespent": "",
"customfield_10200": "",
"created": "",
"issuetype": {
"self": "",
"description": ".",
"avatarId": "",
"name": "",
"id": "",
"subtask": "",
"iconUrl": ""
},
"customfield_10128": "",
"updated": "",
"customfield_10131": "",
"customfield_10130": "",
"customfield_10005": "",
"timeoriginalestimate": "",
"customfield_10100": "",
"customfield_10116": "",
"labels": [],
"timeestimate": "",
"customfield_10117": "",
"assignee": "",
"aggregatetimespent": "",
"customfield_10104": "",
"customfield_10112": "",
"customfield_10133": "",
"customfield_10135": "",
"summary": "",
"customfield_10120": "",
"customfield_10123": "",
"customfield_10129": "",
"customfield_10119": [],
"environment": "",
"votes": {
"self": "",
"hasVoted": "",
"votes": ""
},
"customfield_10000": "{}",
"customfield_10105": "",
"creator": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10138": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"fixVersions": [],
"customfield_10134": "",
"customfield_10137": "",
"customfield_10127": "",
"customfield_10132": "",
"progress": {
"total": "",
"progress": ""
},
"customfield_10140": "",
"customfield_10106": "",
"versions": [],
"status": {
"self": "",
"description": "",
"statusCategory": {
"self": "",
"key": "",
"colorName": "",
"name": "",
"id": ""
},
"name": "",
"id": "",
"iconUrl": ""
},
"customfield_10136": "",
"aggregateprogress": {
"total": "",
"progress": ""
},
"watches": {
"self": "",
"watchCount": "",
"isWatching": ""
},
"customfield_10108": "",
"reporter": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"lastViewed": "",
"customfield_10113": "",
"customfield_10103": "",
"duedate": "",
"customfield_10121": "",
"customfield_10124": "",
"customfield_10109": ""
},
"expand": "",
"id": ""
}
],
"expand": "",
"maxResults": "",
"startAt": ""
}

operation: Add Comment

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket to which you want to add a comment.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Comment Comment that you want to add to an existing Jira ticket.

Output

A JSON output contains the details of the ticket, including the comment that you have added to the Jira ticket, retrieved from your configured Jira server, based on the ticket ID that you have specified.

The output contains the following populated JSON schema:
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
}

operation: Set Ticket Status

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket whose status you want to set.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Status Status that you want to set for an existing Jira ticket.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.

Output

The JSON output returns a Success message if the status that you have specified is successfully updated for the Jira ticket that you have specified on your configured Jira server.

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Update Ticket

For information on the Edit issue method, see https://docs.atlassian.com/software/jira/docs/api/REST/7.1.0-m01/#api/2/issue-editIssue.

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID that you want to update on your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Project Key Unique project ID that represents the project that contains the Jira ticket that you want to update on your configured Jira server.
Summary Summary or heading of the Jira ticket that you want to update on your configured Jira server.
Comment Comment that you want to add to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
Priority Priority that you want to set for the Jira ticket that you want to update on your configured Jira server.
You can add one of the following priorities: Highest, High, Medium, Low, or Lowest.
Description (Optional) Description that you want to add to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
Status (Optional) Status that you want to set to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.
Other Fields (Optional) Fields such as Reporter, Assignee, Components that you need to set while updating a ticket.
For example: {"components":[{"name":"JIRA"}]}

Output

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Update FortiSOAR Record

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket that you want to update in FortiSOAR™.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
FortiSOAR Username Username configured for the FortiSOAR™ instance where you want to update the Jira ticket.
FortiSOAR Password Password configured for the FortiSOAR™ instance where you want to update the Jira ticket.

Output

The JSON output contains the fields of the Incident record in FortiSOAR™ which is updated with the Jira ticket details.

The output contains the following populated JSON schema:
{
"description": "",
"jiraStatus": "",
"jiraPriority": "",
"@id": "",
"name": "",
"jiraComment": ""
}

operation: Delete Ticket

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket that you want to delete from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Delete Subtasks Select this option, i.e., set it to true to delete subtasks associated with the Jira ticket. If the ticket has subtasks then you must select this option so that the ticket can be successfully deleted from your configured Jira server.

Output

The JSON output returns a Success message if the Jira ticket that you have specified is successfully deleted from your configured Jira server.

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Get Comments

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID whose associated comments you want to retrieve from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Start At (Optional) Starting index for retrieving tickets whose comments you want to retrieve from Jira.
By default, this is set to 0.
Max Results (Optional) Maximum number of tickets that this operation should return.
By default, this is set to 50.
Order By (Optional)Sort results retrieved by this operation in this direction. You can choose one of the following: Ascending or Descending.

Output

The output contains the following populated JSON schema:
{
"startAt": "",
"maxResults": "",
"total": "",
"comments": [
{
"self": "",
"id": "",
"author": {
"self": "",
"id": "",
"accountId": "",
"emailAddress": "",
"avatarUrls": {
"48x48": "",
"24x24": "",
"16x16": "",
"32x32": ""
},
"displayName": "",
"active": "",
"timeZone": "",
"accountType": ""
},
"body": "",
"updateAuthor": {
"self": "",
"id": "",
"accountId": "",
"emailAddress": "",
"avatarUrls": {
"48x48": "",
"24x24": "",
"16x16": "",
"32x32": ""
},
"displayName": "",
"active": "",
"timeZone": "",
"accountType": ""
},
"created": "",
"updated": "",
"jsdPublic": ""
}
]
}

operation: Add Attachment

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID to which you want to attach the FortiSOAR™ file.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
FortiSOAR File/Attachment IRI File that is present in FortiSOAR™ or the FortiSOAR™ Attachment IRI of the file that you want to add as an attachment to the specified Jira ticket.

Output

The output contains the following populated JSON schema:
{
"data": [
{
"id": "",
"self": "",
"size": "",
"author": {
"id": "",
"self": "",
"active": "",
"timeZone": "",
"accountId": "",
"avatarUrls": {
"16x16": "",
"24x24": "",
"32x32": "",
"48x48": ""
},
"accountType": "",
"displayName": "",
"emailAddress": ""
},
"content": "",
"created": "",
"filename": ""
}
],
"status": "",
"_status": "",
"message": "",
"operation": "",
"request_id": ""
}

operation: Add Remote Link

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID to which you want to add the remote link.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
URL URL of the issue that you want to add to the specified Jira ticket.
Title Title that you want to add for the specified issue that you are adding to the Jira ticket.

Output

The output contains the following populated JSON schema:
{
"self": "",
"id": ""
}

Included playbooks

The Sample - Jira - 1.1.0 playbook collection comes bundled with the Jira connector. This playbook contains steps using which you can perform all supported actions. You can see the bundled playbooks in the Automation > Playbooks section in FortiSOAR™ after importing the Jira connector.

  • Add Attachment
  • Add Comment
  • Add Remote Link
  • Create Ticket
  • Delete Ticket
  • Get Comments
  • Get Ticket Information
  • List Projects
  • List Tickets
  • Set Ticket Status
  • Update FortiSOAR Record
    Prerequisite: Update FortiSOAR™ modules. See the Updating the FortiSOAR™ Modules section.
  • Update Ticket
    Prerequisite: Update FortiSOAR™ modules. See the Updating the FortiSOAR™ Modules section.

Note: If you are planning to use any of the sample playbooks in your environment, ensure that you clone those playbooks and move them to a different collection since the sample playbook collection gets deleted during the connector upgrade and delete.

Updating the FortiSOAR™ Modules

Note: This procedure is optional, and it enables bidirectional update of Jira tickets and you must perform this procedure for the Update CyOPs Record and Update Ticket playbooks to work correctly.

This procedure also assumes that you are using FortiSOAR™ version 4.11. If you are using a different version of FortiSOAR™, such as FortiSOAR™ 4.9, then it is possible that the FortiSOAR™ UI navigation is different. Refer to the FortiSOAR™ documentation of that particular version for details about FortiSOAR™ navigation.

When a Jira ticket is mapped to a FortiSOAR™ incident, the Priority and the Status of the Jira ticket can be mapped into the equivalent fields in the FortiSOAR™ modules. Perform the following steps to add the JiraPriority and JiraStatus fields to the FortiSOAR™ Incidents module:

  1. Log on to FortiSOAR™ as an administrator.
  2. Open the Picklist Editor and create a picklist named JiraPriority. To open the Picklist Editor, click Settings and in the Application Editor section, and click Picklists:
    1. On the Picklists page, in the Title field, type JiraPriority.
    2. Add priorities in the following order: Highest, High, Medium, Low and Lowest.
    3. (Optional) Clear the Assign colors checkbox, if it is checked.
      Adding a JiraPriority picklist
    4. Click Save.
  3. Create another picklist named JiraStatus as follows:
    1. In the Title field, type JiraStatus.
    2. Add statuses in the following order: Pending, Start progress, Mark as Done, Back to open, Reopen issue, Respond to customer, Resolve this issue, Escalate this issue, Cancel request, In progress, Escalate, Back to in progress, Close, Respond to support, and Waiting for approval.
    3. (Optional) Clear the Assign colors checkbox, if it is checked.
      Adding a JiraStatus picklist
    4. Click Save.
  4. Update the Incidents Module as follows:
    Important: For bidirectional updates to work you must map the JiraPriority and JiraStatusfields.
    1. Open the Module Editor by clicking Settings and then click Modules in the Application Editor section.
    2. On the Modules page, from the Select a module to edit or create a new module drop-down list, select Incidents.
    3. Click the Fields Editor tab.
    4. To add the JiraPriority picklist to the Incidents module, click the + (Add Field) icon and add a new field with the following properties:
      In the Field Type field, select Picklist.
      From the Picklist drop-down list, select JiraPriority.
      In the Name field, type jiraPriority.
      In the Singular Name field, type Jira Priority.
      Updating Incidents module with JiraPriority picklist
      Click Apply.
    5. To add the JiraStatus picklist to the Incidents module, click the + (Add Field) icon and add a new field with the following properties:
      In the Field Type field, select Picklist.
      From the Picklist drop-down list, select JiraStatus.
      In the Name field, type jiraStatus.
      In the Singular Name field, type Jira Status.
      Updating Incidents module with JiraStatus picklist
      Click Apply and Save.
  5. Once you have completed updating all the FortiSOAR™ modules, you must publish the module to enforce the changes. Click Publish All Modules and click OK to publish the modules.
Previous
Next

About the connector

Atlassian has developed Jira as a proprietary issue tracking product. Jira provides bug tracking, issue tracking, and project management functions.

This document provides information about the Jira connector, which facilitates automated interactions, with a Jira server using FortiSOAR™ playbooks. Add the Jira connector as a step in FortiSOAR™ playbooks and perform automated operations, such as automatically creating Jira tickets and retrieving the status of an issue.

Version information

Connector Version: 1.1.0

FortiSOAR™ Version Tested on: 6.0.0-790

Jira Version Tested on: 2.1

Authored By: Fortinet

Certified: Yes

Release Notes for version 1.1.0

Following enhancements have been made to the Jira Connector in version 1.1.0:

Installing the connector

From version 5.0.0 onwards, use the Connector Store to install the connector. For the detailed procedure to install a connector, click here.
You can also use the yum command to install connectors. Connectors provided by FortiSOAR™ are delivered using a FortiSOAR™ repository. Therefore, you must set up your FortiSOAR™ repository and run the yum command as a root user to install connectors:

yum install cyops-connector-jira

Prerequisites to configuring the connector

Configuring the connector

For the procedure to configure a connector, click here.

Configuration parameters

In FortiSOAR™, on the Connectors page, click the Jira connector row (if you are in the Grid view on the Connectors page) and in the Configurations tab enter the required configuration details:

Parameter Description
Server URL URL for the Jira server from where the connector gets notifications.
Username Username configured for your account to access the Jira server from where the connector gets notifications.
API Token API Token configured for your account to access the Jira server from where the connector gets notifications.
Verify SSL Specifies whether the SSL certificate for the server is to be verified or not.
Defaults to True.

Configuring the Jira WebHook

On the Jira server where the connector connects, enable the Get Notification from JiraWebHook, so that Jira can forward activities to FortiSOAR™. The Jira WebHook pushes configured activities to FortiSOAR™.

Note: Refer to Jira documentation for the detailed procedure for adding and enabling WebHooks.

  1. To enable the Get Notification from Jira WebHook:
  2. Open the Jira server where you have connected the Jira connector.
  3. To add a WebHook, click Settings > System > Advanced > WebHooks > Add WebHooks.
  4. In the URL field, enter the FortiSOAR™ Playbooks API Trigger URL of the server for the WebHook.
    URLs are in the format: <IP Address of the FortiSOAR instance>/api/triggers/1/deferred/<name of the action trigger given by the user>
  5. Ensure that the Status is Enabled.
  6. Configure other parameters as required.
  7. Click Save.

The following image displays a configured Jira WebHook:

Screenshot of a configured Jira WebHook

Actions supported by the connector

The following automated operations can be included in playbooks and you can also use the annotations to access operations from version 4.10.0 onwards:

Function Description Annotation and Category
Create Ticket Creates a Jira ticket on your configured Jira server based on the project key, ticket summary, type, and description, and other input parameters you have specified. create_ticket
Investigation
Get Ticket Information Retrieves details for a particular Jira ticket from the Jira server based on the ticket ID you have specified. get_ticket_information
Investigation
List Projects Retrieves a list and details of all projects from your configured Jira server. list_projects
Investigation
List Tickets Retrieves a list and details of tickets associated with a project from your configured Jira server, based on the project key and other input parameters you have specified. list_tickets
Investigation
Add Comment Adds a comment to an existing Jira ticket on your configured Jira server based on the ticket ID and comment you have specified. add_comments
Investigation
Set Ticket Status Updates the status of an existing Jira ticket on your configured Jira server based on the ticket ID and status you have specified. set_status
Investigation
Update Ticket Updates an existing Jira ticket on your configured Jira server based on the project key, ticket ID and other input parameters you have specified. update_ticket
Investigation
Update FortiSOAR Record Updates a FortiSOAR record with information on an existing Jira ticket based on the ticket ID and other input parameters you have specified. update_fortisoar_record
Investigation
Delete Ticket Deletes a ticket from your configured Jira server based on the ticket ID and other input parameters you have specified. delete_ticket
Investigation
Get Comments Retrieves a list of comments associated with an existing Jira ticket on your configured Jira server based on the ticket ID and other input parameters you have specified. get_comments
Investigation
Add Attachment Attaches a file that is present in FortiSOAR™ to an existing Jira ticket on your configured Jira server based on the ticket ID and FortiSOAR™ file or attachment IRI you have specified. submit_file
Investigation
Add Remote Link Adds a remote link of an issue to an existing ticket in Jira based on the ticket ID, URL, and title you have specified. add_remote_link
Investigation

operation: Create Ticket

Input parameters

For information on the Create issue method, see https://docs.atlassian.com/software/jira/docs/api/REST/7.1.0-m01/#api/2/issue-createIssue.

Parameter Description
Project Key Unique project ID that represents the project under which you want to create the Jira ticket.
Ticket Summary Summary or heading of the ticket that you want to create on your configured Jira server.
Ticket Description Description of the ticket that you want to create on your configured Jira server.
Ticket Type Type of ticket that you want to create on your configured Jira server.
You can add one of the following ticket types: IT Help, Service Request, Service Request with Approvals, Task, or Sub-task.
Priority (Optional) Priority that you want to set for the Jira ticket that you want to update on your configured Jira server.
You can add one of the following priorities: Highest, High, Medium, Low, or Lowest.
Other Fields (Optional) Fields such as Reporter, Assignee, Components that you need to set while creating a ticket.
For example: {"reporter": {"name":"admin"}, "assignee":{"name":"admin"}, "components":[{"name":"Intranet"}]}

Output

The JSON output contains the ID of the Jira ticket created on your configured Jira server.

The output contains the following populated JSON schema:
{
"self": "",
"key": "",
"status": "",
"id": ""
}

operation: Get Ticket Information

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID whose information you want to retrieve from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.

Output

A JSON output contains the details of the ticket, including the updated status of the Jira ticket, retrieved from your configured Jira server, based on the ticket ID that you have specified.

The output contains the following populated JSON schema:
{
"self": "",
"key": "",
"fields": {
"resolution": "",
"timetracking": {},
"customfield_10126": "",
"project": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"projectTypeKey": "",
"key": "",
"name": "",
"id": ""
},
"aggregatetimeestimate": "",
"resolutiondate": "",
"customfield_10102": "",
"customfield_10111": "",
"customfield_10125": "",
"priority": {
"self": "",
"name": "",
"id": "",
"iconUrl": ""
},
"customfield_10140": "",
"security": "",
"customfield_10122": "",
"timeestimate": "",
"subtasks": [],
"customfield_10139": {
"completedCycles": [
{
"startTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"stopTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
}
}
],
"_links": {
"self": ""
},
"name": "",
"id": ""
},
"customfield_10123": "",
"customfield_10141": "",
"customfield_10131": "",
"customfield_10101": "",
"aggregatetimespent": "",
"issuelinks": [],
"customfield_10114": "",
"customfield_10001": [],
"customfield_10110": "",
"customfield_10116": "",
"timespent": "",
"customfield_10200": "",
"created": "",
"issuetype": {
"self": "",
"description": "",
"avatarId": "",
"name": "",
"id": "",
"subtask": "",
"iconUrl": ""
},
"customfield_10128": "",
"attachment": [],
"fixVersions": [],
"customfield_10130": "",
"customfield_10115": [],
"timeoriginalestimate": "",
"customfield_10100": "",
"labels": [],
"updated": "",
"customfield_10105": "",
"customfield_10121": "",
"customfield_10117": "",
"assignee": "",
"workratio": "",
"customfield_10104": "",
"customfield_10112": "",
"customfield_10133": "",
"summary": "",
"customfield_10120": "",
"lastViewed": "",
"customfield_10129": "",
"customfield_10137": "",
"worklog": {
"worklogs": [],
"total": "",
"maxResults": "",
"startAt": ""
},
"customfield_10119": [],
"environment": "",
"votes": {
"self": "",
"hasVoted": "",
"votes": ""
},
"customfield_10000": "{}",
"description": "",
"creator": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10138": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"epochMillis": "",
"jira": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"aggregateprogress": {
"total": "",
"progress": ""
},
"customfield_10134": "",
"customfield_10118": "",
"customfield_10127": "",
"customfield_10132": "",
"progress": {
"total": "",
"progress": ""
},
"aggregatetimeoriginalestimate": "",
"customfield_10107": "",
"customfield_10106": "",
"versions": [],
"reporter": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10136": "",
"status": {
"self": "",
"description": "",
"iconUrl": "",
"name": "",
"statusCategory": {
"self": "",
"key": "",
"colorName": "",
"name": "",
"id": ""
},
"id": ""
},
"components": [],
"comment": {
"comments": [
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
},
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
}
],
"total": "",
"maxResults": "",
"startAt": ""
},
"watches": {
"self": "",
"watchCount": "",
"isWatching": ""
},
"customfield_10108": "",
"customfield_10124": "",
"customfield_10135": "",
"customfield_10113": "",
"customfield_10103": "",
"duedate": "",
"customfield_10005": "",
"customfield_10109": ""
},
"expand": "",
"id": ""
}

operation: List Projects

Input parameters

None

Output

A JSON output contains a list and details of all projects retrieved from your configured Jira server

The output contains the following populated JSON schema:
{
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"properties": {},
"expand": "",
"isPrivate": "",
"projectTypeKey": "",
"simplified": "",
"key": "",
"style": "",
"name": "",
"id": ""
}

operation: List Tickets

Input parameters

For information on the searching for Jira issues, see https://developer.atlassian.com/server/jira/platform/jira-rest-api-examples/#searching-for-issues-examples and https://confluence.atlassian.com/jiracore/blog/2015/07/search-jira-like-a-boss-with-jql.

Parameter Description
Project Key Unique project ID that represents the project for which you want to retrieve the list and details of Jira tickets from your configured Jira server.
Start At (Optional) Starting index for retrieving tickets from Jira.
By default, this is set to 0.
Max Results (Optional) Maximum number of tickets that this operation should return.
By default, this is set to 50.
Status (Optional) Status based on which you want to retrieve the list and details of Jira tickets.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.
Fields (Optional) Fields such as, Id, Key, Status, Priority, and Reporter are different types of information in the system that you can choose to be included and displayed in the output.
For example: ["id","key","status","priority"]

Output

A JSON output contains a list and details of tickets associated with a project retrieved from your configured Jira server, based on the project key you have specified.

The output contains the following populated JSON schema:
{
"total": "",
"issues": [
{
"self": "",
"key": "",
"fields": {
"resolution": "",
"customfield_10126": "",
"project": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"projectTypeKey": "",
"key": "",
"name": "",
"id": ""
},
"aggregatetimeestimate": "",
"resolutiondate": "",
"customfield_10122": "",
"customfield_10102": "",
"customfield_10111": "",
"customfield_10125": "",
"priority": {
"self": "",
"name": "",
"id": "",
"iconUrl": ""
},
"description": "",
"security": "",
"components": [],
"customfield_10118": "",
"subtasks": [],
"customfield_10107": "",
"customfield_10114": "",
"customfield_10141": "",
"customfield_10139": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"customfield_10101": "",
"workratio": "",
"issuelinks": [],
"customfield_10115": [],
"customfield_10001": [],
"customfield_10110": "",
"aggregatetimeoriginalestimate": "",
"timespent": "",
"customfield_10200": "",
"created": "",
"issuetype": {
"self": "",
"description": ".",
"avatarId": "",
"name": "",
"id": "",
"subtask": "",
"iconUrl": ""
},
"customfield_10128": "",
"updated": "",
"customfield_10131": "",
"customfield_10130": "",
"customfield_10005": "",
"timeoriginalestimate": "",
"customfield_10100": "",
"customfield_10116": "",
"labels": [],
"timeestimate": "",
"customfield_10117": "",
"assignee": "",
"aggregatetimespent": "",
"customfield_10104": "",
"customfield_10112": "",
"customfield_10133": "",
"customfield_10135": "",
"summary": "",
"customfield_10120": "",
"customfield_10123": "",
"customfield_10129": "",
"customfield_10119": [],
"environment": "",
"votes": {
"self": "",
"hasVoted": "",
"votes": ""
},
"customfield_10000": "{}",
"customfield_10105": "",
"creator": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"customfield_10138": {
"completedCycles": [],
"_links": {
"self": ""
},
"name": "",
"id": "",
"ongoingCycle": {
"breachTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"startTime": {
"jira": "",
"epochMillis": "",
"friendly": "",
"iso8601": ""
},
"goalDuration": {
"friendly": "",
"millis": ""
},
"paused": "",
"elapsedTime": {
"friendly": "",
"millis": ""
},
"remainingTime": {
"friendly": "",
"millis": ""
},
"breached": "",
"withinCalendarHours": ""
}
},
"fixVersions": [],
"customfield_10134": "",
"customfield_10137": "",
"customfield_10127": "",
"customfield_10132": "",
"progress": {
"total": "",
"progress": ""
},
"customfield_10140": "",
"customfield_10106": "",
"versions": [],
"status": {
"self": "",
"description": "",
"statusCategory": {
"self": "",
"key": "",
"colorName": "",
"name": "",
"id": ""
},
"name": "",
"id": "",
"iconUrl": ""
},
"customfield_10136": "",
"aggregateprogress": {
"total": "",
"progress": ""
},
"watches": {
"self": "",
"watchCount": "",
"isWatching": ""
},
"customfield_10108": "",
"reporter": {
"self": "",
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"lastViewed": "",
"customfield_10113": "",
"customfield_10103": "",
"duedate": "",
"customfield_10121": "",
"customfield_10124": "",
"customfield_10109": ""
},
"expand": "",
"id": ""
}
],
"expand": "",
"maxResults": "",
"startAt": ""
}

operation: Add Comment

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket to which you want to add a comment.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Comment Comment that you want to add to an existing Jira ticket.

Output

A JSON output contains the details of the ticket, including the comment that you have added to the Jira ticket, retrieved from your configured Jira server, based on the ticket ID that you have specified.

The output contains the following populated JSON schema:
{
"self": "",
"updated": "",
"updateAuthor": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"body": "",
"created": "",
"author": {
"avatarUrls": {
"24x24": "",
"48x48": "",
"32x32": "",
"16x16": ""
},
"self": "",
"active": "",
"displayName": "",
"emailAddress": "",
"timeZone": "",
"key": "",
"name": "",
"accountId": ""
},
"id": ""
}

operation: Set Ticket Status

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket whose status you want to set.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Status Status that you want to set for an existing Jira ticket.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.

Output

The JSON output returns a Success message if the status that you have specified is successfully updated for the Jira ticket that you have specified on your configured Jira server.

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Update Ticket

For information on the Edit issue method, see https://docs.atlassian.com/software/jira/docs/api/REST/7.1.0-m01/#api/2/issue-editIssue.

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID that you want to update on your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Project Key Unique project ID that represents the project that contains the Jira ticket that you want to update on your configured Jira server.
Summary Summary or heading of the Jira ticket that you want to update on your configured Jira server.
Comment Comment that you want to add to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
Priority Priority that you want to set for the Jira ticket that you want to update on your configured Jira server.
You can add one of the following priorities: Highest, High, Medium, Low, or Lowest.
Description (Optional) Description that you want to add to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
Status (Optional) Status that you want to set to the Jira ticket when you are updating the Jira ticket on your configured Jira server.
You can add statuses such as Pending, Back to open, Mark as Done, Start progress, or Reopen issue.
Other Fields (Optional) Fields such as Reporter, Assignee, Components that you need to set while updating a ticket.
For example: {"components":[{"name":"JIRA"}]}

Output

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Update FortiSOAR Record

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket that you want to update in FortiSOAR™.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
FortiSOAR Username Username configured for the FortiSOAR™ instance where you want to update the Jira ticket.
FortiSOAR Password Password configured for the FortiSOAR™ instance where you want to update the Jira ticket.

Output

The JSON output contains the fields of the Incident record in FortiSOAR™ which is updated with the Jira ticket details.

The output contains the following populated JSON schema:
{
"description": "",
"jiraStatus": "",
"jiraPriority": "",
"@id": "",
"name": "",
"jiraComment": ""
}

operation: Delete Ticket

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID for the Jira ticket that you want to delete from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Delete Subtasks Select this option, i.e., set it to true to delete subtasks associated with the Jira ticket. If the ticket has subtasks then you must select this option so that the ticket can be successfully deleted from your configured Jira server.

Output

The JSON output returns a Success message if the Jira ticket that you have specified is successfully deleted from your configured Jira server.

The output contains the following populated JSON schema:
{
"status": "",
"message": ""
}

operation: Get Comments

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID whose associated comments you want to retrieve from your configured Jira server.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
Start At (Optional) Starting index for retrieving tickets whose comments you want to retrieve from Jira.
By default, this is set to 0.
Max Results (Optional) Maximum number of tickets that this operation should return.
By default, this is set to 50.
Order By (Optional)Sort results retrieved by this operation in this direction. You can choose one of the following: Ascending or Descending.

Output

The output contains the following populated JSON schema:
{
"startAt": "",
"maxResults": "",
"total": "",
"comments": [
{
"self": "",
"id": "",
"author": {
"self": "",
"id": "",
"accountId": "",
"emailAddress": "",
"avatarUrls": {
"48x48": "",
"24x24": "",
"16x16": "",
"32x32": ""
},
"displayName": "",
"active": "",
"timeZone": "",
"accountType": ""
},
"body": "",
"updateAuthor": {
"self": "",
"id": "",
"accountId": "",
"emailAddress": "",
"avatarUrls": {
"48x48": "",
"24x24": "",
"16x16": "",
"32x32": ""
},
"displayName": "",
"active": "",
"timeZone": "",
"accountType": ""
},
"created": "",
"updated": "",
"jsdPublic": ""
}
]
}

operation: Add Attachment

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID to which you want to attach the FortiSOAR™ file.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
FortiSOAR File/Attachment IRI File that is present in FortiSOAR™ or the FortiSOAR™ Attachment IRI of the file that you want to add as an attachment to the specified Jira ticket.

Output

The output contains the following populated JSON schema:
{
"data": [
{
"id": "",
"self": "",
"size": "",
"author": {
"id": "",
"self": "",
"active": "",
"timeZone": "",
"accountId": "",
"avatarUrls": {
"16x16": "",
"24x24": "",
"32x32": "",
"48x48": ""
},
"accountType": "",
"displayName": "",
"emailAddress": ""
},
"content": "",
"created": "",
"filename": ""
}
],
"status": "",
"_status": "",
"message": "",
"operation": "",
"request_id": ""
}

operation: Add Remote Link

Input parameters

Parameter Description
Ticket ID Unique ID that is created for each ticket. Enter the ticket ID to which you want to add the remote link.
You can enter the ticket ID directly, such as JIR-000 or use Dynamic Variables in this field and enter the ticket ID in the format {{vars.result.data.key}}.
URL URL of the issue that you want to add to the specified Jira ticket.
Title Title that you want to add for the specified issue that you are adding to the Jira ticket.

Output

The output contains the following populated JSON schema:
{
"self": "",
"id": ""
}

Included playbooks

The Sample - Jira - 1.1.0 playbook collection comes bundled with the Jira connector. This playbook contains steps using which you can perform all supported actions. You can see the bundled playbooks in the Automation > Playbooks section in FortiSOAR™ after importing the Jira connector.

Note: If you are planning to use any of the sample playbooks in your environment, ensure that you clone those playbooks and move them to a different collection since the sample playbook collection gets deleted during the connector upgrade and delete.

Updating the FortiSOAR™ Modules

Note: This procedure is optional, and it enables bidirectional update of Jira tickets and you must perform this procedure for the Update CyOPs Record and Update Ticket playbooks to work correctly.

This procedure also assumes that you are using FortiSOAR™ version 4.11. If you are using a different version of FortiSOAR™, such as FortiSOAR™ 4.9, then it is possible that the FortiSOAR™ UI navigation is different. Refer to the FortiSOAR™ documentation of that particular version for details about FortiSOAR™ navigation.

When a Jira ticket is mapped to a FortiSOAR™ incident, the Priority and the Status of the Jira ticket can be mapped into the equivalent fields in the FortiSOAR™ modules. Perform the following steps to add the JiraPriority and JiraStatus fields to the FortiSOAR™ Incidents module:

  1. Log on to FortiSOAR™ as an administrator.
  2. Open the Picklist Editor and create a picklist named JiraPriority. To open the Picklist Editor, click Settings and in the Application Editor section, and click Picklists:
    1. On the Picklists page, in the Title field, type JiraPriority.
    2. Add priorities in the following order: Highest, High, Medium, Low and Lowest.
    3. (Optional) Clear the Assign colors checkbox, if it is checked.
      Adding a JiraPriority picklist
    4. Click Save.
  3. Create another picklist named JiraStatus as follows:
    1. In the Title field, type JiraStatus.
    2. Add statuses in the following order: Pending, Start progress, Mark as Done, Back to open, Reopen issue, Respond to customer, Resolve this issue, Escalate this issue, Cancel request, In progress, Escalate, Back to in progress, Close, Respond to support, and Waiting for approval.
    3. (Optional) Clear the Assign colors checkbox, if it is checked.
      Adding a JiraStatus picklist
    4. Click Save.
  4. Update the Incidents Module as follows:
    Important: For bidirectional updates to work you must map the JiraPriority and JiraStatusfields.
    1. Open the Module Editor by clicking Settings and then click Modules in the Application Editor section.
    2. On the Modules page, from the Select a module to edit or create a new module drop-down list, select Incidents.
    3. Click the Fields Editor tab.
    4. To add the JiraPriority picklist to the Incidents module, click the + (Add Field) icon and add a new field with the following properties:
      In the Field Type field, select Picklist.
      From the Picklist drop-down list, select JiraPriority.
      In the Name field, type jiraPriority.
      In the Singular Name field, type Jira Priority.
      Updating Incidents module with JiraPriority picklist
      Click Apply.
    5. To add the JiraStatus picklist to the Incidents module, click the + (Add Field) icon and add a new field with the following properties:
      In the Field Type field, select Picklist.
      From the Picklist drop-down list, select JiraStatus.
      In the Name field, type jiraStatus.
      In the Singular Name field, type Jira Status.
      Updating Incidents module with JiraStatus picklist
      Click Apply and Save.
  5. Once you have completed updating all the FortiSOAR™ modules, you must publish the module to enforce the changes. Click Publish All Modules and click OK to publish the modules.
Previous
Next