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.
Connector Version: 1.1.0
FortiSOAR™ Version Tested on: 6.0.0-790
Jira Version Tested on: 2.1
Authored By: Fortinet
Certified: Yes
Following enhancements have been made to the Jira Connector in version 1.1.0:
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
For the procedure to configure a connector, click here.
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 . |
On the Jira server where the connector connects, enable the Get Notification from Jira
WebHook, 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.
Get Notification from Jira
WebHook:FortiSOAR™ Playbooks API Trigger URL
of the server for the WebHook.<IP Address of the FortiSOAR instance>/api/triggers/1/deferred/<name of the action trigger given by the user>
The following image displays a configured Jira WebHook:
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 |
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"}]} |
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": ""
}
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}} . |
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": ""
}
None
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": ""
}
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"] |
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
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.
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
]
}
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. |
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": ""
}
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. |
The output contains the following populated JSON schema:
{
"self": "",
"id": ""
}
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.
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:
Picklist Editor
and create a picklist named JiraPriority
. To open the Picklist Editor, click Settings and in the Application Editor
section, and click Picklists:
JiraStatus
as follows:
JiraStatus
.Incidents
Module as follows:Module Editor
by clicking Settings and then click Modules in the Application Editor
section.Modules
page, from the Select a module to edit or create a new module drop-down list, select Incidents.Incidents
module, click the + (Add Field) icon and add a new field with the following properties:jiraPriority
.Jira Priority
.Incidents
module, click the + (Add Field) icon and add a new field with the following properties:jiraStatus
.Jira Status
.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.
Connector Version: 1.1.0
FortiSOAR™ Version Tested on: 6.0.0-790
Jira Version Tested on: 2.1
Authored By: Fortinet
Certified: Yes
Following enhancements have been made to the Jira Connector in version 1.1.0:
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
For the procedure to configure a connector, click here.
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 . |
On the Jira server where the connector connects, enable the Get Notification from Jira
WebHook, 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.
Get Notification from Jira
WebHook:FortiSOAR™ Playbooks API Trigger URL
of the server for the WebHook.<IP Address of the FortiSOAR instance>/api/triggers/1/deferred/<name of the action trigger given by the user>
The following image displays a configured Jira WebHook:
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 |
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"}]} |
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": ""
}
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}} . |
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": ""
}
None
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": ""
}
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"] |
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
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.
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
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. |
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": ""
}
]
}
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. |
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": ""
}
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. |
The output contains the following populated JSON schema:
{
"self": "",
"id": ""
}
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.
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:
Picklist Editor
and create a picklist named JiraPriority
. To open the Picklist Editor, click Settings and in the Application Editor
section, and click Picklists:
JiraStatus
as follows:
JiraStatus
.Incidents
Module as follows:Module Editor
by clicking Settings and then click Modules in the Application Editor
section.Modules
page, from the Select a module to edit or create a new module drop-down list, select Incidents.Incidents
module, click the + (Add Field) icon and add a new field with the following properties:jiraPriority
.Jira Priority
.Incidents
module, click the + (Add Field) icon and add a new field with the following properties:jiraStatus
.Jira Status
.