# Jira

> Connect Jira to LightHouse: the ways to connect, the read-only scopes, where the credential is held, and what is indexed.

**Built in the engine.** The engine reads Jira issues and their comments from the projects you name.

## The ways to connect

- **In LightHouse**: In LightHouse, the card for this connector says your engineer configures it in your deployment; it cannot be connected from LightHouse yet \[Coming]. It connects in code.
- **From a terminal**: \[Coming]
- **In code**: below.

## Connect in code

Set three environment variables from your own secret store:

| Variable        | Value                                                               |
| --------------- | ------------------------------------------------------------------- |
| `JIRA_BASE_URL` | Your site, for example `https://example.atlassian.net` (HTTPS only) |
| `JIRA_EMAIL`    | The account’s email address                                         |
| `JIRA_TOKEN`    | An Atlassian API token for that account                             |

Then add a source card:

```yaml
- id: jira-support
  purpose: Read the support projects' issues for the triage agents.
  executor: python
  target: aal_engine.ingest.connector:run_card
  overseer: support-lead@example.com
  budget_usd: 0
  effect: internal
  source:
    kind: jira
    projects: [SUP, OPS]
    label: standard
    requires:
      reads: [issues and comments in SUP and OPS]
      reason: the triage agents find earlier cases like the new one
```

`site_env`, `email_env` and `credential_env` change the variable names.

## Permissions

The engine signs in with the account’s email and API token (HTTP Basic) and only reads. Give the account browse access to the projects you name, and nothing else. LightHouse’s card lists the scope `read:jira-work` for a scoped token.

The engine calls, all `GET`: `/rest/api/3/search/jql` (summary, description, comments, status, type, project and labels, paged) and `/rest/api/3/issue/{key}/comment`.

## Where the credential is held

In your own secret store, passed to the engine as `JIRA_EMAIL` and `JIRA_TOKEN`. Rotate the token at [id.atlassian.com](https://id.atlassian.com/manage-profile/security/api-tokens) and update the secret.

## What is indexed

- **Issues**: the description and every comment in one document, with the project, type, status and labels.
- **Never read:** attachments, work logs and history.
- **How often:** on the card’s schedule, reading issues updated since the last pull (widened by a day, so nothing on the boundary is missed).
- **Deletions:** a deleted issue is not yet removed from the corpus \[Coming].

## Check it worked

- The source’s run note: `written N, unchanged N, quarantined N, removed N`.
- **Agents → Knowledge**: documents from `jira`.

## Removing it

Remove the card and the secrets. Documents already written stay in the corpus until you delete them.

Source: https://docs.atlanticagenticlabs.com/connect/jira/
