Jira
The Jira channel provides bidirectional sync between Open Astra agents and Jira projects. Agents receive issue creation, update, and comment events via webhooks — and post responses back as issue comments via the Jira REST API. Configuration is stored per-workspace in the database via the jira_sync_configs table.
Requirements
- A Jira Cloud or Server instance with API access
- A Jira API token (Atlassian account → Security → API tokens)
- A webhook configured in Jira pointing to your Open Astra gateway
Setup
Unlike most channels that use environment variables, Jira is configured per-workspace through the database. Create a sync config via the API:
# Configure via API (requires JWT auth)
# Jira sync configs are stored per-workspace in the database
POST /jira/config
{
"workspaceId": "ws-123",
"jiraBaseUrl": "https://your-team.atlassian.net",
"apiToken": "your-jira-api-token",
"projectKey": "PROJ",
"agentId": "code-review-agent",
"enabled": true
}| Field | Description |
|---|---|
jiraBaseUrl | Your Jira instance URL (e.g., https://your-team.atlassian.net) |
apiToken | Jira API token for posting comments back |
projectKey | Jira project key to scope events (e.g., PROJ) |
agentId | The agent that handles incoming Jira events |
enabled | Toggle the sync on or off without deleting the config |
Webhook setup
# Jira webhook configuration
# Settings → System → WebHooks → Create a WebHook
# Webhook URL: https://your-domain.com/jira/webhook
# Select events:
# ✓ Issue: created, updated
# ✓ Comment: createdPoint the webhook at /jira/webhook on your Open Astra gateway. The adapter validates incoming payloads and extracts issue keys using a strict regex pattern (PROJ-123 format).
Handled events
| Webhook event | Agent receives |
|---|---|
jira:issue_created | Issue key, summary, description, status, priority, reporter |
jira:issue_updated | Issue key, summary, description, status, priority, actor |
comment_created | Issue key, issue summary, comment body, author |
How events reach the agent
Jira events are normalized into human-readable text before being passed to the agent loop:
# Jira event → agent text format
# Issue created
"[Jira Issue Created] PROJ-123: Fix login timeout
Description (up to 2000 chars)...
Status: In Progress | Priority: High
Reporter: jane-doe"
# Issue updated
"[Jira Issue Updated] PROJ-123: Fix login timeout
Description (up to 2000 chars)...
Status: Done | Priority: High
Changed by: john-smith"
# Comment added
"[Jira Comment on: PROJ-123 — Fix login timeout]
Comment body (up to 2000 chars)...
Author: jane-doe"Issue descriptions and comment bodies are truncated at 2,000 characters. The actor's display name from the webhook payload is used as the sender identifier.
Bidirectional responses
After the agent loop completes, the adapter posts the agent's response as a comment on the originating Jira issue via the REST API at /jira/comment. The issue key (PROJ-123) serves as the conversation key.
Security
- All outbound calls to Jira are SSRF-guarded — blocked URLs receive a 403 response
- Issue keys are validated with a strict regex pattern before processing
- API tokens are stored in the database per-workspace, not in environment variables
See also: Channels Overview for shared slash commands and how the channel adapter system works.