Skip to content

Conversation

choeqq
Copy link
Contributor

@choeqq choeqq commented Oct 14, 2025

Added optional webinar filtering to the zoom_admin-webinar-ended event source, allowing users to monitor specific webinars instead of all webinars in their account.

Changes

New Features:

  • Added webinar prop with dynamic dropdown to select specific webinars
  • Dropdown fetches all webinars (recurring and one-time) with pagination support
  • Filter is optional - leaving empty monitors all webinars (preserves existing behavior)

Code Improvements:

  • Implemented isRelevant() method for clean event filtering logic
  • Added emitEvent() helper method for better code organization
  • Refactored run() method following Pipedream source conventions
  • Added console logging for filtered events (debugging support)

Behavior:

  • Filters by webinar ID (object.id) to match the selected webinar
  • For recurring webinars, all occurrences trigger events (share same parent webinar ID)
  • Each occurrence uses unique UUID for deduplication

Why

Users often want to trigger workflows for specific webinars rather than processing events from all webinars. This change enables targeted event monitoring without creating noise from unrelated
webinars.

Summary by CodeRabbit

  • New Features

    • Webinar Ended trigger: added an optional webinar filter with searchable/selectable options and improved webhook labeling/description.
  • Chores

    • Bumped Zoom Admin component and source versions across triggers to align releases; no behavior changes for those triggers.
    • Updated package version to 0.12.0.

Copy link

vercel bot commented Oct 14, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Oct 15, 2025 7:58am

@adolfo-pd adolfo-pd added the User submitted Submitted by a user label Oct 14, 2025
@pipedream-component-development
Copy link
Collaborator

Thank you so much for submitting this! We've added it to our backlog to review, and our team has been notified.

@pipedream-component-development
Copy link
Collaborator

Thanks for submitting this PR! When we review PRs, we follow the Pipedream component guidelines. If you're not familiar, here's a quick checklist:

Copy link
Contributor

coderabbitai bot commented Oct 14, 2025

Walkthrough

Bumps package version and updates version metadata across many Zoom Admin source modules. The webinar-ended source also adds an optional webinar prop with async options, introduces isRelevant and emitEvent helpers, and refactors run() to gate emissions through relevance checks.

Changes

Cohort / File(s) Summary
Package manifest
components/zoom_admin/package.json
version updated from 0.11.0 to 0.12.0.
Source version bumps (metadata only)
components/zoom_admin/sources/account-created/account-created.mjs, components/zoom_admin/sources/account-settings-updated/account-settings-updated.mjs, components/zoom_admin/sources/account-updated/account-updated.mjs, components/zoom_admin/sources/custom-events/custom-events.mjs, components/zoom_admin/sources/meeting-created/meeting-created.mjs, components/zoom_admin/sources/meeting-deleted/meeting-deleted.mjs, components/zoom_admin/sources/meeting-ended/meeting-ended.mjs, components/zoom_admin/sources/meeting-started/meeting-started.mjs, components/zoom_admin/sources/meeting-updated/meeting-updated.mjs, components/zoom_admin/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs, components/zoom_admin/sources/recording-completed/recording-completed.mjs, components/zoom_admin/sources/user-activated/user-activated.mjs, components/zoom_admin/sources/user-created/user-created.mjs, components/zoom_admin/sources/user-deactivated/user-deactivated.mjs, components/zoom_admin/sources/user-deleted/user-deleted.mjs, components/zoom_admin/sources/user-invitation-accepted/user-invitation-accepted.mjs, components/zoom_admin/sources/user-updated/user-updated.mjs, components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs, components/zoom_admin/sources/webinar-created/webinar-created.mjs, components/zoom_admin/sources/webinar-deleted/webinar-deleted.mjs, components/zoom_admin/sources/webinar-started/webinar-started.mjs, components/zoom_admin/sources/webinar-updated/webinar-updated.mjs
Exported version strings bumped (metadata-only changes); no functional or control-flow changes.
Webinar ended source enhancements
components/zoom_admin/sources/webinar-ended/webinar-ended.mjs
version bumped; adds optional webinar prop with async options; adds isRelevant(object) and emitEvent(payload, object) helpers; refactors run(event) to check relevance before emitting; adds webhook prop labels/descriptions.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Z as Zoom
  participant WH as Zoom Webhook
  participant S as Source: webinar-ended
  participant D as Downstream (emit)

  Z->>WH: webinar.ended webhook
  WH->>S: run(event)

  rect rgba(200,220,255,0.25)
    S->>S: isRelevant(object)? (checks selected webinar if set)
    alt relevant
      S->>S: emitEvent(payload, object)
      S-->>D: $emit("webinar.ended", enrichedPayload)
      Note right of S: emission includes mapped metadata
    else not relevant
      S-->>WH: no-op / return
    end
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Suggested reviewers

  • jcortes

Poem

Thump-thump, a rabbit gives a cheer,
Versions hop forward, crisp and clear.
One source now filters, checks, and sends,
While metadata updates make small amends.
Tiny hops, big signals — carrots near. 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description does not adhere to the repository’s required template because it lacks the exact “## WHY” heading at the top and instead uses a “### Why” section later, causing a mismatch with the specified structure. Please update the description to include the “## WHY” section exactly as defined in the template at the beginning of the pull request, moving the motivation content under that heading and ensuring all section headings match the required format.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title clearly and concisely summarizes the primary change by indicating that a webinar filter is being added to the Zoom Admin webinar-ended source, which matches the main objective of the pull request.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a43c92d and 03fa3a1.

📒 Files selected for processing (1)
  • components/zoom_admin/sources/webinar-ended/webinar-ended.mjs (2 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • components/zoom_admin/sources/webinar-ended/webinar-ended.mjs

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: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c68c4d6 and a43c92d.

📒 Files selected for processing (24)
  • components/zoom_admin/package.json (1 hunks)
  • components/zoom_admin/sources/account-created/account-created.mjs (1 hunks)
  • components/zoom_admin/sources/account-settings-updated/account-settings-updated.mjs (1 hunks)
  • components/zoom_admin/sources/account-updated/account-updated.mjs (1 hunks)
  • components/zoom_admin/sources/custom-events/custom-events.mjs (1 hunks)
  • components/zoom_admin/sources/meeting-created/meeting-created.mjs (1 hunks)
  • components/zoom_admin/sources/meeting-deleted/meeting-deleted.mjs (1 hunks)
  • components/zoom_admin/sources/meeting-ended/meeting-ended.mjs (1 hunks)
  • components/zoom_admin/sources/meeting-started/meeting-started.mjs (1 hunks)
  • components/zoom_admin/sources/meeting-updated/meeting-updated.mjs (1 hunks)
  • components/zoom_admin/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs (1 hunks)
  • components/zoom_admin/sources/recording-completed/recording-completed.mjs (1 hunks)
  • components/zoom_admin/sources/user-activated/user-activated.mjs (1 hunks)
  • components/zoom_admin/sources/user-created/user-created.mjs (1 hunks)
  • components/zoom_admin/sources/user-deactivated/user-deactivated.mjs (1 hunks)
  • components/zoom_admin/sources/user-deleted/user-deleted.mjs (1 hunks)
  • components/zoom_admin/sources/user-invitation-accepted/user-invitation-accepted.mjs (1 hunks)
  • components/zoom_admin/sources/user-updated/user-updated.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-created/webinar-created.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-deleted/webinar-deleted.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-ended/webinar-ended.mjs (2 hunks)
  • components/zoom_admin/sources/webinar-started/webinar-started.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-updated/webinar-updated.mjs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
components/zoom_admin/sources/webinar-ended/webinar-ended.mjs (1)
components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1)
  • nextPageToken (62-62)
⏰ 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: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
🔇 Additional comments (26)
components/zoom_admin/package.json (1)

3-3: LGTM!

The minor version bump from 0.11.0 to 0.12.0 appropriately reflects the addition of new functionality (webinar filter) while maintaining backward compatibility.

components/zoom_admin/sources/custom-events/custom-events.mjs (1)

8-8: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/account-updated/account-updated.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated package release.

components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1)

11-11: LGTM!

Version bump maintains consistency with the package-wide release.

components/zoom_admin/sources/user-activated/user-activated.mjs (1)

8-8: LGTM!

Version bump is appropriate for the coordinated package release.

components/zoom_admin/sources/recording-completed/recording-completed.mjs (1)

9-9: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/webinar-started/webinar-started.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated package release.

components/zoom_admin/sources/meeting-started/meeting-started.mjs (1)

9-9: LGTM!

Version bump maintains consistency with the package-wide release.

components/zoom_admin/sources/user-deleted/user-deleted.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/account-settings-updated/account-settings-updated.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/meeting-updated/meeting-updated.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/user-invitation-accepted/user-invitation-accepted.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/user-updated/user-updated.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/meeting-deleted/meeting-deleted.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/user-deactivated/user-deactivated.mjs (1)

8-8: LGTM!

Version bump is consistent with the coordinated update across Zoom Admin sources.

components/zoom_admin/sources/account-created/account-created.mjs (1)

8-8: Inconsistent version bumps across Zoom Admin sources
Most sources in this PR are updated to 0.1.7, but:

  • account-created & recording-completed → 0.1.8
  • webinar-started → 0.1.9
  • new-recording-transcript-completed remains at 0.0.2

Confirm these version jumps are intentional or align all sources to the correct version.

components/zoom_admin/sources/webinar-deleted/webinar-deleted.mjs (1)

8-8: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/webinar-updated/webinar-updated.mjs (1)

9-9: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/webinar-created/webinar-created.mjs (1)

9-9: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/user-created/user-created.mjs (1)

8-8: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs (1)

7-7: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/meeting-created/meeting-created.mjs (1)

8-8: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/meeting-ended/meeting-ended.mjs (1)

8-8: LGTM!

Version bump aligns with the package-wide version update.

components/zoom_admin/sources/webinar-ended/webinar-ended.mjs (3)

21-54: LGTM!

The new webinar filter prop is well-implemented with:

  • Clear documentation explaining behavior for recurring webinars
  • Proper pagination support using nextPageToken
  • Correct handling of empty results
  • User-friendly label/value mapping

The optional nature preserves backward compatibility.


57-68: LGTM!

The isRelevant() filter method correctly:

  • Preserves existing behavior when no filter is set
  • Matches webinar ID as documented
  • Provides debug logging for filtered events

The string comparison at line 62 is appropriate since the webinar prop returns a string value.


83-92: LGTM!

The refactored run() method follows best practices:

  • Clean separation of concerns (filtering via isRelevant(), emission via emitEvent())
  • Efficient early return when events don't match the filter
  • Aligns with Pipedream source conventions

michelle0927
michelle0927 previously approved these changes Oct 14, 2025
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! Ready for QA!

@michelle0927 michelle0927 moved this from In Review to Ready for QA in Component (Source and Action) Backlog Oct 14, 2025
@vunguyenhung vunguyenhung moved this from Ready for QA to Changes Required in Component (Source and Action) Backlog Oct 15, 2025
@vunguyenhung
Copy link
Collaborator

Hello everyone, I have tested this PR and there're some test cases failed or needed improvement.

Please check the test report below for more information
https://vunguyenhung.notion.site/Add-Webinar-Filter-to-Zoom-Admin-Webinar-Ended-Source-28cbf548bb5e81a4979fe167379cc43f

Copy link
Contributor Author

@choeqq choeqq left a comment

Choose a reason for hiding this comment

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

Hi @vunguyenhung

Thank you so much for QA

I just fixed the error that was mentioned in Notion doc

@michelle0927 michelle0927 moved this from Changes Required to Ready for QA in Component (Source and Action) Backlog Oct 15, 2025
@vunguyenhung vunguyenhung moved this from Ready for QA to Ready for Release in Component (Source and Action) Backlog Oct 16, 2025
@vunguyenhung
Copy link
Collaborator

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

Test report
https://vunguyenhung.notion.site/Add-Webinar-Filter-to-Zoom-Admin-Webinar-Ended-Source-28cbf548bb5e81a4979fe167379cc43f

@michelle0927 michelle0927 merged commit 8050583 into PipedreamHQ:master Oct 16, 2025
9 of 10 checks passed
@github-project-automation github-project-automation bot moved this from Ready for Release to Done in Component (Source and Action) Backlog Oct 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

User submitted Submitted by a user

Development

Successfully merging this pull request may close these issues.

5 participants