Skip to content

Providers#

The service exposes providers through two discovery endpoints. Each provider declares the capabilities it supports (the connection methods it can offer), and the registry enforces those declarations at the request edge.

Provider Capabilities Page
Airtable CSV_IMPORT Airtable
Apple Calendar SYNC, USER_IMPORT Apple Calendar
Asana SYNC, USER_IMPORT Asana
Basecamp SYNC, USER_IMPORT Basecamp
Bitrix24 CSV_IMPORT, SYNC, USER_IMPORT Bitrix24
Cal.com SYNC, USER_IMPORT Cal.com
Calendly SYNC, USER_IMPORT Calendly
ClickUp CSV_IMPORT, SYNC ClickUp
Discord SYNC, USER_IMPORT Discord
Google Calendar SYNC, USER_IMPORT Google Calendar
Hive CSV_IMPORT, SYNC, USER_IMPORT Hive
Jira CSV_IMPORT, SYNC Jira
Kanboard CSV_IMPORT, SYNC, USER_IMPORT Kanboard
Linear CSV_IMPORT, SYNC, USER_IMPORT Linear
Microsoft Outlook SYNC, USER_IMPORT Microsoft Outlook
Monday SYNC, USER_IMPORT Monday
Notion CSV_IMPORT Notion
OpenProject SYNC, USER_IMPORT OpenProject
Plane CSV_IMPORT, SYNC, USER_IMPORT Plane
Sendbird SYNC, USER_IMPORT Sendbird
Shortcut CSV_IMPORT, SYNC, USER_IMPORT Shortcut
Smartsheet CSV_IMPORT, SYNC, USER_IMPORT Smartsheet
Taiga CSV_IMPORT Taiga
Teamwork SYNC, USER_IMPORT Teamwork
Todoist SYNC, USER_IMPORT Todoist
Trello CSV_IMPORT, SYNC, USER_IMPORT Trello
Wrike SYNC, USER_IMPORT Wrike
YouTrack SYNC, USER_IMPORT YouTrack
Zoom SYNC, USER_IMPORT Zoom
Zoho Projects CSV_IMPORT, SYNC, USER_IMPORT Zoho Projects

More adapters are added one at a time; the planned set is on the Roadmap.

Generic capability endpoints#

Because the system is organized by capability, the import and credential endpoints are written once and parameterized by {provider}. For a worked example with real request/response shapes, see the Linear page.

Route Capability Purpose
POST /api/v1/providers/{provider}/imports/csv CSV_IMPORT Upload a provider CSV export → reviewable import session.
POST /api/v1/providers/{provider}/imports/sync SYNC Pull from the provider API (using the stored key) → import session.
GET /api/v1/providers/{provider}/imports/{id} any Fetch an import session for review (org-scoped).
PATCH /api/v1/providers/{provider}/imports/{id}/mappings any Replace the proposed user mapping; refresh mapping-owned actor fields without overwriting reviewed task drafts; optionally confirm.
PATCH /api/v1/providers/{provider}/imports/{id}/task-entries/{index} any Replace one projected task draft by its 0-based index.
PUT/GET/DELETE /api/v1/providers/{provider}/credentials API-backed Store / check / delete the org's encrypted provider credential.
POST /api/v1/providers/{provider}/credentials/verify API-backed Live-test the stored credential.
GET /api/v1/providers/{provider}/oauth/authorize OAuth-backed Build an org-scoped authorization URL; optionally sign targetAccountId into state.
GET /api/v1/providers/{provider}/oauth/callback OAuth-backed Exchange a provider redirect code or structural callback parameters and store encrypted OAuth material.
POST /api/v1/providers/{provider}/oauth/callback OAuth-backed Authenticated relay of the same code/error/structural callback contract.

User import

USER_IMPORT means a provider adapter can bring provider users into the proposed TeamBoost user mapping. There is no standalone /imports/users endpoint yet. Apple Calendar, Asana, Basecamp, Bitrix24, Cal.com, Calendly, Discord, Google Calendar, Linear, Microsoft Outlook, Monday, OpenProject, Plane, Sendbird, Shortcut, Hive, Kanboard, Smartsheet, Teamwork, Todoist, Trello, Wrike, YouTrack, Zoom, and Zoho Projects pull users during /imports/sync; Airtable, ClickUp, Jira, Notion, and Taiga do not currently declare USER_IMPORT.

Import sessions carry projected task drafts#

An import session is not just parsed rows: each task is projected into the internal integrations task-create draft at import time. The session exposes taskEntries (not a flat tasks list) — each entry has the normalized source, the projected draft, projectionErrors (blocking — they hold the session in PROJECTION_ERRORS and block confirm), and mappingNotes (non-blocking review items). A task-entry edit is the authoritative reviewed draft: confirming with an unchanged user mapping preserves it. When mappings change, the service refreshes creatorId, ownerId, requestedById, and mapping-driven diagnostics while preserving reviewed task fields. Confirm is accepted only once no projectionErrors remain. See the Jira page for a worked projection.

List registered providers#

GET /api/v1/providers
{ "status": "success", "data": { "providers": ["airtable", "apple-calendar", "asana", "basecamp", "bitrix24", "cal-com", "calendly", "clickup", "discord", "google-calendar", "hive", "jira", "kanboard", "linear", "microsoft-outlook", "monday", "notion", "openproject", "plane", "sendbird", "shortcut", "smartsheet", "taiga", "teamwork", "todoist", "trello", "wrike", "youtrack", "zoom", "zoho-projects"] } }

Describe a provider's capabilities#

GET /api/v1/providers/{provider}

Returns the provider's declared capabilities, or 404 unknown_provider if the name isn't registered:

{ "status": "success", "data": { "provider": "linear", "capabilities": ["CSV_IMPORT", "SYNC", "USER_IMPORT"] } }

Capability values are the registry's declared capabilities, verbatim — currently one of CSV_IMPORT, SYNC, USER_IMPORT, WEBHOOK.

Both routes require authentication — see Authentication.