Skip to content

接口名称

角色管理API -(IFeishuTenantV3Role)

功能描述

飞书角色管理接口,用于管理团队成员的专业分工类别,如人事、行政、财务等。一个角色可由一名或多名成员组成。当前接口使用租户令牌访问,适用于租户应用场景。

角色主要用于应用审批场景,管理员可以选择某一角色作为审批人,例如选择财务角色作为报销流程的审批人。这样做可以避免因成员离职变动导致的审批流失效的情况,角色内的其他成员可以继续完成审批,提高审批效率。

参考文档

飞书角色管理API文档

函数列表

函数名称功能描述认证方式HTTP 方法
CreateRoleAsync创建一个角色租户令牌POST
UpdateRoleAsync修改指定角色的角色名称租户令牌PUT
DeleteRoleByIdAsync删除指定角色租户令牌DELETE

函数详细内容

函数名称:创建角色

函数签名

csharp
Task<FeishuApiResult<RoleCreateResult>?> CreateRoleAsync(
    [Body] RoleRequest roleRequest,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明示例值
roleRequestRoleRequest✅ 必填创建角色请求体
roleRequest.RoleNamestring✅ 必填角色名称,在同一租户下角色名称唯一,不能重复创建"财务角色"
cancellationTokenCancellationToken⚪ 可选取消操作令牌-

响应

成功响应示例:

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "role_id": "6988772597633617922"
  }
}

常见错误响应:

json
{
  "code": 400,
  "msg": "角色名称已存在"
}
json
{
  "code": 403,
  "msg": "无权限创建角色"
}

说明

  • 角色名称在同一租户下必须唯一
  • 创建的角色可以用于审批流程配置
  • 角色创建后会返回唯一的角色ID

代码示例

javascript
// 创建财务角色用于报销审批流程
async function createFinanceRole() {
  const roleRequest = {
    role_name: "财务角色"
  };

  try {
    const response = await feishuTenantV3Role.createRoleAsync(roleRequest);
    if (response.code === 0) {
      console.log('财务角色创建成功,角色ID:', response.data.role_id);
      
      // 将角色配置到审批流程中
      await configureApprovalProcess(response.data.role_id);
    } else {
      console.error('角色创建失败:', response.msg);
    }
  } catch (error) {
    console.error('创建角色时发生错误:', error);
  }
}

// 配置审批流程
async function configureApprovalProcess(roleId) {
  // 将财务角色设置为报销审批的审批人
  console.log(`角色 ${roleId} 已配置为报销审批流程的审批人`);
}

函数名称:修改角色名称

函数签名

csharp
Task<FeishuNullDataApiResult?> UpdateRoleAsync(
  [Path] string role_id,
  [Body] RoleRequest roleRequest,
  CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明示例值
role_idstring✅ 必填角色 ID"6988772597633617922"
roleRequestRoleRequest✅ 必填角色更新请求体
roleRequest.RoleNamestring✅ 必填新的角色名称"新财务角色"
cancellationTokenCancellationToken⚪ 可选取消操作令牌-

响应

成功响应示例:

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

常见错误响应:

json
{
  "code": 404,
  "msg": "角色不存在"
}
json
{
  "code": 400,
  "msg": "角色名称已存在"
}

说明

  • 只能修改角色名称,不能修改其他属性
  • 新的角色名称在同一租户下必须唯一
  • 角色名称修改不会影响现有的审批流程配置

代码示例

javascript
// 修改角色名称以适应组织架构调整
async function updateRoleName() {
  const roleId = "6988772597633617922";
  const roleRequest = {
    role_name: "高级财务分析师角色"
  };

  try {
    const response = await feishuTenantV3Role.updateRoleAsync(roleId, roleRequest);
    if (response.code === 0) {
      console.log('角色名称更新成功');
      
      // 通知相关审批系统角色名称变更
      await notifyApprovalSystems(roleId, roleRequest.role_name);
    } else {
      console.error('角色名称更新失败:', response.msg);
    }
  } catch (error) {
    console.error('更新角色名称时发生错误:', error);
  }
}

// 通知审批系统角色名称变更
async function notifyApprovalSystems(roleId, newName) {
  console.log(`角色 ${roleId} 名称已更新为: ${newName}`);
  // 这里可以调用相关系统的通知接口
}

函数名称:删除角色

函数签名

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

认证:租户令牌

参数

参数名类型必填说明示例值
role_idstring✅ 必填角色 ID"6988772597633617922"
cancellationTokenCancellationToken⚪ 可选取消操作令牌-

响应

成功响应示例:

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

常见错误响应:

json
{
  "code": 404,
  "msg": "角色不存在"
}
json
{
  "code": 400,
  "msg": "角色正在被审批流程使用,无法删除"
}

说明

  • 删除角色前请确保该角色未被任何审批流程使用
  • 角色删除后,角色内的成员关系也会被清除
  • 删除操作不可恢复,请谨慎执行

代码示例

javascript
// 安全删除角色(包含前置检查)
async function safeDeleteRole() {
  const roleId = "6988772597633617922";

  try {
    // 先检查角色是否被审批流程使用
    const isInUse = await checkRoleUsage(roleId);
    if (isInUse) {
      console.warn('角色正在被审批流程使用,无法删除');
      return;
    }

    // 执行删除操作
    const response = await feishuTenantV3Role.deleteRoleByIdAsync(roleId);
    if (response.code === 0) {
      console.log('角色删除成功');
      
      // 记录删除日志
      await logRoleDeletion(roleId);
    } else {
      console.error('角色删除失败:', response.msg);
    }
  } catch (error) {
    console.error('删除角色时发生错误:', error);
  }
}

// 检查角色使用情况
async function checkRoleUsage(roleId) {
  // 这里应该调用检查角色是否被使用的接口
  // 返回 true 表示正在使用,false 表示未被使用
  return false; // 示例中假设未被使用
}

// 记录角色删除日志
async function logRoleDeletion(roleId) {
  console.log(`角色 ${roleId} 已被删除,操作时间: ${new Date().toISOString()}`);
  // 这里可以调用日志系统记录删除操作
}