jira-core 0.4.1

Core library for Jira CLI — API client, auth, model, ADF parser
Documentation

jira-core

Core library for the jira-commands Jira CLI — provides the HTTP client, auth, models, and ADF parser as a reusable Rust library.

Crates.io License: MIT

Usage

[dependencies]
jira-core = "0.3"
use jira_core::{JiraClient, JiraConfig};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let config = JiraConfig::load()?;
    let client = JiraClient::new(config);

    // Search issues
    let results = client
        .search_issues("project = MYPROJ AND status = 'In Progress'", None, Some(50))
        .await?;

    for issue in results.issues {
        println!("{}: {}", issue.key, issue.summary);
    }

    // Get a single issue
    let issue = client.get_issue("MYPROJ-123").await?;
    println!("{}", issue.description.unwrap_or_default());

    // Transition an issue
    let transitions = client.get_transitions("MYPROJ-123").await?;
    client.transition_issue("MYPROJ-123", &transitions[0]["id"].as_str().unwrap()).await?;

    // Upload attachment
    client.upload_attachment("MYPROJ-123", "./screenshot.png").await?;

    // Add worklog
    client.add_worklog("MYPROJ-123", "2h", Some("Fixed auth bug")).await?;

    Ok(())
}

Features

  • JiraClient — full Jira REST API v3 client
    • Issue CRUD (create, read, update, delete, transition)
    • JQL search with cursor-based pagination (/search/jql)
    • Attachment upload (multipart/form-data)
    • Worklog management
    • Bulk operations and archive
    • Raw API passthrough
    • Plans API (Jira Premium)
  • JiraConfig — config loading from file (~/.config/jira/config.toml) and env vars
  • FieldCache — in-memory field metadata cache with TTL
  • ADF parser — Atlassian Document Format ↔ Markdown conversion
  • thiserror-based error types

Auth

Credentials are loaded automatically from ~/.config/jira/config.toml (managed by jira auth login) or from environment variables:

JIRA_URL=https://yourcompany.atlassian.net
JIRA_EMAIL=you@example.com
JIRA_TOKEN=your_api_token

Full documentation

See github.com/mulhamna/jira-commands.