Skip to main content
云服务 API 用于开通项目云服务、获取连接凭证、管理云数据库、对象存储、云函数、认证方式和 Secret。首次接入可先阅读 云服务使用指南,再按本文查询具体参数。 适用分支:openapi-0915。核对日期:2026-09-10。 基础地址:https://meoo.com/open/v1

调用约定

所有接口使用 Authorization: Bearer <token>。系统集成使用具备相应 Scope 的团队成员短期 Token,或已授权的 OAuth Access Token;用户 API Key 可用于个人测试和临时调试。凭证所属租户必须能够访问目标项目,并且当前用户具备对应的项目操作权限。 project_id 是项目公开 URL ID,不是数据库主键;长度为 1~50,只能包含英文字母、数字、_-。本文示例先设置:
示例 Token 和项目 ID 均为占位符。执行写操作前请替换为自己的测试项目及数据。所有成功响应均为 HTTP 200,直接返回本文所示 JSON 对象,不包含 successresultdata 外层包装。请求体必须为 JSON 对象,不接受未列出的字段;客户端应容忍响应未来新增字段。 除数据库 SQL 结果中的时间值外,资源响应中的时间戳均为 Unix 毫秒,可能为 null。对象大小、存储桶大小上限、估算行数以字符串返回,避免整数精度损失。

接口与权限一览

下表路径均以 /projects/{project_id} 为前缀。不同 Scope 不会自动相互包含,例如 cloud.read 不能代替 cloud.credentials.readcloud.database.read 不能执行 SQL。 项目 API Key 只能访问绑定的项目;当前项目 API Key 默认权限集合不包含 cloud.credentials.readcloud.storage.write,这两类操作请使用已授予对应权限的成员短期 Token、OAuth Access Token 或用户 API Key。

开通与连接

开通项目云服务

所需权限:cloud.write 该接口同步完成云服务开通。首次开通成功后返回 status: "ready"created: true;已经开通的项目返回 created: false。无需获取任务 ID 或等待异步开通任务。 请求体可以省略,也可以传 {}
响应字段: 首次开通响应示例:
已开通时可能仅返回:
此接口开通云资源;应用的业务表、RLS 策略、客户端代码和 SDK 依赖仍需按实际业务配置。权益或数量额度不足时返回 403 quota_exceeded

获取云服务凭证

所需权限:cloud.credentials.read
这是高权限管理接口,响应禁止缓存(Cache-Control: private, no-store)。应在可信服务端调用,只将应用需要的 urlanon_key 配置给客户端。service_key 不得发送到浏览器、写入前端环境变量或日志。项目尚未开通时返回 409 cloud_not_enabled

云数据库

查询数据库状态

所需权限:cloud.database.read
响应只有一个 status 字段:
未开通是正常状态,HTTP 仍为 200;该接口不返回实例 ID、数据库地址或凭证。需要开通时调用 POST /projects/{project_id}/cloud

查询数据表结构

所需权限:cloud.database.read 返回 public Schema 中的数据表、字段和行级安全(RLS)信息,不接受自定义 Schema 参数。
columns[] 字段:

执行 SQL

所需权限:cloud.database.write,包括只执行 SELECT 的请求。 该接口接受查询、数据变更、表结构变更、权限变更、事务控制及多条 SQL,适用于可信服务端的数据库管理。应用用户的数据读写应通过应用客户端及对应 RLS 策略处理。 无需业务表即可执行的连通性示例:
响应最多 100 行且不超过 1 MiB。truncated: true 只表示返回的数据不完整,SQL 仍可能已经完整执行。响应超过 1 MiB 时返回 413 response_too_large,请通过列选择、过滤条件和 SQL 分页缩小结果。 同一请求中的多条 SQL 按同一事务执行,任一 SQL 语句失败时整次请求回滚。响应大小限制、请求超时和网络中断不等于数据库回滚;对有副作用的 SQL,先查询实际数据或表结构确认结果,再决定是否重试。 SQL 结果值的映射: SQL 语法、对象名称或约束错误返回 400 invalid_query,需要修改 SQL 后重试;云服务故障返回 502 upstream_error

对象存储

支持查询存储桶、分页查询对象、上传/覆盖对象及批量删除对象。本文接口不提供独立的存储桶创建、对象下载或下载链接签发操作;应用文件访问可使用云服务客户端的 Storage 能力。 所有 bucket_name 长度为 1~100,以英文字母或数字开头,其余字符允许英文字母、数字、._-。请使用真实存在的桶名,不要直接照搬示例 uploads

查询存储桶

所需权限:cloud.storage.read
桶本身的大小上限不改变下述 Open API 上传接口的单文件 5 MiB 上限。

查询对象列表

所需权限:cloud.storage.read Query 参数: 按对象名升序分页。翻页时保持相同的 bucket_nameprefix,原样传回令牌,不要自行解析或修改。
objects[] 字段:

上传或覆盖对象

所需权限:cloud.storage.write path 不能以 / 开头或结尾,不能含空路径段、... 或控制字符。文件写入还需满足目标桶的文件类型和大小配置。 以下内容 aGVsbG8= 解码后为 hello,目标桶需允许 text/plain
超过 5 MiB 时返回 413 artifact_too_large。此接口返回上传结果,不返回下载 URL。

删除对象

所需权限:cloud.storage.write

云函数

云函数运行在 Deno Edge Runtime,函数包的根目录应包含 index.tsfunction_name 长度为 1~64,必须以英文字母开头,其余字符仅允许英文字母、数字、_-

查询云函数

所需权限:cloud.function.read
返回 functions 数组,每个函数包含:

部署或更新云函数

所需权限:cloud.function.write 函数不存在时创建,名称已存在时更新。部署成功同步返回 HTTP 200 和函数信息;此接口不返回异步任务 ID。新建函数受云函数数量权益和项目额度约束。 准备 hello-world/index.ts,在该目录内部打包,避免 ZIP 多套一层目录。以下示例依赖 zip 和 Python 3,仅用于生成请求体:
响应中的 function 与上文函数列表的单项结构一致:
函数代码修改后需要重新部署,源码上传本身不会更新已部署函数。ZIP 超过 10 MiB 时返回 413 artifact_too_large;新增数量超限返回 403 quota_exceeded;数量权益暂时无法确认时可返回 503 service_unavailable 函数的业务调用通过云实例的 /functions/v1/{function_name} 入口完成,具体代码与应用登录态处理见 云服务使用指南。不要将 Open API 管理令牌作为应用用户 JWT 使用。

删除云函数

所需权限:cloud.function.write

查询云函数日志

所需权限:cloud.function.logs.read Query 参数: start_time 必须小于 end_time,单次范围不超过 1 小时。不传时间即查询最近 15 分钟。该接口不返回分页令牌;需要更长历史时按时间窗口分次查询。

用户认证方式

启用认证方式

所需权限:cloud.write 该接口启用指定认证方式,不提供禁用参数;不应通过省略某一方式或传空数组来关闭已启用方式。启用配置后,登录、注册、验证码等应用流程仍需在业务代码中接入。
响应 providers 只列出本次请求的认证方式:

Secret

Secret 适合保存云函数调用外部服务所需的密钥,函数中可通过 Deno.env.get('SECRET_NAME') 读取。接口只返回名称和更新结果,不返回 Secret 明文。 secret_name 长度为 1~128,必须以英文字母或 _ 开头,只能包含英文字母、数字和 _

查询 Secret 列表

所需权限:cloud.secret.read

创建或覆盖 Secret

所需权限:cloud.secret.write
示例使用占位值;真实集成应从服务端密钥配置生成请求,避免将明文复制到共享脚本、命令历史或日志。

删除 Secret

所需权限:cloud.secret.write
Secret 不存在时返回 404 not_found

限流与错误处理

所有调用都受凭证/应用及当前用户维度的限流约束。部分操作另有项目维度限制,同类写入共享下表对应的限制: 遇到 429 时按 Retry-After 响应头等待,不要立即密集重试。其他限流维度也可能先达到上限。 错误使用 application/problem+json
响应头也提供 X-Meoo-Trace-Id。常见错误如下: 项目冻结、封禁或其他不可操作状态还可能返回相应项目错误码。客户端应按 code 处理已知情况,并以 HTTP 状态码处理未来新增的错误码。