Skip to content

feat: Export findings directly to Jira and GitHub Issues (#377)#391

Open
Somil450 wants to merge 8 commits into
utksh1:mainfrom
Somil450:feature/ticket-export
Open

feat: Export findings directly to Jira and GitHub Issues (#377)#391
Somil450 wants to merge 8 commits into
utksh1:mainfrom
Somil450:feature/ticket-export

Conversation

@Somil450
Copy link
Copy Markdown

Fixes: #377

🚀 Description

This PR bridges the gap between vulnerability discovery and remediation by allowing users to export findings directly from the dashboard into Jira tickets or GitHub Issues.

🛠️ Changes Made

  • Backend:
    • Added httpx to requirements.txt for making asynchronous API calls.
    • Added a new POST /api/v1/integrations/ticket endpoint to handle ticket creation requests.
    • Implemented create_jira_ticket and create_github_issue logic in integrations.py, properly mapping the vulnerability data (Title, Severity, Description, Target, Remediation) into the respective issue formats.
  • Frontend:
    • Updated the Settings page to include an "External Integrations" section where users can configure their Jira (URL, Email, Token, Project) and GitHub (Token, Repository) credentials.
    • Added "Export to Jira" and "Export to GitHub" buttons to the Workflow Actions section within the Finding Details view.
    • Added createTicket to the API layer and integrated toast notifications for success/error handling when creating a ticket.

✅ How to Test

  1. Set up your Jira and/or GitHub API credentials in the Settings tab under External Integrations.
  2. Go to the Findings page and select any vulnerability.
  3. Scroll down to the Workflow Actions and click Export to Jira or Export to GitHub.
  4. Verify a success toast appears and that a new tab opens redirecting you directly to the newly created ticket on Jira/GitHub.

@utksh1 utksh1 added area:backend Backend API, database, or service work area:frontend Frontend React/UI work area:security Security-sensitive implementation or tests type:feature Feature work category bonus label level:advanced 55 pts difficulty label for advanced contributor PRs labels May 28, 2026
Copy link
Copy Markdown
Owner

@utksh1 utksh1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for taking on this integration feature. I cannot merge this in its current state.\n\nRequested changes:\n- Resolve the merge conflicts first; GitHub reports this branch as conflicting/dirty.\n- Fix the failing CI jobs: backend-tests, frontend-checks, and formatting-hygiene.\n- Do not send Jira/GitHub tokens from frontend/localStorage in the ticket creation request. Integration credentials need to be stored and used server-side via the existing vault/settings flow, with redaction and no secret exposure in browser state.\n- Avoid rewriting almost all of backend/secuscan/routes.py; keep the diff focused so the integration can be reviewed safely.\n- Add backend tests for Jira/GitHub error handling and frontend tests/coverage for the export flow once the security model is corrected.\n\nThe feature is useful, but this needs a narrower, secure implementation before approval.

@Somil450
Copy link
Copy Markdown
Author

Hi @utksh1, thanks for the detailed review! I've addressed all the concerns and pushed the latest changes can u plz check.

Copy link
Copy Markdown
Owner

@utksh1 utksh1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Re-reviewed latest state. The main blocker still stands: Jira/GitHub integration credentials must not be supplied from browser/localStorage in the ticket export request. Please move credentials to a server-side settings/vault-backed flow with redaction, keep routes.py changes focused, and add backend/frontend tests for the corrected security model.

@utksh1
Copy link
Copy Markdown
Owner

utksh1 commented May 30, 2026

Re-reviewed after the latest push. Still blocked: Jira/GitHub export credentials must not be supplied from browser/localStorage in the export request. Please move credentials to a server-side settings/vault-backed flow with redaction and rebase the conflicting branch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:backend Backend API, database, or service work area:frontend Frontend React/UI work area:security Security-sensitive implementation or tests level:advanced 55 pts difficulty label for advanced contributor PRs type:feature Feature work category bonus label

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants