Projects
create-task-tool
Create a task under a budget.
Creates a task on the given budget. The status defaults to new unless explicitly set; setting it to finished also flips is_finished automatically via the model hook.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
budget_id | integer | yes | Parent budget id. |
due_date | string (Y-m-d) | yes | Due date. |
minutes | integer | yes | Estimated effort in minutes, ≥0. |
description | string | yes | Short description (max 255). |
comment | string | null | no | Longer comment. |
user_id | integer | null | no | Assignee user id. Leave empty for an unassigned task. |
team_id | integer | null | no | Team id. |
status | string | no | One of on-hold, new, active, internal-test, external-test, finished. Defaults to new. |
is_finished | boolean | no | Defaults to false. Auto-synced with status. |
is_billable | boolean | no | Defaults to true. |
Permissions
- Assigning to yourself:
kanban::manage_self. - Leaving unassigned or assigning to another user:
kanban::manage_for_others. - The caller must also pass the project policy's
viewgate for the budget's project.
Example
{
"budget_id": 31,
"task": "2026-06-01",
"minutes": 480,
"description": "Wireframe review",
"user_id": 4
}Response
The created task, in the same shape as a row from list-tasks-tool.
Errors
- A missing required field returns a validation error.
- An invalid
statusvalue returns a validation error. - A non-existent
budget_id,user_idorteam_idreturns a validation error. - Missing project view access,
kanban::manage_selforkanban::manage_for_othersreturns an authorization error.