租户任务管理 - (IFeishuTenantV2Task)
功能描述
飞书任务是一款飞书自带的通用任务/项目管理工具,拥有强大的协作能力。可以轻松地在飞书App的任务中心,群组,文档等场景中快捷创建任务。同时也可以将任务分享给感兴趣的成员,或者关注和跟进一些感兴趣的任务。该接口使用租户令牌进行认证。
参考文档
https://open.feishu.cn/document/task-v2/task/overview
函数列表
| 函数名称 | 功能描述 | 认证方式 | HTTP 方法 |
|---|---|---|---|
| CreateTaskAsync | 创建一个任务,支持填写任务的基本信息、设置时间条件、添加到多个清单等 | 租户令牌 | POST |
| UpdateTaskAsync | 修改任务的标题、描述、截止时间等信息 | 租户令牌 | PATCH |
| GetTaskByIdAsync | 获取任务详情,包括任务标题、描述、时间、成员等信息 | 租户令牌 | GET |
| DeleteTaskByIdAsync | 删除一个任务,删除后任务无法再被获取到 | 租户令牌 | DELETE |
| AddMembersByIdAsync | 添加任务的负责人或者关注人,一次性可以添加多个成员 | 租户令牌 | POST |
| RemoveMembersByIdAsync | 移除任务成员,可以移除任务的负责人或者关注人 | 租户令牌 | POST |
| GetTaskListsByIdAsync | 列取一个任务所在的所有清单的信息 | 租户令牌 | GET |
| AddTaskListsByIdAsync | 将一个任务加入清单 | 租户令牌 | POST |
| RemoveTaskListsByIdAsync | 将任务从一个清单中移出 | 租户令牌 | POST |
| AddTaskReminderByIdAsync | 为一个任务添加提醒 | 租户令牌 | POST |
| RemoveTaskReminderByIdAsync | 将一个提醒从任务中移除 | 租户令牌 | POST |
| AddTaskDependenciesByIdAsync | 为一个任务添加一个或多个依赖 | 租户令牌 | POST |
| RemoveTaskDependenciesByIdAsync | 从一个任务移除一个或者多个依赖 | 租户令牌 | POST |
| CreateSubTaskAsync | 给一个任务创建一个子任务 | 租户令牌 | POST |
| GetSubTasksPageListByIdAsync | 分页获取一个任务的子任务列表 | 租户令牌 | GET |
函数详细内容
创建任务
函数签名:
Task<FeishuApiResult<TaskOperationResult>?> CreateTaskAsync(
[Body] CreateTaskRequest createTaskRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ createTaskRequest (CreateTaskRequest): 创建任务请求体,包含任务标题、描述、负责人等信息
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "新任务",
"description": "任务描述",
"completed": false,
"due": "2024-01-01T00:00:00Z"
}
},
"msg": "success"
}说明:创建任务时,可以通过设置members字段来设置任务的负责人和关注人,还可以通过传入tasklists字段将新任务加到多个清单中。
代码示例:
const createTaskRequest = {
title: "完成项目文档",
description: "编写项目的技术文档和用户手册",
due: {
timestamp: "1704067200000"
},
members: [
{
member_id: "user_123",
member_type: "user"
}
]
};
const response = await feishuClient.createTask(createTaskRequest);
console.log("任务创建成功:", response.data);更新任务
函数签名:
Task<FeishuApiResult<TaskOperationResult>?> UpdateTaskAsync(
[Path] string task_guid,
[Body] UpdateTaskRequest updateTaskRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 要更新的任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ updateTaskRequest (UpdateTaskRequest): 更新任务请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "更新后的任务标题",
"description": "更新后的任务描述",
"completed": false
}
},
"msg": "success"
}说明:用于修改任务的标题、描述、截止时间等信息。
代码示例:
const updateTaskRequest = {
title: "更新后的项目文档",
description: "根据最新需求更新项目文档内容",
due: {
timestamp: "1704153600000"
}
};
const response = await feishuClient.updateTask("e297ddff-06ca-4166-b917-4ce57cd3a7a0", updateTaskRequest);
console.log("任务更新成功:", response.data);获取任务详情
函数签名:
Task<FeishuApiResult<TaskOperationResult>?> GetTaskByIdAsync(
[Path] string task_guid,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "任务标题",
"description": "任务描述",
"completed": false,
"created": "2024-01-01T10:00:00Z",
"updated": "2024-01-01T15:30:00Z",
"members": [
{
"member_id": "user_123",
"member_type": "user",
"name": "张三"
}
]
}
},
"msg": "success"
}说明:用于获取任务详情,包括任务标题、描述、时间、成员等信息。
代码示例:
const response = await feishuClient.getTaskById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务详情:", response.data.task);删除任务
函数签名:
Task<FeishuNullDataApiResult?> DeleteTaskByIdAsync(
[Path] string task_guid,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 要删除的任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": null,
"msg": "success"
}说明:删除一个任务。删除后任务无法再被获取到,请谨慎操作。
代码示例:
const response = await feishuClient.deleteTaskById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务删除成功:", response.code === 0);添加任务成员
函数签名:
Task<FeishuApiResult<TaskOperationResult>?> AddMembersByIdAsync(
[Path] string task_guid,
[Body] AddMembersRequest addMembersRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ addMembersRequest (AddMembersRequest): 添加任务成员请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "任务标题",
"members": [
{
"member_id": "user_123",
"member_type": "user",
"name": "张三"
}
]
}
},
"msg": "success"
}说明:添加任务的负责人或者关注人。一次性可以添加多个成员。返回任务的实体中会返回最终任务成员的列表。
代码示例:
const addMembersRequest = {
members: [
{
member_id: "user_456",
member_type: "user"
},
{
member_id: "user_789",
member_type: "user"
}
]
};
const response = await feishuClient.addMembersById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", addMembersRequest);
console.log("成员添加成功:", response.data.task.members);移除任务成员
函数签名:
Task<FeishuApiResult<TaskOperationResult>?> RemoveMembersByIdAsync(
[Path] string task_guid,
[Body] RemoveMembersRequest removeMembersRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ removeMembersRequest (RemoveMembersRequest): 移除任务成员请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "任务标题",
"members": []
}
},
"msg": "success"
}说明:移除任务成员。一次性可以移除多个成员。可以移除任务的负责人或者关注人。移除时,如果要移除的成员不是任务成员,会被自动忽略。
代码示例:
const removeMembersRequest = {
members: [
{
member_id: "user_456",
member_type: "user"
}
]
};
const response = await feishuClient.removeMembersById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeMembersRequest);
console.log("成员移除成功:", response.data.task.members);获取任务所在清单
函数签名:
Task<FeishuApiResult<TaskGuidTaskListsResult>?> GetTaskListsByIdAsync(
[Path] string task_guid,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"tasklists": [
{
"tasklist_guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
"name": "工作清单",
"custom_group_guid": "group_123"
}
]
},
"msg": "success"
}说明:列取一个任务所在的所有清单的信息,包括清单的GUID和所在自定义分组的GUID。
代码示例:
const response = await feishuClient.getTaskListsById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务所在清单:", response.data.tasklists);将任务加入清单
函数签名:
Task<FeishuApiResult<AddTaskListResult>?> AddTaskListsByIdAsync(
[Path] string task_guid,
[Body] AddTasklistRequest addTasklistRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ addTasklistRequest (AddTasklistRequest): 任务加入清单请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "任务标题",
"tasklists": [
{
"tasklist_guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
"name": "工作清单"
}
]
}
},
"msg": "success"
}说明:将一个任务加入清单。返回任务的详细信息,包括任务所在的所有清单信息。如果任务已经在该清单,接口将返回成功。
代码示例:
const addTasklistRequest = {
tasklist_guid: "d300a75f-c56a-4be9-80d1-e47653028ceb"
};
const response = await feishuClient.addTaskListsById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", addTasklistRequest);
console.log("任务加入清单成功:", response.data.task.tasklists);从清单移除任务
函数签名:
Task<FeishuApiResult<RemoveTaskListResult>?> RemoveTaskListsByIdAsync(
[Path] string task_guid,
[Body] RemoveTasklistRequest removeTasklistRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ removeTasklistRequest (RemoveTasklistRequest): 移除任务清单请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"task": {
"task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "任务标题",
"tasklists": []
}
},
"msg": "success"
}说明:将任务从一个清单中移出。返回任务详情。如果任务不在清单中,接口将返回成功。
代码示例:
const removeTasklistRequest = {
tasklist_guid: "d300a75f-c56a-4be9-80d1-e47653028ceb"
};
const response = await feishuClient.removeTaskListsById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeTasklistRequest);
console.log("任务从清单移除成功:", response.data.task.tasklists);添加任务提醒
函数签名:
Task<FeishuApiResult<AddTaskReminderResult>?> AddTaskReminderByIdAsync(
[Path] string task_guid,
[Body] AddTaskReminderRequest addTaskReminderRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ addTaskReminderRequest (AddTaskReminderRequest): 添加任务提醒请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"reminders": [
{
"remind_guid": "reminder_123",
"remind_time": "2024-01-01T08:00:00Z",
"remind_type": "before_due"
}
]
},
"msg": "success"
}说明:为一个任务添加提醒。提醒是基于任务的截止时间计算得到的一个时刻。为了设置提醒,任务必须首先拥有截止时间(due)。
代码示例:
const addTaskReminderRequest = {
reminders: [
{
remind_type: "before_due",
remind_time: "3600" // 截止前1小时提醒
}
]
};
const response = await feishuClient.addTaskReminderById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", addTaskReminderRequest);
console.log("提醒添加成功:", response.data.reminders);移除任务提醒
函数签名:
Task<FeishuApiResult<RemoveTaskReminderResult>?> RemoveTaskReminderByIdAsync(
[Path] string task_guid,
[Body] RemoveReminderRequest removeReminderRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ removeReminderRequest (RemoveReminderRequest): 移除任务提醒请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"reminders": []
},
"msg": "success"
}说明:将一个提醒从任务中移除。如果要移除的提醒本来就不存在,本接口将直接返回成功。
代码示例:
const removeReminderRequest = {
remind_guids: ["reminder_123"]
};
const response = await feishuClient.removeTaskReminderById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeReminderRequest);
console.log("提醒移除成功:", response.data.reminders);添加任务依赖
函数签名:
Task<FeishuApiResult<TaskDependenciesOpreationResult>?> AddTaskDependenciesByIdAsync(
[Path] string task_guid,
[Body] AddTaskDependenciesRequest addTaskDependenciesRequest,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ addTaskDependenciesRequest (AddTaskDependenciesRequest): 添加任务依赖请求体
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"dependencies": [
{
"task_guid": "dep_task_123",
"dependency_type": "predecessor"
}
]
},
"msg": "success"
}说明:为一个任务添加一个或多个依赖。可以添加任务的前置依赖和后置依赖。存在依赖关系的任务如果在同一个清单,可以通过清单的甘特图来展示其依赖关系。
代码示例:
const addTaskDependenciesRequest = {
dependencies: [
{
task_guid: "dep_task_123",
dependency_type: "predecessor"
}
]
};
const response = await feishuClient.addTaskDependenciesById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", addTaskDependenciesRequest);
console.log("依赖添加成功:", response.data.dependencies);移除任务依赖
函数签名:
Task<FeishuApiResult<TaskDependenciesOpreationResult>?> RemoveTaskDependenciesByIdAsync(
[Path] string task_guid,
[Body] RemoveTaskDependenciesRequest removeTaskDependenciesRequest,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ removeTaskDependenciesRequest (RemoveTaskDependenciesRequest): 移除任务依赖请求体
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"dependencies": []
},
"msg": "success"
}说明:从一个任务移除一个或者多个依赖。移除时只需要输入要移除的task_guid即可。
代码示例:
const removeTaskDependenciesRequest = {
task_guids: ["dep_task_123"]
};
const response = await feishuClient.removeTaskDependenciesById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeTaskDependenciesRequest);
console.log("依赖移除成功:", response.data.dependencies);创建子任务
函数签名:
Task<FeishuApiResult<CreateSubTaskResult>?> CreateSubTaskAsync(
[Path] string task_guid,
[Body] CreateSubTaskRequest createSubTaskRequest,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ✅ createSubTaskRequest (CreateSubTaskRequest): 创建子任务请求体
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"subtask": {
"task_guid": "subtask_123",
"parent_task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
"title": "子任务标题",
"description": "子任务描述"
}
},
"msg": "success"
}说明:给一个任务创建一个子任务。接口功能除了额外需要输入父任务的GUID之外,和创建任务接口功能完全一致。
代码示例:
const createSubTaskRequest = {
title: "准备项目材料",
description: "为项目准备必要的文档和演示材料",
members: [
{
member_id: "user_456",
member_type: "user"
}
]
};
const response = await feishuClient.createSubTask("e297ddff-06ca-4166-b917-4ce57cd3a7a0", createSubTaskRequest);
console.log("子任务创建成功:", response.data.subtask);获取子任务列表
函数签名:
Task<FeishuApiPageListResult<SubTaskInfo>?> GetSubTasksPageListByIdAsync(
[Path] string task_guid,
[Query("page_size")] int page_size = 10,
[Query("page_token")] string? page_token = null,
[Query("user_id_type")] string user_id_type = Consts.User_Id_Type,
CancellationToken cancellationToken = default);认证:租户令牌
参数:
- ✅ task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
- ⚪ page_size (int): 分页大小,默认值:10
- ⚪ page_token (string): 分页标记,第一次请求不填
- ⚪ user_id_type (string): 用户ID类型,默认值为Consts.User_Id_Type
- ⚪ cancellationToken (CancellationToken): 取消操作令牌对象
响应:
{
"code": 0,
"data": {
"items": [
{
"task_guid": "subtask_123",
"title": "子任务标题",
"description": "子任务描述",
"completed": false
}
],
"page_token": "next_page_token",
"has_more": true
},
"msg": "success"
}说明:分页获取一个任务的子任务列表。
代码示例:
let pageToken: string | undefined = undefined;
let allSubtasks = [];
do {
const response = await feishuClient.getSubTasksPageListById(
"e297ddff-06ca-4166-b917-4ce57cd3a7a0",
{
page_size: 20,
page_token: pageToken
}
);
allSubtasks.push(...response.data.items);
pageToken = response.data.page_token;
} while (pageToken);
console.log("所有子任务:", allSubtasks);