石墨文档中台-开发文档
    • 1. 适用范围
    • 00. 概述
      • 石墨文档中台能做什么?
      • 三种典型的业务接入场景
      • 石墨文档中台支持哪些格式?
    • 01. 快速开始
      • 基本概念
      • 场景一:10 分钟创建预览文件
      • 场景二:10 分钟创建协同编辑文件
    • 02. 鉴权与安全
      • 整体概述
      • 签名凭证 Token
      • 签名凭证 Signature
    • 03. 文件预览
      • 整体概述
      • 如何预热预览缓存
      • 如何防盗链
      • 常见问题处理
    • 04. 文件编辑
      • 整体概述
      • 协同文档权限设计
      • 协同文件保存与更新机制
      • 协同文件复制与删除
    • 05. 文件导入导出
      • 整体概述
      • 常见问题处理
    • 06. 石墨前端 API
      • 整体概述
      • 公共 API
        • 公共处理方法
        • 顶部栏定制 HeaderBars
      • 编辑器 API
        • 轻文档
        • 传统文档
        • 表格
        • 幻灯片
        • 表单
        • 应用表格
    • 07. 石墨后端 API
      • 整体概述
      • 错误码说明
      • 文件-预览 API
        • 访问预览文件
        • 创建文件预览缓存
      • 文件-协同编辑文件管理 API
        • 访问协同编辑文件
        • 创建协同文件
        • 创建协同文件副本
        • 删除协同文件
      • 文件-导入导出 API
        • 文件导入
          • 文件导入说明
          • 创建导入任务
          • 获取导入进度
          • 创建导入任务(旧版)
          • 获取导入进度(旧版)
        • 文件导出
          • 文件导出流程
          • 创建导出任务
          • 获取导出进度
      • 文件-表格文件(Excel) API
        • 表格接口参数说明
        • 获取表格内容
        • 获取表格中的评论数
        • 更新表格内容
        • 追加表格内容
        • 删除表格行
        • 新增表格工作表
      • 文件-文稿文件(Word) API
        • 文稿书签说明
        • 读取文稿书签内容
        • 替换文稿书签内容
      • 文件-文档文件(类 Markdown) API
        • 获取文档中的评论列表
      • 文件-应用表格文件(多维表格)API
        • 应用表格列及单元格值结构
        • 应用表格接口调用规则
        • 获取数据表列表
        • 创建数据表
        • 获取字段列表
        • 创建字段
        • 更新字段
        • 删除字段
        • 新增行
        • 获取单行
        • 更新行
        • 删除行
      • 文件-获取额外信息 API
        • 获取文件的纯文本内容
        • 文件纯文本字数统计
        • 获取文件的历史列表
        • 获取文件的版本列表
        • 获取文件内容中所有的 @ 人信息列表
        • 还原文件历史版本
      • 系统管理 API
        • 应用管理
          • 获取应用详情
          • 更新应用回调地址
        • 用户席位管理
          • 用户席位状态说明
          • 获取用户列表和席位状态
          • 激活用户席位​
          • 取消用户席位​
          • 批量设置用户席位
      • 其他 API
        • 上报事件
        • 创建行为历史
        • 推送文件内全部的用户
        • 推送用户全部的 websocket 连接
      • 获取行列表
    • 08. 回调接口(你的应用需实现的接口)
      • 整体概述
      • 文件信息
        • 文件权限说明
        • [重要] 获取文件元信息-协同文档
        • [重要] 获取文件元信息-预览文档
        • 获取当前用户的文件列表
        • 获取文件的协作者列表
        • 获取接入方指定文件的完整访问地址
        • 获取文件元信息-协同文档自动任务(admin)
        • 根据指定用户获取文件元信息-协同文档(admin)
      • 用户信息
        • 批量获取用户信息(admin)
        • [重要] 获取当前用户信息
        • 获取当前用户所在团队信息
        • 获取指定用户信息
        • 获取用户水印信息
        • 获取用户部门路径
        • 批量获取用户信息
      • 团队和部门
        • 特殊部门 ID 说明
        • 获取团队下的成员列表
        • 获取部门信息
        • 获取部门的下级部门节点
        • 获取部门下的成员分页列表
      • 搜索功能
        • 获取与文件相关的用户列表
        • 获取与文件相关的文件列表
        • 按关键字搜索文件和用户列表
      • 事件推送
        • 整体概述
        • 评论(Comment)
          • 轻文档
            • 添加评论
            • 删除评论
            • 结束评论
            • 对于评论的回复评论
          • 表格
            • 添加评论
            • 删除评论
            • 结束评论
            • 对于评论的回复评论
          • 传统文档
            • 对于评论的回复评论
            • 添加评论
            • 更新评论
            • 删除评论
          • 幻灯片
            • 添加评论
            • 删除评论
            • 结束评论
            • 对于评论的回复评论
          • 应用表格
            • 添加评论
            • 对于评论的回复评论
            • 删除评论
        • 讨论(Discussion)
          • 轻文档
            • 发送讨论消息
        • 提及(MentionAt @ 人)
          • 轻文档
            • 在评论中 at
            • 在讨论中 at
            • 在正文中 at
          • 表格
            • 在评论中 at
            • 在正文中 at
          • 传统文档
            • 在评论中 at
            • 在正文中 at
          • 应用表格
            • 在评论中 at
            • 在正文中 at
        • 日期提醒 (DateMention)
          • 轻文档
            • 创建
            • 修改
            • 删除
          • 表格
            • 创建
            • 修改
            • 删除
          • 传统文档
            • 创建
            • 修改
            • 删除
        • 文件内容更新 (FileContent)
          • 文件内容更新
        • 文档协作者协同状态变化 (Collaborator)
          • 文档协作者协同状态变化
        • 文件版本 (Revision)
          • 版本
        • 系统事件 (System)
          • 系统事件
        • 回调请求错误(实验性)
          • 回调请求错误
    • 09. 核心模型
      • 你的应用如何设计应用(app)模型?
      • 你的应用如何设计文件数据模型?
      • 你的应用如何设计通讯录模型?
      • 你的应用系统如何设计文件权限模型?
    • 10. 典型场景方案
      • 云盘场景
      • IM 场景
      • 示例代码仓库
    • 11. 常见问题
      • 访问接口提示 Signature
      • 文件预览或导入报错
      • 首次接入 SDK 报错
      • 文档预览如何做防盗链
      • 复制粘贴、全屏操作不正常
      • 如何实现文档模板功能
      • 文档内容何时保存
      • 移动端不支持 blob 协议导致预览失败
      • 如何实现文件重命名
      • 如何通过接口修改文档内容
      • @人员时如何直接跳转至对应锚点

    1. 适用范围

    本文档适用于 SDK OpenAPI 数据表接口:
    {sdkPathPrefix}/sdk/v2/api/table-api/openapi/v1/tables

    2. 通用规则#

    2.1 请求 Header#

    所有接口必须携带:
    提交 JSON 请求体时必须携带:
    错误信息国际化可选携带:

    2.2 鉴权规则#

    操作类型权限要求
    查询表、字段、行文件读权限
    创建表、创建字段、更新字段、删除字段、创建行、更新行、删除行文件写权限
    文件开启高级权限时,接口直接返回 403。

    2.3 通用成功响应#

    {
      "code": 0,
      "msg": "success",
      "data": {}
    }

    2.4 通用错误响应#

    {
      "code": 70000,
      "message": "请求参数错误"
    }
    说明:code 为数字业务错误码;鉴权签名或 Token 无效时可能直接返回 401 {"error":"Unauthorized"},不包含业务错误码。

    3. 基础接口#

    3.1 获取数据表列表#

    兼容参数:
    规则:
    项说明
    必填参数baseGuid 或 base_guid
    权限读权限
    高级权限开启时返回 403

    3.2 创建数据表#

    请求体:
    {
      "baseGuid": "base_xxx",
      "name": "客户表",
      "withoutInitRows": false,
      "cols": [
        {
          "name": "客户名称",
          "type": "SingleLineText",
          "props": {}
        }
      ]
    }
    规则:
    项说明
    必填字段baseGuid、name
    权限写权限
    高级权限开启时返回 403
    表名长度1-31 个字符
    初始字段cols 至少包含一列,第一列为主键列
    主键列类型SingleLineText、LongText、SingleChoice、Number、Percent、AutoNumber、Date
    特殊 propsCheckBox 和 Rate 字段必须符合 3.4 中的 props 规则

    3.3 获取字段列表#

    规则:
    项说明
    路径参数guid 为数据表 guid
    权限读权限

    3.4 新增字段#

    请求体:
    {
      "name": "金额",
      "type": "Number",
      "props": {
        "precision": 2
      },
      "viewGuid": "view_xxx",
      "targetGuid": "col_xxx"
    }
    支持字段类型: SingleLineText
    Number
    LongText
    Date
    SingleChoice
    MultipleChoice
    Percent
    Link
    CheckBox
    Rate
    Cascade
    规则:
    项说明
    必填字段name、type、viewGuid
    权限写权限
    字段名长度1-100 个字符
    字段名唯一性同一数据表内不可重复
    类型限制只能使用上述支持字段类型
    targetGuid在指定字段后创建;空字符串表示创建为第一列并切换为主键列
    第一列类型仅允许当前新增字段接口支持的主键类型:SingleLineText、LongText、SingleChoice、Number、Percent、Date
    CheckBox props:
    {
      "type": "check"
    }
    type 仅允许:check、star、close。
    Rate props:
    {
      "count": 5,
      "icon": "star"
    }
    count 必须为 1-10;icon 仅允许:star、flame、heart、honor、stone。

    3.5 更新字段#

    请求体:
    {
      "name": "成交金额",
      "type": "Number",
      "props": {
        "precision": 2
      }
    }
    规则:
    项说明
    路径参数guid 为数据表 guid,colGuid 为字段 guid
    权限写权限
    可更新字段name、type、props
    字段名长度1-100 个字符
    字段名唯一性同一数据表内不可重复
    类型限制只能使用新增字段接口列出的支持字段类型
    特殊 props更新为 CheckBox/Rate 或更新这两类字段的 props 时,必须符合 3.4 的规则
    主键列类型主键列修改类型时,仅允许当前更新字段接口支持的主键类型:SingleLineText、LongText、SingleChoice、Number、Percent、Date
    历史值转换不自动转换历史行值

    3.6 删除字段#

    规则:
    项说明
    路径参数guid 为数据表 guid,colGuid 为字段 guid
    权限写权限
    字段不存在返回 400

    3.7 获取行列表#

    规则:
    参数必填说明
    guid是数据表 guid
    pageSize否默认 10,最大 100
    offset否起始 row guid
    viewGuid否不传时使用默认视图

    3.8 获取单行#

    规则:
    项说明
    路径参数guid 为数据表 guid,rowGuid 为行 guid
    权限读权限
    行不存在返回 404

    3.9 新增行#

    请求体:
    {
      "rows": [
        {
          "客户名称": "石墨",
          "金额": 123.45,
          "状态": "待跟进"
        }
      ]
    }
    规则:
    项说明
    必填字段rows
    权限写权限
    单次行数1-2000
    valueMap key使用字段名称
    单选字段值使用选项名称
    多选字段值使用选项名称数组
    注:不支持附件列单元格值的更新,涉及需要先上传附件,功能不在本次接口范围内,下面的更新行也是一样

    3.10 更新单行#

    请求体:
    {
      "valueMap": {
        "客户名称": "石墨文档",
        "金额": 200,
        "状态": "待跟进"
      }
    }
    规则:
    项说明
    必填字段valueMap
    权限写权限
    valueMap key使用字段名称
    未传字段不更新
    单选字段值使用选项名称
    多选字段值使用选项名称数组

    3.11 删除行#

    规则:
    项说明
    路径参数guid 为数据表 guid,rowGuid 为行 guid
    权限写权限
    行不存在返回 404

    4. 复合操作调用规则#

    4.1 字段类型转换#

    适用场景:
    字段 type 发生变化,且历史行值需要同步转换
    调用顺序:
    1.
    GET /tables/{guid}/columns
    2.
    GET /tables/{guid}/rows
    3.
    调用方计算转换后的行值
    4.
    PUT /tables/{guid}/columns/{colGuid}
    5.
    PATCH /tables/{guid}/rows/{rowGuid}
    规则:
    项说明
    字段定义变更通过 PUT columns/{colGuid} 完成
    历史值变更通过 PATCH rows/{rowGuid} 完成
    转换逻辑调用方负责计算
    事务性多次 HTTP 调用不保证原子性
    失败处理PATCH row 失败时调用方记录失败行并重试
    示例:
    将“金额”字段从 SingleLineText 转为 Number
    先更新字段:
    {
      "type": "Number",
      "props": {
        "precision": 2
      }
    }
    再更新历史行:
    {
      "valueMap": {
        "金额": 123.45
      }
    }

    4.2 字段属性变更导致历史值失效#

    适用场景:
    字段 props 变化后,部分历史值不再合法
    典型场景:
    场景处理方式
    删除单选选项清空或替换引用该选项的历史值
    删除多选选项从历史多选值中移除该选项
    多选转单选将数组值转换为单个值
    数字精度或范围变化调整不符合新规则的历史值
    调用顺序:
    1.
    GET /tables/{guid}/rows
    2.
    调用方计算需要修正的行值
    3.
    PUT /tables/{guid}/columns/{colGuid}
    4.
    PATCH /tables/{guid}/rows/{rowGuid}
    规则:
    项说明
    字段属性变更通过 PUT columns/{colGuid} 完成
    历史值修正通过 PATCH rows/{rowGuid} 完成
    修正范围只更新受影响行

    4.3 删除字段#

    调用接口:
    规则:
    项说明
    删除字段只调用删除字段接口
    额外行更新不需要调用
    日期提醒当前无公开 OpenAPI 处理

    4.4 删除行#

    调用接口:
    规则:
    项说明
    删除单行只调用删除行接口
    删除多行逐行调用删除行接口
    删除父子记录调用方先展开子记录,再逐行删除
    日期提醒当前无公开 OpenAPI 处理
    推荐顺序:
    1.
    DELETE child row
    2.
    DELETE parent row

    4.5 更新单元格#

    调用接口:
    规则:
    项说明
    单元格更新通过 valueMap 更新
    清空单元格字段值传 null
    日期提醒当前无公开 OpenAPI 处理

    5. 复合操作对照表#

    业务操作必须调用接口需要调用方补充调用说明
    字段类型转换PUT columns/{colGuid}PATCH rows/{rowGuid}历史值转换由调用方负责
    字段属性变更PUT columns/{colGuid}PATCH rows/{rowGuid}仅修正受影响行
    删除字段DELETE columns/{colGuid}无日期提醒暂无公开接口
    删除行DELETE rows/{rowGuid}无多行删除需逐行调用
    删除父子记录DELETE rows/{rowGuid}调用方展开子记录先删子记录,再删父记录
    更新单元格PATCH rows/{rowGuid}无清空值传 null
    新增字段POST columns无不自动补历史行值
    新增行POST rows无初始值在请求体中传入

    6. 调用方必须保证的事项#

    1.
    字段类型转换前,调用方必须先读取旧字段定义和历史行值。
    2.
    字段类型转换后,如历史值需要变化,调用方必须逐行调用更新行接口。
    3.
    字段属性变更后,如历史值不再合法,调用方必须逐行修正。
    4.
    多次接口调用不具备事务性,调用方必须处理部分成功和重试。
    5.
    批量行处理必须分页读取,单次新增行不得超过 2000。
    6.
    删除多行或父子记录时,调用方必须自行拆分为多次删除行调用。
    7.
    当前公开 OpenAPI 不提供日期提醒更新接口,调用方不得假设日期提醒会被同步处理。

    7. 错误码与触发原因#

    7.1 通用错误码#

    除特别说明外,下表适用于全部 OpenAPI 接口。
    HTTP 状态业务错误码含义常见触发原因
    40070000请求参数错误JSON 格式错误、必填字段缺失、字段格式或业务校验不通过
    40070004字段不存在更新或删除的 colGuid 在数据表中不存在
    40070012请求体过大Compose 数据超过服务允许的消息大小
    40120000认证信息无效X-Shimo-User-ID 无法解析等身份信息错误
    401无业务码签名或 Token 无效X-Shimo-Signature、X-Shimo-Token 缺失、过期或校验失败;响应可能为 {"error":"Unauthorized"}
    40320000无访问权限没有文件读权限、写权限,或上游文件服务拒绝访问
    40320000高级权限不支持文件已开启高级权限,OpenAPI 拒绝访问
    40470001文件不存在baseGuid 对应的文件不存在
    40470002数据表不存在路径中的数据表 guid 不存在
    40470003视图不存在viewGuid 不存在,或数据表没有可用默认视图
    40470005行不存在rowGuid 对应的行不存在
    40870006请求超时或取消调用下游服务或同步 Compose 超时,请求上下文被取消
    50010000服务内部错误下游 RPC、存储、Compose 或其他未映射为明确业务错误码的异常;message 中包含 traceId

    7.2 各接口错误原因#

    GET /tables#

    HTTP 状态业务错误码触发原因
    40070000未传 baseGuid/base_guid,或值为空
    40320000没有文件读权限,或文件已开启高级权限
    40470001baseGuid 对应文件不存在
    40870006请求超时或被取消
    50010000查询文件、权限、高级权限状态或数据表列表失败

    POST /tables#

    HTTP 状态业务错误码触发原因
    40070000JSON 无法解析,baseGuid/name 缺失,cols 为空或包含 nil 字段
    40070000第一列不是允许的主键列类型
    40070000CheckBox 的 type 非 check/star/close,或 Rate 的 count/icon 不合法
    40070000数据表名称长度不在 1-31 个字符范围内
    40070012建表 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001baseGuid 对应文件不存在
    40870006同步创建超时或请求被取消
    50010000权限检查、名称调整、Compose、创建后查询等下游操作失败

    GET /tables/{guid}/columns#

    HTTP 状态业务错误码触发原因
    40320000没有文件读权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006请求超时或被取消
    50010000字段查询或下游服务失败

    POST /tables/{guid}/columns#

    HTTP 状态业务错误码触发原因
    40070000JSON 无法解析,或必填 viewGuid 缺失
    40070000字段类型不在支持范围内
    40070000targetGuid 为空时,字段类型不符合主键列类型限制
    40070000字段 props 无效;CheckBox/Rate 不符合特殊 props 规则
    40070000字段名为空、超过 100 个字符,或与已有字段重名
    40070012创建字段 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006同步创建超时或请求被取消
    50010000字段查询、Compose 或下游存储操作失败

    PUT /tables/{guid}/columns/{colGuid}#

    HTTP 状态业务错误码触发原因
    40070000JSON 无法解析,或 name/type/props 均未提供有效更新
    40070000字段类型不受支持,字段名为空或超过 100 个字符
    40070000主键列被修改为不允许的类型
    40070000字段 props 无效;CheckBox/Rate 不符合特殊 props 规则
    40070000字段名称与已有字段重名
    40070004colGuid 对应字段不存在
    40070012更新字段 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006同步更新超时或请求被取消
    50010000字段查询、Compose、更新后查询或下游操作失败

    DELETE /tables/{guid}/columns/{colGuid}#

    HTTP 状态业务错误码触发原因
    40070004colGuid 对应字段不存在
    40070012删除字段 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006同步删除超时或请求被取消
    50010000字段查询、Compose 或下游删除操作失败

    GET /tables/{guid}/rows#

    HTTP 状态业务错误码触发原因
    40320000没有文件读权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40470003viewGuid 不存在,或未传 viewGuid 且数据表没有默认视图
    40870006查询超时或请求被取消
    50010000视图、行、字段或用户信息查询失败

    GET /tables/{guid}/rows/{rowGuid}#

    HTTP 状态业务错误码触发原因
    40320000没有文件读权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40470005rowGuid 对应行不存在
    40870006查询超时或请求被取消
    50010000行、字段或用户信息查询失败

    PATCH /tables/{guid}/rows/{rowGuid}#

    HTTP 状态业务错误码触发原因
    40070000JSON 无法解析,valueMap 缺失,或转换后的更新数据校验失败
    40070012更新行 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006同步更新超时或请求被取消
    50010000字段查询、Compose、更新后查询或下游操作失败

    DELETE /tables/{guid}/rows/{rowGuid}#

    HTTP 状态业务错误码触发原因
    40070012删除行 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40470005rowGuid 对应行不存在
    40870006同步删除超时或请求被取消
    50010000行查询、Compose 或下游删除操作失败

    POST /tables/{guid}/rows#

    HTTP 状态业务错误码触发原因
    40070000JSON 无法解析,rows 缺失或为空
    40070000单次 rows 数量超过 2000
    40070012创建行 Compose 消息过大
    40320000没有文件写权限,或文件已开启高级权限
    40470001数据表所属文件不存在
    40470002数据表不存在
    40870006同步创建超时或请求被取消
    50010000字段查询、值转换、Compose、创建后查询或下游操作失败
    修改于 2026-07-20 02:30:00
    下一页
    石墨文档中台能做什么?
    Built with