assign_task
Assign or unassign one task. Pass assigneeId=null to unassign. Alternatively pass assigneeEmail to resolve by org-member email (useful when the agent only knows the user's email and would otherwise need a separate list to find their id). Mutually exclusive with assigneeId. Optional expectedAssigneeRevision (integer): if supplied, the call fails with a CONFLICT error when another caller has assigned the task since you last read it. Returns the assignee's id and name (assigneeName), and the new claimRevision so you can chain consecutive assigns under optimistic concurrency. Caller must have task.assign on the project. Target must be an active member of the organization. On plans with resource management the result also carries load: the assignee's capacity for the week the task lands in, the hours already committed to their other open work, this task's share, whether that projection exceeds capacity (over, overBy), and the competing work that week (otherWork). Null when the task has no dates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | Preview only: return assignee current -> proposed + currentAssigneeRevision without committing. Writes nothing, fires no side effects. Pair with expectedAssigneeRevision on the real call. | |
| taskId | Yes | Task to (un)assign. | |
| assigneeId | No | User id or null to unassign. Mutually exclusive with assigneeEmail. | |
| assigneeEmail | No | Alternative to assigneeId. Resolved against active org members by email. 404 if not a member. | |
| expectedAssigneeRevision | No | Optimistic-concurrency guard. The Task.claimRevision you read; CONFLICT if it has moved. |