Skip to content

接口名称

Wiki 知识库(租户权限)- (IFeishuTenantV2Wiki)

功能描述

飞书知识库是一个面向组织的知识管理系统。通过结构化沉淀高价值信息,形成完整的知识体系。此外,明确的内容分类,层级式的页面树,还能够轻松提升知识的流转和传播效率,更好地成就组织和个人。

本接口提供以租户身份对知识空间进行管理的能力,适用于后台服务、机器人等场景,无需用户登录即可操作知识空间。

参考文档

函数列表

函数名称功能描述认证方式HTTP 方法
GetSpacesPageListAsync获取有权限访问的知识空间列表租户令牌GET
GetSpaceInfoAsync获取知识空间详细信息租户令牌GET
GetSpaceMemberPageListAsync获取知识空间成员列表租户令牌GET
CreateSpaceMemberAsync添加知识空间成员租户令牌POST
DeleteSpaceMemberAsync删除知识空间成员租户令牌DELETE
UpdateSpaceSettingAsync更新知识空间设置租户令牌PUT

函数详细内容

获取知识空间列表

函数名称:获取有权限访问的知识空间列表

函数签名

csharp
Task<FeishuApiPageListResult<SpaceInfo>?> GetSpacesPageListAsync(
    [Query("page_size")] int page_size = 10,
    [Query("page_token")] string? page_token = null,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
page_sizeint⚪ 可选分页大小,默认 10
page_tokenstring?⚪ 可选分页标记,首次请求不传
cancellationTokenCancellationToken⚪ 可选取消操作令牌

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "items": [
      {
        "name": "产品文档库",
        "description": "产品相关文档",
        "space_id": "6870403571079249922",
        "space_type": "team",
        "visibility": "private",
        "open_sharing": "closed"
      }
    ],
    "page_token": "xxx",
    "has_more": false
  }
}

说明

  • 请确认应用或机器人拥有部分知识空间的访问权限,否则返回列表为空
  • 此接口为分页接口,由于权限过滤,可能返回列表为空,但当分页标记(has_more)为 true 时,可以继续分页请求
  • 此接口不会返回我的文档库

获取知识空间信息

函数名称:获取知识空间详细信息

函数签名

csharp
Task<FeishuApiResult<SpaceInfoResult>?> GetSpaceInfoAsync(
    [Path] string space_id,
    [Query("lang")] string? lang = "en",
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
space_idstring✅ 必填知识空间 ID,示例:6870403571079249922
langstring?⚪ 可选语言设置,默认 en。可选值:zh、en、ja 等
cancellationTokenCancellationToken⚪ 可选取消操作令牌

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "space": {
      "name": "产品文档库",
      "description": "产品相关文档",
      "space_id": "6870403571079249922",
      "space_type": "team",
      "visibility": "private",
      "open_sharing": "closed"
    }
  }
}

获取知识空间成员列表

函数名称:获取知识空间成员列表

函数签名

csharp
Task<FeishuApiResult<SpaceMemberResult>?> GetSpaceMemberPageListAsync(
    [Path] string space_id,
    [Query("page_size")] int page_size = 10,
    [Query("page_token")] string? page_token = null,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
space_idstring✅ 必填知识空间 ID
page_sizeint⚪ 可选分页大小,默认 10
page_tokenstring?⚪ 可选分页标记
cancellationTokenCancellationToken⚪ 可选取消操作令牌

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "members": [
      {
        "member_id": "ou_xxx",
        "member_type": "openid",
        "member_role": "admin",
        "member_name": "张三"
      }
    ],
    "page_token": "xxx",
    "has_more": false
  }
}

添加知识空间成员

函数名称:添加知识空间成员

函数签名

csharp
Task<FeishuApiResult<SpaceInfoResult>?> CreateSpaceMemberAsync(
    [Path] string space_id,
    [Body] CreateSpaceMemberRequest createSpaceMemberRequest,
    [Query("need_notification")] bool? need_notification = null,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
space_idstring✅ 必填知识空间 ID
createSpaceMemberRequestCreateSpaceMemberRequest✅ 必填添加成员请求体
need_notificationbool?⚪ 可选添加权限后是否通知对方
cancellationTokenCancellationToken⚪ 可选取消操作令牌

CreateSpaceMemberRequest 参数

参数名类型必填说明
member_typestring✅ 必填成员类型:openid、userid、email、unionid(租户身份无法使用 opendepartmentid
member_idstring✅ 必填成员 ID,类型由 member_type 决定
member_rolestring✅ 必填角色:admin(管理员)、member(成员)

说明

  • 调用此接口前,请确保应用为知识空间的管理员
  • 使用租户 access token 身份操作时,无法使用部门 ID (opendepartmentid) 添加成员
  • 公开知识空间不支持添加成员,但可以添加管理员
  • 个人知识空间不支持添加其他管理员,但可以添加成员

响应

json
{
  "code": 0,
  "msg": "success",
  "data": {
    "space": {
      "space_id": "6870403571079249922",
      "name": "产品文档库"
    }
  }
}

删除知识空间成员

函数名称:删除知识空间成员

函数签名

csharp
Task<FeishuApiResult<DeleteSpaceMemberResult>?> DeleteSpaceMemberAsync(
    [Path] string space_id,
    [Path] string member_id,
    [Body] DeleteSpaceMemberRequest deleteSpaceMemberRequest,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
space_idstring✅ 必填知识空间 ID
member_idstring✅ 必填成员 ID
deleteSpaceMemberRequestDeleteSpaceMemberRequest✅ 必填删除成员请求体
cancellationTokenCancellationToken⚪ 可选取消操作令牌

DeleteSpaceMemberRequest 参数

参数名类型必填说明
member_typestring✅ 必填成员类型
member_rolestring✅ 必填角色:admin、member
typestring?⚪ 可选协作者类型:user、chat、department

更新知识空间设置

函数名称:更新知识空间设置

函数签名

csharp
Task<FeishuApiResult<UpdateSpaceSettingResult>?> UpdateSpaceSettingAsync(
    [Path] string space_id,
    [Body] UpdateSpaceSettingRequest updateSpaceSettingRequest,
    CancellationToken cancellationToken = default);

认证:租户令牌

参数

参数名类型必填说明
space_idstring✅ 必填知识空间 ID
updateSpaceSettingRequestUpdateSpaceSettingRequest✅ 必填更新设置请求体
cancellationTokenCancellationToken⚪ 可选取消操作令牌

UpdateSpaceSettingRequest 参数

参数名类型必填说明
create_settingstring?⚪ 可选谁可以创建一级页面:admin/admin_and_member
security_settingstring?⚪ 可选可阅读用户可否创建副本/打印/导出/复制:allow/not_allow
comment_settingstring?⚪ 可选可阅读用户可否评论:allow/not_allow

代码示例

使用租户权限管理知识空间

csharp
public class WikiTenantService
{
    private readonly IFeishuTenantV2Wiki _wikiClient;

    public WikiTenantService(IFeishuTenantV2Wiki wikiClient)
    {
        _wikiClient = wikiClient;
    }

    // 获取应用有权限访问的知识空间列表
    public async Task<List<SpaceInfo>> GetAccessibleSpacesAsync()
    {
        var spaces = new List<SpaceInfo>();
        string? pageToken = null;

        do
        {
            var result = await _wikiClient.GetSpacesPageListAsync(
                page_size: 50,
                page_token: pageToken);

            if (result?.Data?.Items != null)
            {
                spaces.AddRange(result.Data.Items);
            }

            pageToken = result?.Data?.PageToken;
        } while (!string.IsNullOrEmpty(pageToken));

        return spaces;
    }

    // 获取空间详情
    public async Task<SpaceInfo?> GetSpaceDetailAsync(string spaceId)
    {
        var result = await _wikiClient.GetSpaceInfoAsync(spaceId);
        return result?.Data?.Space;
    }

    // 为空间添加成员
    public async Task<bool> AddMemberToSpaceAsync(
        string spaceId, 
        string userOpenId, 
        string role = "member")
    {
        var request = new CreateSpaceMemberRequest
        {
            MemberType = "openid",
            MemberId = userOpenId,
            MemberRole = role
        };

        var result = await _wikiClient.CreateSpaceMemberAsync(
            spaceId, 
            request, 
            need_notification: true);

        return result?.Code == 0;
    }

    // 更新空间设置
    public async Task<bool> UpdateSpaceSettingsAsync(
        string spaceId,
        string? createSetting = null,
        string? securitySetting = null)
    {
        var request = new UpdateSpaceSettingRequest
        {
            CreateSetting = createSetting,
            SecuritySetting = securitySetting
        };

        var result = await _wikiClient.UpdateSpaceSettingAsync(spaceId, request);
        return result?.Code == 0;
    }
}