# Asana Task and project work management on Asana — triage and manipulate tasks (list, search, get, create, update, complete, move, comment, attach, delete), manage projects and sections, and discover the workspace/user topology around them. Run these through `omni-cli` once a human has connected the platform (`omni-cli asana login`). Full parameter and output schemas come from `omni-cli discovery asana`. ## attachments | Command | What it does | Kind | |---|---|---| | `omni-cli asana attachment create` | Attach an EXTERNAL URL to a task. Only external/URL attachments are supported — uploading file bytes is not supported. | write | | `omni-cli asana attachment get` | Get one attachment with its URLs — download_url/view_url are short-lived, permanent_url is stable. | read | | `omni-cli asana attachment list` | List the attachments on a task. | read | ## projects | Command | What it does | Kind | |---|---|---| | `omni-cli asana project get` | Get one project's full record — notes, archived/public state, dates, workspace, team, and members. | read | | `omni-cli asana project list` | List projects, filtered by workspace, team, or archived state — data[].gid sources every project-scoped action. | read | ## sections | Command | What it does | Kind | |---|---|---| | `omni-cli asana section create` | Create a section (board column) in a project. | write | | `omni-cli asana section list` | List the sections (board columns) of a project — the section gids for task.list filtering and task.add-to-project moves. | read | ## tags | Command | What it does | Kind | |---|---|---| | `omni-cli asana tag list` | List tags — sources the tag filter on task.list and the tags array on task.create. | read | ## comments | Command | What it does | Kind | |---|---|---| | `omni-cli asana task add-comment` | Add a comment to a task, attributed to the token owner. Provide exactly ONE of text or html-text. | write | | `omni-cli asana task list-comments` | List the comments and activity on a task. The response mixes human comments AND system activity — entries with resource_subtype "comment_added" are the human comments. | read | ## tasks | Command | What it does | Kind | |---|---|---| | `omni-cli asana task add-to-project` | Add or move a task into a project and optionally a specific section — the "move to column" verb. Re-adding converges on the same placement. The response returns no fields — verify the placement via task.get memberships. | write | | `omni-cli asana task create` | Create a task. Provide at least one of workspace, projects, or parent — parent creates a SUBTASK under that task. Prefer projects over workspace: a workspace-only task cannot later be moved between projects it was never added to. | write | | `omni-cli asana task delete` | Delete a task — end-state convergent; a repeat delete of an already-deleted task returns 404. The task is trashed for 30 days and recoverable in the Asana UI. Deleting a parent task deletes its subtasks with it. | write | | `omni-cli asana task get` | Get one task's full record — notes, completion state, dates, assignee, project/section memberships, parent, tags, followers, and custom fields. | read | | `omni-cli asana task list` | List tasks — THE task read. Requires exactly ONE scope: project, section, tag, or assignee+workspace (the API 400s otherwise). Pass completed-since=now for the incomplete-only triage view. | read | | `omni-cli asana task list-subtasks` | List the subtasks of a task (compact records; richer fields via --fields). | read | | `omni-cli asana task search` | Search tasks in a workspace with rich filters — PREMIUM-ONLY: free workspaces answer HTTP 402; use workspace.search there. Returns up to 100 results with no pagination — narrow with filters or page manually via a created-at-before/created-at-after window. | read | | `omni-cli asana task set-parent` | Re-parent an existing task under another task, making it a subtask (re-setting the same parent converges). Unparenting is not supported here. | write | | `omni-cli asana task update` | Update a task — only submitted fields change; a re-PUT converges. completed=true is the "complete task" verb. Project membership and parent are immutable here: move between projects via task.add-to-project, re-parent via task.set-parent. | write | ## users | Command | What it does | Kind | |---|---|---| | `omni-cli asana user get` | Get one user — gid, name, email, and workspace memberships. The literal id "me" returns the token owner. | read | | `omni-cli asana user list` | List users — assignee discovery for task.create/task.list (email rides --fields, e.g. "name,email"). | read | ## workspaces | Command | What it does | Kind | |---|---|---| | `omni-cli asana workspace list` | List the workspaces the token can see — the entry point of the whole discovery graph (every other list filters by a workspace gid). | read | | `omni-cli asana workspace search` | Typeahead search across one workspace — the free, works-everywhere search (unlike the premium task.search). Returns one bounded result set of up to 100 compact records; no pagination. | read |