1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
//! # OpenLark 文档服务模块
//!
//! 飞书开放平台云文档服务模块,提供文档、表格、知识库等 API 访问能力。
//! Docs helper 的设计与命名规范见 `docs/docs-helper-guidelines.md`。
//!
//! ## 文档模块业务域结构 (严格按照 bizTag/project/version/resource 组织)
//!
//! ### CCM - 云文档协同 (174 APIs)
//! - **docx**: 新版文档块与群公告(19 APIs)
//! - **drive**: 云空间文件管理(59 APIs)
//! - **sheets**: 电子表格(27 APIs)
//! - **wiki**: 知识库(16 APIs)
//! - **doc**: 文档基础服务
//! - **docs**: 云文档管理
//!
//! ### BASE - 基础服务 (49 APIs)
//! - **base**: 基础应用服务
//! - **bitable**: 多维表格(46 APIs)
//!
//! ### BAIKE - 企业知识库 (27 APIs)
//! - **baike**: 知识库空间和节点
//! - **lingo**: 知识库分类和实体
//!
//! ### MINUTES - 会议纪要 (4 APIs)
//! - **minutes**: 会议转录和纪要管理
//!
//! ## 快速开始
//!
//! ```rust,ignore
//! use openlark_core::config::Config;
//! 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 client = DocsClient::new(config);
//!
//! // 获取配置后构建 Request
//! let config = client.ccm.config().clone();
//! // 使用 openlark_docs::ccm::drive::v1::file::UploadAllRequest
//!
//! // 高频读取场景也可以直接使用 helper
//! let _records = client.search_bitable_records_all("app_token", "table_id").await?;
//! let _sheet = client.find_sheet_by_title("spreadsheet_token", "2026").await?;
//! let _range = client
//! .resolve_sheet_range_by_title("spreadsheet_token", "2026", "A1:C5")
//! .await?;
//! let _ranges = client
//! .read_sheet_ranges("spreadsheet_token", vec![_range.clone()])
//! .await?;
//! let _bytes = client.download_drive_file("file_token").await?;
//! let _records = client
//! .query_bitable_records(
//! openlark_docs::BitableRecordQuery::new("app_token", "table_id")
//! .where_equals("状态", "进行中"),
//! )
//! .await?;
//! let _wiki_node = client
//! .find_wiki_node_by_path("space_id", "产品文档/发布计划")
//! .await?;
//! let mut pager = client.folder_children_pager("folder_token").page_size(50);
//! let _first_page = pager.fetch_next_page().await?;
//!
//! Ok(())
//! }
//! ```
//!
//! ## 特性
//!
//! - ✅ **202 APIs 全覆盖** - 飞书云文档服务完整实现(不含旧版本)
//! - ✅ **类型安全** - 强类型请求/响应结构
//! - ✅ **异步支持** - 基于 tokio 的异步 API
//! - ✅ **版本化 API** - 支持 v1/v2/v3/v4 多版本 API
//! - ✅ **构建器模式** - 流畅的 API 调用体验
//! - ✅ **标准架构** - 严格按照 bizTag/project/version/resource/name.rs 模式组织
// Include macros first - 对所有功能都启用宏
// Core modules
/// 通用文档数据模型。
// 功能模块按业务域组织
/// 云文档协同能力模块。
/// 多维表格与基础服务模块。
/// 企业知识库模块。
/// 会议纪要模块。
// API版本模块
/// 版本兼容入口模块。
// 通用模块 - 工具宏和类型
/// 通用工具、链式 helper 与端点定义。
// Prelude模块 - 常用导入
/// 常用类型预导出模块。
// 重新导出主要类型
pub use BitableRecordQuery;
pub use DocsClient;
pub use TypedPage;
pub use WikiNodePath;
pub use ;
pub use ;
// === 入口设计说明 ===
//
// openlark-docs 采用简化的入口设计:
//
// 1. **DocsClient** (公开入口)
// - 唯一推荐的公开入口
// - 提供配置获取:`docs.ccm.config()`, `docs.base.bitable.config()`
// - 按业务域分组:`docs.ccm`, `docs.base`, `docs.baike`, `docs.minutes`
// - 自动根据 feature 裁剪编译
//
// 2. **使用方式**
// - 通过 DocsClient 获取配置
// - 使用 `*Request::new(config, ...)` 构建请求
// - 调用 `.execute().await?` 执行
//
// === 示例代码 ===
//
// ```rust
// use openlark_docs::DocsClient;
// use openlark_docs::ccm::drive::v1::file::UploadAllRequest;
//
// let docs = DocsClient::new(config);
//
// // 访问云盘服务
// let config = docs.ccm.config().clone();
// let request = UploadAllRequest::new(config, ...);
// let file = request.execute().await?;
//
// // 访问多维表格
// let config = docs.base.bitable.config().clone();
// let request = CreateTableRequest::new(config, ...);
// let table = request.execute().await?;
//
// // 高频 helper
// let records = docs.search_bitable_records_all("app_token", "table_id").await?;
// let sheet = docs.find_sheet_by_title("spreadsheet_token", "2026").await?;
// ```
//
// === 导出说明 ===
//
// 已移除所有 Service 类型,统一使用 Request 模式
// 用户应通过以下方式使用 API:
// 1. 从 `openlark_docs::*` 模块导入 Request 类型
// 2. 使用 `DocsClient` 获取配置
// 3. 构建并执行 Request