- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5.5k
Update Zoom components to version 0.7.1 and 0.13.1; refactor API path… #18901
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…s to use double encoding for meeting and webinar IDs. Adjusted action versions for consistency and improved utility functions for better handling of URLs.
| The latest updates on your projects. Learn more about Vercel for GitHub. 2 Skipped Deployments
 | 
| WalkthroughAdds 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
 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
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~35 minutes 
 Possibly related PRs
 Suggested labels
 Suggested reviewers
 Poem
 Pre-merge checks and finishing touches❌ Failed checks (2 warnings)
 ✅ Passed checks (3 passed)
 ✨ Finishing touches
 🧪 Generate unit tests (beta)
 📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
 🚧 Files skipped from review as they are similar to previous changes (1)
 ⏰ 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)
 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. Comment  | 
…nd sources, including increments for meeting and webinar registrants, transcripts, call logs, and various event sources. Adjusted versions for improved clarity and functionality.
There was a problem hiding this 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_idprop is typed asinteger, butdoubleEncode(line 34) calls string methods without type checking. This will cause a runtime error when the integer is passed todoubleEncode, which attemptsvalue.startsWith("/").Either:
- Change the prop type to
stringto match the encoding logic, or- 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
listMeetingsOccurrencesmethod silently returns an empty array on any error (line 276). IfdoubleEncodewere 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
📒 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
doubleEncodeutility 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
listMeetingRecordingsapp method now usesdoubleEncodeinternally (as shown inzoom_admin.app.mjslines 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 (
listMeetingsandgetPastMeetingDetails) now handle ID encoding viadoubleEncode.components/zoom_admin/package.json (1)
3-3: LGTM! Appropriate version bump.The patch version increment correctly reflects the addition of the
doubleEncodeutility 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: trueare 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
utilsimport and application ofutils.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
meetingIdprop is appropriately typed asstring, 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
doubleEncodefunction fromzoom_admin/utils.mjsincludes 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
doubleEncodefunction fromzoom_admin/utils.mjsincludes 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
doubleEncodeare 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
doubleEncodefunction 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
doubleEncodefunction 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:
- The change is documented in release notes
- Any downstream consumers are aware of this type change
- Migration guidance is provided if needed
3-3: No issues found. The utils module exists atcomponents/zoom/common/utils.mjsand properly exports thedoubleEncodefunction.components/zoom_admin/actions/add-webinar-registrant/add-webinar-registrant.mjs (1)
4-4: LGTM! Encoding applied correctly.The
doubleEncodefunction 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
doubleEncodefunction 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
doubleEncodeutility 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
doubleEncodeutility 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
doubleEncodeutility is systematically applied to all meeting/webinar IDs before URL interpolation across multiple methods. The implementation uses two patterns:
- Reassignment (lines 268, 309):
meetingId = doubleEncode(meetingId)- used when the ID is referenced multiple times- Inline (lines 300, 345, 376, 398, 420, 430):
doubleEncode(id)directly in template literalsBoth patterns are valid, and the reassignment approach is appropriate for methods where the ID is used in conditional logic (like
listMeetingsOccurrencesat 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.mjsfollows the same pattern:path: /meetings/${doubleEncode(...)}/recordings/${id}(meeting encoded, recording ID not). ThelistWebinarPanelistsmethod inzoom_admin.app.mjsalso appliesdoubleEncode()only to the webinar ID.Since
doubleEncodespecifically 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.mjsis 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.mjsimplementation: thedoubleEncodefunction (lines 17-19) lacks a type guard, whereas the zoom_admin version includestypeof value === "string". This causes a runtime error whencomponents/zoom/actions/get-meeting-details/get-meeting-details.mjs(line 22) declaresmeeting_idastype: "integer"and passes it todoubleEncodeat line 34—calling.startsWith()on a number will throwTypeError.Required fixes:
- Add
typeof value === "string"guard tocomponents/zoom/common/utils.mjslines 17-19, matching the zoom_admin implementation- Alternatively, change
get-meeting-details.mjsline 22 totype: "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.
        
          
                components/zoom_admin/actions/add-meeting-registrant/add-meeting-registrant.mjs
              
                Outdated
          
            Show resolved
            Hide resolved
        
              
          
                components/zoom_admin/actions/delete-cloud-recording/delete-cloud-recording.mjs
          
            Show resolved
            Hide resolved
        
              
          
                components/zoom_admin/sources/webinar-changes-to-panelists/webinar-changes-to-panelists.mjs
          
            Show resolved
            Hide resolved
        
      …king for URL patterns, improving robustness in URL encoding.
…ring consistent URL encoding for meeting and webinar identifiers across multiple components.
There was a problem hiding this 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 withdoubleEncode().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
📒 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
doubleEncodeis correctly added to support proper URL encoding of Zoom API identifiers.
11-15: LGTM!The version bump and annotation update are appropriate. Setting
readOnlyHint: falsecorrectly indicates that this DELETE operation modifies state, which is consistent withdestructiveHint: 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
utilsexport and the nameddoubleEncodefunction 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
doubleEncodematches the named export pattern used incomponents/zoom_admin/common/utils.mjs.
29-29: Proper encoding applied to meeting ID in URL path.The
doubleEncodewraps 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
doubleEncodecorrectly 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
doubleEncodeensures meeting IDs containing forward slashes are properly encoded before being used in the transcript endpoint URL.
        
          
                ...nts/zoom_admin/actions/update-webinar-registrant-status/update-webinar-registrant-status.mjs
          
            Show resolved
            Hide resolved
        
              
          
                components/zoom/actions/list-past-meeting-participants/list-past-meeting-participants.mjs
              
                Outdated
          
            Show resolved
            Hide resolved
        
      …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.
There was a problem hiding this 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!
Resolves #18873
Summary by CodeRabbit
New Features
Bug Fixes
Chores