Skip to content

Conversation

@mannie55
Copy link
Contributor

@mannie55 mannie55 commented Dec 6, 2025

WHY

issue #19368
The Booking Experts integration was missing actions to manage amenities and rentable types
, which are core features of the Booking Experts API. These actions enable users to:

  • Retrieve and filter amenities available in their system
  • Get detailed information about specific amenities
  • List rentable types for property management workflows

This addition allows Pipedream users to build more complete automation workflows with Booking Experts, particularly for property management and booking systems that need to work with amenities and accommodation types.

WHAT

Added three new actions to the Booking Experts component:

  1. List Amenities (list-amenities) - Retrieves all amenities with pagination and filtering support
  2. Get Amenity (get-amenity) - Fetches a single amenity by ID
  3. List Rentable Types (list-rentable-types) - Lists all rentable types for a given administration

Changes Made:

  • Added listAmenities() method to booking_experts.app.mjs
  • Added getAmenity() method to booking_experts.app.mjs
  • Added listRentableTypesForAdmin() method to booking_experts.app.mjs
  • Created three new action files following established component patterns
  • All actions include proper prop definitions, documentation links, and error handling

API Documentation:

HOW TO TEST

  1. Connect a Booking Experts account in Pipedream
  2. Create a new workflow and add any of the three new actions
  3. For List Amenities: Run without parameters to get all amenities, or use page/perPage for pagination
  4. For Get Amenity: Provide an amenity ID to retrieve specific amenity details
  5. For List Rentable Types: Select an administration to list its rentable types

All actions follow the existing Booking Experts component patterns and conventions.

Summary by CodeRabbit

  • New Features

    • Added amenity endpoints and actions: get single amenity, list amenities with filtering/sorting, and list rentable types for an administration.
    • Added dynamic dropdowns for amenities and amenity groups; added controls for sort, fields and include.
  • Bug Fixes

    • Improved parsing of nested filter inputs for more reliable complex queries.
  • Chores

    • Multiple action/source version and package version bumps.

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

mannie55 and others added 3 commits December 5, 2025 13:54
- Add listAmenities() method to fetch all amenities
- Add getAmenity() method to fetch single amenity by ID
- Add listRentableTypesForAdmin() method to list rentable types for administration
- Create get_amenity action
- Create list_amenities action
- Create list_rentable_types action

Co-authored-by: Ona <no-reply@ona.com>
- Fix parameter name typo in listAmenities (opt -> opts)
- Fix import path in list_amenities action
- Fix parameter name in getAmenity (id -> amenityId)
- Fix method name in list_rentable_types (listRentableTypes -> listRentableTypesForAdmin)
- Fix parameter name in list_rentable_types (query -> params)
- Rename misspelled file list_amennities.mjs to list_amenities.mjs
- Add missing implementation to get_amenity and list_rentable_types actions

Co-authored-by: Ona <no-reply@ona.com>
- Rename directories to use hyphens (get-amenity, list-amenities, list-rentable-types)
- Add documentation links to get-amenity and list-rentable-types descriptions
- Update list-amenities to use propDefinitions for page and perPage props
- Fix property order in get-amenity (move annotations before type)
- Fix indentation in list-amenities (use 2-space indentation)
- Standardize summary formatting in list-rentable-types

All actions now follow established codebase conventions.

Co-authored-by: Ona <no-reply@ona.com>
@vercel
Copy link

vercel bot commented Dec 6, 2025

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

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
pipedream-docs-redirect-do-not-edit Ignored Ignored Dec 8, 2025 5:16pm

@pipedream-component-development
Copy link
Collaborator

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

@pipedream-component-development
Copy link
Collaborator

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

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Dec 6, 2025

Warning

Rate limit exceeded

@michelle0927 has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 21 minutes and 3 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 2f0670b and ab4422f.

📒 Files selected for processing (1)
  • components/booking_experts/booking_experts.app.mjs (3 hunks)

Walkthrough

Adds amenity and rentable-type endpoints and actions to the BookingExperts component, extends app-level propDefinitions (sort, fields, include, amenityId, amenityGroupId), and makes parseObject recursively handle nested arrays/objects.

Changes

Cohort / File(s) Summary
App API methods & props
components/booking_experts/booking_experts.app.mjs
Added app-level propDefinitions: sort, fields, include, amenityId (async options), amenityGroupId (async options). Added public methods: listAmenities, getAmenity, listRentableTypesForAdmin, listAmenityGroups that call _makeRequest.
New action modules (amenities & rentable types)
components/booking_experts/actions/list-amenities/list-amenities.mjs,
components/booking_experts/actions/get-amenity/get-amenity.mjs,
components/booking_experts/actions/list-rentable-types/list-rentable-types.mjs
Added three actions: List Amenities (pagination, sort, fields, include, multiple filters → calls bookingExperts.listAmenities), Get Amenity (fetch by ID → bookingExperts.getAmenity), and List Rentable Types (for administration → bookingExperts.listRentableTypesForAdmin).
Utility: recursive parsing
components/booking_experts/common/utils.mjs
Reworked parseObject to recursively parse nested arrays and objects instead of shallow handling, enabling deep parsing of complex filter structures.
Version bumps (actions, sources, package)
components/booking_experts/actions/* (many files),
components/booking_experts/sources/* (several files),
components/booking_experts/package.json
Incremented package version (0.4.0 → 0.5.0) and bumped many action/source exported version strings; most are metadata-only changes.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Review new app methods for correct endpoint paths, parameter mapping, and proper use of _makeRequest.
  • Verify async option definitions (amenityId, amenityGroupId) correctly call list endpoints and map to label/value.
  • Confirm new actions map props to API params consistently (pagination, fields, include, filter keys).
  • Inspect parseObject recursion for edge cases (e.g., string parsing vs. nested objects) to avoid behavioral regressions.

Possibly related PRs

Suggested reviewers

  • jcortes
  • GTFalcao

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Be amenities and rentable types' is vague and lacks clarity; it uses abbreviation 'Be' without context and doesn't clearly convey the main change (adding amenities and rentable types actions to Booking Experts component). Revise the title to be more specific and descriptive, such as 'Add amenities and rentable types actions to Booking Experts component' or 'Add list/get amenities and rentable types actions'.
✅ Passed checks (2 passed)
Check name Status Explanation
Description check ✅ Passed The pull request description is comprehensive and well-structured, including WHY (issue reference and context), WHAT (three new actions with method details), and HOW TO TEST (clear testing steps), matching the repository's description template requirements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

❤️ Share

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

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4a8ce16 and d60094b.

📒 Files selected for processing (4)
  • components/booking_experts/actions/get-amenity/get_amenity.mjs (1 hunks)
  • components/booking_experts/actions/list-amenities/list_amenities.mjs (1 hunks)
  • components/booking_experts/actions/list-rentable-types/list_rentable_types.mjs (1 hunks)
  • components/booking_experts/booking_experts.app.mjs (1 hunks)

@michelle0927 michelle0927 linked an issue Dec 8, 2025 that may be closed by this pull request
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

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

⚠️ Outside diff range comments (1)
components/booking_experts/actions/list-availabilities/list-availabilities.mjs (1)

22-26: Add required label property to the info prop.

The info prop is missing a label property, which violates Pipedream component guidelines and is flagged by the pipeline.

Apply this diff to add the missing label:

 info: {
+  label: "Channel Requirement",
   type: "alert",
   alertType: "warning",
   content: "**You must have at least one channel created through the Booking Experts API.**",
 },
📜 Review details

Configuration used: CodeRabbit UI

Review profile: ASSERTIVE

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6c80873 and 2f0670b.

📒 Files selected for processing (18)
  • components/booking_experts/actions/add-guest-to-reservation/add-guest-to-reservation.mjs (1 hunks)
  • components/booking_experts/actions/create-agenda-period/create-agenda-period.mjs (1 hunks)
  • components/booking_experts/actions/delete-guest/delete-guest.mjs (1 hunks)
  • components/booking_experts/actions/get-booking/get-booking.mjs (1 hunks)
  • components/booking_experts/actions/get-complex-prices/get-complex-prices.mjs (1 hunks)
  • components/booking_experts/actions/get-reservation/get-reservation.mjs (1 hunks)
  • components/booking_experts/actions/list-availabilities/list-availabilities.mjs (1 hunks)
  • components/booking_experts/actions/list-bookings/list-bookings.mjs (1 hunks)
  • components/booking_experts/actions/list-inventory-objects/list-inventory-objects.mjs (1 hunks)
  • components/booking_experts/actions/list-rentabletype-availabilities/list-rentabletype-availabilities.mjs (1 hunks)
  • components/booking_experts/actions/list-reservations/list-reservations.mjs (1 hunks)
  • components/booking_experts/actions/search-contacts/search-contacts.mjs (1 hunks)
  • components/booking_experts/actions/update-guest/update-guest.mjs (1 hunks)
  • components/booking_experts/package.json (1 hunks)
  • components/booking_experts/sources/booking-updated/booking-updated.mjs (1 hunks)
  • components/booking_experts/sources/inventory-object-updated/inventory-object-updated.mjs (1 hunks)
  • components/booking_experts/sources/new-booking-created/new-booking-created.mjs (1 hunks)
  • components/booking_experts/sources/new-inventory-object-created/new-inventory-object-created.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: GTFalcao
Repo: PipedreamHQ/pipedream PR: 16954
File: components/salesloft/salesloft.app.mjs:14-23
Timestamp: 2025-06-04T17:52:05.780Z
Learning: In the Salesloft API integration (components/salesloft/salesloft.app.mjs), the _makeRequest method returns response.data which directly contains arrays for list endpoints like listPeople, listCadences, listUsers, and listAccounts. The propDefinitions correctly call .map() directly on these responses without needing to destructure a nested data property.
🪛 GitHub Actions: Pull Request Checks
components/booking_experts/actions/update-guest/update-guest.mjs

[warning] 32-32: Component prop info must have a label. See https://pipedream.com/docs/components/guidelines/#props (pipedream/props-label)

components/booking_experts/actions/delete-guest/delete-guest.mjs

[warning] 31-31: Component prop info must have a label. See https://pipedream.com/docs/components/guidelines/#props (pipedream/props-label)

components/booking_experts/actions/list-rentabletype-availabilities/list-rentabletype-availabilities.mjs

[warning] 19-19: Component prop info must have a label. See https://pipedream.com/docs/components/guidelines/#props (pipedream/props-label)

components/booking_experts/actions/list-availabilities/list-availabilities.mjs

[warning] 22-22: Component prop info must have a label. See https://pipedream.com/docs/components/guidelines/#props (pipedream/props-label)

⏰ 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). (2)
  • GitHub Check: Verify TypeScript components
  • GitHub Check: Publish TypeScript components
🔇 Additional comments (15)
components/booking_experts/actions/get-complex-prices/get-complex-prices.mjs (1)

7-7: Version bump aligns with surrounding Booking Experts actions

Only the version field changed, with no behavioral modifications. This stays consistent with the rest of the suite; no issues from this change.

components/booking_experts/sources/booking-updated/booking-updated.mjs (1)

8-8: Source version metadata updated only

The bump to version: "0.0.6" is purely metadata; polling behavior and args remain unchanged. Looks good.

components/booking_experts/actions/get-booking/get-booking.mjs (1)

7-7: Metadata-only version bump

Changing the action version to "0.0.5" without touching logic is fine and consistent with the broader release.

components/booking_experts/actions/search-contacts/search-contacts.mjs (1)

8-8: Search Contacts action version increment only

The update to version: "0.0.7" keeps existing validation and error handling intact. No issues identified.

components/booking_experts/sources/new-booking-created/new-booking-created.mjs (1)

8-8: New Booking Created source version bump looks good

Only the version field changed; polling semantics are untouched. This is fine.

components/booking_experts/actions/get-reservation/get-reservation.mjs (1)

7-7: Get Reservation action version update only

The version bump to "0.0.4" is the sole change; existing behavior remains as-is. No concerns from this modification.

components/booking_experts/actions/list-bookings/list-bookings.mjs (1)

7-7: List Bookings version bump is consistent

Updating version to "0.0.7" without altering props or run logic is consistent with the rest of the Booking Experts release.

components/booking_experts/actions/create-agenda-period/create-agenda-period.mjs (1)

7-7: Create Agenda Period action: metadata-only version change

The change to version: "0.0.7" is isolated to metadata. Existing request construction and response handling stay intact; no issues.

components/booking_experts/package.json (1)

3-3: Package version bump is consistent with action/source versions

Updating the package to 0.5.0 matches the broader set of action/source version bumps in this PR and looks good.

components/booking_experts/actions/list-reservations/list-reservations.mjs (1)

7-7: List Reservations action version bump looks good

Incrementing the action version to 0.0.4 with no behavioral changes is appropriate and consistent with the package-level version bump.

components/booking_experts/sources/new-inventory-object-created/new-inventory-object-created.mjs (1)

8-8: Source version bump aligns with broader release

Updating this source to version 0.0.6 without logic changes is consistent with the other Booking Experts sources in this PR.

components/booking_experts/sources/inventory-object-updated/inventory-object-updated.mjs (1)

8-8: Inventory Object Updated source version increment is OK

The bump to version 0.0.6 is appropriate and keeps this source in step with the rest of the Booking Experts package.

components/booking_experts/actions/add-guest-to-reservation/add-guest-to-reservation.mjs (1)

8-8: Add Guest to Reservation action version bump approved

Raising the action version to 0.0.8 with unchanged implementation is consistent with the rest of the Booking Experts updates.

components/booking_experts/actions/list-availabilities/list-availabilities.mjs (1)

13-13: LGTM: Version bump is appropriate.

The version increment aligns with the PR's addition of new actions and API surface.

components/booking_experts/actions/list-inventory-objects/list-inventory-objects.mjs (1)

7-7: LGTM: Version bump is appropriate.

The version increment is consistent with the PR's systematic updates across BookingExperts actions.

@vunguyenhung
Copy link
Collaborator

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

Test reports

@michelle0927 michelle0927 merged commit a03922e into PipedreamHQ:master Dec 9, 2025
9 of 10 checks passed
jcortes pushed a commit that referenced this pull request Dec 9, 2025
* Add amenities and rentable types actions to Booking Experts

- Add listAmenities() method to fetch all amenities
- Add getAmenity() method to fetch single amenity by ID
- Add listRentableTypesForAdmin() method to list rentable types for administration
- Create get_amenity action
- Create list_amenities action
- Create list_rentable_types action

Co-authored-by: Ona <no-reply@ona.com>

* Fix bugs in Booking Experts amenities and rentable types actions

- Fix parameter name typo in listAmenities (opt -> opts)
- Fix import path in list_amenities action
- Fix parameter name in getAmenity (id -> amenityId)
- Fix method name in list_rentable_types (listRentableTypes -> listRentableTypesForAdmin)
- Fix parameter name in list_rentable_types (query -> params)
- Rename misspelled file list_amennities.mjs to list_amenities.mjs
- Add missing implementation to get_amenity and list_rentable_types actions

Co-authored-by: Ona <no-reply@ona.com>

* Fix code style and conventions in Booking Experts actions

- Rename directories to use hyphens (get-amenity, list-amenities, list-rentable-types)
- Add documentation links to get-amenity and list-rentable-types descriptions
- Update list-amenities to use propDefinitions for page and perPage props
- Fix property order in get-amenity (move annotations before type)
- Fix indentation in list-amenities (use 2-space indentation)
- Standardize summary formatting in list-rentable-types

All actions now follow established codebase conventions.

Co-authored-by: Ona <no-reply@ona.com>

* updates

* versions

* update

---------

Co-authored-by: Ona <no-reply@ona.com>
Co-authored-by: Michelle Bergeron <michelle.bergeron@gmail.com>
Co-authored-by: michelle0927 <michelle0927@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

User submitted Submitted by a user

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[ACTION] additional endpoints - booking experts

5 participants