Wrike#
Wrike is registered for API sync with sync-coupled user import. It pulls tasks from one configured Wrike space or folder into a reviewable import session, proposes TeamBoost user mappings from Wrike contacts and task actor IDs, and projects each task into the internal integrations task-create draft for operator review.
| Capability | Method | Status |
|---|---|---|
SYNC |
Pull tasks from the Wrike API | Built |
USER_IMPORT |
Bring Wrike contacts into the task-import mapping | Built as part of API sync |
CSV_IMPORT |
Upload a Wrike CSV export | Not built |
WEBHOOK |
— | Not built |
The endpoints below live under /api/v1/providers/wrike/.... They are generic -
the same routes serve any registered provider by substituting the {provider} path
segment. All routes require an organization-scoped user token (see
Authentication).
Discovery#
GET /api/v1/providers/wrike
{
"status": "success",
"data": { "provider": "wrike", "capabilities": ["SYNC", "USER_IMPORT"] }
}
Credential Verification#
Wrike permanent access tokens can be stored and verified for scoped API sync:
PUT /api/v1/providers/wrike/credentials?organization_id=<id>
POST /api/v1/providers/wrike/credentials/verify?organization_id=<id>
The stored secret is encrypted at rest and must be a JSON object:
{
"token": "<wrike-permanent-token>",
"host": "www.wrike.com",
"sync_scope": { "kind": "space", "id": "<space-id>" }
}
host must be one of www.wrike.com, app-eu.wrike.com, or
app-us2.wrike.com. sync_scope.kind must be space or folder; the generic
sync endpoint has no provider-specific request body, so the stored credential
selects the Wrike area to import.
Verification sends Authorization: bearer <token> to
GET https://{host}/api/v4/contacts?me=true. Malformed JSON, missing fields,
unsupported hosts, invalid scope shape, rejected tokens, and permission failures
return invalid_api_key. Stored secrets are never returned by the credential
endpoints.
Importing From the Wrike API#
POST /api/v1/providers/wrike/imports/sync?organization_id=<id>
Uses the stored, encrypted Wrike credential to fetch the configured space or folder only:
GET /spaces/{spaceId}/taskswhensync_scope.kindisspace;GET /folders/{folderId}/taskswhensync_scope.kindisfolder.
Task sync requests pageSize=1000, keeps the optional task fields consistent
across pages, and follows nextPageToken until the token is absent. The adapter
also fetches contacts, spaces, folders, workflows, and custom item types so task
mapping can preserve Wrike context and status/type metadata. Task custom field
values are preserved from the scoped task payload.
User Mapping#
Wrike USER_IMPORT rides the sync flow. The adapter proposes mappings from:
- active
Personcontacts returned byGET /contacts; - Wrike task
authorIdsandresponsibleIdsthat are missing from the contact response, represented as id-only imported users.
The primary matching key is the Wrike contact id (sourceAccountId). E-mail and
display name are matching hints only. Groups, robots, deleted contacts, and
inactive contacts are not mapped to TeamBoost users by default.
Projection Field Coverage#
| Wrike source | TeamBoost draft field | Notes |
|---|---|---|
title |
title |
Error if shorter than 2 characters |
| Custom item type name | type |
Bug/defect/issue, feature/story, change/fix, docs, review, release, refactor, security, performance, and spec keywords map to TeamBoost types; unknown types default to OTHER with a note |
description / briefDescription |
description |
Provider HTML/plain text context is preserved in descriptionJson |
| Base/custom status group | status |
Completed/cancelled map directly; Active/Deferred default to NOT_STARTED with a mapping note because the meaning is workflow-dependent |
importance |
priority |
High/Normal/Low map to HIGH/MEDIUM/LOW; missing or unknown priority becomes UNKNOWN |
authorIds |
creatorId |
Resolved through the user mapping when possible; unmapped authors leave creatorId unset with a note |
Single responsibleIds person |
ownerId |
Present-but-unmapped owner is a blocking projectionError |
Multiple responsibleIds |
projectionErrors |
Blocks confirm until the operator chooses one TeamBoost owner; no first-owner rule is applied |
| Parent folder/project title | projectTitle |
Preserved for review; folder hierarchy may need operator adjustment |
| Sync space name | taskGroupTitle |
|
dates.start / dates.due |
plannedStartDate / plannedEndDate |
Date-only values normalize to UTC start/end of day |
| Permalink, parent IDs, dependencies, subtasks, custom fields, custom status/type refs | descriptionJson |
Preserved for review; relationships are not auto-wired in this first unit |
requestedById is not populated from Wrike author or responsible data. Requester
is reserved for an explicit custom field or future operator-approved convention.
Operational Validation#
The adapter is covered by mocked-provider tests for credential parsing, bearer auth, host selection, pagination, retryable failures, mapping, user import, and projection. A release smoke with a safe Wrike workspace token, host, sync scope, and redacted API payloads is still required before announcing Wrike support.
Not Built Yet#
- OAuth app install and token refresh.
- CSV import from a real Wrike task/report export or an approved BI Export multi-table design.
- Webhook registration and HMAC verification.
- Standalone user-directory import before task sync.
- Account-wide sync and provider-specific sync filters in the generic sync request.
- Automatic dependency/subtask/supertask wiring into TeamBoost relationships.