Ir al contenido

Asana

Integración con Asana a través de su API REST 1.0. La familia cubre el ciclo de vida de una tarea: crearla en un proyecto, leerla, actualizar cualquier campo, listar todo lo que hay en un proyecto, comentar y borrar.

La autenticación la resuelve el módulo de credenciales (proveedor asana) con un token Bearer: un Personal Access Token (PAT) de Asana.

NodoNombre internoLlamada HTTP
Asana: Crear tareaasanaCreateTaskPOST /tasks
Asana: Leer tareaasanaGetTaskGET /tasks/{gid}
Asana: Actualizar tareaasanaUpdateTaskPUT /tasks/{gid}
Asana: Listar tareasasanaListTasksGET /tasks?project={gid}
Asana: Borrar tareaasanaDeleteTaskDELETE /tasks/{gid}
Asana: Comentar tareaasanaAddCommentPOST /tasks/{gid}/stories

Todos los nodos de la familia comparten un parámetro; el resto está documentado en la página de cada operación.

ParámetroTipoRequeridoDescripción
credentials_idcredencialSíCredencial de Asana (proveedor asana)

Proveedor: asana. Creala en Credenciales → Agregar → Asana.

CampoDescripción
access_tokenPersonal Access Token, generado en app.asana.com/0/my-apps. Se enmascara en los logs.
default_workspace_gidOpcional. gid del workspace que se usa cuando un nodo no especifica ninguno.
timeoutOpcional. Tiempo máximo de espera en milisegundos (por defecto 20000).

La autenticación es Bearer (Authorization: Bearer <PAT>). El botón Test llama a GET /users/me y devuelve el nombre de la cuenta autenticada.

En Asana cada objeto se identifica con un gid: una cadena de dígitos, no un número. Tareas, proyectos, workspaces, usuarios y comentarios usan uno. Guardalos siempre como texto en tu workflow para no perder dígitos por el camino.

El gid de un proyecto se lee en su URL dentro de Asana (app.asana.com/0/<project_gid>/…), o descubriendo recursos con el nodo HTTP.

Asana envuelve tanto la petición como la respuesta dentro de un { "data": … }. Los nodos se ocupan de eso por vos: envuelven lo que enviás y desenvuelven lo que llega, así que al nodo siguiente le llega el objeto directo, sin un nivel data extra que haya que atravesar.

Cada nodo devuelve la respuesta de Asana en data, más un objeto _meta con la versión del módulo y los tiempos:

{
"data": { "gid": "1209876543210987", "resource_type": "task", "name": "Seguimiento: ACME S.A.", "completed": false },
"_meta": { "moduleVersion": "1.0.0", "success": true, "gid": "1209876543210987", "totalMs": 305 }
}

Si algo falla, el nodo corta la rama y devuelve un objeto error en lugar de continuar:

{
"data": {},
"error": { "message": "project: Not a recognized ID", "type": "validation", "status": 400 }
}
  • Las variables dinámicas tipo {{data.cliente}} se resuelven en los parámetros de texto: name, notes, project_gid, assignee, due_on, task_gid y text. No se resuelven dentro del JSON fields, ni en opt_fields, ni en limit, ni en workspace_gid.
  • Los reintentos son automáticos, con un tope de 3 intentos y espera exponencial, ante errores de red, timeouts, 429 (respetando Retry-After) y 5xx. Los errores de validación, 404 y de autenticación no se reintentan.
  • El tiempo máximo de espera por defecto es de 20 segundos; podés subirlo con el campo timeout de la credencial.
  • El token nunca se escribe completo en los logs: solo aparece enmascarado, del estilo 1/12…9f0a.