For the complete documentation index, see llms.txt. This page is also available as Markdown.

Atlassian JIRA

Create JIRA Issue

The purpose of this example is to create a JIRA Issue when a Vulnerability is created in AttackForge, and to update AttackForge to assign the JIRA Issue Key against the Vulnerability.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

Action 1 - Create JIRA Issue

  • Method: POST

  • URL: https://<YOUR-JIRA>/rest/api/2/issue

  • Headers:

    • Key = Accept; Type = Value; Value = application/json

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_auth

  • Request Script:

  • Response Script:

Action 2 - Update AF Vuln with JIRA Issue Key

  • Method: PUT

  • URL: <defined in Request Script>

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-Key; Type = Secret; Value = af_auth

  • Request Script:

  • Response Script:

Update JIRA Issue

The purpose of this example is to update a JIRA Issue when a Vulnerability is updated in AttackForge.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Action 1 - Get JIRA Issue

  • Method: GET

  • URL: <defined in Request Script>

  • Headers:

    • Key = Accept; Type = Value; Value = application/json

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_auth

  • Request Script:

  • Response Script:

Action 2 - Update JIRA Issue

  • Method: <defined in Request Script>

  • URL: <defined in Request Script>

  • Headers:

    • <defined in Request Script>

  • Request Script:

  • Response Script:

JIRA Issue Retest -> Update Vuln to Ready for Retest

The purpose of this example is when a JIRA Issue is assigned the 'Retest' status - the matching vulnerability in AttackForge is also assigned as retest.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Action 1 - Get Vulnerability

  • Method: GET

  • URL: https://demo.attackforge.dev/api/ss/vulnerabilities

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = x_user_key

  • Request Script:

  • Response Script:

Action 2 - Update Vulnerability

  • Method: PUT

  • URL: https://demo.attackforge.dev/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = x_user_key

  • Request Script:

  • Response Script:

Close JIRA Issue

The purpose of this example is when a vulnerability is closed in AttackForge, the matching JIRA Issue is also closed.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

  • Event: Vulnerability Updated

  • Secrets:

Action 1 - Get JIRA Issue

  • Method: GET

  • URL: https://cybersechub.atlassian.net/rest/api/3/issue/{issueIdOrKey}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 2 - Get JIRA Transitions

  • Method: GET

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/transitions

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 3 - Close JIRA Issue

  • Method: POST

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/transitions

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Re-Open JIRA Issue

The purpose of this example is when a vulnerability is re-opened in AttackForge, the matching JIRA Issue is also re-opened.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

  • Event: Vulnerability Updated

  • Secrets:

Action 1 - Get JIRA Issue

  • Method: GET

  • URL: https://cybersechub.atlassian.net/rest/api/3/issue/{issueIdOrKey}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 2 - Get JIRA Transitions

  • Method: GET

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/transitions

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 3 - Re-Open JIRA Issue

  • Method: POST

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/transitions

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

JIRA Issue Comment Created -> Create Vuln Remediation Note

The purpose of this example is when a comment is created on a JIRA Issue, a remediation note is created on the matching vulnerability.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

  • JIRA WebHooks

    • Configure 'Issue Comment Created' web hook from https://<your-jira-tenant>.atlassian.net/plugins/servlet/webhooks#

  • HTTP Trigger

    • Method: POST

    • Authentication: None

  • Secrets:

Action 1 - Get Vulnerability

  • Method: GET

  • URL: https://demo.attackforge.dev/api/ss/vulnerabilities

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = x_user_key

  • Request Script:

  • Response Script:

Action 2 - Create Remediation Note

  • Method: POST

  • URL: https://demo.attackforge.dev/api/ss/vulnerability/{id}/remediationNote

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = x_user_key

  • Request Script:

  • Response Script:

Create JIRA Issue Comment

The purpose of this example is when a remediation note is created on a vulnerability, a comment is also created on the matching JIRA Issue.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

Action 1 - Get Vulnerability

  • Method: GET

  • URL: https://demo.attackforge.dev/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = x_user_key

  • Request Script:

  • Response Script:

Action 2 - Get JIRA Comments

  • Method: GET

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/comment

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 3 - Create JIRA Issue Comment

  • Method: POST

  • URL: https://cybersechub.atlassian.net/rest/api/2/issue/{issueIdOrKey}/comment

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Accept; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Upload Vulnerability Evidence to JIRA Issue

The purpose of this example is when a evidence file is uploaded to a vulnerability, the file is also uploaded to the matching JIRA Issue.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

Action 1 - Get Vulnerability

  • Method: GET

  • URL: https://{{af_hostname}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_user_key

  • Request Script:

  • Response Script:

Action 2 - Check if JIRA Issue Id exists

  • Script:

Action 3 - Get JIRA Issue

  • Method: GET

  • URL: https://{{jira_hostname}}/rest/api/3/issue/{issueIdOrKey}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 4 - Check if File is already uploaded to JIRA Issue

  • Script:

Action 5 - Download Evidence File

  • Method: GET

  • URL: https://{{af_hostname}}/api/ss/vulnerability/{vulnId}/evidence/{fileStorageName}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_user_key

  • Options:

    • Download Response: Yes

  • Request Script:

  • Response Script:

Action 6 - Upload File to JIRA

  • Method: POST

  • URL: https://{{jira_hostname}}/rest/api/3/issue/{issueIdOrKey}/attachments

  • Headers:

    • Key = X-Atlassian-Token; Type = Value; Value = no-check

    • Key = Accept; Type = Value; Value = application/json

    • Key = Content-Type; Type = Value; Value = multipart/form-data

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Upload JIRA Attachment to Vulnerability Evidence

The purpose of this example is when an attachment is uploaded to a JIRA Issue, the file is also uploaded to the matching vulnerability in AttackForge.

This example Flow can be downloaded from our Flows GitHub Repository and imported into your AttackForge.

Initial Set Up

Important: This example requires access to the AttackForge Self-Service API and AttackForge Flows

  • JIRA WebHooks

    • Configure 'Attachment Created' web hook from https://<your-jira-tenant>.atlassian.net/plugins/servlet/webhooks#

    • Append ?issueKey={issue.key} to the end of the trigger url to ensure that your flow can identify which JIRA Issue the attachment belongs to

  • HTTP Trigger

    • Method: POST

    • Authentication: None

  • Secrets:

Action 1 - Validate Message from JIRA

  • Script:

Action 2 - Get Vulnerability

  • Method: GET

  • URL: https://{{af_hostname}}/api/ss/vulnerability/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_user_key

  • Request Script:

  • Response Script:

Action 3 - Check if Attachment is already uploaded to Vulnerability

  • Script:

Action 4 - Get JIRA Attachment Download Link

  • Method: GET

  • URL: https://{{jira_hostname}}/rest/api/3/attachment/content/{id}

  • Headers:

    • Key = Content-Type; Type = Value; Value = application/json

    • Key = Authorization; Type = Secret; Value = jira_api_key

  • Request Script:

  • Response Script:

Action 5 - Download JIRA Attachment

  • Method: GET

  • Options:

    • Download Response: Yes

  • Request Script:

  • Response Script:

Action 6 - Upload File to Vulnerability

  • Method: POST

  • URL: https://{{af_hostname}}/api/ss/vulnerability/{id}/evidence

  • Headers:

    • Key = Content-Type; Type = Value; Value = multipart/form-data

    • Key = X-SSAPI-KEY; Type = Secret; Value = af_user_key

  • Request Script:

  • Response Script:

Last updated