Install
openclaw skills install @thcjp/api-gatewayopenclaw skills install @thcjp/api-gateway托管式 API 网关路由服务。通过统一的 API 路由地址 https://api.maton.ai/ 连接第三方服务,提供连接管理、触发器管理与安全审批流程.
范围外(本技能不做): 自建 API 代理服务器、OAuth 服务端部署、API Key 生成与分发.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | API网关集成路由处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| API网关集成路由含连接管理 | 不支持 | 支持 |
| 深度漏洞扫描与CVE关联 | 不支持 | 支持 |
| 安全基线合规审计 | 不支持 | 支持 |
| 批量资产风险评分 | 不支持 | 支持 |
| 威胁情报实时订阅与告警 | 不支持 | 支持 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="your_api_key_here"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
https://api.maton.ai/<app>/... 路由访问 Slack、Gmail、Stripe 等服务--connection 指定账户maton CLI、JavaScript fetch、Python requests 三种方式针对统一路由,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供统一路由相关的配置参数、输入数据和处理选项. 输出: 返回统一路由的处理结果。- 验证返回数据的完整性和格式正确性
统一路由的配置文档进行参数调优针对连接,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供连接管理相关的配置参数、输入数据和处理选项. 输出: 返回连接管理的处理结果。- 验证返回数据的完整性和格式正确性
连接管理的配置文档进行参数调优针对触发器,自动解析输入参数、调度任务队列、格式化输出,返回结构化响应. 输入: 用户提供触发器管理相关的配置参数、输入数据和处理选项. 输出: 返回触发器管理的处理结果。- 验证返回数据的完整性和格式正确性
触发器管理的配置文档进行参数调优https://api.maton.ai/slack/api/conversations.list?types=public_channel&limit=10
https://api.maton.ai/google-mail/gmail/v1/users/me/messages
https://api.maton.ai/stripe/v1/customers?limit=10
https://api.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10
第一个路径段是 app 标识符(如 slack、google-mail、stripe、salesforce).
MATON_API_KEY 或 OAuth token--connection 标志或 Maton-Connection 头确保请求发往正确账户maton whoami
maton connection list
# 列出 Slack 频道
maton slack channel list --types public_channel --limit 10
# ...
# 列出 Stripe 客户
maton stripe customer list -L 10
展示: 连接 ID、端点路径、请求体、预期结果。等待用户明确批准.
# 用户批准后执行
maton api '/slack/api/chat.postMessage' -X POST -d '{"channel":"C0123456789","text":"Hello"}'
场景: 用户需要查看 Slack 工作区的公开频道列表
maton slack channel list --types public_channel --limit 10
说明: 只读 GET 操作,无需额外批准。返回频道 ID 与名称列表.
场景: 用户需要查询 Salesforce 联系人
CLI:
maton salesforce query 'SELECT Id,Name FROM Contact LIMIT 10'
Python:
import urllib.request, os, json
req = urllib.request.Request('https://api.maton.ai/salesforce/services/data/v64.0/query?q=SELECT+Id,Name+FROM+Contact+LIMIT+10')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
说明: SOQL 查询为只读操作,返回联系人 ID 与姓名.
场景: 收到新邮件时自动发送 Slack 通知
maton trigger create --source google-mail --event-type email.received \
--connection-id {connection_id} \
--parameter labels=INBOX \
--destination '{"url":"https://api.maton.ai/slack/api/chat.postMessage","method":"POST","name":"slack","headers":{"Authorization":"Bearer '"$MATON_API_KEY"'","Content-Type":"application/json"},"body_template":"{\"channel\": \"C0123456789\", \"text\": \"New email: {{ payload.snippet }}\"}"}'
说明: 创建触发器监听 Gmail 收件事件,新邮件到达时自动向 Slack 频道发送通知。触发器支持事件检查点,中断后从上次位置恢复.
场景: 用户需要列出非欠款客户
maton stripe customer list -L 10 --json --jq '.data | map(select(.delinquent == false))'
说明: 使用 --jq 过滤 delinquent == false 的客户,只读操作.
| 错误场景 | HTTP 状态码 | 原因分析 | 处理方式 |
|---|---|---|---|
| 缺少连接 | 400 | 请求的 app 未创建连接 | 通过连接管理创建对应服务的连接 |
| API Key 无效 | 401 | MATON_API_KEY 缺失或失效 | 运行 maton whoami 验证,重新设置 Key |
| 速率超限 | 429 | 超过 10 请求/秒/账户 | (1s/2s/4s),降低请求频率 |
| 服务授权过期 | 500 | 第三方 OAuth token 过期 | 创建新连接完成重新授权,删除旧连接 |
| App 名称错误 | 400 | 路由首段 app 标识符不正确 | 查阅支持服务列表,使用正确标识符(如 google-mail 非 gmail) |
| curl 括号解析错误 | — | URL 含 fields[]、sort[] 等括号 | curl 命令加 -g 标志禁用 glob 解析 |
| 媒体上传 URL 异常 | — | LinkedIn 等返回不同 host 的预签名上传 URL | 使用 Python urllib 上传,确认 host 匹配服务域名,不上传到意外域名 |
A: NPM 安装: npm install -g @maton/cli;Homebrew 安装: brew install maton-ai/cli/maton。安装后运行 maton whoami 验证.
A: 每账户 10 请求/秒。同时,目标 API 自身的速率限制也适用。建议实现指数退避(1s/2s/4s)处理 429 响应.
A: 写操作(POST/PUT/PATCH/DELETE)会修改数据,部分操作不可逆。所有写操作前需向用户展示连接 ID、端点路径、请求体与预期结果,等待明确批准后才执行。高危操作(发消息、删除、计费变更等)需额外审查.
A: QuickBooks 路由中使用 :realmId 占位符,网关自动替换为已连接的 realm ID。例如 /quickbooks/v3/company/:realmId/query.
A: 不会。触发器监听使用检查点机制,每个事件处理后将最后处理的事件 ID 写入 per-trigger 状态文件。重启监听从上次位置恢复,中断的批次不会重新执行已处理事件.
A: LinkedIn 等服务返回预签名上传 URL 指向不同 host(如 www.linkedin.com 而非 api.linkedin.com)。这些 URL 已预签名,不需要 Authorization 头。必须使用 Python urllib 上传(URL 含 %253D 等编码字符,curl 会损坏)。仅跟随预期服务域名的上传 URL.
MATON_API_KEY,无 Key 环境无法使用urllib,curl 可能损坏编码字符https://api.maton.ai/,不支持私有部署{
"success": true,
"data": {
"result": "API网关集成路由处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "api-gateway"
}
},
"execution_log": [
"解析输入参数",
"执行核心处理",
"格式化输出结果"
],
"error": null
}