Asana Connector
CleanAccess Asana with managed OAuth to create, search, update, and manage tasks, projects, and workspaces using the Asana API.
SKILL.md
---
name: asana-connector
description: "Access Asana project management with managed OAuth. Create, search, update, and manage tasks, projects, and workspaces. Use when the user wants to create an Asana task, list tasks in a project, update task status, search tasks, or manage Asana projects."
metadata:
polly:
polly_managed_connector: true
auth:
- env: ASANA_ACCESS_TOKEN
type: oauth2
integration_id: asana
description: Asana OAuth access
primaryEnv: ASANA_ACCESS_TOKEN
---
# Asana Connector
Access Asana through the Asana REST API v1 using managed OAuth.
## First-Time Setup
If Asana is not connected yet, run:
`manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`
## Auth & Security
- Authentication is managed by Polly + Nango from `metadata.polly.auth`
- Never ask users to paste tokens in chat
- Never print or log token values
- If auth fails, reconnect with:
`manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`
## Base URL
`https://app.asana.com/api/1.0`
All requests include:
`Authorization: Bearer $ASANA_ACCESS_TOKEN`
## Quick Usage
List workspaces:
```bash
curl -sS \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/workspaces"
```
List projects in a workspace:
```bash
curl -sS \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/projects?workspace=<workspaceId>"
```
List tasks in a project:
```bash
curl -sS \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/tasks?project=<projectId>"
```
Get a task:
```bash
curl -sS \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/tasks/<taskId>"
```
Create a task:
```bash
curl -sS -X POST \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data":{"name":"New Task","workspace":"<workspaceId>","projects":["<projectId>"]}}' \
"https://app.asana.com/api/1.0/tasks"
```
Update a task:
```bash
curl -sS -X PUT \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"data":{"completed":true}}' \
"https://app.asana.com/api/1.0/tasks/<taskId>"
```
Search tasks in a workspace:
```bash
curl -sS \
-H "Authorization: Bearer $ASANA_ACCESS_TOKEN" \
"https://app.asana.com/api/1.0/workspaces/<workspaceId>/tasks/search?text=bug+fix"
```
## Rules
- Use `opt_fields` query parameter to request only needed fields and reduce response size
- For pagination, pass `offset` from prior responses
- Wrap create/update payloads in a `{"data": {...}}` envelope
- On API errors, surface status + response body clearly
- On 401/403, reconnect with:
`manage_auth(action="connect", integration_id="asana", auth_env="ASANA_ACCESS_TOKEN")`
- Never log, echo, or expose credential values in any output
Authorstella
Downloads3
Versions2
Published1d ago
Auth Requirements
ASANA_ACCESS_TOKENoauth2integration: asana
Version History
SHA-256 (latest)
05af7a3771c75095111ab6576cb65825b734a5dc1614cd88fed7f9994e37701d