diff --git a/components/todoist/actions/create-filter/create-filter.mjs b/components/todoist/actions/create-filter/create-filter.mjs index fbca1b233a83f..902e5cac808bf 100644 --- a/components/todoist/actions/create-filter/create-filter.mjs +++ b/components/todoist/actions/create-filter/create-filter.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-filter", name: "Create Filter", description: "Creates a filter. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Filters/Add-a-filter)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/create-label/create-label.mjs b/components/todoist/actions/create-label/create-label.mjs index 6956b94cde36e..07c8a27c52391 100644 --- a/components/todoist/actions/create-label/create-label.mjs +++ b/components/todoist/actions/create-label/create-label.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-label", name: "Create Label", description: "Creates a label. [See the documentation](https://developer.todoist.com/api/v1#tag/Labels/operation/create_label_api_v1_labels_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/create-project-comment/create-project-comment.mjs b/components/todoist/actions/create-project-comment/create-project-comment.mjs index 990afee5107c0..e062efcd9c96a 100644 --- a/components/todoist/actions/create-project-comment/create-project-comment.mjs +++ b/components/todoist/actions/create-project-comment/create-project-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-project-comment", name: "Create Project Comment", description: "Adds a comment to a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/create_comment_api_v1_comments_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/create-project/create-project.mjs b/components/todoist/actions/create-project/create-project.mjs index ccfb2078de750..d6181fa127133 100644 --- a/components/todoist/actions/create-project/create-project.mjs +++ b/components/todoist/actions/create-project/create-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-project", name: "Create Project", description: "Creates a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/create_project_api_v1_projects_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/create-section/create-section.mjs b/components/todoist/actions/create-section/create-section.mjs index 2d9dae3cbe9a4..98c2f92dfa499 100644 --- a/components/todoist/actions/create-section/create-section.mjs +++ b/components/todoist/actions/create-section/create-section.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-section", name: "Create Section", description: "Creates a section. [See the documentation](https://developer.todoist.com/api/v1#tag/Sections/operation/create_section_api_v1_sections_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/create-task-comment/create-task-comment.mjs b/components/todoist/actions/create-task-comment/create-task-comment.mjs index 728daba3eaa27..d187d7a631cf4 100644 --- a/components/todoist/actions/create-task-comment/create-task-comment.mjs +++ b/components/todoist/actions/create-task-comment/create-task-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-task-comment", name: "Create Task Comment", description: "Adds a comment to a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/create_comment_api_v1_comments_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/create-task/create-task.mjs b/components/todoist/actions/create-task/create-task.mjs index 6bdcbe107d13d..e1238bd839bc2 100644 --- a/components/todoist/actions/create-task/create-task.mjs +++ b/components/todoist/actions/create-task/create-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-create-task", name: "Create Task", description: "Creates a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/create_task_api_v1_tasks_post)", - version: "0.0.11", + version: "0.0.12", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/delete-comment/delete-comment.mjs b/components/todoist/actions/delete-comment/delete-comment.mjs index 2c395c8a0e086..8c6d02f1f7641 100644 --- a/components/todoist/actions/delete-comment/delete-comment.mjs +++ b/components/todoist/actions/delete-comment/delete-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-comment", name: "Delete Comment", description: "Deletes a comment. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/delete_comment_api_v1_comments__comment_id__delete)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/delete-filter/delete-filter.mjs b/components/todoist/actions/delete-filter/delete-filter.mjs index b46d7180cc624..232f325532d68 100644 --- a/components/todoist/actions/delete-filter/delete-filter.mjs +++ b/components/todoist/actions/delete-filter/delete-filter.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-filter", name: "Delete Filter", description: "Deletes a filter. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Filters/Delete-a-filter)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/delete-label/delete-label.mjs b/components/todoist/actions/delete-label/delete-label.mjs index 70aed00969973..f973f76902d6d 100644 --- a/components/todoist/actions/delete-label/delete-label.mjs +++ b/components/todoist/actions/delete-label/delete-label.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-label", name: "Delete Label", description: "Deletes a label. [See the documentation](https://developer.todoist.com/api/v1#tag/Labels/operation/delete_label_api_v1_labels__label_id__delete)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/delete-project/delete-project.mjs b/components/todoist/actions/delete-project/delete-project.mjs index fba3377ddeeb1..7c43ef8ec3208 100644 --- a/components/todoist/actions/delete-project/delete-project.mjs +++ b/components/todoist/actions/delete-project/delete-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-project", name: "Delete Project", description: "Deletes a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/delete_project_api_v1_projects__project_id__delete)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/delete-section/delete-section.mjs b/components/todoist/actions/delete-section/delete-section.mjs index 07edc39284ee2..59c7cfde89787 100644 --- a/components/todoist/actions/delete-section/delete-section.mjs +++ b/components/todoist/actions/delete-section/delete-section.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-section", name: "Delete Section", description: "Deletes a section. [See the documentation](https://developer.todoist.com/api/v1#tag/Sections/operation/delete_section_api_v1_sections__section_id__delete)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/delete-task/delete-task.mjs b/components/todoist/actions/delete-task/delete-task.mjs index bd0aa399afb66..d8249c9985a96 100644 --- a/components/todoist/actions/delete-task/delete-task.mjs +++ b/components/todoist/actions/delete-task/delete-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-delete-task", name: "Delete Task", description: "Deletes a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/delete_task_api_v1_tasks__task_id__delete)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/export-tasks/export-tasks.mjs b/components/todoist/actions/export-tasks/export-tasks.mjs index 593c4139e6ac6..bceac38e44a24 100644 --- a/components/todoist/actions/export-tasks/export-tasks.mjs +++ b/components/todoist/actions/export-tasks/export-tasks.mjs @@ -7,7 +7,7 @@ export default { key: "todoist-export-tasks", name: "Export Tasks", description: "Export project task names as comma separated file. Returns path to new file. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/get_tasks_api_v1_tasks_get)", - version: "0.1.7", + version: "0.1.8", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/find-project/find-project.mjs b/components/todoist/actions/find-project/find-project.mjs index d90ba98366108..42ecfd05c8b43 100644 --- a/components/todoist/actions/find-project/find-project.mjs +++ b/components/todoist/actions/find-project/find-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-find-project", name: "Find Project", description: "Finds a project (by name/title). [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/get_projects_api_v1_projects_get) Optionally, create one if none are found. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/create_project_api_v1_projects_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/find-task/find-task.mjs b/components/todoist/actions/find-task/find-task.mjs index f9e6ebdea4fec..bacfe0cff4089 100644 --- a/components/todoist/actions/find-task/find-task.mjs +++ b/components/todoist/actions/find-task/find-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-find-task", name: "Find Task", description: "Finds a task by name. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/get_tasks_api_v1_tasks_get) Optionally, create one if none are found. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/create_task_api_v1_tasks_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/find-user/find-user.mjs b/components/todoist/actions/find-user/find-user.mjs index bdcbb9cb5c34e..ec74f5dda8e56 100644 --- a/components/todoist/actions/find-user/find-user.mjs +++ b/components/todoist/actions/find-user/find-user.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-find-user", name: "Find User", description: "Searches by email for a user who is connected/shared with your account. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-label/get-label.mjs b/components/todoist/actions/get-label/get-label.mjs index 176241a338c41..ff1cdb8d68070 100644 --- a/components/todoist/actions/get-label/get-label.mjs +++ b/components/todoist/actions/get-label/get-label.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-label", name: "Get Label", description: "Returns info about a label. [See the documentation](https://developer.todoist.com/api/v1#tag/Labels/operation/get_label_api_v1_labels__label_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-project-comment/get-project-comment.mjs b/components/todoist/actions/get-project-comment/get-project-comment.mjs index 5a97a3d79e0b5..128bd81118a73 100644 --- a/components/todoist/actions/get-project-comment/get-project-comment.mjs +++ b/components/todoist/actions/get-project-comment/get-project-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-project-comment", name: "Get Project Comment", description: "Returns info about a project comment. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/get_comment_api_v1_comments__comment_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-project/get-project.mjs b/components/todoist/actions/get-project/get-project.mjs index 8f2d05817b87e..c370324f8cb5d 100644 --- a/components/todoist/actions/get-project/get-project.mjs +++ b/components/todoist/actions/get-project/get-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-project", name: "Get Project", description: "Returns info about a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/get_project_api_v1_projects__project_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-section/get-section.mjs b/components/todoist/actions/get-section/get-section.mjs index baee805696096..cc115c79a84ae 100644 --- a/components/todoist/actions/get-section/get-section.mjs +++ b/components/todoist/actions/get-section/get-section.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-section", name: "Get Section", description: "Returns info about a section. [See the documentation](https://developer.todoist.com/api/v1#tag/Sections/operation/get_section_api_v1_sections__section_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-task-comment/get-task-comment.mjs b/components/todoist/actions/get-task-comment/get-task-comment.mjs index a3e75c5c7d6cc..39d219e71dcc3 100644 --- a/components/todoist/actions/get-task-comment/get-task-comment.mjs +++ b/components/todoist/actions/get-task-comment/get-task-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-task-comment", name: "Get Task Comment", description: "Returns info about a task comment. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/get_comment_api_v1_comments__comment_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/get-task/get-task.mjs b/components/todoist/actions/get-task/get-task.mjs index a5d10bd28ff0f..d032a1ef7e39e 100644 --- a/components/todoist/actions/get-task/get-task.mjs +++ b/components/todoist/actions/get-task/get-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-get-task", name: "Get Task", description: "Returns info about a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/get_task_api_v1_tasks__task_id__get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/import-tasks/import-tasks.mjs b/components/todoist/actions/import-tasks/import-tasks.mjs index 392bfb9ff36ad..be2c2b776380c 100644 --- a/components/todoist/actions/import-tasks/import-tasks.mjs +++ b/components/todoist/actions/import-tasks/import-tasks.mjs @@ -6,7 +6,7 @@ export default { key: "todoist-import-tasks", name: "Import Tasks", description: "Import tasks into a selected project. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/create_task_api_v1_tasks_post)", - version: "0.1.7", + version: "0.1.8", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/invite-user-to-project/invite-user-to-project.mjs b/components/todoist/actions/invite-user-to-project/invite-user-to-project.mjs index 636da1e94da83..b442af0168385 100644 --- a/components/todoist/actions/invite-user-to-project/invite-user-to-project.mjs +++ b/components/todoist/actions/invite-user-to-project/invite-user-to-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-invite-user-to-project", name: "Invite User To Project", description: "Sends email to a person, inviting them to use one of your projects. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Sharing/Share-a-project)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/list-filters/list-filters.mjs b/components/todoist/actions/list-filters/list-filters.mjs index 1abdd5db0883f..bf99c1adeed57 100644 --- a/components/todoist/actions/list-filters/list-filters.mjs +++ b/components/todoist/actions/list-filters/list-filters.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-filters", name: "List Filters", description: "Returns a list of all filters. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-include-resource-types-options/list-include-resource-types-options.mjs b/components/todoist/actions/list-include-resource-types-options/list-include-resource-types-options.mjs index 89afc16ca2d52..d23e3951151c4 100644 --- a/components/todoist/actions/list-include-resource-types-options/list-include-resource-types-options.mjs +++ b/components/todoist/actions/list-include-resource-types-options/list-include-resource-types-options.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-include-resource-types-options", name: "List Resource Types Options", description: "Retrieves available options for the Resource Types field.", - version: "0.0.1", + version: "0.0.2", type: "action", annotations: { destructiveHint: false, diff --git a/components/todoist/actions/list-label-string-options/list-label-string-options.mjs b/components/todoist/actions/list-label-string-options/list-label-string-options.mjs index 6de5821c3e26f..099a685569877 100644 --- a/components/todoist/actions/list-label-string-options/list-label-string-options.mjs +++ b/components/todoist/actions/list-label-string-options/list-label-string-options.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-label-string-options", name: "List Labels Options", description: "Retrieves available options for the Labels field.", - version: "0.0.1", + version: "0.0.2", type: "action", annotations: { destructiveHint: false, diff --git a/components/todoist/actions/list-labels/list-labels.mjs b/components/todoist/actions/list-labels/list-labels.mjs index 869fe5c79ded1..02c078151017a 100644 --- a/components/todoist/actions/list-labels/list-labels.mjs +++ b/components/todoist/actions/list-labels/list-labels.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-labels", name: "List Labels", description: "Returns a list of all labels. [See the documentation](https://developer.todoist.com/api/v1#tag/Labels/operation/get_labels_api_v1_labels_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-project-comments/list-project-comments.mjs b/components/todoist/actions/list-project-comments/list-project-comments.mjs index cfc481b281bdb..bade85da00aed 100644 --- a/components/todoist/actions/list-project-comments/list-project-comments.mjs +++ b/components/todoist/actions/list-project-comments/list-project-comments.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-project-comments", name: "List Project Comments", description: "Returns a list of comments for a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/get_comments_api_v1_comments_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-projects/list-projects.mjs b/components/todoist/actions/list-projects/list-projects.mjs index 4a6fafa4c3763..20c842980722f 100644 --- a/components/todoist/actions/list-projects/list-projects.mjs +++ b/components/todoist/actions/list-projects/list-projects.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-projects", name: "List Projects", description: "Returns a list of all projects. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/get_projects_api_v1_projects_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-sections/list-sections.mjs b/components/todoist/actions/list-sections/list-sections.mjs index b329ad4b642f2..b89ee56367b7e 100644 --- a/components/todoist/actions/list-sections/list-sections.mjs +++ b/components/todoist/actions/list-sections/list-sections.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-sections", name: "List Sections", description: "Returns a list of all sections. [See the documentation](https://developer.todoist.com/api/v1#tag/Sections/operation/get_sections_api_v1_sections_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-select-projects-options/list-select-projects-options.mjs b/components/todoist/actions/list-select-projects-options/list-select-projects-options.mjs index e9b75e5fd63da..af766a650f611 100644 --- a/components/todoist/actions/list-select-projects-options/list-select-projects-options.mjs +++ b/components/todoist/actions/list-select-projects-options/list-select-projects-options.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-select-projects-options", name: "List Select Projects Options", description: "Retrieves available options for the Select Projects field.", - version: "0.0.1", + version: "0.0.2", type: "action", annotations: { destructiveHint: false, diff --git a/components/todoist/actions/list-task-comments/list-task-comments.mjs b/components/todoist/actions/list-task-comments/list-task-comments.mjs index 26a6329f7b5af..88ee951597cb3 100644 --- a/components/todoist/actions/list-task-comments/list-task-comments.mjs +++ b/components/todoist/actions/list-task-comments/list-task-comments.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-task-comments", name: "List Task Comments", description: "Returns a list of comments for a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/get_comments_api_v1_comments_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/list-uncompleted-tasks/list-uncompleted-tasks.mjs b/components/todoist/actions/list-uncompleted-tasks/list-uncompleted-tasks.mjs index 7aed63ee22016..5926122e7a702 100644 --- a/components/todoist/actions/list-uncompleted-tasks/list-uncompleted-tasks.mjs +++ b/components/todoist/actions/list-uncompleted-tasks/list-uncompleted-tasks.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-list-uncompleted-tasks", name: "List Uncompleted Tasks", description: "Returns a list of uncompleted tasks by project, section, and/or label. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/get_tasks_api_v1_tasks_get)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/mark-task-completed/mark-task-completed.mjs b/components/todoist/actions/mark-task-completed/mark-task-completed.mjs index 683fbb12cc4f7..07ef469f29a5e 100644 --- a/components/todoist/actions/mark-task-completed/mark-task-completed.mjs +++ b/components/todoist/actions/mark-task-completed/mark-task-completed.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-mark-task-completed", name: "Mark Task as Completed", description: "Marks a task as being completed. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/close_task_api_v1_tasks__task_id__close_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/move-task-to-section/move-task-to-section.mjs b/components/todoist/actions/move-task-to-section/move-task-to-section.mjs index 49e4563b1be4e..ff6b0479e912f 100644 --- a/components/todoist/actions/move-task-to-section/move-task-to-section.mjs +++ b/components/todoist/actions/move-task-to-section/move-task-to-section.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-move-task-to-section", name: "Move Task To Section", description: "Move a Task to a different section within the same project. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/move_task_api_v1_tasks__task_id__move_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/search-tasks/search-tasks.mjs b/components/todoist/actions/search-tasks/search-tasks.mjs index 79501cac84eb5..e30870682289b 100644 --- a/components/todoist/actions/search-tasks/search-tasks.mjs +++ b/components/todoist/actions/search-tasks/search-tasks.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-search-tasks", name: "Search Tasks", description: "Search tasks by name, label, project and/or section. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/get_tasks_api_v1_tasks_get)", - version: "0.0.8", + version: "0.0.9", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/uncomplete-task/uncomplete-task.mjs b/components/todoist/actions/uncomplete-task/uncomplete-task.mjs index d8171194e2675..b9863e9f0f0c9 100644 --- a/components/todoist/actions/uncomplete-task/uncomplete-task.mjs +++ b/components/todoist/actions/uncomplete-task/uncomplete-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-uncomplete-task", name: "Uncomplete Task", description: "Uncompletes a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/reopen_task_api_v1_tasks__task_id__reopen_post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: false, openWorldHint: true, diff --git a/components/todoist/actions/update-comment/update-comment.mjs b/components/todoist/actions/update-comment/update-comment.mjs index b17b3a58d002b..ef74213260892 100644 --- a/components/todoist/actions/update-comment/update-comment.mjs +++ b/components/todoist/actions/update-comment/update-comment.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-comment", name: "Update Comment", description: "Updates a comment. [See the documentation](https://developer.todoist.com/api/v1#tag/Comments/operation/update_comment_api_v1_comments__comment_id__post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/update-filter/update-filter.mjs b/components/todoist/actions/update-filter/update-filter.mjs index b10c99802c195..73a4d4b9098d8 100644 --- a/components/todoist/actions/update-filter/update-filter.mjs +++ b/components/todoist/actions/update-filter/update-filter.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-filter", name: "Update Filter", description: "Updates a filter. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Filters/Update-a-filter)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/update-label/update-label.mjs b/components/todoist/actions/update-label/update-label.mjs index 3274dc922c068..b38f2d3682f22 100644 --- a/components/todoist/actions/update-label/update-label.mjs +++ b/components/todoist/actions/update-label/update-label.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-label", name: "Update Label", description: "Updates a label. [See the documentation](https://developer.todoist.com/api/v1#tag/Labels/operation/update_label_api_v1_labels__label_id__post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/update-project/update-project.mjs b/components/todoist/actions/update-project/update-project.mjs index 237554b9a41e7..f91f2c931ad8a 100644 --- a/components/todoist/actions/update-project/update-project.mjs +++ b/components/todoist/actions/update-project/update-project.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-project", name: "Update Project", description: "Updates a project. [See the documentation](https://developer.todoist.com/api/v1#tag/Projects/operation/update_project_api_v1_projects__project_id__post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/update-section/update-section.mjs b/components/todoist/actions/update-section/update-section.mjs index 5f5351ff1a850..7928a64e37a6b 100644 --- a/components/todoist/actions/update-section/update-section.mjs +++ b/components/todoist/actions/update-section/update-section.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-section", name: "Update Section", description: "Updates a section. [See the documentation](https://developer.todoist.com/api/v1#tag/Sections/operation/update_section_api_v1_sections__section_id__post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/actions/update-task/update-task.mjs b/components/todoist/actions/update-task/update-task.mjs index 1206a20b0e16d..8ae331b6017ec 100644 --- a/components/todoist/actions/update-task/update-task.mjs +++ b/components/todoist/actions/update-task/update-task.mjs @@ -4,7 +4,7 @@ export default { key: "todoist-update-task", name: "Update Task", description: "Updates a task. [See the documentation](https://developer.todoist.com/api/v1#tag/Tasks/operation/update_task_api_v1_tasks__task_id__post)", - version: "0.0.9", + version: "0.0.10", annotations: { destructiveHint: true, openWorldHint: true, diff --git a/components/todoist/common/constants.mjs b/components/todoist/common/constants.mjs new file mode 100644 index 0000000000000..2a3ffce474604 --- /dev/null +++ b/components/todoist/common/constants.mjs @@ -0,0 +1,35 @@ +// object_event_types filter value (passed as a JSON-stringified array). +// Todoist logs each occurrence of a recurring task's completion as its own +// `item:completed` activity entry (distinguished by event_date), same as a +// non-recurring completion - there's no separate event type for it. +export const OBJECT_EVENT_TYPE_ITEM_COMPLETED = "item:completed"; + +// Activity log page size (API max is 200; using the max minimizes round trips) +export const ACTIVITY_LOG_DEFAULT_LIMIT = 200; + +// On the very first poll (no stored lastDate yet), look back this far instead +// of starting from "now" - otherwise date_from === date_to and the deploy-time +// test in the workflow builder would always see zero events. +export const FIRST_RUN_LOOKBACK_MS = 24 * 60 * 60 * 1000; + +// Never advance date_to (and therefore the next poll's date_from, since it's +// carried over as the stored watermark) all the way to the exact current +// instant - Todoist can take a moment to index a just-logged activity event +// (recurring completions especially, since they write both a completion +// snapshot and a due-date reschedule). This buffer only applies to date_to; +// date_from is the previous poll's date_to as-is, with no additional overlap +// subtracted from it. Continuity across polls comes from that carry-over +// (each poll's window picks up exactly where the last one's left off), not +// from re-scanning a deliberate overlap - an event still indexing when a +// poll's (buffered) date_to is computed will simply fall after that +// boundary and be picked up on the next poll instead. +export const POLL_SAFETY_BUFFER_MS = 60 * 1000; + +// Matches the 20-item cap hooks.deploy() applies before emitting (see +// sources/common.mjs). The polling watermark is only ever advanced past what +// a poll actually returns, so it stays in sync with that cap - whether a +// given call originated from deploy() or a regular scheduled run(). Without +// this, deploy()'s downstream slice(0, 20) could silently strand any +// completions beyond the first 20 in the lookback window, since the +// watermark would already have advanced past them. +export const MAX_RESULTS_PER_POLL = 20; diff --git a/components/todoist/package.json b/components/todoist/package.json index 29f1aa2903d1c..225af49b526f5 100644 --- a/components/todoist/package.json +++ b/components/todoist/package.json @@ -1,6 +1,6 @@ { "name": "@pipedream/todoist", - "version": "0.4.0", + "version": "1.0.0", "description": "Pipedream Todoist Components", "main": "todoist.app.mjs", "keywords": [ diff --git a/components/todoist/sources/completed-task/completed-task.mjs b/components/todoist/sources/completed-task/completed-task.mjs index 6276332217de7..03d380c911e0d 100644 --- a/components/todoist/sources/completed-task/completed-task.mjs +++ b/components/todoist/sources/completed-task/completed-task.mjs @@ -1,11 +1,18 @@ import common from "../common-task.mjs"; +import { + OBJECT_EVENT_TYPE_ITEM_COMPLETED, + ACTIVITY_LOG_DEFAULT_LIMIT, + FIRST_RUN_LOOKBACK_MS, + POLL_SAFETY_BUFFER_MS, + MAX_RESULTS_PER_POLL, +} from "../../common/constants.mjs"; export default { ...common, key: "todoist-completed-task", name: "New Completed Task", - description: "Emit new event for each completed task. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "1.0.5", + description: "Emit new event for each completed Todoist task, including recurring task completions. Non-recurring completions are polled via `GET /tasks/completed/by_completion_date`. Recurring completions don't appear there - Todoist reschedules a recurring task instead of marking it completed there - so they're additionally polled via the v1 Activity Log (`GET /api/v1/activities`), detected as an `item:completed` event with `extra_data.is_recurring` set to `true`. **Accessing recurring task completions older than 7 days requires a Todoist premium/business plan**. Respects the Projects filter. [See the documentation](https://developer.todoist.com/api/v1/#tag/Activity/operation/get_activity_logs_api_v1_activities_get).", + version: "2.0.0", type: "source", dedupe: "unique", methods: { @@ -16,25 +23,154 @@ export default { _setLastDate(value) { this.db.set("lastDate", value); }, + async _getNonRecurringCompletions(dateFrom, dateTo) { + const allTasks = []; + let cursor; + do { + const response = await this.todoist.getCompletedTasks({ + params: { + since: dateFrom, + until: dateTo, + ...(cursor && { + cursor, + }), + }, + }); + allTasks.push(...(response.items ?? [])); + cursor = response.next_cursor; + } while (cursor); + + return allTasks.map((task) => ({ + projectId: task.project_id, + ts: Date.parse(task.date_completed), + summary: `Completed task: ${task.content ?? task.id}`, + dedupeId: `${task.id}-completed`, + raw: task, + })); + }, + // Best-effort: Activity Log access is a premium-only Todoist feature + // ("Premium only feature", error_code 32), so accounts without it get a + // 403 here - caught and treated as "no recurring completions available + // this poll", which never affects the non-recurring completions above. + async _getRecurringCompletions(dateFrom, dateTo) { + try { + const allResults = []; + let cursor; + do { + const response = await this.todoist.getActivityLogs({ + params: { + object_event_types: JSON.stringify([ + OBJECT_EVENT_TYPE_ITEM_COMPLETED, + ]), + date_from: dateFrom, + date_to: dateTo, + limit: ACTIVITY_LOG_DEFAULT_LIMIT, + ...(cursor && { + cursor, + }), + }, + }); + allResults.push(...(response.results ?? [])); + cursor = response.next_cursor; + // Always follow every page rather than stopping early once we have + // "enough" - we can't assume which end of the date range an earlier + // page represents, so stopping early risks capping to the wrong + // (oldest) entries when there's a large backlog spanning many pages. + } while (cursor); + + // Non-recurring completions are already covered by + // _getNonRecurringCompletions above (and also appear here as plain + // item:completed entries) - only keep entries Todoist marks as + // belonging to a recurring task, to avoid emitting duplicates. + return allResults + .filter((entry) => entry.extra_data?.is_recurring === true) + .map((entry) => ({ + projectId: entry.parent_project_id, + ts: Date.parse(entry.event_date), + summary: `Completed task: ${entry.extra_data?.content ?? entry.object_id}`, + dedupeId: `${entry.object_id}-${entry.event_date}`, + raw: entry, + })); + } catch (err) { + if (err.response?.status === 403) { + console.error("Activity Log unavailable (premium-only feature restriction) - skipping recurring task completions this poll", err); + return []; + } + throw err; + } + }, async getSyncResult() { const lastDate = this._getLastDate(); - const newDate = new Date().toISOString(); - const params = { - since: lastDate || newDate, - until: newDate, - }; - const response = await this.todoist.getCompletedTasks({ - params, - }); + const now = Date.now(); + // Never advance date_to all the way to the exact current instant - + // Todoist can take a moment to index a just-logged activity event + // (recurring completions especially, since they write both a + // completion snapshot and a due-date reschedule). Without this buffer, + // an event that isn't indexed yet at poll time would have an event_date + // already behind the next poll's date_from once it does appear, and + // would be skipped permanently instead of being picked up next time. + const dateTo = new Date(now - POLL_SAFETY_BUFFER_MS).toISOString(); + // On the first poll there's no lastDate yet; look back a bounded window + // instead of starting from "now", otherwise date_from === date_to and + // this (and the deploy-time test in the workflow builder) would always + // see zero events even if a task was just completed. + const dateFrom = lastDate || new Date(now - FIRST_RUN_LOOKBACK_MS).toISOString(); - this._setLastDate(newDate); + const [ + nonRecurring, + recurring, + ] = await Promise.all([ + this._getNonRecurringCompletions(dateFrom, dateTo), + this._getRecurringCompletions(dateFrom, dateTo), + ]); - return response.items ?? []; + const allResults = [ + ...nonRecurring, + ...recurring, + ]; + // Sort oldest-first so that, when a window has more than + // MAX_RESULTS_PER_POLL events, we keep the OLDEST unprocessed ones and + // advance the watermark only past those - capping to the most recent + // N would otherwise permanently skip everything older than the cut. + allResults.sort((a, b) => a.ts - b.ts); + const capped = allResults.slice(0, MAX_RESULTS_PER_POLL); + + // Don't persist the new watermark yet - state must only update after + // emitResults() has successfully processed this batch, so a partial + // failure while emitting can't silently skip events on the next run. + // Storing it on `this` for emitResults() to pick up (both methods run + // within the same run()/deploy() invocation). + this._nextLastDate = capped.length + ? new Date(capped[capped.length - 1].ts).toISOString() + : dateTo; + + return capped; }, filterResults(syncResult) { return syncResult .filter((element) => - this.todoist.isProjectInList(element.project_id, this.selectProjects ?? [])); + this.todoist.isProjectInList( + element.projectId, + this.selectProjects ?? [], + )); + }, + generateMeta(element) { + return { + id: element.dedupeId, + summary: element.summary, + ts: element.ts, + }; + }, + emitResults(results) { + for (const element of results) { + const meta = this.generateMeta(element); + this.$emit(element.raw, meta); + } + // Only advance the watermark now that every event above has been + // emitted successfully - see the comment in getSyncResult(). + if (this._nextLastDate) { + this._setLastDate(this._nextLastDate); + } }, }, }; diff --git a/components/todoist/sources/incomplete-task/incomplete-task.mjs b/components/todoist/sources/incomplete-task/incomplete-task.mjs index 563b0c3f09d42..e5d88e972ba69 100644 --- a/components/todoist/sources/incomplete-task/incomplete-task.mjs +++ b/components/todoist/sources/incomplete-task/incomplete-task.mjs @@ -5,7 +5,7 @@ export default { key: "todoist-incomplete-task", name: "New Incomplete Task", description: "Emit new event for each new incomplete task. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.1.5", + version: "0.1.6", type: "source", dedupe: "unique", props: { diff --git a/components/todoist/sources/new-or-modified-project/new-or-modified-project.mjs b/components/todoist/sources/new-or-modified-project/new-or-modified-project.mjs index 7b3b57774f60d..f46fb4a97da40 100644 --- a/components/todoist/sources/new-or-modified-project/new-or-modified-project.mjs +++ b/components/todoist/sources/new-or-modified-project/new-or-modified-project.mjs @@ -5,6 +5,6 @@ export default { key: "todoist-new-or-modified-project", name: "New or Modified Project", description: "Emit new event for each new or modified project. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", }; diff --git a/components/todoist/sources/new-or-modified-task/new-or-modified-task.mjs b/components/todoist/sources/new-or-modified-task/new-or-modified-task.mjs index 8c24810024805..0df75919aaa70 100644 --- a/components/todoist/sources/new-or-modified-task/new-or-modified-task.mjs +++ b/components/todoist/sources/new-or-modified-task/new-or-modified-task.mjs @@ -5,6 +5,6 @@ export default { key: "todoist-new-or-modified-task", name: "New or Modified Task", description: "Emit new event for each new or modified task. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", }; diff --git a/components/todoist/sources/new-project/new-project.mjs b/components/todoist/sources/new-project/new-project.mjs index b75b02013771c..97ffa6ac25447 100644 --- a/components/todoist/sources/new-project/new-project.mjs +++ b/components/todoist/sources/new-project/new-project.mjs @@ -5,7 +5,7 @@ export default { key: "todoist-new-project", name: "New Project", description: "Emit new event for each new project. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", dedupe: "greatest", }; diff --git a/components/todoist/sources/new-section/new-section.mjs b/components/todoist/sources/new-section/new-section.mjs index dffc668d51b69..c000bb086e69c 100644 --- a/components/todoist/sources/new-section/new-section.mjs +++ b/components/todoist/sources/new-section/new-section.mjs @@ -5,7 +5,7 @@ export default { key: "todoist-new-section", name: "New Section", description: "Emit new event for each new section added. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", dedupe: "greatest", methods: { diff --git a/components/todoist/sources/new-task/new-task.mjs b/components/todoist/sources/new-task/new-task.mjs index 1f5fc30d83227..944b9f8767de6 100644 --- a/components/todoist/sources/new-task/new-task.mjs +++ b/components/todoist/sources/new-task/new-task.mjs @@ -5,7 +5,7 @@ export default { key: "todoist-new-task", name: "New Task", description: "Emit new event for each new task. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", dedupe: "greatest", }; diff --git a/components/todoist/sources/sync-resources/sync-resources.mjs b/components/todoist/sources/sync-resources/sync-resources.mjs index 07cd4910d88c3..8848ccc844b48 100644 --- a/components/todoist/sources/sync-resources/sync-resources.mjs +++ b/components/todoist/sources/sync-resources/sync-resources.mjs @@ -5,7 +5,7 @@ export default { key: "todoist-sync-resources", name: "New Sync Resources", description: "Emit new updates for your selected resources. [See the documentation](https://developer.todoist.com/api/v1#tag/Sync/Overview/Read-resources)", - version: "0.0.11", + version: "0.0.12", type: "source", props: { ...common.props, diff --git a/components/todoist/todoist.app.mjs b/components/todoist/todoist.app.mjs index 99b3f2794fe54..07a6d99b14945 100644 --- a/components/todoist/todoist.app.mjs +++ b/components/todoist/todoist.app.mjs @@ -825,6 +825,28 @@ export default { params, }); }, + /** + * Get activity log events from the Todoist v1 Activity Log endpoint. + * Supports filtering by object_event_types (e.g. ["item:completed"]), + * a date_from/date_to ISO 8601 window, cursor-based pagination, and a + * limit (1-200, default 50). + * @params {Object} opts - An object representing configuration options for this method + * @params {Object} [opts.params = {}] - Query params: object_event_types (JSON-stringified + * array), date_from, date_to (ISO 8601), cursor, limit + * @returns {Object} JSON object with a results array and optional next_cursor + */ + async getActivityLogs(opts) { + const { + $, + params = {}, + } = opts; + return this._makeRestRequest({ + $, + path: "/activities", + method: "GET", + params, + }); + }, /** * Create a new task * @params {Object} opts - An object representing configuration options for this method