Skip to main content

Quick Start

Install the plugin:
pnpm install @corsair-dev/asana
Add the Asana plugin to your Corsair instance:
corsair.ts
import { createCorsair } from "corsair";
import { asana } from "@corsair-dev/asana";

export const corsair = createCorsair({
    plugins: [asana()],
    database: db,
    kek: process.env.CORSAIR_KEK!,
});

Authentication

Supported Auth Types

  • api_key (default) - Personal access token

API Key Setup

pnpm corsair setup --asana api_key=your-personal-access-token
See Get Credentials for step-by-step instructions.

Options

OptionTypeDescription
authType'api_key'Authentication method
keystringAPI key (optional, uses database if not provided)
webhookSecretstringWebhook secret (optional)
hooksobjectEndpoint hooks for custom logic
webhookHooksobjectWebhook hooks for event handling
errorHandlersobjectCustom error handlers

Usage

// List tasks in a project
const tasks = await corsair.asana.api.projects.getTasks({
    project_gid: "project-id",
});

// Create a task
await corsair.asana.api.tasks.create({
    name: "Fix login bug",
    projects: ["project-id"],
    notes: "Users can't log in with SSO",
    due_on: "2024-01-15",
});

// Update a task
await corsair.asana.api.tasks.update({
    task_gid: "task-id",
    completed: true,
});

// List projects
const projects = await corsair.asana.api.projects.list({
    workspace: "workspace-id",
});

// Get current user
const me = await corsair.asana.api.users.getCurrent({});

// List team members
const members = await corsair.asana.api.teams.get({
    team_gid: "team-id",
});

Query cached data

const tasks = await corsair.asana.db.tasks.search({
    data: { completed: false },
});

Multi-Tenancy

const tenant = corsair.withTenant("user-123");

const tasks = await tenant.asana.api.tasks.list({
    workspace: "workspace-id",
});