Skip to content

租户任务管理 - (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

函数详细内容

创建任务

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "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字段将新任务加到多个清单中。

代码示例

typescript
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);

更新任务

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "task": {
      "task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "更新后的任务标题",
      "description": "更新后的任务描述",
      "completed": false
    }
  },
  "msg": "success"
}

说明:用于修改任务的标题、描述、截止时间等信息。

代码示例

typescript
const updateTaskRequest = {
  title: "更新后的项目文档",
  description: "根据最新需求更新项目文档内容",
  due: {
    timestamp: "1704153600000"
  }
};

const response = await feishuClient.updateTask("e297ddff-06ca-4166-b917-4ce57cd3a7a0", updateTaskRequest);
console.log("任务更新成功:", response.data);

获取任务详情

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "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"
}

说明:用于获取任务详情,包括任务标题、描述、时间、成员等信息。

代码示例

typescript
const response = await feishuClient.getTaskById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务详情:", response.data.task);

删除任务

函数签名

csharp
Task<FeishuNullDataApiResult?> DeleteTaskByIdAsync(
   [Path] string task_guid,
   CancellationToken cancellationToken = default);

认证:租户令牌

参数

  • task_guid (string): 要删除的任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
  • cancellationToken (CancellationToken): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": null,
  "msg": "success"
}

说明:删除一个任务。删除后任务无法再被获取到,请谨慎操作。

代码示例

typescript
const response = await feishuClient.deleteTaskById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务删除成功:", response.code === 0);

添加任务成员

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "task": {
      "task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "任务标题",
      "members": [
        {
          "member_id": "user_123",
          "member_type": "user",
          "name": "张三"
        }
      ]
    }
  },
  "msg": "success"
}

说明:添加任务的负责人或者关注人。一次性可以添加多个成员。返回任务的实体中会返回最终任务成员的列表。

代码示例

typescript
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);

移除任务成员

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "task": {
      "task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "任务标题",
      "members": []
    }
  },
  "msg": "success"
}

说明:移除任务成员。一次性可以移除多个成员。可以移除任务的负责人或者关注人。移除时,如果要移除的成员不是任务成员,会被自动忽略。

代码示例

typescript
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);

获取任务所在清单

函数签名

csharp
Task<FeishuApiResult<TaskGuidTaskListsResult>?> GetTaskListsByIdAsync(
 [Path] string task_guid,
 CancellationToken cancellationToken = default);

认证:租户令牌

参数

  • task_guid (string): 任务全局唯一ID,示例值:"e297ddff-06ca-4166-b917-4ce57cd3a7a0"
  • cancellationToken (CancellationToken): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "tasklists": [
      {
        "tasklist_guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
        "name": "工作清单",
        "custom_group_guid": "group_123"
      }
    ]
  },
  "msg": "success"
}

说明:列取一个任务所在的所有清单的信息,包括清单的GUID和所在自定义分组的GUID。

代码示例

typescript
const response = await feishuClient.getTaskListsById("e297ddff-06ca-4166-b917-4ce57cd3a7a0");
console.log("任务所在清单:", response.data.tasklists);

将任务加入清单

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "task": {
      "task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "任务标题",
      "tasklists": [
        {
          "tasklist_guid": "d300a75f-c56a-4be9-80d1-e47653028ceb",
          "name": "工作清单"
        }
      ]
    }
  },
  "msg": "success"
}

说明:将一个任务加入清单。返回任务的详细信息,包括任务所在的所有清单信息。如果任务已经在该清单,接口将返回成功。

代码示例

typescript
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);

从清单移除任务

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "task": {
      "task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "任务标题",
      "tasklists": []
    }
  },
  "msg": "success"
}

说明:将任务从一个清单中移出。返回任务详情。如果任务不在清单中,接口将返回成功。

代码示例

typescript
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);

添加任务提醒

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "reminders": [
      {
        "remind_guid": "reminder_123",
        "remind_time": "2024-01-01T08:00:00Z",
        "remind_type": "before_due"
      }
    ]
  },
  "msg": "success"
}

说明:为一个任务添加提醒。提醒是基于任务的截止时间计算得到的一个时刻。为了设置提醒,任务必须首先拥有截止时间(due)。

代码示例

typescript
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);

移除任务提醒

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "reminders": []
  },
  "msg": "success"
}

说明:将一个提醒从任务中移除。如果要移除的提醒本来就不存在,本接口将直接返回成功。

代码示例

typescript
const removeReminderRequest = {
  remind_guids: ["reminder_123"]
};

const response = await feishuClient.removeTaskReminderById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeReminderRequest);
console.log("提醒移除成功:", response.data.reminders);

添加任务依赖

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "dependencies": [
      {
        "task_guid": "dep_task_123",
        "dependency_type": "predecessor"
      }
    ]
  },
  "msg": "success"
}

说明:为一个任务添加一个或多个依赖。可以添加任务的前置依赖和后置依赖。存在依赖关系的任务如果在同一个清单,可以通过清单的甘特图来展示其依赖关系。

代码示例

typescript
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);

移除任务依赖

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "dependencies": []
  },
  "msg": "success"
}

说明:从一个任务移除一个或者多个依赖。移除时只需要输入要移除的task_guid即可。

代码示例

typescript
const removeTaskDependenciesRequest = {
  task_guids: ["dep_task_123"]
};

const response = await feishuClient.removeTaskDependenciesById("e297ddff-06ca-4166-b917-4ce57cd3a7a0", removeTaskDependenciesRequest);
console.log("依赖移除成功:", response.data.dependencies);

创建子任务

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "subtask": {
      "task_guid": "subtask_123",
      "parent_task_guid": "e297ddff-06ca-4166-b917-4ce57cd3a7a0",
      "title": "子任务标题",
      "description": "子任务描述"
    }
  },
  "msg": "success"
}

说明:给一个任务创建一个子任务。接口功能除了额外需要输入父任务的GUID之外,和创建任务接口功能完全一致。

代码示例

typescript
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);

获取子任务列表

函数签名

csharp
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): 取消操作令牌对象

响应

json
{
  "code": 0,
  "data": {
    "items": [
      {
        "task_guid": "subtask_123",
        "title": "子任务标题",
        "description": "子任务描述",
        "completed": false
      }
    ],
    "page_token": "next_page_token",
    "has_more": true
  },
  "msg": "success"
}

说明:分页获取一个任务的子任务列表。

代码示例

typescript
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);