Skip to content

Conversation

@luancazarine
Copy link
Collaborator

@luancazarine luancazarine commented Oct 29, 2025

Resolves #18873

Summary by CodeRabbit

  • New Features

    • Added double-URL-encoding for Zoom identifiers; Meeting ID input now accepts strings for broader ID support.
  • Bug Fixes

    • API request paths now encode IDs to reliably handle special characters across meetings, webinars, recordings, and related endpoints.
  • Chores

    • Updated many action/source/component versions and bumped package versions (zoom and zoom_admin).

…s to use double encoding for meeting and webinar IDs. Adjusted action versions for consistency and improved utility functions for better handling of URLs.
@luancazarine luancazarine linked an issue Oct 29, 2025 that may be closed by this pull request
@vercel
Copy link

vercel bot commented Oct 29, 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 Oct 29, 2025 9:52pm
pipedream-docs-redirect-do-not-edit Ignored Ignored Oct 29, 2025 9:52pm

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 29, 2025

Walkthrough

Adds a doubleEncode utility and uses it to double-URL-encode Zoom meeting/webinar IDs in many API path constructions, changes Zoom app meetingId prop type from integer to string, and applies widespread version bumps across zoom and zoom_admin components.

Changes

Cohort / File(s) Summary
New Encoding Utilities
components/zoom/common/utils.mjs, components/zoom_admin/common/utils.mjs
Add doubleEncode(value) and export it; returns double-encoded value for strings that start with / or contain //, otherwise returns original.
App prop type fix
components/zoom/zoom.app.mjs
Change meetingId prop type from integer to string; import utils and use utils.doubleEncode(meetingId) in getPastMeetingDetails.
Zoom actions — ID encoding
components/zoom/actions/*/*.mjs
Import utils and replace direct ID interpolation with utils.doubleEncode(...) in API paths (e.g., get-meeting-details, list-past-webinar-qa, update-meeting, update-webinar, get-meeting-transcript, list-past-meeting-participants, list-webinar-participants-report); bump action versions.
Zoom admin app — ID encoding
components/zoom_admin/zoom_admin.app.mjs
Import doubleEncode and apply it to meeting/webinar IDs across helper methods (listMeetingsOccurrences, listWebinarPanelists, listMeetingOrWebinarRegistrants, listWebinarParticipants, listMeetingRegistrants, listWebinarRegistrants, listPastMeetingParticipants, listMeetingRecordings).
Zoom Admin actions — ID encoding
components/zoom_admin/actions/*/*.mjs
Import doubleEncode and apply it in many actions' request paths (add-meeting-registrant, add-webinar-panelist, add-webinar-registrant, delete-cloud-recording, delete-meeting, delete-webinar, delete-webinar-panelist, end-meeting, get-meeting, get-meeting-transcript, get-webinar, update-meeting, update-webinar, update-webinar-registrant-status); bump versions.
Annotations & minor metadata
components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs, components/zoom_admin/actions/list-past-meeting-participants/list-past-meeting-participants.mjs
Add annotations.readOnlyHint: false (delete-cloud-recording) and readOnlyHint: true (list-past-meeting-participants); minor import reorder.
Simple version bumps — zoom
components/zoom/actions/*/*.mjs, components/zoom/sources/*/*.mjs, components/zoom/package.json
Multiple patch/version increments across actions, sources, and components/zoom/package.json (0.7.0 → 0.7.1) with no behavioral changes.
Simple version bumps — zoom_admin
components/zoom_admin/actions/*/*.mjs, components/zoom_admin/sources/*/*.mjs, components/zoom_admin/package.json
Multiple patch/version increments across admin actions, sources, and components/zoom_admin/package.json (0.13.0 → 0.13.1) with no behavioral changes.

Sequence Diagram(s)

sequenceDiagram
    participant Caller
    participant Action
    participant Utils
    participant ZoomAPI

    Caller->>Action: invoke action/app method with ID
    Action->>Utils: doubleEncode(id)
    activate Utils
    alt id starts with "/" or contains "//"
        Utils-->>Action: encodeURIComponent(encodeURIComponent(id))
    else
        Utils-->>Action: id
    end
    deactivate Utils
    Action->>ZoomAPI: HTTP request to /.../{encoded_id}
    ZoomAPI-->>Action: response
    Action-->>Caller: return result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~35 minutes

  • Areas to focus:
    • doubleEncode behavior with non-string inputs and edge-case slashes.
    • Consistent import names/paths between zoom and zoom_admin modules.
    • Impact of meetingId prop type change on callers/tests and any runtime validations.

Possibly related PRs

Suggested labels

User submitted

Suggested reviewers

  • GTFalcao

Poem

🐰 Hop, hop, encode the trail,

IDs with slashes no longer frail.
Double wraps keep paths polite,
Requests hop through, encoded tight.
Versions bumped — a tidy bite!

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The pull request description provided is minimal, containing only "Resolves #18873" without any explanation. The repository's description template requires a "WHY" section to be completed by the author, explaining the rationale behind the changes. The current description is severely incomplete and does not follow the template structure, offering no context about why these changes were necessary or what problem they solve beyond a ticket reference.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The pull request title "Update Zoom components to version 0.7.1 and 0.13.1; refactor API path…" is directly related to the main changes in the changeset. The title accurately captures the two primary modifications: version bumps for the Zoom component packages and the refactoring of API path construction to use the new doubleEncode utility. However, the title does not explicitly mention the core bug fix that motivated these changes—correcting the meetingId prop type from integer to string—which is the primary issue being resolved (#18873). While the title is related to significant changes in the PR, it could be more specific about the underlying purpose of the refactoring.
Linked Issues Check ✅ Passed The pull request successfully addresses the requirements from issue #18873. The code changes include correcting the meetingId prop type from integer to string in components/zoom/zoom.app.mjs, adding a new doubleEncode utility function to handle URL encoding of IDs, and applying this encoding consistently throughout API path construction in multiple actions and sources. The refactoring ensures that IDs are properly encoded when used in API URLs, which directly resolves the issue of handling meetingId values that may contain special characters or require URL encoding when passed as strings rather than integers.
Out of Scope Changes Check ✅ Passed All code changes in the pull request appear to be directly related to resolving issue #18873 and implementing the necessary infrastructure to support the prop type correction. The addition of the doubleEncode utility, its application across API paths, and the version bumps are all appropriate and necessary changes to support the transition from integer to string handling of meetingId and webinarId values. The version increments across affected actions and sources are consistent with releasing a coordinated update to address the bug fix, and no unrelated changes were detected in the diff.
✨ 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 18873-bug-zoom-meetingid-prop-type

📜 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 c1d6476 and 5bd3ed3.

📒 Files selected for processing (1)
  • components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.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: pnpm publish
  • GitHub Check: Lint Code Base
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Verify TypeScript 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.

…nd sources, including increments for meeting and webinar registrants, transcripts, call logs, and various event sources. Adjusted versions for improved clarity and functionality.
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: 6

Caution

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

⚠️ Outside diff range comments (1)
components/zoom/actions/get-meeting-details/get-meeting-details.mjs (1)

21-24: Critical type mismatch: integer prop with string-only encoding.

The meeting_id prop is typed as integer, but doubleEncode (line 34) calls string methods without type checking. This will cause a runtime error when the integer is passed to doubleEncode, which attempts value.startsWith("/").

Either:

  1. Change the prop type to string to match the encoding logic, or
  2. Add type coercion in the doubleEncode function or before calling it

Apply this diff to fix the prop type:

     meeting_id: {
-      type: "integer",
+      type: "string",
       description: "The meeting ID.",
     },
🧹 Nitpick comments (1)
components/zoom_admin/zoom_admin.app.mjs (1)

268-278: Consider adding error context for encoding failures.

The listMeetingsOccurrences method silently returns an empty array on any error (line 276). If doubleEncode were to throw an error or if the encoding causes an API failure, debugging would be difficult without error logging.

Consider logging errors before returning empty arrays:

     } catch {
+      console.error(`Failed to fetch occurrences for meeting ${meetingId}`);
       return [];
     }
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9e69925 and 30a262a.

📒 Files selected for processing (30)
  • components/zoom/actions/get-meeting-details/get-meeting-details.mjs (2 hunks)
  • components/zoom/actions/list-past-webinar-qa/list-past-webinar-qa.mjs (2 hunks)
  • components/zoom/actions/update-meeting/update-meeting.mjs (2 hunks)
  • components/zoom/actions/update-webinar/update-webinar.mjs (2 hunks)
  • components/zoom/common/utils.mjs (1 hunks)
  • components/zoom/package.json (1 hunks)
  • components/zoom/sources/meeting-ended/meeting-ended.mjs (1 hunks)
  • components/zoom/zoom.app.mjs (3 hunks)
  • components/zoom_admin/actions/add-meeting-registrant/add-meeting-registrant.mjs (2 hunks)
  • components/zoom_admin/actions/add-webinar-panelist/add-webinar-panelist.mjs (2 hunks)
  • components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (2 hunks)
  • components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (2 hunks)
  • components/zoom_admin/actions/delete-meeting/delete-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/delete-webinar-panelist/delete-webinar-panelist.mjs (2 hunks)
  • components/zoom_admin/actions/delete-webinar/delete-webinar.mjs (2 hunks)
  • components/zoom_admin/actions/end-meeting/end-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/get-meeting-recordings/get-meeting-recordings.mjs (1 hunks)
  • components/zoom_admin/actions/get-meeting/get-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/get-webinar/get-webinar.mjs (2 hunks)
  • components/zoom_admin/actions/list-meeting-registrants/list-meeting-registrants.mjs (1 hunks)
  • components/zoom_admin/actions/list-past-meeting-participants/list-past-meeting-participants.mjs (1 hunks)
  • components/zoom_admin/actions/list-webinar-participants/list-webinar-participants.mjs (1 hunks)
  • components/zoom_admin/actions/list-webinar-registrants/list-webinar-registrants.mjs (1 hunks)
  • components/zoom_admin/actions/update-meeting/update-meeting.mjs (3 hunks)
  • components/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs (2 hunks)
  • components/zoom_admin/actions/update-webinar/update-webinar.mjs (3 hunks)
  • components/zoom_admin/package.json (1 hunks)
  • components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1 hunks)
  • components/zoom_admin/utils.mjs (2 hunks)
  • components/zoom_admin/zoom_admin.app.mjs (9 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.

Applied to files:

  • components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs
  • components/zoom_admin/actions/update-meeting/update-meeting.mjs
  • components/zoom_admin/actions/update-webinar/update-webinar.mjs
  • components/zoom/zoom.app.mjs
📚 Learning: 2025-10-20T01:01:02.970Z
Learnt from: js07
PR: PipedreamHQ/pipedream#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/zoom_admin/actions/list-webinar-participants/list-webinar-participants.mjs
🧬 Code graph analysis (17)
components/zoom_admin/actions/end-meeting/end-meeting.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom/common/utils.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/zoom_admin.app.mjs (3)
components/zoom_admin/actions/get-meeting-transcript/get-meeting-transcript.mjs (1)
  • meetingId (35-35)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs (1)
  • webinarID (73-75)
components/zoom_admin/actions/delete-webinar-panelist/delete-webinar-panelist.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/add-meeting-registrant/add-meeting-registrant.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/update-meeting/update-meeting.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/add-webinar-panelist/add-webinar-panelist.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/delete-meeting/delete-meeting.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/update-webinar/update-webinar.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/get-webinar/get-webinar.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/utils.mjs (1)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/delete-webinar/delete-webinar.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom/zoom.app.mjs (1)
components/zoom_admin/actions/get-meeting-transcript/get-meeting-transcript.mjs (1)
  • meetingId (35-35)
components/zoom_admin/actions/get-meeting/get-meeting.mjs (2)
components/zoom_admin/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
⏰ 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 (26)
components/zoom/package.json (1)

3-3: LGTM! Appropriate version bump.

The patch version increment correctly reflects the addition of the doubleEncode utility and encoding-related fixes across Zoom components.

components/zoom_admin/actions/get-meeting-recordings/get-meeting-recordings.mjs (1)

9-9: LGTM! Version bump reflects underlying app method changes.

The version increment is appropriate since the listMeetingRecordings app method now uses doubleEncode internally (as shown in zoom_admin.app.mjs lines 428-435). No changes to this action are required.

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

9-9: LGTM! Version bump aligns with app method updates.

The version increment is appropriate to reflect that the underlying app methods (listMeetings and getPastMeetingDetails) now handle ID encoding via doubleEncode.

components/zoom_admin/package.json (1)

3-3: LGTM! Appropriate version bump.

The patch version increment correctly reflects the addition of the doubleEncode utility and encoding-related fixes across Zoom Admin components.

components/zoom_admin/actions/list-past-meeting-participants/list-past-meeting-participants.mjs (1)

10-14: LGTM! Good addition of readOnlyHint annotation.

The version bump and addition of readOnlyHint: true are appropriate. This correctly indicates that the action performs read-only operations (listing participants), improving the action's metadata.

components/zoom/actions/update-meeting/update-meeting.mjs (2)

3-3: LGTM! Proper implementation of doubleEncode for meetingId.

The addition of the utils import and application of utils.doubleEncode(this.meetingId) at line 81 correctly addresses the PR objective. This ensures that meeting IDs containing special characters (like slashes) are properly encoded for the Zoom API.

Also applies to: 81-81


22-24: meetingId correctly typed as string.

The meetingId prop is appropriately typed as string, which aligns with the PR objective to handle Zoom IDs as strings rather than integers. This is correct since Zoom API identifiers can contain non-numeric characters.

components/zoom_admin/actions/list-meeting-registrants/list-meeting-registrants.mjs (1)

10-10: Version bump without visible code changes.

The version was incremented without apparent changes in this file. This is acceptable if it reflects dependency updates or broader package changes.

components/zoom_admin/actions/list-webinar-participants/list-webinar-participants.mjs (1)

8-8: Version bump without visible code changes.

The version was incremented without apparent changes in this file. This is acceptable if it reflects dependency updates or broader package changes.

components/zoom_admin/actions/end-meeting/end-meeting.mjs (1)

3-3: LGTM! Proper encoding with type-safe utility.

The doubleEncode function from zoom_admin/utils.mjs includes proper type checking before performing string operations, making this implementation safe.

Also applies to: 29-29

components/zoom_admin/actions/delete-webinar/delete-webinar.mjs (1)

3-3: LGTM! Proper encoding with type-safe utility.

The doubleEncode function from zoom_admin/utils.mjs includes proper type checking, ensuring safe encoding of webinar IDs.

Also applies to: 46-46

components/zoom_admin/actions/list-webinar-registrants/list-webinar-registrants.mjs (1)

9-9: Version bump without visible code changes.

The version was incremented without apparent changes in this file. This is acceptable if it reflects dependency updates or broader package changes.

components/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs (1)

5-5: LGTM! Encoding applied correctly.

The import and usage of doubleEncode are correct and consistent with the broader refactoring to handle special characters in Zoom IDs.

Also applies to: 66-66

components/zoom_admin/actions/delete-meeting/delete-meeting.mjs (1)

3-3: LGTM! Encoding applied correctly.

The doubleEncode function is properly applied to the meeting ID in the DELETE request path.

Also applies to: 51-51

components/zoom_admin/actions/get-webinar/get-webinar.mjs (1)

3-3: LGTM! Encoding applied correctly.

The doubleEncode function is properly applied to the webinar ID in the GET request path.

Also applies to: 45-45

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

35-35: Breaking change: meetingId prop type changed from integer to string.

This change addresses issue #18873 and aligns the prop type with the Zoom API's expected format. However, this is a breaking change for existing users who may be passing integer values.

Ensure that:

  1. The change is documented in release notes
  2. Any downstream consumers are aware of this type change
  3. Migration guidance is provided if needed

3-3: No issues found. The utils module exists at components/zoom/common/utils.mjs and properly exports the doubleEncode function.

components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (1)

4-4: LGTM! Encoding applied correctly.

The doubleEncode function is properly applied to the webinar ID in the POST request path.

Also applies to: 57-57

components/zoom_admin/actions/add-webinar-panelist/add-webinar-panelist.mjs (1)

3-3: LGTM! Encoding applied correctly.

The doubleEncode function is properly applied to the webinar ID in the POST request path.

Note: This action's version was bumped to 0.1.9 (unlike others bumped to 0.1.8), which is fine if this action had a more recent prior version.

Also applies to: 39-39

components/zoom_admin/utils.mjs (1)

24-29: No change required — implementation matches Zoom docs.

The function in components/zoom_admin/utils.mjs (lines ~24–29) double-encodes only when a string starts with "/" or contains "//", which is the exact condition Zoom's API docs call out for needing double-encoding of UUIDs; numeric meeting IDs are digits-only and do not require encoding. Leave as-is.

components/zoom_admin/actions/update-webinar/update-webinar.mjs (1)

4-4: LGTM! Consistent encoding pattern applied.

The changes consistently apply the doubleEncode utility to the webinar ID before URL interpolation, matching the pattern in other updated actions. The version bump appropriately reflects the behavioral change.

Also applies to: 17-17, 101-101

components/zoom_admin/actions/get-meeting/get-meeting.mjs (1)

3-3: LGTM! Encoding applied consistently.

The doubleEncode utility is correctly applied to the meeting ID before URL interpolation. The version bump to 0.1.9 (from 0.1.8) appropriately reflects the behavioral change and indicates prior version history.

Also applies to: 10-10, 44-44

components/zoom/actions/update-webinar/update-webinar.mjs (1)

3-3: LGTM! Note the different import pattern.

The encoding is correctly applied using utils.doubleEncode(). This file uses a namespace import pattern (import utils from "../../common/utils.mjs") versus the named import pattern in zoom_admin files (import { doubleEncode } from "../../utils.mjs"). Both approaches work, though the codebase now has two patterns for accessing the same utility.

Also applies to: 81-81

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

7-7: LGTM! Comprehensive and consistent encoding across all API methods.

The doubleEncode utility is systematically applied to all meeting/webinar IDs before URL interpolation across multiple methods. The implementation uses two patterns:

  1. Reassignment (lines 268, 309): meetingId = doubleEncode(meetingId) - used when the ID is referenced multiple times
  2. Inline (lines 300, 345, 376, 398, 420, 430): doubleEncode(id) directly in template literals

Both patterns are valid, and the reassignment approach is appropriate for methods where the ID is used in conditional logic (like listMeetingsOccurrences at line 270).

Also applies to: 268-268, 300-300, 309-309, 345-345, 376-376, 398-398, 420-420, 430-430

components/zoom_admin/actions/delete-webinar-panelist/delete-webinar-panelist.mjs (1)

38-38: Panelist ID encoding follows codebase convention and appears intentional.

The asymmetry is not an oversight—it's a consistent pattern throughout the zoom_admin component. Analysis shows:

  • Top-level resource IDs are encoded: webinar, meeting IDs use doubleEncode()
  • Nested resource IDs are not: panelist, registrant, and recording IDs remain unencoded

For example, delete-cloud-recording.mjs follows the same pattern: path: /meetings/${doubleEncode(...)}/recordings/${id} (meeting encoded, recording ID not). The listWebinarPanelists method in zoom_admin.app.mjs also applies doubleEncode() only to the webinar ID.

Since doubleEncode specifically targets values containing forward slashes, confirm with your API documentation or testing whether panelist IDs ever contain characters requiring URL encoding. If they don't, the current implementation is correct.

components/zoom_admin/actions/update-meeting/update-meeting.mjs (1)

4-4: Fix missing type guard in Zoom component's doubleEncode utility.

Verification confirms the conditional encoding in components/zoom_admin/actions/update-meeting/update-meeting.mjs is correct and aligns with Zoom API requirements—UUIDs containing forward slashes require double URL-encoding, while plain numeric and string IDs are correctly left unchanged.

However, the verification found a critical issue in the components/zoom/common/utils.mjs implementation: the doubleEncode function (lines 17-19) lacks a type guard, whereas the zoom_admin version includes typeof value === "string". This causes a runtime error when components/zoom/actions/get-meeting-details/get-meeting-details.mjs (line 22) declares meeting_id as type: "integer" and passes it to doubleEncode at line 34—calling .startsWith() on a number will throw TypeError.

Required fixes:

  • Add typeof value === "string" guard to components/zoom/common/utils.mjs lines 17-19, matching the zoom_admin implementation
  • Alternatively, change get-meeting-details.mjs line 22 to type: "string" to match actual usage
⛔ Skipped due to learnings
Learnt from: js07
PR: PipedreamHQ/pipedream#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.

…king for URL patterns, improving robustness in URL encoding.
…ring consistent URL encoding for meeting and webinar identifiers across multiple components.
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: 4

♻️ Duplicate comments (1)
components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (1)

41-41: The recording ID must also be encoded with doubleEncode().

The recording ID (cloudRecording.value.id) at the end of the path is not encoded, but Zoom recording IDs can contain special characters like "/" that require double-encoding. This was previously flagged but remains unresolved.

Apply this diff to encode both the meeting ID and recording ID:

-      path: `/meetings/${doubleEncode(cloudRecording.value.meetingId)}/recordings/${cloudRecording.value.id}`,
+      path: `/meetings/${doubleEncode(cloudRecording.value.meetingId)}/recordings/${doubleEncode(cloudRecording.value.id)}`,
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 30a262a and 4f2d70f.

📒 Files selected for processing (68)
  • components/zoom/actions/add-meeting-registrant/add-meeting-registrant.mjs (1 hunks)
  • components/zoom/actions/add-webinar-registrant/add-webinar-registrant.mjs (1 hunks)
  • components/zoom/actions/get-meeting-transcript/get-meeting-transcript.mjs (1 hunks)
  • components/zoom/actions/get-webinar-details/get-webinar-details.mjs (1 hunks)
  • components/zoom/actions/list-call-recordings/list-call-recordings.mjs (1 hunks)
  • components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs (2 hunks)
  • components/zoom/actions/list-user-call-logs/list-user-call-logs.mjs (1 hunks)
  • components/zoom/actions/list-webinar-participants-report/list-webinar-participants-report.mjs (2 hunks)
  • components/zoom/common/utils.mjs (1 hunks)
  • components/zoom/sources/custom-event/custom-event.mjs (1 hunks)
  • components/zoom/sources/meeting-created/meeting-created.mjs (1 hunks)
  • components/zoom/sources/meeting-deleted/meeting-deleted.mjs (1 hunks)
  • components/zoom/sources/meeting-started/meeting-started.mjs (1 hunks)
  • components/zoom/sources/meeting-updated/meeting-updated.mjs (1 hunks)
  • components/zoom/sources/new-recording-transcript-completed/new-recording-transcript-completed.mjs (1 hunks)
  • components/zoom/sources/phone-event/phone-event.mjs (1 hunks)
  • components/zoom/sources/recording-completed/recording-completed.mjs (1 hunks)
  • components/zoom/sources/webinar-created/webinar-created.mjs (1 hunks)
  • components/zoom/sources/webinar-deleted/webinar-deleted.mjs (1 hunks)
  • components/zoom/sources/webinar-ended/webinar-ended.mjs (1 hunks)
  • components/zoom/sources/webinar-started/webinar-started.mjs (1 hunks)
  • components/zoom/sources/webinar-updated/webinar-updated.mjs (1 hunks)
  • components/zoom_admin/actions/add-meeting-registrant/add-meeting-registrant.mjs (2 hunks)
  • components/zoom_admin/actions/add-webinar-panelist/add-webinar-panelist.mjs (2 hunks)
  • components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (2 hunks)
  • components/zoom_admin/actions/create-meeting/create-meeting.mjs (1 hunks)
  • components/zoom_admin/actions/create-webinar/create-webinar.mjs (1 hunks)
  • components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (2 hunks)
  • components/zoom_admin/actions/delete-meeting/delete-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/delete-webinar-panelist/delete-webinar-panelist.mjs (2 hunks)
  • components/zoom_admin/actions/delete-webinar/delete-webinar.mjs (2 hunks)
  • components/zoom_admin/actions/end-meeting/end-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/get-meeting-transcript/get-meeting-transcript.mjs (2 hunks)
  • components/zoom_admin/actions/get-meeting/get-meeting.mjs (2 hunks)
  • components/zoom_admin/actions/get-webinar/get-webinar.mjs (2 hunks)
  • components/zoom_admin/actions/list-account-call-logs/list-account-call-logs.mjs (1 hunks)
  • components/zoom_admin/actions/list-cloud-recordings/list-cloud-recordings.mjs (1 hunks)
  • components/zoom_admin/actions/list-meetings/list-meetings.mjs (1 hunks)
  • components/zoom_admin/actions/list-user-cloud-recordings/list-user-cloud-recordings.mjs (1 hunks)
  • components/zoom_admin/actions/list-users/list-users.mjs (1 hunks)
  • components/zoom_admin/actions/list-webinars/list-webinars.mjs (1 hunks)
  • components/zoom_admin/actions/update-meeting/update-meeting.mjs (3 hunks)
  • components/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs (2 hunks)
  • components/zoom_admin/actions/update-webinar/update-webinar.mjs (3 hunks)
  • components/zoom_admin/common/utils.mjs (2 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-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 (1 hunks)
  • components/zoom_admin/sources/webinar-started/webinar-started.mjs (1 hunks)
  • components/zoom_admin/sources/webinar-updated/webinar-updated.mjs (1 hunks)
  • components/zoom_admin/zoom_admin.app.mjs (9 hunks)
✅ Files skipped from review due to trivial changes (34)
  • components/zoom/sources/webinar-created/webinar-created.mjs
  • components/zoom/actions/get-webinar-details/get-webinar-details.mjs
  • components/zoom_admin/sources/account-updated/account-updated.mjs
  • components/zoom/sources/webinar-started/webinar-started.mjs
  • components/zoom/sources/webinar-updated/webinar-updated.mjs
  • components/zoom_admin/sources/recording-completed/recording-completed.mjs
  • components/zoom_admin/actions/list-users/list-users.mjs
  • components/zoom_admin/sources/user-invitation-accepted/user-invitation-accepted.mjs
  • components/zoom_admin/sources/meeting-started/meeting-started.mjs
  • components/zoom/sources/custom-event/custom-event.mjs
  • components/zoom/actions/add-webinar-registrant/add-webinar-registrant.mjs
  • components/zoom_admin/actions/list-webinars/list-webinars.mjs
  • components/zoom_admin/sources/webinar-updated/webinar-updated.mjs
  • components/zoom_admin/sources/webinar-deleted/webinar-deleted.mjs
  • components/zoom/actions/list-call-recordings/list-call-recordings.mjs
  • components/zoom_admin/sources/webinar-started/webinar-started.mjs
  • components/zoom/sources/recording-completed/recording-completed.mjs
  • components/zoom/actions/get-meeting-transcript/get-meeting-transcript.mjs
  • components/zoom_admin/sources/meeting-deleted/meeting-deleted.mjs
  • components/zoom_admin/sources/webinar-created/webinar-created.mjs
  • components/zoom/sources/phone-event/phone-event.mjs
  • components/zoom/sources/meeting-updated/meeting-updated.mjs
  • components/zoom_admin/sources/account-settings-updated/account-settings-updated.mjs
  • components/zoom_admin/sources/user-updated/user-updated.mjs
  • components/zoom/sources/meeting-started/meeting-started.mjs
  • components/zoom_admin/sources/meeting-updated/meeting-updated.mjs
  • components/zoom_admin/actions/create-webinar/create-webinar.mjs
  • components/zoom_admin/sources/custom-events/custom-events.mjs
  • components/zoom/actions/add-meeting-registrant/add-meeting-registrant.mjs
  • components/zoom/actions/list-user-call-logs/list-user-call-logs.mjs
  • components/zoom/sources/meeting-deleted/meeting-deleted.mjs
  • components/zoom_admin/sources/account-created/account-created.mjs
  • components/zoom_admin/sources/user-deactivated/user-deactivated.mjs
  • components/zoom_admin/sources/user-deleted/user-deleted.mjs
🚧 Files skipped from review as they are similar to previous changes (9)
  • components/zoom_admin/actions/delete-webinar-panelist/delete-webinar-panelist.mjs
  • components/zoom_admin/zoom_admin.app.mjs
  • components/zoom_admin/actions/delete-webinar/delete-webinar.mjs
  • components/zoom_admin/actions/update-webinar/update-webinar.mjs
  • components/zoom_admin/actions/add-meeting-registrant/add-meeting-registrant.mjs
  • components/zoom_admin/actions/add-webinar-panelist/add-webinar-panelist.mjs
  • components/zoom_admin/actions/get-webinar/get-webinar.mjs
  • components/zoom_admin/actions/get-meeting/get-meeting.mjs
  • components/zoom_admin/actions/delete-meeting/delete-meeting.mjs
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-09-15T22:01:11.472Z
Learnt from: GTFalcao
PR: PipedreamHQ/pipedream#18362
File: components/leonardo_ai/actions/generate-image/generate-image.mjs:103-105
Timestamp: 2025-09-15T22:01:11.472Z
Learning: In Pipedream components, pipedream/platform's axios implementation automatically excludes undefined values from HTTP requests, so there's no need to manually check for truthiness before including properties in request payloads.

Applied to files:

  • components/zoom_admin/actions/update-meeting/update-meeting.mjs
🧬 Code graph analysis (10)
components/zoom_admin/common/utils.mjs (1)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom/common/utils.mjs (1)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/end-meeting/end-meeting.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom/actions/list-webinar-participants-report/list-webinar-participants-report.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/get-meeting-transcript/get-meeting-transcript.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/update-meeting/update-meeting.mjs (1)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (2)
components/zoom_admin/common/utils.mjs (2)
  • doubleEncode (24-29)
  • doubleEncode (24-29)
components/zoom_admin/zoom_admin.app.mjs (6)
  • doubleEncode (299-305)
  • doubleEncode (344-350)
  • doubleEncode (375-382)
  • doubleEncode (397-404)
  • doubleEncode (419-425)
  • doubleEncode (429-436)
🪛 GitHub Actions: Pull Request Checks
components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs

[error] 1-1: SyntaxError: The requested module '../../common/utils.mjs' does not provide an export named 'doubleEncode'. This occurred while executing checkComponentAppProp.js as part of the Node command 'node --experimental-loader ./scripts/version-strip-loader.mjs scripts/checkComponentAppProp.js components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs, ...'

🔇 Additional comments (26)
components/zoom_admin/sources/meeting-ended/meeting-ended.mjs (1)

8-8: Version bump looks appropriate.

The version update aligns with the broader Zoom component updates in this PR. Note that the AI summary indicates a version change from "0.1.3" to "0.1.4", but the actual code shows "0.1.9", suggesting the summary may be outdated.

components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs (2)

3-3: LGTM!

The import of doubleEncode is correctly added to support proper URL encoding of Zoom API identifiers.


11-15: LGTM!

The version bump and annotation update are appropriate. Setting readOnlyHint: false correctly indicates that this DELETE operation modifies state, which is consistent with destructiveHint: true.

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

8-8: Version bump looks good.

Line 8: Updating the source to 0.1.9 keeps it aligned with the rest of the Zoom Admin release set—no further action needed.

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

9-9: Version metadata in sync.

Line 9: Thanks for bumping this trigger to 0.1.4 to match the packaged Zoom updates.

components/zoom_admin/actions/list-user-cloud-recordings/list-user-cloud-recordings.mjs (1)

9-9: Release number updated appropriately.

Line 9: Moving the action to 0.0.3 keeps it consistent with the rest of the release train. Looks good.

components/zoom_admin/actions/create-meeting/create-meeting.mjs (1)

12-12: Create-meeting action version bump verified.

Line 12: Version 0.1.8 lines up with the other Zoom Admin package changes; no additional tweaks required.

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

8-8: Version increment confirmed.

Line 8: Bumping to 0.1.9 keeps this source aligned with the suite—everything checks out.

components/zoom_admin/actions/list-cloud-recordings/list-cloud-recordings.mjs (1)

9-9: Version bump aligns with package release.

The version increment from 0.2.4 to 0.2.5 appears to be part of a coordinated release across Zoom components. No functional changes in this file.

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

8-8: Version bump aligns with package release.

The version increment is consistent with the broader component version alignment. No functional changes in this source.

components/zoom/actions/list-webinar-participants-report/list-webinar-participants-report.mjs (3)

1-1: Import statement correctly adds encoding utility.

The import properly includes both the default utils export and the named doubleEncode function needed for encoding IDs in API paths.


41-41: Proper encoding for webinar IDs with special characters.

The doubleEncode() wrapper correctly handles webinar IDs that contain forward slashes or other special characters by double-encoding them. For standard numeric or alphanumeric IDs, the value passes through unchanged, maintaining backward compatibility.


8-8: Version bump reflects functional change.

The version increment from 0.0.5 to 0.0.6 appropriately reflects the addition of the encoding logic.

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

8-8: Version bump aligns with package release.

Consistent version increment as part of the coordinated Zoom component updates. No behavioral changes.

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

9-9: Version bump aligns with package release.

The increment from 0.0.1 to 0.0.2 is part of the coordinated version updates across Zoom components.

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

9-9: Version bump aligns with package release.

Consistent with the broader version alignment strategy. No functional changes in this source.

components/zoom_admin/actions/list-meetings/list-meetings.mjs (1)

9-9: Version bump aligns with package release.

The version increment is part of the coordinated release. No code changes in this action.

components/zoom_admin/actions/list-account-call-logs/list-account-call-logs.mjs (1)

8-8: Version bump aligns with package release.

Consistent version increment as part of the broader component updates. No behavioral changes.

components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs (1)

8-8: Version bump is appropriate.

The version increment from 0.2.4 to 0.2.5 correctly reflects the behavioral change of encoding meetingId in the URL path.

components/zoom/common/utils.mjs (1)

17-22: Type-safe implementation looks good.

The type check ensures string methods are only called on string values, preventing runtime errors. The double-encoding logic correctly handles Zoom IDs that contain forward slashes.

components/zoom_admin/actions/end-meeting/end-meeting.mjs (2)

3-3: Import is correct for zoom_admin.

The named import of doubleEncode matches the named export pattern used in components/zoom_admin/common/utils.mjs.


29-29: Proper encoding applied to meeting ID in URL path.

The doubleEncode wraps the meeting value extraction, ensuring that meeting IDs containing forward slashes are properly encoded before being inserted into the URL path.

components/zoom_admin/actions/update-meeting/update-meeting.mjs (2)

3-3: Import is correct for zoom_admin.

The named import matches the export pattern in components/zoom_admin/common/utils.mjs.


88-88: Encoding properly applied to meeting ID in PATCH path.

The doubleEncode correctly wraps the meeting value extraction, ensuring meeting IDs with forward slashes are safely encoded in the URL.

components/zoom_admin/actions/get-meeting-transcript/get-meeting-transcript.mjs (2)

1-1: Import is correct for zoom_admin.

The named import matches the export pattern used in components/zoom_admin/common/utils.mjs.


30-30: Encoding properly applied to meetingId in API path.

The doubleEncode ensures meeting IDs containing forward slashes are properly encoded before being used in the transcript endpoint URL.

…ils for URL paths, enhancing URL encoding for meeting and webinar identifiers.
…eEncode, ensuring consistent URL encoding for meeting IDs.
…ommon utils, ensuring consistent utility usage across components.
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!

@vunguyenhung vunguyenhung merged commit e3f38e0 into master Oct 31, 2025
10 checks passed
@vunguyenhung vunguyenhung deleted the 18873-bug-zoom-meetingid-prop-type branch October 31, 2025 01:54
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.

[BUG] Zoom meetingId prop type

4 participants