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.ccm、docs.base、docs.baike、docs.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);
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(())
}
多维表格使用
[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);
let app = GetAppRequest::new(docs.base.bitable().config().clone())
.app_token("app_token")
.execute()
.await?;
println!("App token: {}", app.app.app_token);
Ok(())
}
云文档协同使用
[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?;
Ok(())
}
知识库使用
[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);
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");
文档
许可证
项目许可证
贡献
欢迎贡献!请参阅 贡献指南。
支持与反馈