Main entry point for the Jira Data Center REST API client.

const jira = new JiraClient({
apiUrl: 'https://jira.example.com',
user: 'pilmee',
token: 'my-token',
});

// Search issues with JQL
const results = await jira.search({ jql: 'project = PROJ AND status = Open', maxResults: 50 });

// Get a single issue
const issue = await jira.issue('PROJ-42');

// Get issue comments
const comments = await jira.issue('PROJ-42').comments();

// Get issue changelog
const changelog = await jira.issue('PROJ-42').changelog();

// Get a project
const project = await jira.project('PROJ');

// Get project components
const components = await jira.project('PROJ').components();

// Get all projects
const projects = await jira.projects();

// Get a board and its sprints
const sprints = await jira.board(42).sprints({ state: 'active' });

// Get sprint issues
const sprintIssues = await jira.board(42).sprint(10).issues();

// Get current user
const me = await jira.currentUser();

Constructors

Properties

Lightweight issue/user/project metrics derived from Jira Data Center REST and JQL.

Methods

  • Returns a BoardResource for a given board ID.

    The returned resource can be awaited directly to fetch board info, or chained to access nested resources (sprints, issues, backlog).

    Parameters

    • boardId: number

      The numeric board ID

    Returns BoardResource

    A chainable board resource

    const board       = await jira.board(42);
    const sprints = await jira.board(42).sprints({ state: 'active' });
    const backlog = await jira.board(42).backlog({ maxResults: 50 });
    const sprintIssues = await jira.board(42).sprint(10).issues();
  • Fetches a single component by ID.

    GET /rest/api/latest/component/{id}

    Parameters

    • componentId: string

      The component ID

    Returns Promise<JiraComponent>

    The component object

  • Fetches the currently authenticated user.

    GET /rest/api/latest/myself

    Returns Promise<JiraUser>

    The authenticated user object

    const me = await jira.currentUser();
    
  • Fetches the authenticated user's favourite filters.

    GET /rest/api/latest/filter/favourite

    Returns Promise<JiraFilter[]>

    An array of filters

  • Fetches a single filter by ID.

    GET /rest/api/latest/filter/{id}

    Parameters

    • filterId: string | number

      The numeric filter ID

    Returns Promise<JiraFilter>

    The filter object

  • Returns an IssueResource for a given issue key or ID, providing access to issue data and sub-resources (comments, changelog, transitions, etc.).

    The returned resource can be awaited directly to fetch the issue, or chained to access nested resources.

    Parameters

    • issueIdOrKey: string

      The issue key (e.g., 'PROJ-42') or numeric ID

    Returns IssueResource

    A chainable issue resource

    const issue      = await jira.issue('PROJ-42');
    const comments = await jira.issue('PROJ-42').comments();
    const changelog = await jira.issue('PROJ-42').changelog();
    const transitions = await jira.issue('PROJ-42').transitions();
  • Fetches a single issue type by ID.

    GET /rest/api/latest/issuetype/{id}

    Parameters

    • id: string

      The issue type ID

    Returns Promise<JiraIssueType>

    The issue type object

  • Subscribes to a client event.

    Type Parameters

    • K extends "request"

    Parameters

    Returns this

    jira.on('request', (event) => {
    console.log(`${event.method} ${event.url}${event.durationMs}ms`);
    if (event.error) console.error('Request failed:', event.error);
    });
  • Fetches a single priority by ID.

    GET /rest/api/latest/priority/{id}

    Parameters

    • id: string

      The priority ID

    Returns Promise<JiraPriority>

    The priority object

  • Returns a ProjectResource for a given project key or ID.

    The returned resource can be awaited directly to fetch project info, or chained to access nested resources.

    Parameters

    • projectIdOrKey: string

      The project key (e.g., 'PROJ') or numeric ID

    Returns ProjectResource

    A chainable project resource

    const project    = await jira.project('PROJ');
    const components = await jira.project('PROJ').components();
    const versions = await jira.project('PROJ').versions();
    const statuses = await jira.project('PROJ').statuses();
  • Searches for issues using JQL.

    GET /rest/api/latest/search

    Parameters

    • Optionalparams: SearchParams

      Optional: jql, startAt, maxResults, fields, expand, validateQuery

    Returns Promise<JiraSearchResponse>

    A search response containing matching issues

    const results = await jira.search({
    jql: 'project = PROJ AND status = Open ORDER BY created DESC',
    maxResults: 50,
    fields: 'summary,status,assignee,priority',
    });
  • Fetches issues using a POST search, which supports larger JQL queries and additional options such as specifying the fields list as an array.

    POST /rest/api/latest/search

    Parameters

    Returns Promise<JiraSearchResponse>

    A search response containing matching issues

    const results = await jira.searchPost({
    jql: 'project = PROJ AND status = Open',
    maxResults: 100,
    fields: ['summary', 'status', 'assignee'],
    });
  • Fetches a single status by ID or name.

    GET /rest/api/latest/status/{idOrName}

    Parameters

    • idOrName: string

      The status ID or name

    Returns Promise<JiraStatus>

    The status object

  • Fetches a single user by username or key.

    GET /rest/api/latest/user

    Parameters

    • username: string

      The username (login name) to look up

    Returns Promise<JiraUser>

    The user object

    const user = await jira.user('pilmee');
    
  • Searches for issues updated by one or more users.

    This uses Jira's updatedBy() JQL function, which is useful for deriving activity from Bitbucket slugs when they match Jira usernames.

    POST /rest/api/latest/search

    Parameters

    • usernames: string | string[]

      A Jira username, user key, or Bitbucket slug that maps to one

    • params: UserActivityParams = {}

      Optional date bounds, extra JQL filters, pagination, and fields

    Returns Promise<JiraSearchResponse>

    A search response containing issues touched by the user(s)

    const activity = await jira.userActivity(['pilmee', 'asmith'], {
    from: '-30d',
    fields: ['summary', 'updated', 'status'],
    });
  • Fetches a single version by ID.

    GET /rest/api/latest/version/{id}

    Parameters

    • versionId: string

      The version ID

    Returns Promise<JiraVersion>

    The version object

  • Fetches worklogs by ID.

    POST /rest/api/latest/worklog/list

    Parameters

    • ids: (string | number)[]

    Returns Promise<JiraWorklog[]>