NOTICE: All information contained herein is, and remains
the property of TechnoCore Automate.
Updated : 2026-04-20
ObjServiceAsana provides a reusable Asana REST API integration for the
Axion platform. It wraps workspace, project, task, and section endpoints
with authentication, rate-limit handling (429 retry), and error logging.
A local def_asana_sync table tracks bidirectional mappings between Axion
records and Asana GIDs, enabling sync workflows.
| Area | Methods |
|---|---|
| Workspace | get_workspace(), get_users() |
| Projects | list_projects(), get_project(), create_project() |
| Tasks | list_tasks(), get_task(), create_task(), update_task(), complete_task(), add_comment(), add_subtask() |
| Sections | list_sections(), create_section(), move_task_to_section() |
| Sync | link_record(), get_asana_gid(), get_local_key() |
Rate limit: approximately 150 requests/minute. On HTTP 429 the service
sleeps for the Retry-After header value (default 60 s) and retries up
to 3 times.
base:
asana:
token: $environment_ASANA_TOKEN$
workspace: ""
default_project: ""
The token should be set via the AXION_ASANA_TOKEN environment variable
so it is never stored in source control.
export AXION_ASANA_TOKEN="1/1234567890:abcdef..."
The def_asana_sync table maps local records to Asana objects:
| Column | Description |
|---|---|
| Guid | Primary key (auto-generated) |
| Package | Active Axion package |
| SourceTable | Local table name |
| SourceKey | Local record key |
| AsanaGid | Asana object GID |
| AsanaType | task, project, or section |
| SyncStatus | synced, error, deleted |
| SyncedAt | Last sync timestamp |
# Verify token and show connected user
python ObjServiceAsana.py test-connection
# List all projects in the workspace
python ObjServiceAsana.py list-projects
# List tasks in a specific project
python ObjServiceAsana.py list-tasks 1234567890
# Create a task
python ObjServiceAsana.py create-task 1234567890 "Fix login bug" \
--notes "Users report 500 on /login" \
--assignee me \
--due-date 2026-05-01
from ObjServiceAsana import ObjServiceApi
svc = ObjServiceApi()
# List projects
for p in svc.list_projects():
print(f"{p['gid']} {p['name']}")
# Create a task and link to local record
task = svc.create_task(
"1234567890",
"Onboard new client",
notes="Set up accounts and credentials",
due_date="2026-05-15",
)
if task.get("gid"):
svc.link_record(
"data_clients", "CLIENT-42",
task["gid"], "task",
)
Updated : 2026-04-20