Plugins
Jira (Atlassian)
Search, create, transition, and delete issues; list projects.
Authentication
| Type | Default | Details |
|---|---|---|
api_key | ✅ | Email + API token combined as Basic auth (base64(email:token)) |
Each Jira tenant has a unique site URL like https://acme.atlassian.net. The plugin requires siteUrl as a constructor option — it's the only plugin in the catalog that takes a per-tenant base URL.
Endpoints
| Path | Risk | Description |
|---|---|---|
issues.search | read | Search issues by JQL. |
issues.get | read | Fetch an issue by id or key (e.g. PROJ-123). |
issues.create | write | Create a new issue in a project. |
issues.transition | write | Transition an issue's status. |
issues.delete | destructive (irreversible) | Delete an issue. Permanent. |
projects.list | read | List all projects in the site. |
issues.search
const { issues } = await fabric.jira.api.issues.search({
jql: 'project = PROJ AND status = "To Do" ORDER BY priority DESC',
fields: ['summary', 'status', 'assignee'],
maxResults: 50,
});issues.create
await fabric.jira.api.issues.create({
projectKey: 'PROJ',
summary: 'Spike: webhook idempotency',
description: 'See linked design doc for context.',
issueType: 'Task',
});The plugin wraps your description string in Atlassian Document Format (ADF) automatically.
issues.transition
Transition IDs are project-specific. Use Jira's web UI or its /rest/api/3/issue/{id}/transitions GET endpoint to discover them.
await fabric.jira.api.issues.transition({
issueIdOrKey: 'PROJ-123',
transitionId: '31', // "Done"
});Factory
import { jira } from '@fabricorg/integrations/plugins';
const fabric = createFabric({
plugins: [
jira({
email: process.env.JIRA_EMAIL,
apiToken: process.env.JIRA_API_TOKEN,
siteUrl: 'https://acme.atlassian.net',
}),
],
});