Skip to content

接口名称

Wiki 知识库(用户权限)- (IFeishuUserV2Wiki)

功能描述

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

本接口提供以用户身份对知识空间进行管理的能力,支持用户创建知识空间,适用于需要用户主动操作的场景。

参考文档

函数列表

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

函数详细内容

获取知识空间列表

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

函数签名

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⚪ 可选取消操作令牌

添加知识空间成员

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

函数签名

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、opendepartmentid、unionid
member_idstring✅ 必填成员 ID,类型由 member_type 决定
member_rolestring✅ 必填角色:admin(管理员)、member(成员)

说明

  • 调用此接口前,请确保调用身份对应的应用或用户为知识空间的管理员
  • 公开知识空间不支持添加成员,但可以添加管理员
  • 个人知识空间不支持添加其他管理员,但可以添加成员

删除知识空间成员

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

函数签名

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
Task<FeishuApiResult<SpaceInfoResult>?> CreateSpaceAsync(
    [Body] CreateSpaceRequest createSpaceRequest,
    CancellationToken cancellationToken = default);

认证:用户令牌

参数

参数名类型必填说明
createSpaceRequestCreateSpaceRequest✅ 必填创建空间请求体
cancellationTokenCancellationToken⚪ 可选取消操作令牌

CreateSpaceRequest 参数

参数名类型必填说明
namestring?⚪ 可选知识空间名称
descriptionstring?⚪ 可选知识空间描述
open_sharingstring?⚪ 可选分享状态:open、closed

响应

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

代码示例

使用用户权限创建和管理知识空间

csharp
public class WikiUserService
{
    private readonly IFeishuUserV2Wiki _wikiClient;

    public WikiUserService(IFeishuUserV2Wiki wikiClient)
    {
        _wikiClient = wikiClient;
    }

    // 创建新的知识空间
    public async Task<SpaceInfo?> CreateNewSpaceAsync(string name, string? description = null)
    {
        var request = new CreateSpaceRequest
        {
            Name = name,
            Description = description,
            OpenSharing = "closed"
        };

        var result = await _wikiClient.CreateSpaceAsync(request);
        return result?.Data?.Space;
    }

    // 获取当前用户可访问的知识空间
    public async Task<List<SpaceInfo>> GetMySpacesAsync()
    {
        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<bool> AddDepartmentToSpaceAsync(
        string spaceId, 
        string departmentOpenId)
    {
        var request = new CreateSpaceMemberRequest
        {
            MemberType = "opendepartmentid",
            MemberId = departmentOpenId,
            MemberRole = "member"
        };

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

        return result?.Code == 0;
    }
}