openlark-docs 0.17.0

飞书开放平台云文档服务模块 - 文档、表格、知识库API (202 APIs, 100% 覆盖,不含旧版本)
Documentation

openlark-docs

飞书开放平台云文档服务模块 - 文档、表格、知识库 API(202 APIs,100% 覆盖,不含旧版本)

功能概览

模块 API 数量 描述
CCM 174 云文档协同(文档、云盘、表格、知识库)
Bitable 49 多维表格
Base 0 基础服务
Baike 27 知识库
Minutes 4 会议纪要
总计 202 100% 覆盖

特性

  • 完整覆盖: 202 个 API,100% 实现覆盖率(排除 old 版本)
  • 类型安全: 基于 enum 的端点系统,编译时检查
  • 流式 API: Builder 模式,链式调用
  • 统一入口: DocsClient 作为唯一公开入口
  • 按需编译: 细粒度 feature,减少编译时间和二进制体积

入口定位

  • 单业务域 canonical 入口:openlark_docs::DocsClient
  • 配置入口:openlark_core::config::Config
  • 业务调用方式:docs.ccmdocs.basedocs.baikedocs.minutes
  • 如果你需要跨业务域统一客户端,再改用根 crate openlark 或高级入口 openlark-client

Canonical 公开入口规则见 ../../docs/PUBLIC_REEXPORT_POLICY.md

Docs request/response contract test 范围说明见 docs/CONTRACT_TEST_SCOPE.md。 README 对齐的可编译示例见 examples/docs_readme_examples.rs

功能选择(Feature Selection)

使用方式

Cargo.toml 中添加所需的 features:

[dependencies]
openlark-core = "0.15"
openlark-docs = { version = "0.15", features = ["your-features"] }

可用功能(Features)

核心功能

Feature 说明 依赖
core 核心功能

云文档协同(CCM)

Feature 说明 包含的 API
ccm 完整云文档协同功能 174 APIs
ccm-doc 文档处理 文档创建、获取、更新、删除
ccm-docx DOCX 文档 DOCX 文档处理
ccm-drive 云盘文件 文件上传、下载、删除
ccm-sheets 表格(默认 v3) 电子表格完整功能
ccm-sheets-v3 表格 v3(推荐) 稳定版本,现代化 API
ccm-sheets-v2 表格 v2(实验性) 基础表格操作(已弃用)
ccm-wiki 知识库 Wiki 空间、页面管理

多维表格(Bitable)

Feature 说明 包含的 API
bitable 多维表格 49 APIs
base 基础服务 基础服务支持

知识库(Baike)

Feature 说明 包含的 API
baike 知识库 27 APIs
wiki Wiki Wiki 空间、页面

语言服务(Lingo)

Feature 说明 包含的 API
lingo 飞书词典 词条高亮、实体提取

会议纪要(Minutes)

Feature 说明 包含的 API
minutes 会议纪要 4 APIs

云文档管理(Docs)

Feature 说明 包含的 API
docs 云文档管理 文档管理

公告管理(Docx)

Feature 说明 包含的 API
docx 公告管理 公告发布、查询

版本支持

Feature 说明
v1 API v1 版本
v2 API v2 版本
v3 API v3 版本

功能组合

Feature 说明 包含的模块
full 完整云文档功能 ccm, bitable, base, baike, minutes, v3

向后兼容别名

以下 feature alias 仅保留兼容职责,不再视为新的 canonical 入口:

Feature 说明
cloud-docs 云文档协同(别名)
all-cloud-docs 所有云文档功能(别名)

快速开始

基础使用

use openlark_core::{config::Config, SDKResult};
use openlark_docs::DocsClient;
use openlark_docs::ccm::docs::v1::GetDocsContentRequest;

#[tokio::main]
async fn main() -> SDKResult<()> {
    let config = Config::builder()
        .app_id("app_id")
        .app_secret("app_secret")
        .build();
    let docs = DocsClient::new(config);

    // 通过 DocsClient 获取业务域配置,再构建 Request
    let request = GetDocsContentRequest::new("doc_token", "docx", "markdown");
    let doc = openlark_docs::ccm::docs::v1::content::get::get_docs_content(
        request,
        docs.ccm.config(),
        None,
    )
    .await?;
    println!("Document: {:?}", doc);

    Ok(())
}

多维表格使用

# Cargo.toml
[dependencies]
openlark-core = "0.15"
openlark-docs = { version = "0.15", features = ["bitable"] }
use openlark_core::config::Config;
use openlark_docs::base::bitable::v1::GetAppRequest;
use openlark_docs::DocsClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = Config::builder()
        .app_id("app_id")
        .app_secret("app_secret")
        .build();
    let docs = DocsClient::new(config);

    // 访问多维表格(使用 Request 对象方式)
    let app = GetAppRequest::new(docs.base.bitable().config().clone())
        .app_token("app_token")
        .execute()
        .await?;
    println!("App token: {}", app.app.app_token);

    Ok(())
}

云文档协同使用

# Cargo.toml
[dependencies]
openlark-core = "0.15"
openlark-docs = { version = "0.15", features = ["ccm"] }
use openlark_core::config::Config;
use openlark_docs::DocsClient;
use openlark_docs::ccm::drive::v1::file::DownloadFileRequest;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = Config::builder()
        .app_id("app_id")
        .app_secret("app_secret")
        .build();
    let docs = DocsClient::new(config);

    // 访问云文档协同
    let _file = DownloadFileRequest::new(docs.ccm.config().clone(), "file_token")
        .execute()
        .await?;
    // 表格操作请参考 openlark_docs::ccm::sheets 模块

    Ok(())
}

知识库使用

# Cargo.toml
[dependencies]
openlark-core = "0.15"
openlark-docs = { version = "0.15", features = ["baike"] }
use openlark_core::config::Config;
use openlark_docs::baike::baike::v1::GetEntityRequest;
use openlark_docs::DocsClient;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let config = Config::builder()
        .app_id("app_id")
        .app_secret("app_secret")
        .build();
    let docs = DocsClient::new(config);

    // 访问知识库(使用 Request 对象方式)
    let entity = GetEntityRequest::new(docs.baike.config().clone(), "entity_id")
        .execute()
        .await?;
    println!("Entity exists: {}", entity.entity.is_some());

    Ok(())
}

性能优化建议

1. 选择性启用功能

仅启用您需要的功能模块:

# ❌ 不推荐:启用所有功能
openlark-docs = { version = "0.15", features = ["full"] }

# ✅ 推荐:仅启用所需功能
openlark-docs = { version = "0.15", features = ["bitable"] }  # 仅多维表格

2. 编译优化

# 发布版本使用更优化的编译配置
cargo build --release

# 检查优化后的二进制大小
ls -lh target/release/

3. 使用流式 Builder 模式

// ✅ 推荐:流式构建器
let request = CreateDocRequest::new(config, doc_body)
    .user_id_type(UserIdType::OpenId)
    .folder_token("folder_token");

// ❌ 不推荐:多次对象创建
let mut request = CreateDocRequest::new(config, doc_body);
request = request.user_id_type(UserIdType::OpenId);
request = request.folder_token("folder_token");

文档

许可证

项目许可证

贡献

欢迎贡献!请参阅 贡献指南

支持与反馈