跳转到内容

限制与错误

本页汇总跨 API 的通用规则。单个接口的必填字段、生命周期和字段语义仍以对应 API 页面为准。

项目限制
请求体大小最大 32KB。
Gateway 生成 ID32 位小写十六进制字符串。
频道密码通常为 8-128 字符。
op_id1-128 字符,只允许字母、数字、_:-
images最多 32 项,每项 URL 最大 2048 字符。
tags最多 32 项,每项最大 64 字符,trim 后去重。
metadata只支持标量值;key 最大 64,value 最大 512。
attrs对象补丁;null 表示删键;复杂嵌套应避免。
ttlUnix 毫秒时间戳;provider 投递 TTL 会被裁剪到最大约 28 天。
未知字段原生 Message、Event、Thing 和 MCP 工具参数都采用严格解析,未知字段会返回 400。

成功:

{
"success": true,
"data": {
"accepted": true
},
"error": null,
"error_code": null
}

失败:

{
"success": false,
"data": null,
"error": "human readable message",
"error_code": "machine_readable_code"
}

自动化脚本应优先判断 successerror_code,不要只依赖自然语言错误信息。

success=true 表示 Gateway 已处理请求。accepted=true 表示 Gateway 已进入分发流程。

它不保证:

  • 每台设备都已经在线。
  • APNs 或 FCM 已经展示系统通知。
  • Android 私有通道已经实时送达。
  • 用户没有被系统通知权限、专注模式或省电影响。

因此,accepted 是网关受理和分发状态,不是终端展示回执。

状态码含义典型原因处理建议
200请求已被 Gateway 处理success=true,但仍需查看 accepted保存返回的 ID 和 op_id
400请求校验失败缺少必填字段、未知字段、字段格式错误对照 API 字段表,检查 JSON 和大小写。
401网关级鉴权失败私有 Gateway 开启 PUSHGO_TOKEN,Bearer Token 缺失或错误检查 Authorization: Bearer <token>
404目标不存在频道、事件或实体不存在检查 channel_idevent_idthing_id
413请求体过大JSON 超过 32KB图片使用 URL;减少 metadata 或 attrs。
503分发未完整成功provider、私有通道、队列或下游暂时不可用查看 Gateway 日志、统计指标和队列容量。
  • JSON 是否合法。
  • 是否把 event_id 传给了 /event/create,或把 thing_id 传给了 /thing/create
  • 是否传了未声明字段。
  • severity 是否是 criticalhighnormallow
  • attrs 是否是对象补丁,而不是数组或复杂嵌套。
  • 是否在私有 Gateway 设置了 PUSHGO_TOKEN
  • Header 是否是 Authorization: Bearer <token>
  • 是否把频道密码误当成 Gateway Token。
  • 反向代理是否剥离了 Authorization Header。
  • 客户端是否已订阅该频道。
  • 设备通知权限是否开启。
  • Apple 设备是否受 APNs、专注模式或系统通知设置影响。
  • Android 是否能获取正确的 /gateway/profile
  • 私有通道端口、证书和外部地址是否可达。
  • Gateway 日志里是否有 provider 或 private dispatch 错误。
  • PUSHGO_PRIVATE_TRANSPORTS 是否启用。
  • WSS 是否能通过同一个 HTTPS 域名连接。
  • QUIC UDP 端口是否被防火墙或代理阻断。
  • Raw TCP 是否正确处理 TLS 或 TLS offload。
  • 宣告端口和实际监听端口是否被端口映射搞混。
  • PUSHGO_MCP_ENABLED 是否开启。
  • PUSHGO_PUBLIC_BASE_URL 是否是外部 HTTPS 地址。
  • 反向代理是否转发 /.well-known/*/oauth/*/mcp
  • DCR 是否与客户端能力匹配。
  • 绑定页面会话是否过期。