Magidoc

Mutation
Object

Fields

#

bulkUpdateActionsType

requestActionUpdate

recurringRequestActionUpdate

Non-null

bulkUpdateActionsPriorityLevelId

Update priority level for multiple actions at once.

Always call getPriorityLevels before calling this function to get the priority level IDs and ensure that priorityLevelId exists.

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • priorityLevelId: The ID of the priority level to set (null to unset)
  • shouldUpdateRecurring: Optional flag to update recurring instances

Returns: Boolean indicating success

copyAction

Copy/duplicate an action including its subactions, attachments, approval rounds, and dependencies. Returns the newly created action.

bulkUpdateActionsTitle

Update titles for multiple actions at once

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • title: The new title to set
  • shouldUpdateRecurring: Optional flag to update recurring instances
  • allowEmpty: Optional flag to allow empty titles

Returns: Boolean indicating success

bulkUpdateActionsTitles

Update different titles for multiple actions at once

Access: Requires user access to all actions

Parameters:

  • actionTitleUpdates: Array of {actionId, title} pairs to update
  • workspaceId: The ID of the workspace

Behavior:

  • Empty titles are not allowed (will throw error)
  • Only updates the specific actions in the batch (does not update recurring series)

Returns: Boolean indicating success

bulkUpdateActionDescription

Update descriptions for multiple actions at once

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • description: The new description to set in HTML format. Must be a valid HTML string. Use the corresponding markdown (
      for lists, for code blocks, etc). Code blocks should be contained in a single tag. Ignored if 'markdownDescription' is also provided.
    • markdownDescription: The new description to set in Markdown format. Converted to HTML before storage. Use this instead of 'description' when the content is authored in Markdown.

    Returns: Boolean indicating success

updateActionProject

Update the project for an action

Access: Requires user access to the action and target project

Parameters:

  • actionId: The ID of the action to update
  • projectId: The ID of the new project (null to unset)
  • rank: Optional rank for the action in the new project

Returns: The updated action

bulkUpdateActionStatus

Update status for multiple actions at once.

ALWAYS look for existing statuses in the project. Only add statuses if they're definitely different from the existing ones. Otherwise, don't add them and use the existing ones that have the same meaning.

Examples: Project has statuses: "To Do", "In Progress", "Review feedback", "Done"

    
  
    
  
    
  

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • status: The new status to set
  • rankInput: Optional rank information for repositioning
  • shouldUpdateChildren: Optional flag to update child actions

Returns: Boolean indicating success

updateActionAssignees

Update assignees for an action

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to update
  • assignees: Optional array of user IDs to assign ['none'] to unassign
  • placeholderAssignees: Optional array of placeholder IDs to assign
  • teamAssignee: Optional team ID to assign
  • rankInput: Optional rank information for repositioning
  • shouldUpdateChildren: Optional flag to update child actions (default: false)
  • externalAssigneeName: Optional name for external assignee
  • isAutomated: Optional flag to indicate automated update

Returns: The updated action

updateActionLabels

Update labels for an action

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to update
  • labels: Optional array of label IDs to set, ['none'] to remove all
  • rankInput: Optional rank information for repositioning
  • shouldUpdateChildren: Optional flag to update child actions
  • isAutomated: Optional flag to indicate automated update

Returns: The updated action

updateActionsMilestone

bulkUpdateActionDates

[Action !]!
Non-null

Update dates for multiple actions at once

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • deadline: The new deadline to set (optional)
  • scheduledDate: The new scheduled date to set (optional)

updateActionGithubBranchNames

Update the GitHub branch names associated with an action

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to update
  • githubBranchNames: An array of branch names in the format "Repo:branch-name"

Returns: The updated action

appendHighwayGateResult

Append a highway gate result to an action's highway log. Used by Highway autonomous pipeline agents after each gate completes.

Access: Requires user access to the action. Errors: Throws if user is not logged in or lacks action access.

sendHighwayFollowupCommand

Send a follow-up command to a Highway Cloud Agent run associated with an action. Validates the agentRunId belongs to the action's highway data before proxying.

Access: Requires user access to the action. Errors: Throws if agentRunId is not found in the action's highway log.

stopHighwayAgent

Stop a Highway Cloud Agent run associated with an action. Validates the agentRunId belongs to the action's highway data before proxying. Access: Requires user access to the action. Errors: Throws if agentRunId is not found in the action's highway log.

updateActionGitlabBranchNames

Update the GitLab branch names associated with an action

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to update
  • gitlabBranchNames: An array of branch names in the format "Repo:branch-name"

Returns: The updated action

insertAction

Used to create new actions and subactions

Access: Requires user access as well as workspace ID and project ID access.

Errors: Throws error if user does not have access to workspace or project.

bulkInsertActions

[ID !]

Batch insert actions and return the inserted action ids Access: Requires user access to the workspace and projects. Won't add actions to projects that user doesn't have access to. If the user uses phrases like "on my list" or otherwise implies the actions are for themselves, assume the user is the assignee by default. Errors: Throws error if user does not have access to workspace.

setTimeTrackingItemToAction

Add or edit time tracking item for action

Access: Requires user access to the underlying action and related project

Errors: Throws error if user does not have access to action or project.

setActionEstimatedTime

Used to create new action and subaction estimates

Access: Requires user access to the underlying action

Errors: Throws error if user does not have access to action.

bulkUpdateActionLabels

Update labels for the provided action IDs.

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • labelIds: Array of label IDs to add or remove
  • operation: The operation to perform (ADD, REMOVE)
  • shouldUpdateChildren: Boolean to update children
  • shouldUpdateRecurring: Boolean to update recurring

Returns: Boolean indicating success

bulkUpdateActionsAssignees

Update actions assignees in bulk

IMPORTANT:

  • Set operation will override existing assignees and placeholder assignees.
  • Add/pull operation will add/pull assignees and placeholder assignees to existing ones.

The set and add/pull parameters are mutually exclusive. If you want to set the assignees, you should not pass any of the add/pull parameters. If you want to add or pull assignees, you should not pass the set parameter.

Access: Requires user access to all actions

Parameters:

  • actionIds: Array of action IDs to update
  • workspaceId: The ID of the workspace
  • assigneesToSet: Array of user IDs to assign
  • assigneesToAdd: Array of user IDs to add
  • assigneesToPull: Array of user IDs to remove
  • teamAssignee: The ID of the team to assign
  • placeholderAssigneesToSet: Array of placeholder IDs to assign
  • placeholderAssigneesToAdd: Array of placeholder IDs to add
  • placeholderAssigneesToPull: Array of placeholder IDs to remove
  • privacy: The privacy of the action
  • shouldUpdateChildren: Boolean to update children
  • shouldUpdateRecurring: Boolean to update recurring
  • updatePlaceholderAssignees: Boolean to update placeholder assignees
  • currentAssigneeId: The ID of the current assignee

Returns: Boolean indicating success

setStoryPoints

Set the agile story point value for an action

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to update
  • storyPoints: The new story point value

updateActionSnoozeDate

Update the snooze date for an action.

Snoozing an action temporarily hides it from the user's task list until the specified date. Pass null for snoozeDate to unsnooze (clear the snooze).

Access: Requires user access to the action

Parameters:

  • actionId: The ID of the action to snooze
  • snoozeDate: The date to snooze until (pass null to unsnooze)

Returns: The updated Action object with the new snoozeDate

bulkUpdateActionCustomFields

[Action !]!
Non-null

Updates a custom field value for multiple actions at once.

This mutation allows you to set or clear the value of a custom field across multiple actions. You must first call getCustomFields to retrieve available custom fields and their types for the workspace.

Important: Use only ONE value parameter based on the custom field type:

Custom Field Type
Parameter to Use
Value Format
text
value
Any string value
number
numberValue
Any numeric value (float)
date
dateValue
ISO 8601 string; time is preserved (e.g., "2024-01-15T14:30:00.000Z" or midnight-only)
select
selectedValues
Array of dropdown option strings (e.g., ["Option 1", "Option 2"])
user
selectedValues
Array of user IDs (e.g., ["userId123", "userId456"])
project
selectedValues
Array of project IDs (e.g., ["projectId123"])

To clear a custom field value: Pass null or an empty value for the corresponding parameter.

Access: Requires user access to all specified actions

Returns: Array of updated Action objects with the new custom field values

Errors:

  • Throws error if user doesn't have access to any of the actions
  • Throws error if custom field doesn't exist
  • Throws error if value type doesn't match the custom field type

setActionColor

Set the color of an action to be used in the timeline view.

updateActionExternalAccess

bulkUpdateActionsExternalAccess

Bulk update restrictExternalAccess for actions (and their subactions)

bulkArchiveActions

[Action !]!
Non-null

removeActionLink

Non-null

insertActionLink

Non-null

updateActionLink

Non-null

updateActionCustomField

Updates a custom field value for a specific action.

This mutation allows you to set or update the value of a custom field that has been assigned to an action. The mutation supports all custom field types including text, number, date, select (single/multi), user, and project fields.

Access: Requires user access to the action

Returns: The updated Action object with the new custom field value

Errors:

  • Throws error if user doesn't have access to the action
  • Throws error if custom field doesn't exist
  • Throws error if custom field is not enabled for the action's project
  • Throws error if value type doesn't match the custom field type

deleteCustomField

Permanently deletes a custom field from the workspace.

This mutation removes a custom field definition and optionally removes all existing values of this field from actions and projects. This is a destructive operation that cannot be undone.

Access: Requires workspace admin access

Returns: The deleted CustomField object (marked as deleted)

Errors:

  • Throws error if user doesn't have workspace admin access
  • Throws error if custom field doesn't exist
  • Throws error if custom field is already deleted

bulkUpsertCustomFields

Creates or updates multiple custom fields at once.

It can be used to upsert custom fields for a project or an action.

Parameters:

  • workspaceId: Required. The ID of the workspace to upsert custom fields for.
  • customFields: Required. An array of custom fields to upsert.

Examples:

  1. Create a custom field (text type) for a project:

{ "workspaceId": "TCB9NnnbcC4BEc2rF", "customFields": [ { "allowMultiSelect": false, "_id": "d6JfiYb34mMb5zNqL", "label": "Test Project Field", "dropdownValues": [], "formula": null, "type": "text", "itemType": "project", "onlyAdminEditable": false, "jiraCustomFieldId": "", "groupIds": [] } ] }

  1. Create a custom field (number type) for an action:

{ "workspaceId": "TCB9NnnbcC4BEc2rF", "customFields": [ { "allowMultiSelect": false, "_id": "y7RCztztQ4D36GKk5", "label": "asasas", "dropdownValues": [], "formula": "Test Action Field", "type": "number", "itemType": "action", "onlyAdminEditable": false, "jiraCustomFieldId": "", "groupIds": [] } ] }

When creating custom fields the _id field is generated server-side automatically, so you don't need to provide it. When updating custom fields you must provide old _id and new field data (old field data with new values).

insertGroup

Creates a new group.

It's very useful when there are no group that has the needed members.

Access: Requires user access to the workspace.

Parameters:

  • workspace: ID of the workspace
  • members: Array of user IDs
  • teams: Array of team IDs
  • name: Name of the group
  • oneToOne: @deprecated do not use this parameter, use 'type' instead
  • type: 'dm' (direct message) or 'group' (group chat) or 'thread'
  • projectId: ID of the project

Examples:

  • Creating a direct message: insertGroup( workspace members: ['user-id-1' (you), 'user-id-2' (other user)] type: 'dm' )
  • Creating a group chat: insertGroup( workspace members: ['user-id-1' (you), 'user-id-2' (other user), 'user-id-3' (other user)] type: 'group' )

insertMessage

Non-null

Creates a new message in a container (group, action, note, goal, or post).

Access: Requires user access to the container (or workspace if you are inserting using participants)

Parameters:

  • _id: Random ID
  • workspaceId: ID of the workspace (required for inserting in group container type using participants)
  • containerId: ID of the container (id of group, action, note, goal, or post)
  • containerType: Type of the container (group, action, note, goal, or post). You should always specify this parameter to avoid errors and confusion.
  • body: body of the message, including mentions using <@userId> where userId is the actual userId
  • mentions: Array of mentioned user IDs
  • attachments: Array of file attachments
  • userMentionsByGroup: Array of mentioned group IDs
  • userMentionsByTeam: Array of mentioned team IDs

Examples:

  • Creating a message in a chat if you know group id: insertMessage( _id containerId - Group ID containerType - 'group' body mentions attachments body = "Hello <@sMoHY5KwWt44Xm8Sw>, how are you?" )
  • Creating a message in a DM chat if you know only participants and don't know containerId: insertMessage( _id workspaceId - required for inserting using participants participants - Array of user ids containerType - 'group' mentions attachments body = "Hello <@sMoHY5KwWt44Xm8Sw>, how are you?" )
  • Creating a comment in an action: insertMessage( _id containerId - Action ID containerType - 'action'. mentions = ["sMoHY5KwWt44Xm8Sw"] attachments body = "Hello <@sMoHY5KwWt44Xm8Sw>, how are you?" )

Returns the created message with all computed fields.

deleteMessage

Deletes a message by ID (soft-delete). Only the message creator can delete it — attempting to delete another user's message returns an access-denied error.

updateUserProfile

Update a workspace user's profile, including financial rates used in Resourcing.

Use this to set or change a user's bill rate, cost rate, or other profile fields within a specific workspace.

IMPORTANT:

  • Editing another user's profile requires workspace admin permissions.
  • Only use billRateFloat and costRateFloat (not the deprecated integer fields).
  • The userId parameter is required — always specify the target user.

Common use cases: • Setting bill and cost rates for users in Resourcing workflows • Updating user names, contact info, or work dates • Configuring utilization targets for resource planning • Assigning managers to a user

Parameters: • workspaceId: Required. The workspace containing the user • userId: Required. The ID of the user to update • billRateFloat: Optional. Hourly billing rate as a decimal (e.g. 150.00) • costRateFloat: Optional. Hourly cost rate as a decimal (e.g. 75.50) • firstName: Optional. User's first name • lastName: Optional. User's last name • email: Optional. User's email address • utilizationTarget: Optional. Target utilization percentage (0-100) • managers: Optional. Array of manager user IDs • firstDayOfWork: Optional. User's start date • lastDayOfWork: Optional. User's end date

Returns: The updated User object

updateProjectOwner

addProjectOwner

Add a user to the project owner list. This is additive — existing owners are kept. To replace owners, always call addProjectOwner for the new owner(s) first, then removeProjectOwner for each previous owner — this ensures the project never has zero owners at any point.

removeProjectOwner

Remove a user from the project owner list. A project must always have at least one owner — this will fail if the user is the only remaining owner. When replacing owners, always add the new owner first via addProjectOwner before calling this.

addProjectBudget

editProjectBudget

removeProjectBudget

updateProjectDescription

updateMembersPermissions

Add or remove members to/from a project.

Common use cases:

  • Add a new member to a project
  • Remove a member from a project
  • Update the permission of a member
  • Update the sharing type of a member
  • Update the automated status of a member

Parameters:

  • projectId: Required. The ID of the project to update members permissions for
  • memberIds: Optional. The IDs of the users to add as members
  • teamIds: Optional. The IDs of the teams to add as members
  • permission: Required. The permission to set for the members.
  • sharingType: Required. The sharing type to set for the members.
  • isAutomated: Optional. Whether the update is automated. Default is false.

Examples:

  1. Add a new member to a project
  • projectId: 123
  • memberIds: [456]
  • permission: 'FULL_ACCESS'
  • sharingType: 'custom'
  • isAutomated: false
  1. Remove a member from a project
  • projectId: 123
  • memberIds: [456]
  • permission: 'REMOVE'
  • sharingType: 'custom'
  • isAutomated: false

updateMembersPermissionsV2Batch

Non-null

Batch update members permissions for multiple projects. Processes each project sequentially and continues even if individual updates fail (errors are logged).

Access: Requires access to each project

Returns: Array of successfully updated projects

restoreDeletedProject

Used to restore deleted projects in the trash bin

Access: Requires project access

Errors: Throws error if user doesn't have access to the project

updateProjectsCustomFields

Non-null

Enables custom fields for specific projects.

This should be used to enable only project itemType custom fields.

Parameters:

  • projectIds: Required. The IDs of the projects to add the custom fields to
  • workspaceId: Required. The ID of the workspace to add the custom fields to
  • fields: Required. The custom fields to add to the projects

disableProjectsCustomFields

Non-null

Disables custom fields for specific projects.

This should be used to disable only project itemType custom fields.

Parameters:

  • customFieldIds: Required. The IDs of the custom fields to disable
  • projectIds: Required. The IDs of the projects to disable the custom fields for
  • workspaceId: Required. The ID of the workspace to disable the custom fields for

addActionCustomFields

Non-null

Enables custom fields for actions in specific projects.

This should be used to enable only action itemType custom fields.

Parameters:

  • ids: Required. The IDs of the custom fields to enable
  • projectIds: Required. The IDs of the projects to enable the custom fields for
  • workspaceId: Required. The ID of the workspace to enable the custom fields for

disableActionCustomFields

Non-null

Disables custom fields for actions in specific projects.

This should be used to disable only action itemType custom fields.

Parameters:

  • customFieldIds: Required. The IDs of the custom fields to disable
  • projectIds: Required. The IDs of the projects to disable the custom fields for
  • workspaceId: Required. The ID of the workspace to disable the custom fields for
  • removeFromActions: Optional. Whether to remove the custom fields from the actions

updateProjectOtherCosts

createProject

Creates a new project in a workspace with comprehensive configuration options.

This is the primary mutation for project creation, supporting both basic project setup and advanced features like copying from existing projects, custom fields, etc.

Access: Requires user access to the workspace

Returns: The newly created Project object with all computed fields

Errors:

  • Throws error if user doesn't have access to the workspace
  • Throws error if copyFrom project doesn't exist or user lacks access
  • Throws error if endDate is before startDate
  • Throws error if members don't have workspace access

updateProjectArchived

Update project archived status

Access: Requires user access to the project

Parameters:

  • projectId: The ID of the project to update
  • archived: The new archived state to set
  • includeChildren: Whether to include children in the update

Returns: The updated project

applyProjectTemplate

Apply a project template to an existing project.

This mutation copies settings, structure, and configuration from a template project to a target project based on the importWith flags.

Access: Requires user access to both template and target projects

Returns: The updated target project

convertActionToProject

Convert an action to a project.

This mutation creates a new project from an action, and clones subactions as actions in the new project.

Access: Requires user access to the action and workspace

Parameters:

  • actionId: The ID of the action to convert
  • projectName: Optional custom name for the new project (defaults to action title)
  • parentProjectId: Optional parent project ID to nest the new project under
  • deleteOriginalAction: Whether to delete the original action after conversion (default: false)
  • applyTemplateId: Optional project template ID to apply to the new project
  • sharingType: Project sharing type (me, custom, everyone) - defaults to 'me'
  • members: User IDs to add as project members (defaults to current user)
  • teams: Team IDs to give access to the project

Returns: The newly created Project object

addStatusToProjectView

This mutation is used to add a status to a specific project. ALWAYS run the setCustomStatusColor mutation (setting status color) to set the color of the status afterwards.

setCustomStatusColor

This mutation is used to set the color of a custom status. ALWAYS run it after the addStatusToProjectView mutation (adding new status) to set the color of the new status. Pick the color that would logically fit the status name (e.g. "In Progress" -> "blue", "Done" -> "green", etc.).

Also could be used separately to update or remove the color of the status.

insertRecurringAction

Create a recurring action. You must call insertActions first to create the action.

Parameters:

  • actionId: ID of the action to make recurring (must exist)
  • type: Recurrence type (daily, weekly, monthly, annually)
  • startDate: Start date in ISO 8601 format
  • endDate: End date in ISO 8601 format
  • interval: Interval of recurrence (min: 1, max: 12)
  • endingType: How recurrence ends (never, after, date)
  • endingAfter: Number of occurrences before ending (min: 1, max: 52)
  • days: Days of the week (Mon, Tue, Wed, Thu, Fri, Sat, Sun)
  • showOnDueDate: Show the action on its due date (default: false)

Access: Requires user access to the action.

Errors: Throws error if action not found or user lacks permission.

unsetRecurringActions

Make actions non-recurring by removing their recurring linkage. Stops future recurring instances from being generated while preserving the action.

Parameters:

  • actionIds: Array of action IDs to make non-recurring
  • workspaceId: The ID of the workspace

Access: Requires user access to the actions.

Errors: Throws error if user lacks edit permission on the actions.

createReminder

Non-null

Create a new reminder

Examples:

Create a one time reminder for 5 minutes from now Now: 2025-09-17T20:22:00.000Z { "text": "Remind me to check in on Beta Deploy", "userIds": ["some_user_id"], "recurrenceDefinition": { "type":"daily", "interval":1, "days":["Wed","Thu","Fri","Sat","Sun","Mon","Tue"], "startDate":"2025-09-17T20:27:00.000Z", "endingType":"after", "endingAfter":1 }, "workspaceId": "", originType: "buzzThread", originId: "some_buzz_thread_id" }

Create a recurring reminder for every 2 days with no end Now: 2025-09-17T20:22:00.000Z { "text": "Remind me to check in on Beta Deploy", "userIds": ["some_user_id"], "recurrenceDefinition": { "type":"daily", "interval":2, "days":["Wed","Thu","Fri","Sat","Sun","Mon","Tue"], "startDate":"2025-09-17T20:27:00.000Z", "endingType":"never", }, "workspaceId": "", originType: "buzzThread", originId: "some_buzz_thread_id" }

deleteReminder

Non-null

Soft-delete a reminder so it no longer fires (sets deleted: true). Pass reminderId from getReminders or getReminder.

For vague requests ("cancel that reminder", "kill the daily one"): call getReminders first. If several reminders could match, list the candidates in chat and ask the user which reminderId to delete before calling this mutation. Confirm success after deletion.

submitTimesheets

Non-null

Used for submit timesheets button timesheets in "timesheet" tab in "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: timesheets array is empty, user is not logged in, user doesn't have access to workspace, user trying to submit timesheets beyond 4 weeks period from start of current week, userId is different from current userId and user is not admin for current workspace, if one of timesheets is locked, approved or waiting for approval

deleteTimesheet

Used for deleting timesheets in "timesheet" tab in "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: not deleted timesheet item doesn't exist, user is not timesheet submitter

recoverTimesheet

Used for recovering timesheets in "timesheet" tab in "Timesheets" app. Right after removing should appear toast with "recover" button

Access: It requires user access.

Errors: Returns specific expected errors if: deleted timesheet item doesn't exist, user is not timesheet submitter and returns null if user doesn't have access to workspace

bulkUpdateTimesheetStatus

Non-null

Used for approve/request changes of timesheets in "My approvals" tab "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: returns [] if user not logged in or doesn't have access to workspace, related timesheet docs with status different to Unsubmitted not found, user is not timesheet approval

setTimesheetLock

Used for locking/unlocking editing of timesheets in "Manage" tab "Timesheets" app.

Access: Requires workspace admin access

Errors: Returns specific expected errors if: error if user is not workspace admin, returns null if is not logged in or not deleted not history timesheet with status different to Unsubmitted not found

addCreatorComment

Used for creating creator comments in comment modal in "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: not deleted and not marked as history item timesheet doesn't exist, user trying to create comment for timesheet that he didn't create, $text variable is empty string after trim spaces

updateTimesheetComment

Used for updating existing comments in comment modal in "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: not deleted and not marked as history item timesheet doesn't exist, user trying to update comment that he didn't create, $text variable is empty string after trim spaces

deleteTimesheetComment

Used for removing existing comments in comment modal in "Timesheets" app.

Access: It requires user access.

Errors: Returns specific expected errors if: not deleted and not marked as history item timesheet doesn't exist, user trying to delete comment that he didn't create

updateTimeEntry

createTimeEntries

Non-null

Create or update time entries in bulk.

Timesheets are automatically created per ISO week for each unique (user, container, category) combination. If a timesheet already exists for that week it is reused and its status is updated to the requested value.

Entries are upserted: calling this mutation again with the same user / container / category / date updates the existing entry instead of creating a duplicate.

Authentication: Supports both JWT and API-key (api_key or api-key header).

Access: The caller must have access to the target workspace.

updateTimeEntryComment

insertTimeCategory

Non-null

updateTimeCategory

deleteTimeCategory

Non-null

createTimer

Non-null

Create a new timer, optionally associated with an action

Access: Requires user to be logged in and have access to the workspace. If actionId is provided, the action must belong to the same workspace.

updateTimerStatus

Non-null

Update timer status (start, pause, or complete)

  • start: Sets status to running and adds a new session entry
  • pause: Sets status to paused and closes current session entry
  • complete: Sets status to completed and closes current session entry

Access: Requires user to be the owner of the timer

updateTimer

Non-null

Update a timer's action association

Access: Requires user to be the owner of the timer. If actionId is provided, requires access to the new action's workspace.

deleteTimer

Non-null

Delete a timer (soft delete)

Access: Requires user to be the owner of the timer

insertApprovalRound

Create a new approval round with an initial empty stage for an action. The created stage will have no approvers initially - you'll need to use the deprecated changeApprovalStageApprover mutation to add approvers.

requestApprovals

Request approvals from all approvers in an approval round. Notifies approvers and marks the round as requested. Use this after setting up all stages and approvers to officially request their review.

insertApprovalStage

Add a new empty approval stage to an existing approval round. The created stage will have no approvers initially - you'll need to use the changeApprovalItem mutation to add approvers.

changeApprovalStageApprover

Add or change an approver at a specific position in an approval stage. This is the primary way to assign approvers (users, teams, placeholders, or external approvers) to approval stages. The index parameter specifies which approval slot to update (0 for first approver, 1 for second, etc). If an approver already exists at that index, they will be replaced. If the index is beyond the current array length, a new approval will be added.

applyApprovalTemplate

Non-null

Apply an existing approval template to an action. Creates all rounds and stages defined in the template with configured approvers. Use this to quickly set up a standard approval workflow on an action. The template defines who needs to approve and in what order. This is the easiest way to add approval workflows - instead of manually creating rounds and stages, just apply a pre-configured template.

createForm

Non-null

This mutation creates a new form with all its configuration and content. The form can be used to create actions, projects, or send emails based on the target field. Form should use different input elements for different types of data.

createResourcePlaceholder

Non-null

Create a new resource placeholder for the workspace.

Resource placeholders are virtual team members that can be assigned to projects and actions before actual people are hired or designated for those roles.

IMPORTANT: Only workspace administrators can set billRate and costRate values. Regular users can only set the name and roleTagId.

Use cases: • Planning projects before hiring specific team members • Creating role-based assignments in project templates
• Resource planning and capacity management • Budgeting and cost estimation for future roles

Parameters: • name: Required. The display name for the placeholder (e.g., "Senior Developer", "Marketing Manager") • workspaceId: Required. The workspace where this placeholder will be created • roleTagId: Optional. Associates the placeholder with a specific role/skill tag • billRate: Optional. The hourly billing rate (admin only) • costRate: Optional. The hourly cost rate (admin only)

Returns: The created ResourcePlaceholder object

updateResourcePlaceholder

Non-null

Update an existing resource placeholder's properties.

This allows modification of placeholder details while preserving the placeholder's identity and existing assignments.

IMPORTANT: Only workspace administrators can modify billRate and costRate values. Regular users can only update the name and roleTagId.

Common use cases: • Refining placeholder role names for clarity • Updating role assignments as requirements change • Adjusting billing/cost rates (admin only) • Associating placeholders with different role tags

Parameters: • id: Required. The ID of the resource placeholder to update • name: Optional. New display name for the placeholder • roleTagId: Optional. New role/skill tag association (can be null to remove) • billRate: Optional. New hourly billing rate (admin only) • costRate: Optional. New hourly cost rate (admin only)

Returns: The updated ResourcePlaceholder object

createResourceAssignment

Create a resource assignment.

IMPORTANT: ALWAYS pass 'fixedDisplayType' and 'allocationType' together. Use assignmentType: 'regular' by default. Use other assignment types only if the user explicitly mentioned another type.

Possible valid combinations ('allocationType' + 'fixedDisplayType'): • 'hoursPerDay' + 'hours' - when you want to allocate hours per day • 'fixedHours' + 'hours' - when you want to allocate total hours • 'fixedHours' + 'days' - when you want to allocate in days (default work day = 8 hours) • 'fixedHours' + 'percentages' - when you want to allocate in percentages (percentage of the default default work day hours, e,g, 50% = 4 hours)

IMPORTANT: ALWAYS pass 'allocationValue' when allocating by percentage. IMPORTANT: ALWAYS pass 'fixedHours' when allocating by hours or days. IMPORTANT: ALWAYS pass 'hoursPerDay' when allocating by hours per day.

Examples: • Duration: 1 day, allocationType = hoursPerDay, fixedDisplayType = hours, allocationValue = 8, hoursPerDay = 8 • Duration: 5 days, allocationType = hoursPerDay, fixedDisplayType = hours, allocationValue = 8, hoursPerDay = 8 • Duration: 1 day, allocationType = fixedHours, fixedDisplayType = hours, allocationValue = 40, fixedHours = 40 • Duration: 5 days, allocationType = fixedHours, fixedDisplayType = hours, allocationValue = 40, fixedHours = 40 • Duration: 1 day, allocationType = fixedHours, fixedDisplayType = percentages, allocationValue = 50 (percents), fixedHours = 8 (default work day hours) * 1 (days) * 0.5 = 4 • Duration: 5 days, allocationType = fixedHours, fixedDisplayType = percentages, allocationValue = 50 (percents), fixedHours = 8 (default work day hours) * 5 (days) * 0.5 = 20 • Duration: 1 day, allocationType = fixedHours, fixedDisplayType = days, allocationValue = 2 (days), fixedHours = 8 (default work day hours) * 2 = 16 • Duration: 5 days, allocationType = fixedHours, fixedDisplayType = days, allocationValue = 2 (days), fixedHours = 8 (default work day hours) * 2 = 16

updateResourceAssignment

Update a resource assignment. ALWAYS use search to find the resource assignment before updating it. If the resource assignment is not found, DONT RUN THE MUTATION. If the resource assignment is found, update resource assignment.

createAccount

Non-null

updateAccount

Non-null

createCampaign

Non-null

updateCampaign

Non-null

planCampaign

Non-null

upsertCampaignRecipientPlan

Non-null

Planner-side mutation: add, suppress, or exclude a recipient. Safe to expose in the campaign UI.

upsertCampaignRecipientPlans

Non-null

updateCampaignRecipientExecution

Non-null

Executor-side mutation: progress a recipient through its lifecycle. Only the agent / background workers should call this.

deleteCampaignRecipient

Non-null

createOpportunity

Non-null

updateOpportunity

Non-null

appendActionToLinkedOpportunities

Non-null

createAccountActivity

Non-null

createCrmSignal

Non-null

linkEmailTouchpointToAccount

Non-null

linkEmailTouchpointToOpportunity

Non-null

linkMeetingTouchpointToAccount

Non-null

linkMeetingTouchpointToOpportunity

Non-null

importStoredEmailThreads

Non-null

createCrmAssociation

Non-null

deleteCrmAssociation

Non-null

Soft-deletes a CrmAssociation by id. Idempotent: returns false when the association is already deleted or not found, true when a row was soft- deleted. Access: requires workspace access to the association's workspace. Errors: none beyond the standard workspace access assertion.

createScheduledMailMessage

Non-null

Create a scheduled mail message to be sent at a specified time. The message will be stored and processed by the scheduled mail processor.

Access: Requires authenticated user. User must have valid mail provider credentials.

Errors:

  • User is not logged in
  • Access denied - If the user does not own the specified email address.

runWorkflow

Apply an action template to an action

updateMeetingUserData

Update meeting user data using diff operations for array fields and direct values for scalars. Array fields (goals, nextSteps, materials, speakerLabels) accept add/remove/update diffs. Scalar fields (customTitle) accept direct values.

createDashboardV2

Non-null

Creates a new dashboard with typed V2 filter input for Buzz/MCP endpoints. This mutation provides full schema introspection for AI assistants.

updateDashboardV2

Updates an existing dashboard with typed V2 filter input for Buzz/MCP endpoints. This mutation provides full schema introspection for AI assistants.

regenerateShareToken

Non-null

Regenerates the share token for a dashboard

createDashboardWidget

Non-null

Creates a new dashboard widget with specified configuration. Common configurations by widget type:

  1. Chart Widgets (Bar/Line/Pie):
  • Set chartType, XAxis, YAxis
  • Configure grouping and aggregation
  • Set up color schemes
  • Use these types of widgets when asked to show something broken down by project, assignee, etc.
  1. List Widgets (Actions/Projects):
  • Define filters (status, assignee, etc.)
  • Set up sorting and grouping
  • Configure display options
  • When user asks to create a widget for all actions assigned to them, create a widget with type 'myActionsList'
  • Use these types of widgets when asked to show something in a list format, like actions, projects, etc.
  1. Status Widgets:
  • Specify project or goal
  • Configure metrics to display
  • Set up refresh intervals
  1. Custom Widgets:
  • Set up embedded content
  • Configure interactive elements
  • Define data sources

When asked to show something over time, use timeUnitsType and dateRange parameters.

createDashboardWidgetV2

Non-null

Creates a new dashboard widget using a single input object. V2 replacement for createDashboardWidget — all fields are in CreateDashboardWidgetInput.

updateDashboardWidget

Updates an existing dashboard widget's configuration. Common update scenarios:

  1. Changing visualization type
  2. Updating filters or data source
  3. Modifying appearance settings
  4. Adjusting metrics or calculations

updateDashboardWidgetV2

Updates an existing dashboard widget using a single input object. V2 replacement for updateDashboardWidget — all fields are in UpdateDashboardWidgetInput.

createGoal

Create a new goal with comprehensive validation rules

IMPORTANT VALIDATION RULES:

Display Type Rules:

  • progress: Only works with measurementType null, number, or actions
  • number: Only works with measurementType null, number, actions, or overdue
  • status: Only works with measurementType status

Measurement Type + Unit Combinations:

  • measurementType actions/overdue: Must use measurementUnit actions OR projects
  • measurementType number: Must use measurementUnit currency, custom, OR percentage
  • measurementType status: Must use measurementUnit subGoals

Measurement Unit + Value + Symbol Rules:

  • measurementUnit currency: measurementUnitValue must be one of the supported currency codes (e.g., USD/EUR/JPY/GBP/AUD), symbol $/€/Â¥/£/AU$ This list is not exhaustive. For additional currencies, specify the ISO 4217 currency code as measurementUnitValue and provide the appropriate symbol. Refer to the application's documentation or configuration for the full list of supported currencies and symbols.
  • measurementUnit percentage: measurementUnitValue must be 'percentage', symbol '%'
  • measurementUnit actions: measurementUnitValue must be 'actions'
  • measurementUnit projects: measurementUnitValue must be 'projects'
  • measurementUnit subGoals: measurementUnitValue must be the empty string ("")
  • measurementUnit custom: measurementUnitValue can be any string

Action/Project ID Rules:

  • actionIds: Requires measurementType actions/overdue + measurementUnit actions + measurementUnitValue 'actions'
  • projectIds: Requires measurementType actions/overdue + measurementUnit projects + measurementUnitValue 'projects'

Date Rules:

  • Cannot be both ongoingDate AND recurringDate
  • Cannot combine ongoingDate with startDate/endDate
  • Cannot combine recurringDate with startDate/endDate
  • If startDate provided, endDate is required
  • startDate must be before endDate

deleteGoal

requestGoalUpdate

updateGoal

Update an existing goal - follows the same validation rules as createGoal

See createGoal mutation for complete validation rule documentation. Key validation reminders:

  • actionIds require: measurementType actions/overdue + measurementUnit actions + measurementUnitValue 'actions'
  • projectIds require: measurementType actions/overdue + measurementUnit projects + measurementUnitValue 'projects'
  • Date combinations: Cannot mix ongoingDate + recurringDate, or ongoingDate/recurringDate + startDate/endDate
  • measurementUnit + measurementUnitValue + measurementUnitSymbol must match allowed combinations

recurringRequestGoalUpdate

Non-null

insertPost

Non-null

Creates a new news post.

You can also specify the category of the post and the attachment file id or even predefined reactions to post.

Access: Requires user access to the workspace

Examples: { "body": "This is a very exciting news post", "workspaceId": "", "category": "news" }

removePost

Non-null

Soft deletes a news post by setting deleted to true.

Access: Requires user to be the post creator or a workspace admin.

updatePost

Non-null

Updates the body content of a news post.

Access: Requires user to be the post creator.

addPostReaction

Non-null

Adds a reaction emoji to a post.

Access: Requires user access to the workspace.

removePostReaction

Non-null

Removes a reaction emoji from a post.

Access: Requires user access to the workspace.

insertPostComment

Non-null

Creates a new comment on a post.

Access: Requires user access to the workspace.

updatePostComment

Non-null

Updates the body of a post comment.

Access: Requires user to be the comment creator.

removePostComment

Non-null

Soft deletes a post comment.

Access: Requires user to be the comment creator or a workspace admin.

addPostCommentReaction

Non-null

Adds a reaction emoji to a comment.

Access: Requires user access to the workspace.

removePostCommentReaction

Non-null

Removes a reaction emoji from a comment.

Access: Requires user access to the workspace.

insertLink

Non-null

Creates a new link in the workspace's News panel.

Access: Requires user access to the workspace.

updateLink

Non-null

Updates an existing link's title and url.

Access: Requires user access to the workspace.

removeLink

Non-null

Soft deletes a link by setting deleted to true.

Access: Requires user access to the workspace.

insertNewsCategory

Non-null

Creates a new custom news category in the workspace.

On first write in a workspace, seeds the default categories and migrates any posts that were using legacy string category ids to the new random ids, then marks the workspace as newsCategoriesApplied.

Access: Requires user access to the workspace.

updateNewsCategory

Non-null

Updates a news category's name and color.

Access: Requires user access to the workspace.

removeNewsCategory

Non-null

Soft deletes a news category and un-sets it from any posts in the workspace.

Access: Requires user access to the workspace.

salesforceOperation

Non-null

Unified Salesforce operation using jsforce SOAP/REST API. Supports query, search, insert, update, upsert, merge, describe, and lead conversion.

Access: Requires an authenticated Hive user with a connected Salesforce account.

Operation Examples:

#

QUERY

#

    
  

INSERT

#

    
  

UPDATE

#

    
  

DELETE

#

    
  

SEARCH (SOSL)

#

    
  

MERGE

#

    
  

DESCRIBE

#

    
  

CONVERT_LEAD

#

    
  

Errors:

  • User is not logged in.
  • Salesforce account is not connected.
  • Invalid operation parameters.
  • Salesforce API errors.

createMcpServer

Non-null

Create a new workspace-level MCP server connection. Use transportType 'streamable_http' for remote servers (requires url), or 'stdio' for local command-based servers (requires command). IMPORTANT: Before calling this, you MUST call discover_oauth_metadata first. If discovery returns success, set authType to 'oauth' and use the discovered oauthAuthorizationUrl, oauthTokenUrl, and oauthScopes. Only use authType 'headers' when discover_oauth_metadata fails. After creating with OAuth, inform the user to click the Authorize button to complete the OAuth consent flow.

updateMcpServer

Non-null

Update an existing MCP server. Only the creator can update.

deleteMcpServer

Non-null

Delete an MCP server. Only the creator can delete.

createHttpConnection

Create a new HTTP connection in a workspace. Each connection becomes a tool named custom_http_{name} that Buzz can use to make authenticated API requests. IMPORTANT: The "name" must be snake_case (lowercase letters, numbers, underscores, starting with a letter, e.g. "github_api", "stripe_api"). It must be unique within the workspace. IMPORTANT: Before calling this, you MUST call discover_oauth_metadata first. If discovery returns success, set authType to 'oauth' and use the discovered oauthAuthorizationUrl, oauthTokenUrl, and oauthScopes. Only use authType 'headers' when discover_oauth_metadata fails. For authType "headers", pass a "headers" object with auth credentials as key-value pairs (e.g. {"Authorization": "Bearer sk-xxx"}). Headers are encrypted at rest. Set sharingType to "everyone" for workspace-wide access, "custom" to share with specific users, or "me" (default) for personal use only. After creating, inform the user that the new tool (custom_http_{name}) will be available in their next conversation.

updateHttpConnection

Update an existing HTTP connection by ID. Only the connection creator can update it. If headers are provided, all existing headers are replaced with the new encrypted values.

createBuzzCommand

Non-null

Create a new slash command

updateBuzzCommand

Non-null

Update an existing slash command

deleteBuzzCommand

Non-null

Delete a slash command (soft delete)

createWebhook

Non-null

Create a new webhook. Admin-only.

updateWebhook

Non-null

Update an existing webhook. Admin-only.

deleteWebhook

Non-null

Soft-delete a webhook. Admin-only.

createBuzzEventWebhook

Non-null

Create an ephemeral internal webhook for Buzz event-based waits. Service-only: requires x-requestor-shared-secret.

deleteBuzzEventWebhook

Non-null

Soft-delete an internal Buzz event webhook. Service-only: requires x-requestor-shared-secret.