# Wrike on boxd

> Wrike is a project management and collaboration tool offering customizable workflows, Gantt charts, reporting, and resource management to boost team productivity.

- Page: https://boxd.sh/integrations/wrike/
- CLI: `run wrike` (144 commands, 33 marked common)
- SDK: `import { wrike } from "@boxd/run"`; every parameter and response type is at `@boxd/run/wrike`
- Triggers: none
- Connect: `run auth wrike` (Sign in with Wrike), or https://app.boxd.sh/integrations/detail/wrike
- All integrations: https://boxd.sh/integrations/ (Markdown: https://boxd.sh/integrations/index.md)

## From the shell

```sh
run auth wrike      # once: prints a link to connect your account
run wrike           # list its commands
run wrike list-spaces
```

Parameters are flags (`--flag value`); object and array parameters take a JSON string. Output is YAML, or JSON with `--json`. Calls use your own connection; `--scope <name>` uses a connection shared with your team.

## From a script

```ts
import { every, wrike } from "@boxd/run";

every("1 hour", async () => {
  const result = await wrike.listSpaces({});
  console.log(result);
});
```

Run it with `run wrike.run.ts`. Wrike has no triggers; `every()` polls on a schedule, keeps the script running as a job, and wakes the machine when it is due.

## Commands

Required flags are listed; `run wrike <command> --help` lists the optional ones. "common" marks what `run wrike` shows without `--all`.

| Command | SDK method | Required flags | Optional | Description |
|---|---|---|---|---|
| `bulk-modify-groups` | `wrike.bulkModifyGroups()` | `--members` | 0 | Adds or removes members for multiple Wrike groups in a single request; all specified user IDs must correspond to existing Wrike users |
| `copy-folder` ·common | `wrike.copyFolder()` | `--folderId` `--parent` `--title` | 11 | Copies a Wrike folder synchronously to a specified parent location with customizable options |
| `copy-folder-async` | `wrike.copyFolderAsync()` | `--folder-id` `--parent` `--title` | 11 | Duplicate a folder asynchronously in Wrike, creating a copy in a specified parent location |
| `create-account-webhooks` ·common | `wrike.createAccountWebhooks()` | `--hookUrl` | 4 | Creates a webhook for the current account to receive notifications about changes |
| `create-assets` ·common | `wrike.createAssets()` | `--name` | 0 | Create equipment/asset in Wrike |
| `create-customfield` ·common | `wrike.createCustomfield()` | `--title` `--type` | 11 | Create a new custom field in Wrike |
| `create-folder` ·common | `wrike.createFolder()` | `--folderId` `--title` | 9 | Creates a new Wrike subfolder within the specified `folderId`, optionally as a project if `customItemTypeId` is given; the folder is auto-shared with its creator |
| `create-folder-booking` ·common | `wrike.createFolderBooking()` | `--bookingDates` `--folderId` | 3 | Create a booking in a Wrike folder |
| `create-folder-webhook` | `wrike.createFolderWebhook()` | `--folder-id` `--hookUrl` | 3 | Create a webhook for a Wrike folder or project |
| `create-folders-approvals` ·common | `wrike.createFoldersApprovals()` | `--folderId` | 0 | Create a new approval in a Wrike folder |
| `create-folders-comments` ·common | `wrike.createFoldersComments()` | `--folderId` `--text` | 0 | Creates a new comment on a specified Wrike folder |
| `create-folders-timelog-lock-period` | `wrike.createFoldersTimelogLockPeriod()` | `--folderId` `--period` | 0 | Creates a timelog lock period for a specific folder |
| `create-group` | `wrike.createGroup()` | `--title` | 5 | Creates a new user group in Wrike with a specified title, optionally setting members, parent group, avatar, and custom metadata |
| `create-invitation` ·common | `wrike.createInvitation()` | `--email` | 7 | Invites a user to a Wrike workspace by email, optionally with name, specifying EITHER `userTypeId` OR a combination of `role`/`external`; custom email subject/message available for paid accounts |
| `create-space-webhook` ·common | `wrike.createSpaceWebhook()` | `--hook-url` `--space-id` | 3 | Create a webhook on a Wrike space for receiving notifications about changes to tasks, folders, and projects |
| `create-spaces-timelog-lock-period` | `wrike.createSpacesTimelogLockPeriod()` | `--period` `--spaceId` | 0 | Create a timelog lock period for a space to prevent time entries from being edited |
| `create-task` ·common | `wrike.createTask()` | `--folderId` `--title` | 19 | Creates a new task in a specified Wrike folder; if setting priority with `priorityBefore` or `priorityAfter`, the referenced task must be in the same folder or project |
| `create-task-attachment` | `wrike.createTaskAttachment()` | `--file` `--taskId` | 0 | Upload a file attachment to a Wrike task |
| `create-task-comment` ·common | `wrike.createTaskComment()` | `--taskId` `--text` | 0 | Create a new comment on a Wrike task |
| `create-tasks-approvals` | `wrike.createTasksApprovals()` | `--taskId` | 0 | Create an approval on a specific task in Wrike |
| `create-tasks-dependencies` ·common | `wrike.createTasksDependencies()` | `--predecessorId` `--relationType` `--taskId` | 0 | Create a new dependency relationship between Wrike tasks |
| `create-tasks-timelogs` | `wrike.createTasksTimelogs()` | `--hours` `--taskId` `--trackedDate` | 2 | Create a timelog entry for a specific task in Wrike |
| `create-timesheets` | `wrike.createTimesheets()` | `--periodStartDate` | 0 | Create a timesheet for a user for a specified time period |
| `create-workflows` ·common | `wrike.createWorkflows()` | `--name` | 0 | Create a new custom workflow in Wrike |
| `delete-approvals` | `wrike.deleteApprovals()` | `--approvalId` | 0 | Cancels/deletes an approval by its identifier |
| `delete-asset` | `wrike.deleteAsset()` | `--assetId` | 0 | Permanently deletes a Wrike asset/equipment by assetId |
| `delete-attachments` | `wrike.deleteAttachments()` | `--attachment-id` | 0 | Permanently delete a Wrike attachment by its ID |
| `delete-booking` | `wrike.deleteBooking()` | `--bookingId` | 0 | Permanently removes a resource booking allocation by its ID; use when deallocating resources from projects or tasks |
| `delete-comment` | `wrike.deleteComment()` | `--commentId` | 0 | Permanently deletes a Wrike comment by its ID; this action is irreversible and the comment must exist |
| `delete-custom-field` | `wrike.deleteCustomField()` | `--customFieldId` | 0 | Permanently deletes a custom field by its ID; this action is irreversible and requires a valid, existing custom field ID |
| `delete-dependencies` | `wrike.deleteDependencies()` | `--dependencyId` | 0 | Permanently removes a task dependency relationship by its ID; use when unlinking predecessor/successor task relationships |
| `delete-folder` | `wrike.deleteFolder()` | `--folderId` | 0 | Permanently deletes the folder specified by `folderId` and all its contents (e.g., tasks, documents, subfolders) from the Wrike workspace; this irreversible action is for when the folder is no longer… |
| `delete-folders-timelog-lock-period` | `wrike.deleteFoldersTimelogLockPeriod()` | `--folderId` `--period` | 0 | Deletes a timelog lock period for a specific folder |
| `delete-group` | `wrike.deleteGroup()` | `--groupId` | 0 | Permanently deletes a group by its `groupId`; this action is irreversible and does not affect user accounts that were members of the group |
| `delete-inivtation` | `wrike.deleteInivtation()` | `--invitationId` | 0 | Permanently deletes an existing invitation, specified by its unique `invitationId`; this action cannot be undone |
| `delete-job-role` | `wrike.deleteJobRole()` | `--jobroleId` | 0 | Permanently deletes a job role by its identifier; deleted job roles are removed from all tasks and users and cannot be restored |
| `delete-space` | `wrike.deleteSpace()` | `--spaceId` | 0 | Permanently deletes a Wrike space and all its contents by spaceId; this action is irreversible and should be used with caution |
| `delete-spaces-timelog` | `wrike.deleteSpacesTimelog()` | `--period` `--spaceId` | 0 | Unlock (delete) a timelog lock period for a specific space in Wrike |
| `delete-task` | `wrike.deleteTask()` | `--taskId` | 0 | Permanently deletes a Wrike task and all its associated data by its ID; this action is irreversible and the task must exist |
| `delete-timelog` | `wrike.deleteTimelog()` | `--timelogId` | 0 | Permanently deletes a Wrike timelog entry by its ID; use when removing an incorrect or obsolete time log entry |
| `delete-webhook` | `wrike.deleteWebhook()` | `--webhook-id` | 0 | Permanently delete a webhook by webhook_id |
| `fetch-all-tasks` | `wrike.fetchAllTasks()` | — | 7 | Fetches tasks from a Wrike account, allowing filtering by status, due date, and subfolder inclusion, with customizable response fields and pagination |
| `get-account-information` ·common | `wrike.getAccountInformation()` | — | 1 | Retrieves detailed Wrike account information, where the response content is influenced by selected fields, account subscription, and user permissions |
| `get-all-custom-fields` ·common | `wrike.getAllCustomFields()` | — | 0 | Retrieves all custom field definitions (including ID, name, type, and settings) from the Wrike account; this returns the definitions themselves, not their specific values on Wrike items, and is… |
| `get-all-webhooks` | `wrike.getAllWebhooks()` | — | 0 | Retrieve a list of all webhooks created using the same API token |
| `get-approvals` | `wrike.getApprovals()` | — | 0 | Retrieve all approvals accessible to the authenticated user |
| `get-approvals-by-ids` | `wrike.getApprovalsByIds()` | `--approval-ids` | 0 | Retrieve specific Wrike approvals by their IDs (up to 100) |
| `get-async-job` | `wrike.getAsyncJob()` | `--async-job-id` | 0 | Retrieve status and details for an asynchronous job in Wrike |
| `get-attachments` | `wrike.getAttachments()` | `--attachment-ids` | 0 | Retrieve multiple Wrike attachments by their IDs (up to 100) |
| `get-attachments-download` | `wrike.getAttachmentsDownload()` | `--attachmentId` | 0 | Download a Wrike attachment file |
| `get-attachments-preview` | `wrike.getAttachmentsPreview()` | `--attachmentId` | 0 | Download a preview version of a Wrike attachment |
| `get-attachments-url` | `wrike.getAttachmentsUrl()` | `--attachmentId` | 0 | Get a public access URL for a Wrike attachment |
| `get-bookings` | `wrike.getBookings()` | `--bookingId` | 0 | Retrieves one or more Wrike bookings by their IDs |
| `get-colors` | `wrike.getColors()` | — | 0 | Query the list of available colors in Wrike |
| `get-comments` | `wrike.getComments()` | — | 2 | Retrieve all comments accessible to the authorized user |
| `get-comments-by-ids` | `wrike.getCommentsByIds()` | `--comment-ids` | 1 | Retrieve multiple Wrike comments by their IDs |
| `get-contact-hourly-rates` | `wrike.getContactHourlyRates()` | `--contactIds` | 0 | Retrieve hourly budget rates for up to 100 Wrike contacts |
| `get-contact-timelogs` | `wrike.getContactTimelogs()` | `--contactId` | 6 | Retrieve all timelog records created by a specific contact in Wrike |
| `get-contacts` | `wrike.getContacts()` | — | 3 | Retrieves a list of Wrike contacts (e.g., team members, clients, collaborators); response includes contact details but not their detailed task or project involvement |
| `get-contacts-history` | `wrike.getContactsHistory()` | `--contactIds` | 0 | Access field modification history for Wrike contacts |
| `get-custom-item-types` ·common | `wrike.getCustomItemTypes()` | — | 0 | Retrieve all custom item types from Wrike |
| `get-dependencies` | `wrike.getDependencies()` | `--dependency-ids` | 0 | Retrieve one or more Wrike dependencies by their IDs (up to 100) |
| `get-folder-bookings` | `wrike.getFolderBookings()` | `--folderId` | 0 | Query bookings for a specific folder in Wrike |
| `get-folders` | `wrike.getFolders()` | — | 14 | Retrieves folders and/or projects from Wrike, with filters; when using `nextPageToken`, all other filter parameters must match the initial request |
| `get-folders-approvals` | `wrike.getFoldersApprovals()` | `--folder-id` | 0 | Retrieve all approvals from a specific Wrike folder |
| `get-folders-attachments` | `wrike.getFoldersAttachments()` | `--folderId` | 1 | Retrieve all attachments from a specific Wrike folder |
| `get-folders-by-ids` | `wrike.getFoldersByIds()` | `--folder-ids` | 0 | Retrieve multiple Wrike folders by their IDs |
| `get-folders-comments` | `wrike.getFoldersComments()` | `--folderId` | 1 | Retrieve comments from a specific Wrike folder |
| `get-folders-history` | `wrike.getFoldersHistory()` | `--folderIds` | 0 | Access field modification history for Wrike folders |
| `get-folders-hourly` | `wrike.getFoldersHourly()` | `--folderId` | 0 | Retrieve hourly budget rates for a specific Wrike folder |
| `get-folders-rollups` | `wrike.getFoldersRollups()` | `--folderId` | 3 | Query rollup settings for items in a folder |
| `get-folders-tasks` | `wrike.getFoldersTasks()` | `--folder-id` | 6 | Query tasks within a specific folder |
| `get-folders-timelog-lock-periods` | `wrike.getFoldersTimelogLockPeriods()` | `--folderId` | 0 | Query timelog lock periods for a specific folder |
| `get-folders-timelogs` | `wrike.getFoldersTimelogs()` | `--folderId` | 6 | Retrieve all timelog records for a specific folder |
| `get-ids` | `wrike.getIds()` | `--ids` `--type` | 0 | Convert legacy Wrike API v2 IDs to current v4 format |
| `get-information-about-specific-contact` ·common | `wrike.getInformationAboutSpecificContact()` | `--contactId` | 1 | Retrieves detailed information for a specific Wrike contact using their unique `contactId`, optionally including `metadata` and `customFields` if specified in the `fields` parameter |
| `get-job-roles` | `wrike.getJobRoles()` | `--jobrole-ids` | 0 | Retrieve details for one or more Wrike job roles by job role IDs |
| `get-placeholder-hourly-rates` | `wrike.getPlaceholderHourlyRates()` | `--placeholderIds` | 0 | Retrieve hourly budget rates for one or more Wrike placeholders |
| `get-placeholders` | `wrike.getPlaceholders()` | `--placeholderIds` | 0 | Retrieve details for one or more Wrike placeholders by their IDs |
| `get-space` ·common | `wrike.getSpace()` | `--spaceId` | 1 | Retrieve details for a single Wrike space by spaceId |
| `get-space-custom-item-types` | `wrike.getSpaceCustomItemTypes()` | `--spaceId` | 0 | Retrieve all custom item types scoped to a specific Wrike space |
| `get-space-folders` | `wrike.getSpaceFolders()` | `--spaceId` | 6 | Retrieve the folder tree for a specific Wrike space |
| `get-space-timelog-lock-periods` | `wrike.getSpaceTimelogLockPeriods()` | `--spaceId` | 0 | Query timelog lock periods for a specific space |
| `get-spaces-customfields` | `wrike.getSpacesCustomfields()` | `--spaceId` | 0 | Retrieve all custom fields defined for a specific Wrike space |
| `get-spaces-tasks` | `wrike.getSpacesTasks()` | `--spaceId` | 8 | Query tasks within a specific Wrike space |
| `get-spaces-workflows` | `wrike.getSpacesWorkflows()` | `--spaceId` | 0 | Query workflows for a specific Wrike space |
| `get-specific-user` | `wrike.getSpecificUser()` | `--userId` | 0 | Retrieves detailed information about a specific user in Wrike using their unique user ID |
| `get-task-by-id` | `wrike.getTaskById()` | `--taskId` | 1 | Retrieves read-only detailed information for a specific Wrike task by its unique ID, optionally allowing specification of fields to include in the response |
| `get-task-dependencies` | `wrike.getTaskDependencies()` | `--taskId` | 0 | Retrieves all dependency relationships for a specific task |
| `get-task-timelogs` | `wrike.getTaskTimelogs()` | `--taskId` | 6 | Retrieves all timelog records for a specific task |
| `get-tasks-approvals` | `wrike.getTasksApprovals()` | `--taskId` | 0 | Retrieves all approval records for a specific task |
| `get-tasks-attachments` | `wrike.getTasksAttachments()` | `--taskId` | 1 | Retrieve all attachments from a specific Wrike task |
| `get-tasks-comments` | `wrike.getTasksComments()` | `--taskId` | 1 | Retrieve all comments from a specific Wrike task |
| `get-tasks-history` | `wrike.getTasksHistory()` | `--taskIds` | 0 | Query task field modification history for up to 100 tasks |
| `get-tasks-rollups` ·common | `wrike.getTasksRollups()` | `--taskId` | 0 | Query rollup settings for a specific task |
| `get-tasks-timelog-lock-periods` | `wrike.getTasksTimelogLockPeriods()` | `--taskId` | 0 | Query timelog lock periods for a specific task |
| `get-timelog-categories` | `wrike.getTimelogCategories()` | — | 0 | Query the list of timelog categories in Wrike |
| `get-timelogs` | `wrike.getTimelogs()` | — | 6 | Retrieves timelog records from Wrike with optional filters for dates, users, and task scope |
| `get-timelogs-by-ids` | `wrike.getTimelogsByIds()` | `--timelogId` | 1 | Retrieves detailed information for one or more Wrike timelogs by their unique IDs (up to 100), optionally including export and lock status |
| `get-timesheet-submission-rules` | `wrike.getTimesheetSubmissionRules()` | — | 0 | Retrieve global timesheet submission rules across all work schedules |
| `get-timesheets` | `wrike.getTimesheets()` | — | 0 | Query timesheets from Wrike |
| `get-version` | `wrike.getVersion()` | — | 0 | Retrieve current Wrike API version information |
| `get-webhook-by-id` | `wrike.getWebhookById()` | `--webhook-id` | 0 | Retrieve details for a specific webhook by webhook_id |
| `get-workschedules-timesheet` | `wrike.getWorkschedulesTimesheet()` | `--workschedule-id` | 0 | Retrieve timesheet submission rules for a specific work schedule |
| `launch-folder-blueprint-async` | `wrike.launchFolderBlueprintAsync()` | `--folder-blueprint-id` `--parent` `--title` | 9 | Asynchronously launches a new project or folder structure in Wrike from a specified Folder Blueprint |
| `launch-task-blueprint-async` | `wrike.launchTaskBlueprintAsync()` | `--task-blueprint-id` `--title` | 11 | Asynchronously launches a Wrike Task Blueprint to create tasks/projects, requiring either `super_task_id` (parent task) or `parent_id` (parent folder/project) for placement |
| `list-attachments` | `wrike.listAttachments()` | — | 3 | Retrieve all attachments from the Wrike account |
| `list-folder-blueprints` | `wrike.listFolderBlueprints()` | — | 0 | Retrieves all account-level Folder Blueprints, which are templates for standardizing folder/project creation with predefined structures, custom fields, and workflows |
| `list-placeholders` | `wrike.listPlaceholders()` | — | 0 | Retrieves all placeholders accessible to the authenticated user; placeholders are templates used in Wrike for creating standardized tasks or projects |
| `list-space-folder-blueprints` | `wrike.listSpaceFolderBlueprints()` | `--space-id` | 0 | Lists all folder blueprints (templates for new folders/projects) within a specified Wrike space, requiring a valid and accessible space ID |
| `list-space-task-blueprints` | `wrike.listSpaceTaskBlueprints()` | `--space-id` | 3 | Lists task blueprints (templates for creating tasks with consistent structures) available in a specific, accessible Wrike space |
| `list-spaces` ·common | `wrike.listSpaces()` | — | 1 | List spaces the authorized user can access |
| `list-subfolders-by-folder-id` | `wrike.listSubfoldersByFolderId()` | `--folderId` | 13 | Lists subfolders (metadata only, not their contents) for an existing Wrike folder specified by `folderId`, supporting recursive descent, filtering, and pagination |
| `list-task-blueprints` | `wrike.listTaskBlueprints()` | — | 3 | Retrieves a list of defined Task Blueprints (predefined task templates) from the Wrike account, supporting pagination |
| `modify-account` ·common | `wrike.modifyAccount()` | — | 1 | Updates or adds custom key-value metadata to the Wrike account, useful for integrations, storing app-specific data, or mapping external system identifiers |
| `modify-folder` ·common | `wrike.modifyFolder()` | `--folderId` | 16 | Modifies an existing Wrike folder: updates title, description, parents (not root/recycle bin), sharing, metadata, custom fields/columns; restores, converts to project, or manages access roles |
| `modify-group` | `wrike.modifyGroup()` | `--groupId` | 9 | Updates an existing Wrike user group's attributes like title, members, parent, avatar, or metadata, using its `groupId` and specifying only the fields to change |
| `modify-task` ·common | `wrike.modifyTask()` | `--taskId` | 28 | Modifies an existing Wrike task by its ID, allowing updates to attributes such as title, status, dates, assignees, and custom fields; `priorityBefore` and `priorityAfter` are mutually exclusive, and… |
| `query-customfields` | `wrike.queryCustomfields()` | `--customFieldId` | 0 | Retrieves a Wrike custom field's detailed information (e.g., type, possible values for dropdowns), properties, and metadata; the `customFieldId` must correspond to an existing custom field |
| `query-invitations` | `wrike.queryInvitations()` | — | 0 | Retrieves all active invitations in Wrike, useful for viewing and auditing pending invitations or managing user onboarding |
| `query-job-roles` | `wrike.queryJobRoles()` | — | 0 | Retrieve all available job roles in the Wrike account |
| `query-specific-group` | `wrike.querySpecificGroup()` | `--groupId` | 1 | Retrieves detailed information for a specific Wrike group using its `groupId`, optionally including 'metadata' |
| `query-workflows` ·common | `wrike.queryWorkflows()` | — | 0 | Fetches a list of all workflows with their detailed information from the Wrike account; this is a read-only action and does not support pagination or filtering through its parameters |
| `retrieve-list-of-groups` | `wrike.retrieveListOfGroups()` | — | 4 | Retrieves a list of user groups from the Wrike account, supporting metadata filtering, pagination, and inclusion of specific fields; this is a read-only operation |
| `search-ediscovery` ·common | `wrike.searchEdiscovery()` | — | 2 | Perform eDiscovery search across Wrike items (folders, projects, tasks) |
| `update-approvals` | `wrike.updateApprovals()` | `--approvalId` | 2 | Updates an existing Wrike approval by its ID, allowing modifications to the title, description, and due date |
| `update-asset` ·common | `wrike.updateAsset()` | `--assetId` `--name` | 0 | Update a Wrike asset/equipment by ID |
| `update-attachment` | `wrike.updateAttachment()` | `--attachmentId` `--file-to-upload` | 1 | Update a Wrike attachment by uploading new file content |
| `update-bookings` ·common | `wrike.updateBookings()` | `--bookingDates` `--bookingId` | 0 | Updates a Wrike booking's date range by ID |
| `update-comment` | `wrike.updateComment()` | `--commentId` `--text` | 0 | Update an existing Wrike comment |
| `update-custom-field-by-id` | `wrike.updateCustomFieldById()` | `--customFieldId` | 7 | Updates properties of an existing Wrike custom field by its ID, such as its title, type, scope, or sharing settings |
| `update-dependency` ·common | `wrike.updateDependency()` | `--dependencyId` | 3 | Modify an existing Wrike dependency relationship between tasks |
| `update-folders-rollups` ·common | `wrike.updateFoldersRollups()` | `--folderId` `--rollups` | 0 | Update rollup settings for a folder |
| `update-invitation` | `wrike.updateInvitation()` | `--invitationId` | 4 | Updates a pending Wrike invitation (`invitationId`) to resend it or change user's role/type (use EITHER `userTypeId` OR `role`/`external`) |
| `update-job-role` | `wrike.updateJobRole()` | `--jobroleId` | 2 | Updates an existing Wrike job role by its ID, allowing modifications to the title and short title |
| `update-metadata-on-specific-contact` | `wrike.updateMetadataOnSpecificContact()` | `--contactId` | 4 | Updates metadata, job role, or custom fields for an existing Wrike contact specified by `contactId`; if `jobRoleId` is provided, it must be a valid ID |
| `update-specific-user` | `wrike.updateSpecificUser()` | `--userId` | 5 | Updates specified profile attributes (e.g., account ID, role, external status) for an existing Wrike user; unspecified fields remain unchanged |
| `update-tasks-rollups` | `wrike.updateTasksRollups()` | `--rollups` `--taskId` | 0 | Updates rollup settings for a task |
| `update-timelogs` | `wrike.updateTimelogs()` | `--timelogId` | 5 | Modify an existing timelog entry in Wrike |
| `update-timesheet-row` | `wrike.updateTimesheetRow()` | `--timesheet-rowId` | 1 | Updates a Wrike timesheet row by its ID, allowing modification of the timelog category |
| `update-timesheets` | `wrike.updateTimesheets()` | `--approvalStatus` `--timesheetId` | 0 | Update a timesheet's approval status in Wrike |
| `update-webhook-state` ·common | `wrike.updateWebhookState()` | `--status` `--webhookId` | 0 | Update the state of a Wrike webhook |
| `update-workflow` ·common | `wrike.updateWorkflow()` | `--workflowId` | 2 | Modify an existing Wrike workflow |
| `update-workschedule-timesheet-rules` ·common | `wrike.updateWorkscheduleTimesheetRules()` | `--workschedule-id` | 4 | Update timesheet submission rules for a work schedule |

## Docs

- [run CLI](https://docs.boxd.sh/cli/run): Call connected integrations from the shell, connect new ones, and run automations.
- [Quickstart](https://docs.boxd.sh/guides/integrations/quickstart): Connect an integration, call it from the shell, and turn a script into an automation.
- [Connections](https://docs.boxd.sh/guides/integrations/connections): Connect an account once, for yourself or for your whole organization.
- [Scripts](https://docs.boxd.sh/guides/automations/scripts): Typed integrations, triggers, schedules and state in a .run.ts file.
- [Jobs](https://docs.boxd.sh/guides/automations/jobs): How a script becomes a background job: states, retries, sleep and wake.
- [Beyond the catalog](https://docs.boxd.sh/guides/automations/beyond-the-catalog): Reach your own APIs, databases and cloud accounts from a script.
