错误
Partner API 使用标准 HTTP 状态码和 JSON 响应正文来说明请求失败的原因。
错误响应结构
大多数 API 错误会返回一个 JSON 正文,其中包含一条消息,并在可用时包含结构化详细信息。
{
"success": false,
"message": "Request body.members[0].member_id is required"
}
某些特定领域的端点会返回明确的状态和原因。例如,门禁控制失败会包含 reason、door_id、facility_id 和 event_id 等字段。
{
"status": "failed",
"reason": "device_offline",
"door_id": "00000000000000000000000000000007",
"facility_id": "550e8400-e29b-41d4-a716-446655440000",
"event_id": "00000000-0000-0000-0000-000000000045"
}
状态码
400 Bad Request
请求格式错误或缺少必填字段。请先修正请求再重试。
401 Unauthorized
身份验证失败。请检查您是否使用了 HTTP Basic Auth,并以 API 密钥作为用户名、密码留空。
403 Forbidden
密钥有效,但不允许执行该操作。常见原因包括使用只读密钥执行写入操作,或尝试访问未启用您的集成的设施。
404 Not Found
未找到请求的资源,或该资源对您的集成不可用。
409 Conflict
请求与资源的当前状态冲突。对于门禁控制,这可能包括门/闸机控制器处于维护模式。
422 Unprocessable Entity
请求是有效的 JSON,但未通过语义验证。请先修正数据再重试。
429 Too Many Requests
集成超出了文档所述的速率限制。请使用指数退避进行重试。
500 Internal Server Error
由于内部错误,Performance Hub 无法完成请求。请使用退避进行重试。如果问题仍然存在,请联系支持并提供端点、时间戳和响应正文。
503 Service Unavailable
某个依赖的服务或设备不可用。对于门/闸机控制器解锁,这可能表示控制器处于离线状态。
504 Gateway Timeout
操作超时。对于门/闸机控制器解锁,这表示在超时时间内未确认解锁。
Access Time Window 失败
时间窗口验证会在写入无效快照之前失败。常见的不可重试原因包括:
- 存在
access_time_windows时缺少access_time_windows_revision。 - 字符串、浮点数或疑似毫秒级的纪元时间值。
- 无效的 IANA 时区、颠倒的时间区间、重复的
external_id、重叠的每周时段,或未拆分的跨夜时段。 - 超出文档所述数量、长度或跨度限制的值。
重复的修订号但规范化内容不同时,返回 409 Conflict。请根据最新的权威状态进行对账并分配更新的修订号;不要继续重试存在冲突的组合。较旧的修订号会被报告为已跳过的过时快照,而不会覆盖较新的状态。未知或未映射的 scope_key 在授权时会按拒绝处理(fail closed),应将其视为配置警报。
如果投递超时或收到暂时性的 5xx,请使用相同的修订号重试完全相同的规范化快照。如果从上游源获取数据失败,请完全省略时间窗口字段;切勿以空数组代替。
重试指南
对以下错误使用有限次数的指数退避进行重试:
429500502503504
不要盲目重试以下错误:
400401403404409422
对于门禁控制,除非您自己的访问规则和安全流程另有规定,否则请始终将超时和离线响应视为解锁失败。
联系支持时需提供的详细信息
联系支持时,请提供:
- 端点和 HTTP 方法。
- 时间戳和时区。
- 合作伙伴密钥 ID,而非密钥本身。
- 使用的设施标识符。
- 您系统中的源记录 ID。
- 响应状态和正文。
event_id或command_id(如有)。