Wrike

TotalClaw 作者 maton v1.0.0

Wrike API 与托管 OAuth 集成。管理任务、文件夹、项目、空间和团队协作。当用户想要在 Wrike 中管理项目工作、跟踪任务、处理时间日志或访问团队资源时,请使用此技能。对于其他第三方应用程序,请使用 api-gateway 技能 (https://clawhub.ai/byungkyu/api-gateway)。 需要网络访问和有效的 Maton API 密钥。

源码 ↗

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:byungkyu~wrike-api
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Abyungkyu~wrike-api/file -o wrike-api.md
Git 仓库获取源码
git clone https://github.com/openclaw/skills/commit/090b2195e8e3877d24daed112413c90c9e205d70
## 概述(中文)

Wrike API 与托管 OAuth 集成。管理任务、文件夹、项目、空间和团队协作。当用户想要在 Wrike 中管理项目工作、跟踪任务、处理时间日志或访问团队资源时,请使用此技能。对于其他第三方应用程序,请使用 api-gateway 技能 (https://clawhub.ai/byungkyu/api-gateway)。
需要网络访问和有效的 Maton API 密钥。

## 原文

# Wrike

Access the Wrike API v4 with managed OAuth authentication. Manage tasks, folders, projects, spaces, groups, comments, attachments, timelogs, workflows, and more.

## Quick Start

```bash
# List all tasks
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/wrike/api/v4/tasks')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```

## Base URL

```
https://gateway.maton.ai/wrike/api/v4/{endpoint-path}
```

Replace `{endpoint-path}` with the actual Wrike API endpoint path. The gateway proxies requests to `www.wrike.com/api/v4` and automatically injects your OAuth token.

## Authentication

All requests require the Maton API key in the Authorization header:

```
Authorization: Bearer $MATON_API_KEY
```

**Environment Variable:** Set your API key as `MATON_API_KEY`:

```bash
export MATON_API_KEY="YOUR_API_KEY"
```

### Getting Your API Key

1. Sign in or create an account at [maton.ai](https://maton.ai)
2. Go to [maton.ai/settings](https://maton.ai/settings)
3. Copy your API key

## Connection Management

Manage your Wrike OAuth connections at `https://ctrl.maton.ai`.

### List Connections

```bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=wrike&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```

### Create Connection

```bash
python3 <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'wrike'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
```

**Response:**
```json
{
  "connection_id": "32c76f2f-54a0-47ca-b4d2-8e99ad852210",
  "status": "PENDING",
  "url": "https://connect.maton.ai/?session_token=...",
  "app": "wrike"
}
```

Open the returned `url` in a browser to complete OAuth authorization.

### Delete Connection

```bash
python3 <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
urllib.request.urlopen(req)
print("Deleted")
EOF
```

### Specifying Connection

If you have multiple Wrike connections, specify which one to use with the `Maton-Connection` header:

```python
req.add_header('Maton-Connection', '{connection_id}')
```

If omitted, the gateway uses the default (oldest) active connection.

## API Reference

### Spaces

#### List Spaces

```bash
GET /wrike/api/v4/spaces
```

**Response:**
```json
{
  "kind": "spaces",
  "data": [
    {
      "id": "MQAAAAEFzzdO",
      "title": "First space",
      "avatarUrl": "https://www.wrike.com/static/spaceicons2/v3/6/6-planet.png",
      "accessType": "Public",
      "archived": false,
      "defaultProjectWorkflowId": "IEAGXR2EK77ZIOF4",
      "defaultTaskWorkflowId": "IEAGXR2EK4G2YNU4"
    }
  ]
}
```

#### Get Space

```bash
GET /wrike/api/v4/spaces/{spaceId}
```

#### Create Space

```bash
POST /wrike/api/v4/spaces
Content-Type: application/json

{
  "title": "New Space"
}
```

#### Update Space

```bash
PUT /wrike/api/v4/spaces/{spaceId}
Content-Type: application/json

{
  "title": "Updated Space Name"
}
```

#### Delete Space

```bash
DELETE /wrike/api/v4/spaces/{spaceId}
```

### Folders & Projects

Folders and projects are the main ways to organize work in Wrike. Projects are folders with additional properties (owners, dates, status).

#### Get Folder Tree

```bash
GET /wrike/api/v4/folders
```

**Response:**
```json
{
  "kind": "folderTree",
  "data": [
    {
      "id": "IEAGXR2EI7777777",
      "title": "Root",
      "childIds": ["MQAAAAEFzzdO", "MQAAAAEFzzRZ"],
      "scope": "WsRoot"
    },
    {
      "id": "MQAAAAEFzzdV",
      "title": "My Project",
      "childIds": [],
      "scope": "WsFolder",
      "project": {
        "authorId": "KUAXHKXS",
        "ownerIds": ["KUAXHKXS"],
        "customStatusId": "IEAGXR2EJMG2YNA4",
        "createdDate": "2026-03-09T08:15:07Z"
      }
    }
  ]
}
```

#### Get Folders in Space

```bash
GET /wrike/api/v4/spaces/{spaceId}/folders
```

#### Get Folder

```bash
GET /wrike/api/v4/folders/{folderId}
GET /wrike/api/v4/folders/{folderId},{folderId},... (up to 100 IDs)
```

#### Get Subfolders

```bash
GET /wrike/api/v4/folders/{folderId}/folders
```

#### Create Folder

```bash
POST /wrike/api/v4/folders/{parentFolderId}/folders
Content-Type: application/json

{
  "title": "New Folder"
}
```

#### Update Folder

```bash
PUT /wrike/api/v4/folders/{folderId}
Content-Type: application/json

{
  "title": "Updated Folder Name"
}
```

#### Delete Folder

```bash
DELETE /wrike/api/v4/folders/{folderId}
```

#### Copy Folder

```bash
POST /wrike/api/v4/copy_folder/{folderId}
Content-Type: application/json

{
  "parent": "{destinationFolderId}",
  "title": "Copy of Folder"
}
```

### Tasks

#### List Tasks

```bash
GET /wrike/api/v4/tasks
```

**Response:**
```json
{
  "kind": "tasks",
  "data": [
    {
      "id": "MAAAAAEFzzde",
      "accountId": "IEAGXR2E",
      "title": "First task",
      "status": "Active",
      "importance": "Normal",
      "createdDate": "2026-03-09T08:15:07Z",
      "updatedDate": "2026-03-10T07:07:57Z",
      "dates": {
        "type": "Planned",
        "duration": 2400,
        "start": "2026-03-05T09:00:00",
        "due": "2026-03-11T17:00:00"
      },
      "scope": "WsTask",
      "customStatusId": "IEAGXR2EJMG2YNV2",
      "permalink": "https://www.wrike.com/open.htm?id=4392433502"
    }
  ]
}
```

#### List Tasks in Folder

```bash
GET /wrike/api/v4/folders/{folderId}/tasks
```

#### List Tasks in Space

```bash
GET /wrike/api/v4/spaces/{spaceId}/tasks
```

#### Get Task

```bash
GET /wrike/api/v4/tasks/{taskId}
GET /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)
```

#### Create Task

```bash
POST /wrike/api/v4/folders/{folderId}/tasks
Content-Type: application/json

{
  "title": "New Task",
  "description": "Task description",
  "importance": "Normal",
  "dates": {
    "start": "2026-03-15",
    "due": "2026-03-20"
  }
}
```

**Response:**
```json
{
  "kind": "tasks",
  "data": [
    {
      "id": "MAAAAAEF7ufN",
      "accountId": "IEAGXR2E",
      "title": "New Task",
      "description": "Task description",
      "status": "Active",
      "importance": "Normal",
      "createdDate": "2026-03-10T07:16:07Z",
      "scope": "WsTask",
      "customStatusId": "IEAGXR2EJMG2YNU4",
      "permalink": "https://www.wrike.com/open.htm?id=4394510285"
    }
  ]
}
```

#### Update Task

```bash
PUT /wrike/api/v4/tasks/{taskId}
Content-Type: application/json

{
  "title": "Updated Task Title",
  "importance": "High"
}
```

#### Update Multiple Tasks

```bash
PUT /wrike/api/v4/tasks/{taskId},{taskId},... (up to 100 IDs)
Content-Type: application/json

{
  "status": "Completed"
}
```

#### Delete Task

```bash
DELETE /wrike/api/v4/tasks/{taskId}
```

### Comments

#### List Comments

```bash
GET /wrike/api/v4/comments
GET /wrike/api/v4/tasks/{taskId}/comments
GET /wrike/api/v4/folders/{folderId}/comments
GET /wrike/api/v4/comments/{commentId},{commentId},... (up to 100 IDs)
```

**Response:**
```json
{
  "kind": "comments",
  "data": [
    {
      "id": "IEAGXR2EIMBGYQMR",
      "authorId": "KUAXI4LC",
      "text": "This is a comment",
      "updatedDate": "2026-03-10T07:07:57Z",
      "createdDate": "2026-03-10T07:07:57Z",
      "taskId": "MAAAAAEFzzde"
    }
  ]