用途
feishu-cli-schema 是 feishu-cli 中的本地 OpenAPI 浏览命令,用于查询飞书 OpenAPI 方法的路径、HTTP 动词、参数、所需权限(scope)与官方文档链接。它与 feishu-cli api 命令组合,形成“查接口 → 补权限 → 调接口”的完整工作流。
主要能力
schema:本地浏览
采用三段式路径格式 <service>.<resource>.<method>:
- service:业务域,如 im / docs / drive / bitable / calendar / vc / mail / wiki / approval / sheets / slides / task / attendance / minutes。
- resource:资源,可含点号,按最长前缀匹配,如 messages / events / records / chat.members。
- method:动作,如 create / get / list / update / delete / patch。
按路径深度自动分发:
- 无参数 → 列出所有 service;
<service>→ 列出该 service 下所有 resource.method;<service>.<resource>→ 列出该 resource 下的所有 method;<service>.<resource>.<method>→ 显示 method 详情,含 path / 参数 / scope / docUrl。
数据来源为编译期 embed 的 internal/registry/meta_data.json(约 690KB),与 auth check 等模块共用同一份元数据。当前覆盖 12 个 service:approval / attendance / calendar / drive / im / mail / minutes / sheets / slides / task / vc / wiki。
api:通用透传调用(v1.29+)
feishu-cli api <method> <path> 可直接调用任意飞书 OpenAPI 端点,自动鉴权并翻译错误码,覆盖 2500+ 未封装 API。
使用方式
schema 命令示例
列出所有 service:
feishu-cli schema
# 等价:
feishu-cli schema list
列出某 service 的所有方法:
feishu-cli schema im
feishu-cli schema list --service im
feishu-cli schema list --service im --format json
列出 resource 下的方法:
feishu-cli schema im.messages
feishu-cli schema im.chat.members
查具体 method 详情:
feishu-cli schema im.messages.delete
feishu-cli schema im.messages.delete --format json
pretty 输出包含:HTTP verb 与完整 URL path、方法描述、Parameters(path / query / required 标记 + 类型 + 描述 + example)、Request Body(POST/PUT/PATCH/DELETE 才显示)、Response Body、Identity(tenant/user,指明支持的 Token 类型)、Scopes(所需权限点)、Docs(官方文档链接)。
关键 flag
--format pretty(默认):人类可读,表格 + 缩进字段树,适合终端阅读。--format json:原始 JSON(不转义 HTML),适合 AI Agent 解析、脚本拼装。--service <name>:仅 schema list 子命令使用,过滤 service,等价于schema <service>。
完整工作流(schema 查 + api 调)
# Step 1: schema 查 path + scope + token 类型
feishu-cli schema im.chats.create
# 输出: POST /open-apis/im/v1/chats
# Identity: tenant (bot)
# Scopes: im:chat
# Step 2: scope 不够时补
feishu-cli auth check --scope "im:chat"
feishu-cli auth login --scope "im:chat"
# Step 3: 直接调
feishu-cli api POST /open-apis/im/v1/chats \
--data '{"name":"测试群","description":"by feishu-cli api"}' \
--as bot
feishu-cli api 关键 flag
--params '<json>':Query 参数。--data '<json>':Body(POST/PUT/PATCH)。--data-file <path>:Body 从文件读(- 表示 stdin)。--as bot|user|auto:强制身份;auto = user 优先回退 bot。--dry-run:仅打印请求,不实际调。--format json|pretty|table|ndjson|csv:响应渲染格式。--jq '<expr>':内置 gojq 过滤响应。--raw:原样输出。--include-headers:stderr 打印响应头。--output <file>/-o:写入文件而非 stdout。--timeout <seconds>:自定义超时(默认 30s)。
内置错误码翻译(v1.29+)
feishu-cli api 收到业务错误时会自动打印中文解决方案,覆盖如:99991661/99991663/99991668/99991672/99991679/99991677(Token 失效或权限不足)、99991400(限流)、230001/230002/230020(scope 不足)、232033(外部群权限不足)、232011(Bot/用户不在群)、232006(chat_id 无效)、232025(App 未启用 Bot 能力)等。
URL 智能处理
自动剥除 https://open.feishu.cn / larksuite.com / larkoffice.com 前缀,自动补 /open-apis/ 前缀,自动拆解内嵌 query string,自动忽略 #fragment。
适用场景
- 查找飞书是否提供某个 API。
- 调用前查参数与 scope 要求。
- AI Agent 拿 JSON 推断调用方式。
- 直接透传调用未封装的 OpenAPI 端点。
限制
- 路径过深会报错,如
schema im.messages.delete.foo会提示多余片段。 - 路径不存在会分级提示可用候选名。
- resource 含点号时按最长前缀匹配,如
im.chat.members.create匹配 resource = chat.members、method = create。 - schema 命令只读,不发 HTTP 请求,不消耗配额。
- 覆盖范围限 12 个 service,未含 docx / bitable(base) / contact / authen / board / okr / tenant / application 等业务域;未列出即本地元数据未收录,需查飞书 OpenAPI Explorer 在线最新版。
- JSON 输出不转义 HTML,
</>/&保留原样。 - 若尚未安装 feishu-cli,需前往 riba2534/feishu-cli 获取安装方式。