Skip to content

Conversation

@jcortes
Copy link
Collaborator

@jcortes jcortes commented Dec 25, 2025

WHY

Resolves #14903

Summary by CodeRabbit

  • New Features

    • Check Jira issues against multiple JQL queries with automatic match counting and summary reporting
    • Count issues matching a JQL query with approximate totals
    • Retrieve issue picker suggestions with filtering for JQL, projects, and subtasks
    • Search Jira issues via POST JQL with pagination, field expansion, and custom field support
  • Chores

    • Package version bumped and multiple Jira action/source modules had minor version updates

✏️ Tip: You can customize this high-level summary in your review settings.

@jcortes jcortes self-assigned this Dec 25, 2025
@vercel
Copy link

vercel bot commented Dec 25, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Review Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Dec 25, 2025 6:49pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 25, 2025

Walkthrough

Adds four new Jira Cloud actions (search/count/match/issue-picker) and corresponding Jira app methods; additionally bumps versions across many existing Jira action and source modules and updates the Jira component package version.

Changes

Cohort / File(s) Summary
New Jira Action Modules
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs, components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs, components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs, components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs
Four new action exports with metadata, props (including app, cloudId, JQL/query inputs), and run implementations that call the Jira app methods and export concise summaries (counts, matches, pagination hints).
Jira App Module
components/jira/jira.app.mjs
Added methods: countIssuesUsingJQL, checkIssuesAgainstJQL, postSearchIssues, getIssuePickerSuggestions — each wiring to Jira endpoints (/search/approximate-count, /jql/match, /search/jql, /issue/picker) via the existing request flow.
Version bumps (actions & sources)
components/jira/actions/* (many files), components/jira/sources/* (events, issue-created, issue-deleted, issue-updated)
Incremented version fields across multiple action and source modules (minor patch bumps) with no logic changes.
Package version
components/jira/package.json
Component package version updated from 1.1.3 to 1.2.0.

Sequence Diagram(s)

sequenceDiagram
    participant Action as Action Module
    participant App as Jira App
    participant API as Jira REST API
    participant Export as Summary Export

    Action->>App: invoke method(cloudId, data, $)
    Note over Action,App: e.g. postSearchIssues / countIssuesUsingJQL / checkIssuesAgainstJQL / getIssuePickerSuggestions
    App->>API: HTTP POST/GET to Jira endpoint
    Note over App,API: /search/jql, /search/approximate-count, /jql/match, /issue/picker
    API-->>App: response (issues / counts / matches / suggestions)
    App-->>Action: return response
    Action->>Export: $.export("$summary", summaryText)
    Action-->>Action: return response payload
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Suggested labels

User submitted

Suggested reviewers

  • lcaresia
  • luancazarine
  • michelle0927

Pre-merge checks and finishing touches

❌ Failed checks (3 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title '[ACTION] JIRA Search Issues' is somewhat generic and does not clearly specify which search operation or new functionality is being added. Consider clarifying the title to indicate the specific search capability being added, such as '[ACTION] Add JQL-based Issue Search' or similar.
Description check ❓ Inconclusive The PR description is minimal and only references issue #14903, but provides no substantive explanation of what was implemented or why. Expand the description to explain the implementation, the APIs/actions added, and how they address the requirements in #14903.
Out of Scope Changes check ❓ Inconclusive Most changes are focused on new search-related actions and app methods. However, version bumps across 17 existing action files and the package.json appear incidental and potentially out-of-scope for this feature. Clarify whether the version bumps in existing actions are intentional feature changes or merely version maintenance unrelated to the #14903 requirements.
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR implements multiple search-related actions (checkIssuesAgainstJQL, countIssuesUsingJQL, postSearchIssues, getIssuePickerSuggestions) and corresponding app methods that directly address issue #14903's request for JIRA issue search functionality using the Cloud API.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch jira-new-search-issues-components

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@jcortes jcortes force-pushed the jira-new-search-issues-components branch from ed392f8 to 7318b63 Compare December 25, 2025 18:49
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2427faf and ed392f8.

📒 Files selected for processing (5)
  • components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs
  • components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs
  • components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs
  • components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs
  • components/jira/jira.app.mjs
🧰 Additional context used
🧬 Code graph analysis (3)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (4)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)
  • response (48-55)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)
  • response (35-41)
components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs (1)
  • response (76-87)
components/jira/jira.app.mjs (1)
  • response (386-399)
components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs (4)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)
  • response (48-55)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)
  • response (35-41)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (1)
  • response (121-134)
components/jira/jira.app.mjs (1)
  • response (386-399)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (4)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)
  • response (48-55)
components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs (1)
  • response (76-87)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (1)
  • response (121-134)
components/jira/jira.app.mjs (1)
  • response (386-399)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (4)
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (9)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (2)

3-27: LGTM! Well-structured action metadata and props.

The action metadata and prop definitions are clear and follow the established patterns in the codebase. The JQL description appropriately notes that the query must be bounded, which is an important constraint.


28-45: LGTM! Clean implementation with defensive coding.

The run method correctly calls the app method with the appropriate parameters and provides a good user experience with the summary message. The || 0 fallback is a nice defensive touch.

components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (2)

3-106: LGTM! Comprehensive and well-documented props.

The action provides extensive configuration options for JQL searches with clear descriptions. The expand options with human-readable labels are particularly helpful for users.


136-140: The pagination logic is correct and matches Jira API v3 behavior.

The Jira API v3 POST /search/jql endpoint always returns isLast as a boolean—never undefined. The logic response.isLast !== false properly handles the documented behavior: when isLast is false, more pages are available; when true, the current page is the last. The defensive treatment of undefined as true (last page) is reasonable, though unnecessary based on the API spec, and does not introduce any bugs.

components/jira/jira.app.mjs (1)

639-677: LGTM! New methods follow established patterns.

The four new methods are well-structured and consistent with the existing codebase patterns. They properly:

  • Accept cloudId and spread remaining arguments
  • Use the internal _makeRequest helper
  • Map to the correct Jira REST API v3 endpoints

The implementation aligns well with how the new action modules consume these methods.

components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (2)

3-39: LGTM! Well-structured props with helpful examples.

The action metadata and props are clear. Good reuse of the issueIdOrKey propDefinition with proper context passing.


57-66: LGTM! Excellent pluralization logic.

The summary calculation uses proper optional chaining for defensive coding, and the pluralization handles both "query/queries" and "match/matches" correctly.

components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs (2)

3-63: LGTM! Well-designed optional parameters.

The action provides a flexible interface with all search parameters being optional. The currentProjectId prop correctly uses propDefinition with context to pass the cloudId dependency.


64-92: LGTM! Clean implementation with good UX.

The run method is straightforward and includes a nice touch with the query || "all" fallback in the summary message for better user feedback.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
components/jira/actions/create-version/create-version.mjs (1)

82-82: Typo in summary message.

"successfuly" should be "successfully".

🔎 Proposed fix
-    $.export("$summary", `Version has been created successfuly. (ID:${response.id}, NAME:${response.name})`);
+    $.export("$summary", `Version has been created successfully. (ID:${response.id}, NAME:${response.name})`);
components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (1)

53-53: Extraneous whitespace in method call.

There's an extra space between data and .append.

🔎 Proposed fix
-    data .append("file", stream, {
+    data.append("file", stream, {
components/jira/actions/get-all-projects/get-all-projects.mjs (1)

54-57: Pre-existing issue: issueIdOrKey is not a defined prop.

Line 56 references this.issueIdOrKey, but this property is not defined in the action's props. This appears to be dead code since the "Get All Projects" API doesn't use issueIdOrKey. Consider removing it in a follow-up.

🔎 Suggested fix
       resourceFnArgs: {
         $,
-        issueIdOrKey: this.issueIdOrKey,
         params: {
           recent: this.recent,
📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ed392f8 and 7318b63.

📒 Files selected for processing (30)
  • components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs
  • components/jira/actions/add-comment-to-issue/add-comment-to-issue.mjs
  • components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs
  • components/jira/actions/add-watcher-to-issue/add-watcher-to-issue.mjs
  • components/jira/actions/assign-issue/assign-issue.mjs
  • components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs
  • components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs
  • components/jira/actions/create-custom-field-options-context/create-custom-field-options-context.mjs
  • components/jira/actions/create-issue/create-issue.mjs
  • components/jira/actions/create-version/create-version.mjs
  • components/jira/actions/delete-project/delete-project.mjs
  • components/jira/actions/get-all-projects/get-all-projects.mjs
  • components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs
  • components/jira/actions/get-issue/get-issue.mjs
  • components/jira/actions/get-task/get-task.mjs
  • components/jira/actions/get-transitions/get-transitions.mjs
  • components/jira/actions/get-user/get-user.mjs
  • components/jira/actions/get-users/get-users.mjs
  • components/jira/actions/list-issue-comments/list-issue-comments.mjs
  • components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs
  • components/jira/actions/search-issues-with-jql/search-issues-with-jql.mjs
  • components/jira/actions/transition-issue/transition-issue.mjs
  • components/jira/actions/update-comment/update-comment.mjs
  • components/jira/actions/update-issue/update-issue.mjs
  • components/jira/jira.app.mjs
  • components/jira/package.json
  • components/jira/sources/events/events.mjs
  • components/jira/sources/issue-created/issue-created.mjs
  • components/jira/sources/issue-deleted/issue-deleted.mjs
  • components/jira/sources/issue-updated/issue-updated.mjs
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-08-19T09:02:00.906Z
Learnt from: nurul3101
Repo: PipedreamHQ/pipedream PR: 18092
File: components/prisma_management_api/README.md:42-47
Timestamp: 2025-08-19T09:02:00.906Z
Learning: In Prisma Management API documentation, the "Delete Database" action intentionally uses this name even though it technically deletes an entire project (including all associated databases and resources) via projectId. This naming choice is deliberate and should not be flagged as inconsistent.

Applied to files:

  • components/jira/actions/delete-project/delete-project.mjs
📚 Learning: 2025-01-23T03:55:15.166Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

Applied to files:

  • components/jira/sources/issue-updated/issue-updated.mjs
📚 Learning: 2024-10-08T15:33:38.240Z
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 12731
File: components/hackerone/actions/get-members/get-members.mjs:3-28
Timestamp: 2024-10-08T15:33:38.240Z
Learning: When exporting a summary message in the `run` method of an action, ensure the message is correctly formatted. For example, in the `hackerone-get-members` action, the correct format is `Successfully retrieved ${response.data.length} members`.

Applied to files:

  • components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs
🧬 Code graph analysis (4)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (1)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)
  • response (35-41)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (3)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)
  • response (35-41)
components/jira/actions/get-issue/get-issue.mjs (1)
  • response (71-82)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (1)
  • response (121-134)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (4)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)
  • response (48-55)
components/jira/actions/get-issue/get-issue.mjs (1)
  • response (71-82)
components/jira/actions/get-task/get-task.mjs (1)
  • response (36-40)
components/jira/actions/search-issues-with-jql-post/search-issues-with-jql-post.mjs (1)
  • response (121-134)
components/jira/actions/get-issue-picker-suggestions/get-issue-picker-suggestions.mjs (9)
components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (1)
  • response (63-69)
components/jira/actions/add-comment-to-issue/add-comment-to-issue.mjs (1)
  • response (90-103)
components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)
  • response (48-55)
components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)
  • response (35-41)
components/jira/actions/create-issue/create-issue.mjs (1)
  • response (133-146)
components/jira/actions/get-issue/get-issue.mjs (1)
  • response (71-82)
components/jira/actions/get-transitions/get-transitions.mjs (1)
  • response (70-81)
components/jira/actions/get-user/get-user.mjs (1)
  • response (40-47)
components/jira/actions/get-users/get-users.mjs (1)
  • response (30-36)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (28)
components/jira/actions/create-custom-field-options-context/create-custom-field-options-context.mjs (1)

8-8: Version bump approved.

The version metadata has been incremented from 0.0.7 to 0.0.8 as part of the broader package versioning refresh. The action implementation remains unchanged and correct.

components/jira/actions/list-issue-comments/list-issue-comments.mjs (1)

7-7: LGTM!

Version bump aligns with the broader PR changes adding new Jira search functionality.

components/jira/actions/search-issues-with-jql/search-issues-with-jql.mjs (1)

7-7: LGTM!

Version bump aligns with the PR-wide versioning update. The pagination implementation correctly handles token-based pagination with proper bounds checking.

components/jira/sources/events/events.mjs (1)

8-8: LGTM!

Version bump consistent with other source modules in this PR.

components/jira/sources/issue-created/issue-created.mjs (1)

7-7: LGTM!

Version bump consistent with other source modules in this PR.

components/jira/actions/create-version/create-version.mjs (1)

7-7: LGTM!

Version bump aligns with the PR-wide versioning update.

components/jira/actions/get-transitions/get-transitions.mjs (1)

7-7: LGTM!

Version bump aligns with the PR-wide versioning update.

components/jira/actions/add-comment-to-issue/add-comment-to-issue.mjs (1)

10-10: LGTM!

Version bump aligns with the PR-wide versioning update.

components/jira/actions/add-attachment-to-issue/add-attachment-to-issue.mjs (1)

9-9: LGTM!

Version bump aligns with the PR-wide versioning update.

components/jira/actions/delete-project/delete-project.mjs (1)

7-7: LGTM: Routine version bump.

The patch version increment aligns with the broader package release that adds new Jira search actions.

components/jira/sources/issue-deleted/issue-deleted.mjs (1)

7-7: LGTM: Version increment is appropriate.

The version bump is consistent with the package-wide release cycle.

components/jira/actions/update-issue/update-issue.mjs (1)

11-11: LGTM: Version bump aligned with package release.

The patch increment is appropriate for this coordinated release with no functional changes to this action.

components/jira/actions/add-watcher-to-issue/add-watcher-to-issue.mjs (1)

6-6: LGTM: Consistent version increment.

The patch version bump is appropriate and aligns with the package release.

components/jira/actions/get-users/get-users.mjs (1)

7-7: LGTM: Appropriate version increment.

The version bump is consistent with the coordinated package release.

components/jira/actions/get-task/get-task.mjs (1)

7-7: LGTM: Version bump is appropriate.

The patch increment aligns with the broader Jira package release.

components/jira/actions/get-user/get-user.mjs (1)

7-7: LGTM: Consistent version increment.

The patch version bump is appropriate for this coordinated release cycle.

components/jira/actions/update-comment/update-comment.mjs (1)

10-10: LGTM: Routine version increment.

The patch version bump aligns with the package-wide release that introduces new Jira search actions.

components/jira/actions/add-multiple-attachments-to-issue/add-multiple-attachments-to-issue.mjs (1)

9-9: LGTM!

Version bump is appropriate to accompany the new actions and package version update to 1.2.0.

components/jira/actions/create-issue/create-issue.mjs (1)

11-11: LGTM!

Version bump aligns with the broader package version update.

components/jira/actions/assign-issue/assign-issue.mjs (1)

6-6: LGTM!

Version bump is consistent with the package version update.

components/jira/sources/issue-updated/issue-updated.mjs (1)

7-7: LGTM!

Version bump is appropriate for the package update.

components/jira/actions/get-issue/get-issue.mjs (1)

7-7: LGTM!

Version bump aligns with the package version update.

components/jira/package.json (1)

3-3: LGTM!

Minor version bump to 1.2.0 is semantically appropriate for adding new action modules (search issues, count issues, check issues against JQL, issue picker suggestions) without breaking changes.

components/jira/actions/transition-issue/transition-issue.mjs (1)

8-8: LGTM!

Version bump is consistent with the package update.

components/jira/actions/get-all-projects/get-all-projects.mjs (1)

7-7: LGTM!

Version bump aligns with the package version update.

components/jira/jira.app.mjs (1)

639-677: LGTM! Well-structured API methods.

All four new methods follow the established pattern in this file, correctly forward arguments, and use appropriate HTTP methods and API paths for their respective operations.

components/jira/actions/count-issues-using-jql/count-issues-using-jql.mjs (1)

1-46: LGTM! Clean and correct implementation.

The action correctly calls the API method, handles the response, and provides a clear summary message with proper fallback for missing count values.

components/jira/actions/check-issues-against-jql/check-issues-against-jql.mjs (1)

57-65: LGTM! Well-implemented summary logic.

The totalMatches calculation uses proper optional chaining and the summary message includes correct pluralization for both "queries" and "matches."

Copy link
Collaborator

@luancazarine luancazarine left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jcortes, LGTM! Ready for QA!

@vunguyenhung
Copy link
Collaborator

Hi everyone, all test cases are passed! Ready for release!

Test reports

@jcortes jcortes merged commit fd86753 into master Dec 29, 2025
9 checks passed
@jcortes jcortes deleted the jira-new-search-issues-components branch December 29, 2025 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ACTION] JIRA Search Issues

4 participants