Skip to content

Conversation

@jcortes
Copy link
Collaborator

@jcortes jcortes commented Nov 25, 2025

WHY

Resolves #19181

Summary by CodeRabbit

  • New Features

    • Added "Get All Leads" action to fetch leads with filtering, sorting and max-result limits.
    • Added a Lead Filter selector and ability to fetch available lead filters.
  • Chores

    • Multiple version bumps across Pipedrive actions and sources to publish updates.

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

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

vercel bot commented Nov 25, 2025

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

2 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
pipedream-docs Ignored Ignored Nov 25, 2025 4:34pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Nov 25, 2025 4:34pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 25, 2025

Walkthrough

Adds a new "Get All Leads" Pipedrive action with props for filtering, sorting and maxResults, plus app propDefinition filterId with async options and a getFilters() method; also bumps component package version and increments many action/source versions.

Changes

Cohort / File(s) Summary
New Get All Leads Action
components/pipedrive/actions/get-all-leads/get-all-leads.mjs
Adds new action exporting metadata, props (app, maxResults, ownerId, personId, organizationId, filterId, sort) and a run function that calls app.getPaginatedResources(fn: app.getLeads, params...), respects maxResults, returns leads and exports a summary.
App Configuration Updates
components/pipedrive/pipedrive.app.mjs
Adds propDefinitions.filterId (integer, async options via getFilters) and a methods.getFilters(opts = {}) that delegates to FiltersApi.getFilters(opts).
Package / version bumps
components/pipedrive/package.json, components/pipedrive/actions/*, components/pipedrive/sources/*
Bumps components/pipedrive/package.json version 0.10.5 → 0.10.6 and increments version fields across many action and source modules (multiple files under components/pipedrive/actions/ and components/pipedrive/sources/). Most changes are metadata-only version increments.

Sequence Diagram(s)

sequenceDiagram
    %% Styling notes: action = blue, app = green, api = orange
    participant User
    participant Action as Get All Leads (action)
    participant App as Pipedrive App
    participant API as Pipedrive API

    User->>Action: Invoke action with props (ownerId, personId, organizationId, filterId, sort, maxResults)
    Action->>Action: Build params object (map IDs, filter_id precedence)
    Action->>App: getPaginatedResources(fn: app.getLeads, params, maxResults)
    App->>API: getLeads(params, pagination)
    API-->>App: leads batch (paginated)
    App-->>Action: aggregated leads array
    Action->>Action: Export summary (count) and return leads
    Action-->>User: leads + summary
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Review the new action's props schema and parameter-to-API mapping (filter precedence, ID fields).
  • Verify pagination limit handling via maxResults with getPaginatedResources.
  • Confirm propDefinitions.filterId async options and getFilters() delegation to FiltersApi.
  • Quick scan of version bumps to ensure no unintended edits.

Possibly related PRs

Suggested labels

User submitted

Suggested reviewers

  • michelle0927
  • GTFalcao

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description check ⚠️ Warning The description provides a linked issue reference (#19181) but lacks substantive details about the implementation, changes made, or how the requirements are addressed. Expand the description to include what was implemented (e.g., new action added, API integration details, props schema), key changes made, and how the linked issue requirements were satisfied.
Out of Scope Changes check ⚠️ Warning The PR includes version bumps for 18 existing modules beyond the scope of implementing the new 'Get All Leads' action, which appears unrelated to the stated objective. Separate the version bumps for existing modules into a separate PR or clearly justify why they are necessary as part of this change.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically identifies the main change: adding a new action to retrieve all leads from Pipedrive. It is concise and directly summarizes the changeset.
Linked Issues check ✅ Passed The implementation successfully adds a new 'Get All Leads' action that uses the Pipedrive Leads API (getLeads operation) with comprehensive filtering options (owner_id, person_id, organization_id, filter_id, sort) and pagination support.
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 pipedrive-get-all-leads-action

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4ccb465 and 7e870fd.

📒 Files selected for processing (25)
  • components/pipedrive/actions/add-activity/add-activity.mjs (1 hunks)
  • components/pipedrive/actions/add-deal/add-deal.mjs (1 hunks)
  • components/pipedrive/actions/add-lead/add-lead.mjs (1 hunks)
  • components/pipedrive/actions/add-note/add-note.mjs (1 hunks)
  • components/pipedrive/actions/add-organization/add-organization.mjs (1 hunks)
  • components/pipedrive/actions/add-person/add-person.mjs (1 hunks)
  • components/pipedrive/actions/get-all-leads/get-all-leads.mjs (1 hunks)
  • components/pipedrive/actions/get-lead-by-id/get-lead-by-id.mjs (1 hunks)
  • components/pipedrive/actions/get-person-details/get-person-details.mjs (1 hunks)
  • components/pipedrive/actions/merge-deals/merge-deals.mjs (1 hunks)
  • components/pipedrive/actions/merge-persons/merge-persons.mjs (1 hunks)
  • components/pipedrive/actions/remove-duplicate-notes/remove-duplicate-notes.mjs (1 hunks)
  • components/pipedrive/actions/search-leads/search-leads.mjs (1 hunks)
  • components/pipedrive/actions/search-notes/search-notes.mjs (1 hunks)
  • components/pipedrive/actions/search-persons/search-persons.mjs (1 hunks)
  • components/pipedrive/actions/update-deal/update-deal.mjs (1 hunks)
  • components/pipedrive/actions/update-person/update-person.mjs (1 hunks)
  • components/pipedrive/package.json (1 hunks)
  • components/pipedrive/pipedrive.app.mjs (2 hunks)
  • components/pipedrive/sources/new-deal-instant/new-deal-instant.mjs (1 hunks)
  • components/pipedrive/sources/new-event-instant/new-event-instant.mjs (1 hunks)
  • components/pipedrive/sources/new-person-instant/new-person-instant.mjs (1 hunks)
  • components/pipedrive/sources/updated-deal-instant/updated-deal-instant.mjs (1 hunks)
  • components/pipedrive/sources/updated-lead-instant/updated-lead-instant.mjs (1 hunks)
  • components/pipedrive/sources/updated-person-instant/updated-person-instant.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/pipedrive/package.json
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
Repo: PipedreamHQ/pipedream PR: 18744
File: components/slack_v2/actions/send-large-message/send-large-message.mjs:49-64
Timestamp: 2025-10-20T01:01:02.970Z
Learning: In components/slack_v2/actions/send-large-message/send-large-message.mjs, the metadata_event_payload prop is typed as string, so the code only needs to handle string-to-JSON parsing and does not need to handle object inputs.

Applied to files:

  • components/pipedrive/sources/new-event-instant/new-event-instant.mjs
⏰ 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: Lint Code Base
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (16)
components/pipedrive/actions/add-lead/add-lead.mjs (1)

9-9: LGTM!

Version bump aligns with the package update.

components/pipedrive/actions/add-person/add-person.mjs (1)

9-9: LGTM!

Version bump aligns with the package update.

components/pipedrive/sources/new-person-instant/new-person-instant.mjs (1)

9-9: LGTM!

Version bump aligns with the package update.

components/pipedrive/actions/search-notes/search-notes.mjs (1)

7-7: LGTM!

Version bump aligns with the package update.

components/pipedrive/actions/search-leads/search-leads.mjs (1)

8-8: LGTM!

Version bump aligns with the package update.

components/pipedrive/actions/merge-persons/merge-persons.mjs (1)

7-7: Version bump only – looks good.

Action metadata version updated to 0.0.6 with no logic changes.

components/pipedrive/sources/updated-deal-instant/updated-deal-instant.mjs (1)

10-10: Source version metadata updated – OK.

Version bumped to 0.1.8; source behavior remains unchanged.

components/pipedrive/package.json (1)

3-3: Package version bump is consistent.

Component package version set to 0.10.6; no dependency changes.

components/pipedrive/actions/get-lead-by-id/get-lead-by-id.mjs (1)

7-7: Get-lead-by-id version bump only.

Action version updated to 0.0.6 with no functional changes.

components/pipedrive/actions/add-activity/add-activity.mjs (1)

10-10: Add-activity action version updated.

Metadata version moved to 0.1.19; implementation is unchanged.

components/pipedrive/actions/update-deal/update-deal.mjs (1)

8-8: Update-deal version bump – no behavior change.

Action version set to 0.1.20; update and note-adding logic unchanged.

components/pipedrive/actions/add-note/add-note.mjs (1)

8-8: Add-note action metadata bump.

Version updated to 0.0.16; no functional modifications.

components/pipedrive/actions/update-person/update-person.mjs (1)

9-9: Update-person action version increment.

Version moved to 0.0.11; updatePerson call and props unchanged.

components/pipedrive/sources/new-deal-instant/new-deal-instant.mjs (1)

9-9: Version bump only; no behavior change

The version increment to 0.0.14 is consistent with the rest of the PR and does not affect runtime behavior.

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

297-314: filterId propDefinition and getFilters method look consistent with existing patterns

  • filterId correctly reuses the app-level propDefinition with type: "integer", optional: true, and an async options function that calls this.getFilters({ type: filterType }) and maps { id, name } to { label, value }.
  • The new getFilters(opts = {}) method follows the same pattern as other API helpers here (e.g., getLeadLabels, getNotes), delegating to FiltersApi.getFilters(opts).

No functional issues stand out with these additions.

Also applies to: 446-449

components/pipedrive/actions/add-organization/add-organization.mjs (1)

8-8: Safe metadata version bump

The action’s version update to 0.1.18 is in line with the package-wide version bumps and does not affect logic.


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.

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: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e26745a and 4ccb465.

📒 Files selected for processing (3)
  • components/pipedrive/actions/get-all-leads/get-all-leads.mjs (1 hunks)
  • components/pipedrive/package.json (1 hunks)
  • components/pipedrive/pipedrive.app.mjs (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2024-12-12T19:23:09.039Z
Learnt from: jcortes
Repo: PipedreamHQ/pipedream PR: 14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like `fs` to `package.json` dependencies, as they are native modules provided by the Node.js runtime.

Applied to files:

  • components/pipedrive/package.json
🧬 Code graph analysis (1)
components/pipedrive/actions/get-all-leads/get-all-leads.mjs (2)
components/pipedrive/pipedrive.app.mjs (1)
  • leads (230-236)
components/zixflow/actions/get-activities/get-activities.mjs (1)
  • sort (46-48)
⏰ 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: Lint Code Base
  • GitHub Check: pnpm publish
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (4)
components/pipedrive/package.json (1)

3-3: Version bump is appropriate for the new action.

Patch version increment to 0.10.6 cleanly reflects the added functionality; no issues here.

components/pipedrive/pipedrive.app.mjs (2)

297-314: filterId propDefinition is well-structured and reusable.

The filterId prop cleanly mirrors other app-level props, with a sensible default filterType = "leads" and null-safe mapping from filters to { label, value }. This should work well both for this action and any future reuse.


446-449: getFilters helper matches existing API wrapper patterns.

The getFilters method delegates to FiltersApi in the same way as other helpers (e.g., getLeads, getLeadLabels), keeping the app surface consistent and easy to use from actions.

components/pipedrive/actions/get-all-leads/get-all-leads.mjs (1)

14-58: Props layout is clear and consistent with existing Pipedrive components.

Using app-level propDefinitions for owner/person/organization/filter plus a simple maxResults and sort keeps this action’s interface consistent and easy to understand. No changes needed here.

Copy link
Collaborator

@michelle0927 michelle0927 left a comment

Choose a reason for hiding this comment

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

LGTM!

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] Pipedrive - Get All Leads

3 participants