diff --git a/cli/guide/tools.html b/cli/guide/tools.html index 6813ae6..2005461 100644 --- a/cli/guide/tools.html +++ b/cli/guide/tools.html @@ -126,6 +126,7 @@ ✅ c3_task 🪣 c3_bitbucket 🔐 c3_credentials + 🎫 c3_jira @@ -1280,6 +1282,57 @@

Examples

Surfaces: the c3 creds CLI (set / get / list / rm / import .env, --global for the shared scope), a per-project dashboard Credentials tab, and — since v2.59.0 — a top-level Credentials view in the Hub: a Global-vault manager plus a per-project browser with shadowing shown both ways ("shadows global" on project entries, "shadowed in N projects" on globals); the Hub's per-project drill panel manages too. No HTTP route ever returns a stored value (write-only wire contract, endpoint-sweep tested), every mutation is ledger-logged by name, the vault is hard-excluded from the Oracle Discovery API, and cross-project (c3_project) shells run with credentials disabled.

+ + +
+
+ c3_jira +
+ issue tracking + v2.56.0 +
+ Jira Cloud + Data Center — search, create, transition, comment through one tool +
+
+

One tool for both Jira deployments: Cloud (REST v3, email + API token, ADF bodies handled transparently) and self-hosted Data Center / Server (REST v2, PAT Bearer, plain-text bodies) — normalized to a single DTO surface with an opaque pagination cursor. Transport is stdlib urllib (no new dependencies); reads get one bounded 429 retry honoring Retry-After, mutations are never auto-retried. Tokens live in the OS keyring keyed by (base_url, username); the jira config section resolves project → home wholesale from a single file, so a repository's committed config can never field-override a home account's URL or TLS settings (credential-redirect hardening). HTTPS-only.

+ +

Setup: c3 jira login --url https://yoursite.atlassian.net (Cloud inferred for *.atlassian.net; add --deployment data_center for self-hosted, --ca-bundle for enterprise certs, --global for a home config reusable across projects), then c3 jira set-default --project PROJ. Manage accounts with c3 jira status / use / logout.

+ +

Actions

+ + + + + + + + + + + +
ActionGroupDescription
status, whoamiReadActive account, deployment, defaults, server probe / authenticated user
searchReadRaw JQL, paginated (helper-built JQL elsewhere is always quoted)
my_issuesReadOpen issues assigned to the token's user (statusCategory-aware)
get_issue, list_projects, list_transitionsReadIssue detail with comments / project discovery / legal transitions for an issue
get_create_metadata, search_usersReadRequired + allowed fields per project/type; user lookup for assignment
create_issueWritePre-validates against create metadata and returns machine-readable missing required fields instead of guessing defaults
comment, transition, assignWriteComment on / move (accepts transition id or name) / assign an issue
+ +

Examples

+
# Connection + account probe, then my open work
+c3_jira(action='status')
+c3_jira(action='my_issues')
+
+# Raw JQL search
+c3_jira(action='search', jql='project = PROJ AND status != Done ORDER BY updated DESC')
+
+# Create — required fields come from metadata, not guesses
+c3_jira(action='get_create_metadata', project='PROJ', issue_type='Task')
+c3_jira(action='create_issue', project='PROJ', issue_type='Task',
+        summary='Fix login flow', description='Steps in thread')
+
+# Move it along — id or name both work
+c3_jira(action='list_transitions', issue='PROJ-123')
+c3_jira(action='transition', issue='PROJ-123', transition='In Progress')
+c3_jira(action='comment', issue='PROJ-123', body='Deployed to staging')
+ +

Surfaces & audit: the per-project dashboard gets a Jira tab (My Work board grouped by statusCategory, JQL search, an issue drawer with transition buttons + comments, and an Activity view) backed by /api/jira/* routes. Issue keys like PROJ-123 are auto-linked from branch names and edit-ledger entries (acronym denylist, so UTF-8 / SHA-256 / CVE-2024 never match), and the issue drawer shows the local ledger activity for the open issue — that Activity view works with no account configured. Mutations (create_issue, comment, transition, assign) are edit-ledger-logged with identifiers only — bodies are never logged. Read actions are safe in plan mode.

+
+