Skip to content

[ACTION] Click Up - Create Time Entry #17798 #17861

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

Merged
merged 13 commits into from
Aug 14, 2025
Merged

[ACTION] Click Up - Create Time Entry #17798 #17861

merged 13 commits into from
Aug 14, 2025

Conversation

lcaresia
Copy link
Collaborator

@lcaresia lcaresia commented Jul 30, 2025

WHY

Summary by CodeRabbit

  • New Features

    • Added a new action to create time entries in ClickUp.
  • Chores

    • Bumped version numbers across many ClickUp actions and sources.
    • Updated the ClickUp integration package version.
  • Refactor

    • Minor formatting adjustments in ClickUp option definitions.
    • Added a new method to the ClickUp integration for creating time entries.
  • Bug Fixes

    • No user-facing bug fixes in this release.

Copy link

vercel bot commented Jul 30, 2025

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

3 Skipped Deployments
Project Deployment Preview Comments Updated (UTC)
docs-v2 ⬜️ Ignored Preview Aug 14, 2025 5:25pm
pipedream-docs ⬜️ Ignored Aug 14, 2025 5:25pm
pipedream-docs-redirect-do-not-edit ⬜️ Ignored Aug 14, 2025 5:25pm

@lcaresia lcaresia linked an issue Jul 30, 2025 that may be closed by this pull request
Copy link
Contributor

coderabbitai bot commented Jul 30, 2025

Important

Review skipped

Review was skipped due to path filters

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml

CodeRabbit blocks several paths by default. You can override this behavior by explicitly including those paths in the path filters. For example, including **/dist/** will override the default block on the dist directory, by removing the pattern from both the lists.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Walkthrough

Adds a new ClickUp action to create time entries and a corresponding API method; most other edits are version increments across ClickUp action and source modules and a package version bump. No functional changes besides the new action and method.

Changes

Cohort / File(s) Change Summary
New Feature: Create Time Entry
components/clickup/actions/create-time-entry/create-time-entry.mjs
New action module to create ClickUp time entries (props: folderId, listId, taskId, tags, start, end, description), constructs payload, calls ClickUp API, exports summary.
API Method Added
components/clickup/clickup.app.mjs
Added createTimeEntry({ $, teamId, data, params }) method that POSTs to team/{teamId}/time_entries; also minor formatting edits in async option functions.
Package Version Bump
components/clickup/package.json
Package version updated from 0.3.1 to 0.4.0.
Version Bumps: Actions
components/clickup/actions/*/*.mjs
Updated version properties across many ClickUp action modules (e.g., create-, get-, update-, delete-), no logic changes.
Version Bumps: Sources
components/clickup/sources/*/*.mjs
Updated version properties across ClickUp source modules (new-folder, new-list, new-task*, updated-task, etc.), no logic changes.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant CreateTimeEntryAction
    participant ClickUpApp
    participant ClickUpAPI

    User->>CreateTimeEntryAction: Submit start, end, taskId, description, etc.
    CreateTimeEntryAction->>ClickUpApp: createTimeEntry(teamId, data, params)
    ClickUpApp->>ClickUpAPI: POST /team/{teamId}/time_entries (data, params)
    ClickUpAPI-->>ClickUpApp: API response
    ClickUpApp-->>CreateTimeEntryAction: response
    CreateTimeEntryAction-->>User: export summary + return response
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • jcortes
  • GTFalcao

Poem

I hopped through props and version trees,
Built a tiny time-entry with ease.
One new call, a POST to send,
Bumped versions here and there, my friend.
Happy hops — the integration grows! 🐇✨

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch issue-17798

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🔭 Outside diff range comments (2)
components/clickup/actions/create-task-from-template/create-task-from-template.mjs (1)

55-62: Await the API call to avoid returning a pending Promise

this.clickup.createTaskFromTemplate is asynchronous in every other action; omitting await will cause the action to return a Promise instead of the resolved value and summary export may occur before the request finishes.

-    const response = this.clickup.createTaskFromTemplate({
+    const response = await this.clickup.createTaskFromTemplate({
       $,
       listId,
       taskTemplateId,
       data: {
         name,
       },
     });
components/clickup/actions/update-list/update-list.mjs (1)

72-79: Priority field mapped incorrectly

data[priority] = … uses the priority value as a dynamic key (e.g., data.high) whereas ClickUp’s API expects the field name to remain priority. This results in an unexpected request body.

-    if (priority) data[priority] = constants.PRIORITIES[priority];
+    if (priority) data.priority = constants.PRIORITIES[priority];
🧹 Nitpick comments (3)
components/clickup/actions/delete-comment/delete-comment.mjs (1)

7-9: Fix typo in documentation reference

"Deleet Comment" should be "Delete Comment" to avoid confusion in the rendered description.

-  description: "Deletes a comment. [See the documentation](https://clickup.com/api) in **Comments / Deleet Comment** section.",
+  description: "Deletes a comment. [See the documentation](https://clickup.com/api) in **Comments / Delete Comment** section.",
components/clickup/sources/updated-task/updated-task.mjs (1)

8-10: Consider dropping the “New” prefix in the name and description

Per the component-naming guidance (see learning note from PR #15376), the “New” prefix is reserved for sources that emit only brand-new items. Since this source emits updates, renaming from
"New Updated Task (Instant)""Updated Task (Instant)" (and adjusting the description accordingly) will better align with conventions.

components/clickup/actions/stop-time-entry/stop-time-entry.mjs (1)

7-8: Fix the broken documentation URL while you’re here.
StopatimeEntry in the path is likely a typo and breaks the link.

-  description: "Stop time entry. [See the documentation](https://clickup.com/api/clickupreference/operation/StopatimeEntry)",
+  description: "Stop time entry. [See the documentation](https://clickup.com/api/clickupreference/operation/StopATimeEntry)",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a5a1152 and 4b1d751.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (59)
  • components/clickup/actions/create-chat-view-comment/create-chat-view-comment.mjs (1 hunks)
  • components/clickup/actions/create-checklist-item/create-checklist-item.mjs (1 hunks)
  • components/clickup/actions/create-checklist/create-checklist.mjs (1 hunks)
  • components/clickup/actions/create-folder/create-folder.mjs (1 hunks)
  • components/clickup/actions/create-list-comment/create-list-comment.mjs (1 hunks)
  • components/clickup/actions/create-list/create-list.mjs (1 hunks)
  • components/clickup/actions/create-space/create-space.mjs (1 hunks)
  • components/clickup/actions/create-task-comment/create-task-comment.mjs (1 hunks)
  • components/clickup/actions/create-task-from-template/create-task-from-template.mjs (1 hunks)
  • components/clickup/actions/create-task/create-task.mjs (1 hunks)
  • components/clickup/actions/create-threaded-comment/create-threaded-comment.mjs (1 hunks)
  • components/clickup/actions/create-time-entry/create-time-entry.mjs (1 hunks)
  • components/clickup/actions/create-view-comment/create-view-comment.mjs (1 hunks)
  • components/clickup/actions/delete-checklist-item/delete-checklist-item.mjs (1 hunks)
  • components/clickup/actions/delete-checklist/delete-checklist.mjs (1 hunks)
  • components/clickup/actions/delete-comment/delete-comment.mjs (1 hunks)
  • components/clickup/actions/delete-folder/delete-folder.mjs (1 hunks)
  • components/clickup/actions/delete-list/delete-list.mjs (1 hunks)
  • components/clickup/actions/delete-space/delete-space.mjs (1 hunks)
  • components/clickup/actions/delete-task/delete-task.mjs (1 hunks)
  • components/clickup/actions/get-custom-fields/get-custom-fields.mjs (1 hunks)
  • components/clickup/actions/get-folder-views/get-folder-views.mjs (1 hunks)
  • components/clickup/actions/get-folder/get-folder.mjs (1 hunks)
  • components/clickup/actions/get-folders/get-folders.mjs (1 hunks)
  • components/clickup/actions/get-list-comments/get-list-comments.mjs (1 hunks)
  • components/clickup/actions/get-list-views/get-list-views.mjs (1 hunks)
  • components/clickup/actions/get-list/get-list.mjs (1 hunks)
  • components/clickup/actions/get-lists/get-lists.mjs (1 hunks)
  • components/clickup/actions/get-space-views/get-space-views.mjs (1 hunks)
  • components/clickup/actions/get-space/get-space.mjs (1 hunks)
  • components/clickup/actions/get-spaces/get-spaces.mjs (1 hunks)
  • components/clickup/actions/get-task-comments/get-task-comments.mjs (1 hunks)
  • components/clickup/actions/get-task-templates/get-task-templates.mjs (1 hunks)
  • components/clickup/actions/get-task/get-task.mjs (1 hunks)
  • components/clickup/actions/get-tasks/get-tasks.mjs (1 hunks)
  • components/clickup/actions/get-team-views/get-team-views.mjs (1 hunks)
  • components/clickup/actions/get-view-comments/get-view-comments.mjs (1 hunks)
  • components/clickup/actions/get-view-tasks/get-view-tasks.mjs (1 hunks)
  • components/clickup/actions/get-view/get-view.mjs (1 hunks)
  • components/clickup/actions/remove-task-custom-field/remove-task-custom-field.mjs (1 hunks)
  • components/clickup/actions/start-time-entry/start-time-entry.mjs (1 hunks)
  • components/clickup/actions/stop-time-entry/stop-time-entry.mjs (1 hunks)
  • components/clickup/actions/update-checklist-item/update-checklist-item.mjs (1 hunks)
  • components/clickup/actions/update-checklist/update-checklist.mjs (1 hunks)
  • components/clickup/actions/update-comment/update-comment.mjs (1 hunks)
  • components/clickup/actions/update-folder/update-folder.mjs (1 hunks)
  • components/clickup/actions/update-list/update-list.mjs (1 hunks)
  • components/clickup/actions/update-space/update-space.mjs (1 hunks)
  • components/clickup/actions/update-task-custom-field/update-task-custom-field.mjs (1 hunks)
  • components/clickup/actions/update-task/update-task.mjs (1 hunks)
  • components/clickup/clickup.app.mjs (4 hunks)
  • components/clickup/package.json (1 hunks)
  • components/clickup/sources/new-folder/new-folder.mjs (1 hunks)
  • components/clickup/sources/new-list/new-list.mjs (1 hunks)
  • components/clickup/sources/new-task-advanced/new-task-advanced.mjs (1 hunks)
  • components/clickup/sources/new-task-comment-updated/new-task-comment-updated.mjs (1 hunks)
  • components/clickup/sources/new-task-comment/new-task-comment.mjs (1 hunks)
  • components/clickup/sources/new-task/new-task.mjs (1 hunks)
  • components/clickup/sources/updated-task/updated-task.mjs (1 hunks)
🧰 Additional context used
🧠 Learnings (19)
components/clickup/actions/create-folder/create-folder.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-list-comment/create-list-comment.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-task-from-template/create-task-from-template.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-view-comment/create-view-comment.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/sources/new-task-comment/new-task-comment.mjs (1)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

components/clickup/actions/create-task/create-task.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-space/create-space.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-checklist/create-checklist.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/package.json (1)

Learnt from: jcortes
PR: #14935
File: components/sailpoint/package.json:15-18
Timestamp: 2024-12-12T19:23:09.039Z
Learning: When developing Pipedream components, do not add built-in Node.js modules like fs to package.json dependencies, as they are native modules provided by the Node.js runtime.

components/clickup/actions/create-task-comment/create-task-comment.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/sources/updated-task/updated-task.mjs (2)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

Learnt from: GTFalcao
PR: #14265
File: components/the_magic_drip/sources/common.mjs:35-43
Timestamp: 2024-10-10T19:18:27.998Z
Learning: In components/the_magic_drip/sources/common.mjs, when processing items in getAndProcessData, savedIds is intentionally updated with IDs of both emitted and non-emitted items to avoid emitting retroactive events upon first deployment and ensure only new events are emitted as they occur.

components/clickup/sources/new-task-comment-updated/new-task-comment-updated.mjs (1)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

components/clickup/actions/create-list/create-list.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/sources/new-task/new-task.mjs (1)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

components/clickup/actions/create-chat-view-comment/create-chat-view-comment.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/sources/new-task-advanced/new-task-advanced.mjs (1)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

components/clickup/sources/new-list/new-list.mjs (1)

Learnt from: GTFalcao
PR: #15376
File: components/monday/sources/name-updated/name-updated.mjs:6-6
Timestamp: 2025-01-23T03:55:15.166Z
Learning: Source names in Monday.com components don't need to start with "New" if they emit events for updated items (e.g., "Name Updated", "Column Value Updated") rather than new items. This follows the component guidelines exception where the "New" prefix is only required when emits are limited to new items.

components/clickup/actions/create-checklist-item/create-checklist-item.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

components/clickup/actions/create-time-entry/create-time-entry.mjs (1)

Learnt from: jcortes
PR: #14467
File: components/gainsight_px/actions/create-account/create-account.mjs:4-6
Timestamp: 2024-10-30T15:24:39.294Z
Learning: In components/gainsight_px/actions/create-account/create-account.mjs, the action name should be "Create Account" instead of "Create Memory".

⏰ 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). (3)
  • GitHub Check: Publish TypeScript components
  • GitHub Check: Lint Code Base
  • GitHub Check: Verify TypeScript components
🔇 Additional comments (60)
components/clickup/actions/create-space/create-space.mjs (1)

7-8: ✅ Version increment looks good

version bumped from 0.0.100.0.11, matching the coordinated release cadence across ClickUp actions. No other logic touched.

components/clickup/actions/get-space-views/get-space-views.mjs (1)

8-9: ✅ Consistent version bump

The minor bump to 0.0.11 keeps this action in sync with the broader ClickUp package release.

components/clickup/actions/create-folder/create-folder.mjs (1)

8-9: ✅ Version updated correctly

Version string aligns with other actions (0.0.11). No functional changes detected.

components/clickup/actions/delete-folder/delete-folder.mjs (1)

8-9: ✅ Version bump validated

version: "0.0.11" maintains uniformity across the ClickUp component set.

components/clickup/package.json (1)

3-4: ✅ Package version raised to 0.4.0

Top-level package version tracks with individual action bumps and addition of the new time-entry feature. No dependency changes—safe update.

components/clickup/actions/get-folder-views/get-folder-views.mjs (1)

8-8: Version bump looks good

Consistent with the coordinated 0.0.11 release across ClickUp actions.

components/clickup/actions/get-task-templates/get-task-templates.mjs (1)

7-7: Version bump looks good

Matches the global 0.0.11 increment; no functional impact.

components/clickup/actions/get-view/get-view.mjs (1)

8-8: Version bump looks good

Keeps the action in sync with the rest of the release set.

components/clickup/actions/delete-checklist-item/delete-checklist-item.mjs (1)

8-8: Version bump looks good

Aligned with the standard 0.0.11 patch upgrade across components.

components/clickup/sources/new-task-comment/new-task-comment.mjs (1)

9-9: Version bump looks good

Source component updated to 0.0.3 in line with other minor version increments.

components/clickup/actions/create-task-from-template/create-task-from-template.mjs (1)

9-9: Version bump looks correct

The metadata version increment to 0.0.11 is consistent with the coordinated release.

components/clickup/actions/create-view-comment/create-view-comment.mjs (1)

7-8: Version bump acknowledged

No functional changes detected beyond the version update to 0.0.11.

components/clickup/actions/update-list/update-list.mjs (1)

10-10: Version bump acknowledged

The update to 0.0.11 aligns with the rest of the ClickUp actions.

components/clickup/sources/new-task-advanced/new-task-advanced.mjs (1)

9-10: Version bump acknowledged

Increment to 0.0.8 is consistent; no additional issues spotted.

components/clickup/actions/get-list/get-list.mjs (1)

8-8: Version bump looks fine

Only the version field changed. No functional impact.

components/clickup/actions/delete-list/delete-list.mjs (1)

8-8: Version increment acknowledged

No logic touched; change is safe.

components/clickup/actions/get-view-comments/get-view-comments.mjs (1)

8-8: Consistent version update

Matches other modules; nothing else altered.

components/clickup/actions/delete-task/delete-task.mjs (1)

8-8: Version string updated

Change is purely declarative; all good.

components/clickup/sources/new-folder/new-folder.mjs (1)

9-9: Source version bump OK

No functional modifications; safe to merge.

components/clickup/actions/update-space/update-space.mjs (1)

8-8: Patch-level version bump looks correct

The change is limited to a patch bump (0.0.100.0.11) with no functional modifications, which aligns with semver.

components/clickup/actions/get-spaces/get-spaces.mjs (1)

7-7: Consistent version increment

Patch bump to 0.0.11 keeps this action in sync with the rest of the ClickUp module set.

components/clickup/actions/create-threaded-comment/create-threaded-comment.mjs (1)

8-8: Version bump acknowledged

No logic changes—patch increment is appropriate.

components/clickup/actions/delete-checklist/delete-checklist.mjs (1)

8-8: Patch version update confirmed

The isolated patch bump maintains consistency across actions.

components/clickup/actions/create-list-comment/create-list-comment.mjs (1)

9-9: Patch increment validated

Version raised to 0.0.11; no further action required.

components/clickup/actions/get-task-comments/get-task-comments.mjs (1)

8-9: Version bump only – looks good.

No functional code changes detected; the minor version increment is consistent with the other ClickUp actions in this PR.

components/clickup/sources/new-list/new-list.mjs (1)

9-10: Version bumped to 0.0.10 – no issues.

Pure metadata update; logic, props, and methods remain untouched.

components/clickup/actions/update-task-custom-field/update-task-custom-field.mjs (1)

8-9: Metadata change only – okay to merge.

The version increment is the sole modification; runtime behaviour is unchanged.

components/clickup/actions/update-comment/update-comment.mjs (1)

8-9: Minor version increment – accepted.

No logic alterations accompany the bump from 0.0.12 to 0.0.13.

components/clickup/sources/new-task/new-task.mjs (1)

9-10: Version update acknowledged.

The update to 0.1.7 aligns with the coordinated release; nothing else changed.

components/clickup/actions/get-list-comments/get-list-comments.mjs (1)

8-8: Version bump looks correct
Patch-level increment is consistent with the rest of the ClickUp actions and introduces no behavioral changes.

components/clickup/actions/get-folder/get-folder.mjs (1)

8-8: Version updated coherently
0.0.11 keeps the action in lock-step with sibling modules—no objections.

components/clickup/actions/create-list/create-list.mjs (1)

8-8: Patch release increment acknowledged
The move to 0.0.16 is appropriate; logic remains unchanged.

components/clickup/actions/get-space/get-space.mjs (1)

8-8: Minor version bump accepted
Aligns with overall package update—no further action required.

components/clickup/actions/get-folders/get-folders.mjs (1)

8-8: Consistent version bump
0.0.11 matches other actions; nothing else changed.

components/clickup/actions/remove-task-custom-field/remove-task-custom-field.mjs (1)

8-8: Version bump looks good

Patch-level increment only. No functional impact identified.

components/clickup/sources/new-task-comment-updated/new-task-comment-updated.mjs (1)

9-9: Version bump looks good

Consistent with the coordinated release versioning.

components/clickup/actions/create-task/create-task.mjs (1)

10-10: Version bump looks good

No other modifications detected. Implementation remains unchanged.

components/clickup/actions/get-team-views/get-team-views.mjs (1)

8-8: Version bump looks good

Patch update only; logic intact.

components/clickup/actions/update-task/update-task.mjs (1)

10-10: Version bump looks good

Aligned with other ClickUp action updates.

components/clickup/actions/start-time-entry/start-time-entry.mjs (1)

8-8: Version increment aligns with overall ClickUp release

The bump to 0.0.5 is consistent with the package-wide release versioning. No further action needed.

components/clickup/actions/create-checklist-item/create-checklist-item.mjs (1)

8-8: Version bump acknowledged

0.0.11 keeps this action in lock-step with the other ClickUp components. Looks good.

components/clickup/actions/update-folder/update-folder.mjs (1)

8-8: Consistent version update

The shift to 0.0.11 matches the coordinated release. All set.

components/clickup/actions/get-task/get-task.mjs (1)

8-8: Version synchronized

0.0.11 aligns with the global ClickUp action versioning. No issues spotted.

components/clickup/actions/delete-space/delete-space.mjs (1)

8-8: Version bump verified

Update to 0.0.11 is in line with the overall package update. Looks good.

components/clickup/actions/get-custom-fields/get-custom-fields.mjs (1)

8-8: Version bump looks good

No functional changes introduced; the patch-level increment to 0.0.11 keeps the action in sync with the rest of the ClickUp package.

components/clickup/actions/create-chat-view-comment/create-chat-view-comment.mjs (1)

8-8: Version bump confirmed

Patch version raised to 0.0.11; no logic changes detected.

components/clickup/actions/get-lists/get-lists.mjs (1)

8-8: Version synchronisation acknowledged

Increment to 0.0.11 keeps this action aligned with the overall ClickUp release set.

components/clickup/actions/get-tasks/get-tasks.mjs (1)

9-9: Version increment consistent

Patch bump to 0.0.11 is consistent with peer actions; no additional feedback.

components/clickup/actions/create-checklist/create-checklist.mjs (1)

8-8: Version bump looks good – no further action needed.
The patch only increments the action version; no logic changed.

components/clickup/actions/get-list-views/get-list-views.mjs (1)

8-8: Consistent version increment – fine to merge.
Nothing else changed; ✅.

components/clickup/actions/stop-time-entry/stop-time-entry.mjs (1)

8-8: Version bump acknowledged – no logic impact.

components/clickup/actions/update-checklist-item/update-checklist-item.mjs (1)

8-8: Version update only – looks fine.

components/clickup/actions/update-checklist/update-checklist.mjs (1)

8-8: Version bump is consistent with other actions – good to go.

components/clickup/actions/get-view-tasks/get-view-tasks.mjs (1)

8-8: LGTM! Coordinated version bump.

This version increment from "0.0.10" to "0.0.11" is part of the coordinated release update across ClickUp action components, aligning with the overall package version bump to 0.4.0.

components/clickup/actions/create-task-comment/create-task-comment.mjs (1)

8-8: LGTM! Coordinated version bump.

This version increment from "0.0.10" to "0.0.11" aligns with the coordinated release update across the ClickUp integration components.

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

209-209: LGTM! Minor formatting cleanup.

Removing spaces after async options improves code consistency and doesn't affect functionality.

Also applies to: 236-236, 273-273


886-894: LGTM! Well-implemented time entry creation method.

The new createTimeEntry method follows the established pattern of other API methods in this file:

  • Uses the consistent _makeRequest helper
  • Properly accepts teamId, data, and params parameters
  • Makes a POST request to the correct ClickUp API endpoint (team/{teamId}/time_entries)
  • Method signature and implementation align with ClickUp API documentation

This method properly supports the new create-time-entry action.

components/clickup/actions/create-time-entry/create-time-entry.mjs (3)

1-10: LGTM! Well-structured action setup.

The action setup follows established patterns:

  • Proper imports from app and common task properties
  • Appropriate action metadata with correct documentation link
  • Version starts at 0.0.1 as expected for a new action

11-72: LGTM! Well-designed props with good UX.

The props are well-structured:

  • Proper dependency chaining (folder → list → task)
  • Clear descriptions for timestamp formats
  • Appropriate optional flags for flexible usage
  • Good user guidance with the taskId description mentioning List selection requirement

89-92: LGTM! Proper response handling.

The summary export and response return follow the established pattern used throughout the ClickUp integration.

jcortes
jcortes previously approved these changes Jul 30, 2025
Copy link
Collaborator

@jcortes jcortes left a comment

Choose a reason for hiding this comment

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

Hi @lcaresia lgtm! Ready for QA!

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

♻️ Duplicate comments (3)
components/clickup/actions/create-time-entry/create-time-entry.mjs (3)

73-76: Harden timestamp parsing and validate order (start < end).

Current parsing can yield NaN (e.g., "0") and there's no validation. Replace with robust parsing + validation.

   async run({ $ }) {
-    const start = new Date(+this.start || this.start).getTime();
-    const end = new Date(+this.end || this.end).getTime();
+    const toMs = (v) => {
+      if (v == null || v === "") return NaN;
+      if (typeof v === "number") return v;
+      const s = String(v).trim();
+      if (/^\d+$/.test(s)) return Number(s);
+      const t = Date.parse(s);
+      return Number.isNaN(t) ? NaN : t;
+    };
+    const start = toMs(this.start);
+    const end = toMs(this.end);
+    if (Number.isNaN(start) || Number.isNaN(end)) {
+      throw new Error("Invalid start or end time. Use ISO 8601 or Unix ms.");
+    }
+    if (end <= start) {
+      throw new Error("Start time must be strictly before end time.");
+    }
 

81-83: Remove unsupported/duplicate stop field from payload.

Only start/end or duration should be sent. stop duplicates end and is not needed.

     const data = {
       tid: this.taskId,
       description: this.description,
       start,
       end,
-      stop: end,
     };

90-92: Send custom_task_ids only when needed.

Avoid sending custom_task_ids=false. Include only when using custom task IDs for a provided taskId.

-      params: {
-        custom_task_ids: this.useCustomTaskIds,
-      },
+      params: this.useCustomTaskIds && this.taskId
+        ? { custom_task_ids: true }
+        : undefined,
🧹 Nitpick comments (3)
components/clickup/actions/create-time-entry/create-time-entry.mjs (3)

85-85: Remove console.log in actions.

Avoid noisy logs in actions; rely on summary/output.

-    console.log(data);

67-72: Add optional billable prop and include it in payload.

ClickUp supports marking time entries as billable. Add the prop and pass it when set.

     description: {
       type: "string",
       label: "Description",
       description: "Description of the time entry",
     },
+    billable: {
+      type: "boolean",
+      label: "Billable",
+      description: "Mark the time entry as billable",
+      optional: true,
+    },

And include in data:

     const data = {
       tid: this.taskId,
       description: this.description,
       start,
       end,
+      ...(typeof this.billable === "boolean" ? { billable: this.billable } : {}),
       ...(this.tags?.length ? { tags: this.tags } : {}),
     };

60-66: Copy edit: fix “(e.g.” typo in prop descriptions.

Minor grammar nit.

-      description: "The Start Time, can be ISO 8601 Date (.e.g `2025-08-06T01:50:19Z`) or Unix timestamp in milliseconds (.e.g `1595282645000`)",
+      description: "The Start Time, can be ISO 8601 Date (e.g. `2025-08-06T01:50:19Z`) or Unix timestamp in milliseconds (e.g. `1595282645000`)",
 ...
-      description: "The End Time, can be ISO 8601 Date (.e.g `2025-08-06T01:50:19Z`) or Unix timestamp in milliseconds (.e.g `1595282645000`)",
+      description: "The End Time, can be ISO 8601 Date (e.g. `2025-08-06T01:50:19Z`) or Unix timestamp in milliseconds (e.g. `1595282645000`)",
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3e8f0d2 and 495b54d.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • components/clickup/actions/create-time-entry/create-time-entry.mjs (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
components/clickup/actions/create-time-entry/create-time-entry.mjs (1)
components/clickup/clickup.app.mjs (1)
  • $ (402-402)
🔇 Additional comments (2)
components/clickup/actions/create-time-entry/create-time-entry.mjs (2)

4-21: General structure looks good.

Action metadata and common prop usage are consistent with existing ClickUp actions.


34-46: All parameters supported and tid is optional
tid (taskId), tags, and billable are all valid on the /v2/team/{team_id}/time_entries endpoint, and omitting tid will create a time entry without an associated task. The taskId prop being optional is correct—no changes needed.

Comment on lines +77 to +83
const data = {
tid: this.taskId,
description: this.description,
start,
end,
stop: end,
};
Copy link
Contributor

@coderabbitai coderabbitai bot Aug 11, 2025

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Use the tags prop in the API payload when provided.

tags is defined but not used. Include it conditionally.

     const data = {
       tid: this.taskId,
       description: this.description,
       start,
       end,
+      ...(this.tags?.length ? { tags: this.tags } : {}),
     };

Also applies to: 47-56

🤖 Prompt for AI Agents
In components/clickup/actions/create-time-entry/create-time-entry.mjs around
lines 77-83 (and similarly at lines 47-56), the payload object builds time entry
data but never includes the tags property; update the code to conditionally add
tags to the payload when this.tags is provided (truthy) so the API receives it.
Modify the payload construction to include the tags field only if present (e.g.,
check this.tags and set payload.tags = this.tags or spread a tags key), ensuring
you do the same conditional inclusion in the earlier block at lines 47-56.

Copy link
Collaborator

Choose a reason for hiding this comment

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

Any reason why the tags property isn't being used?

Copy link
Contributor

Choose a reason for hiding this comment

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

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Search for how tags are used in other ClickUp actions
echo "=== Searching for tags usage in ClickUp actions ==="
rg "tags.*:" components/clickup/actions/ -A 3 -B 1

echo -e "\n=== Searching for how tags are included in API payloads ==="
rg "tags\s*:" components/clickup/actions/ --type js -A 5 -B 5 | grep -E "(data|payload|body|params).*=.*{" -A 10 -B 2

echo -e "\n=== Check the createTimeEntry method implementation ==="
ast-grep --pattern 'createTimeEntry($_) {
  $$$
}'

Length of output: 1361


🏁 Script executed:

#!/bin/bash
# Check how create-task handles tags in its run method
echo "=== Checking create-task run method for tags usage ==="
cat components/clickup/actions/create-task/create-task.mjs | grep -A 50 "async run"

echo -e "\n=== Check createTimeEntry method in clickup.app.mjs ==="
cat components/clickup/clickup.app.mjs | grep -A 15 "createTimeEntry"

echo -e "\n=== Check ClickUp API documentation link ==="
cat components/clickup/actions/create-time-entry/create-time-entry.mjs | grep -i "documentation"

Length of output: 1705


@GTFalcao Looking at the code, this appears to be an oversight. The tags prop is defined in the component (lines 47-56) but isn't included in the API payload (lines 77-83).

Comparing with the create-task action which also has a tags prop, that action correctly includes tags in its data payload:

const response = await this.clickup.createTask({
  $,
  listId,
  data: {
    name,
    description,
    // ... other fields
    tags,  // ← tags is included here
    status,
    parent,
    // ...
  },
});

The create-time-entry action should similarly include tags when constructing the data object. The fix would be to add tags to the payload:

const data = {
  tid: this.taskId,
  description: this.description,
  start,
  end,
  stop: end,
  ...(this.tags?.length ? { tags: this.tags } : {}),
};

This way, tags will be passed to the ClickUp API when provided by the user, maintaining consistency with other ClickUp actions.

Copy link
Collaborator

@GTFalcao GTFalcao left a comment

Choose a reason for hiding this comment

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

Just one comment regarding a possibly missing prop

Comment on lines +77 to +83
const data = {
tid: this.taskId,
description: this.description,
start,
end,
stop: end,
};
Copy link
Collaborator

Choose a reason for hiding this comment

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

Any reason why the tags property isn't being used?

@lcaresia
Copy link
Collaborator Author

Just one comment regarding a possibly missing prop

Any reason why the tags property isn't being used?

@GTFalcao It's all correct, stop is just a redundant param of end in this case. The duration parameter can be used instead of the stop parameter.

@lcaresia
Copy link
Collaborator Author

/approve

@lcaresia
Copy link
Collaborator Author

/approve

@lcaresia lcaresia merged commit bf27a90 into master Aug 14, 2025
11 checks passed
@lcaresia lcaresia deleted the issue-17798 branch August 14, 2025 18:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[ACTION] Click Up - Create Time Entry
4 participants