Skip to content

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}/tasks when sync_scope.kind is space;
  • GET /folders/{folderId}/tasks when sync_scope.kind is folder.

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 Person contacts returned by GET /contacts;
  • Wrike task authorIds and responsibleIds that 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.