沙箱能判断什么,不能判断什么?
这一页只回答一个问题:这些接口能不能接。
一、沙箱是什么/不是什么
| 这一栏 | 内容 |
|---|---|
| 是 | 一个独立的演示环境,用来判断"这些接口能不能接"。 |
| 是 | 一个能真打的业务闭环:设备注册、心跳、档案、型号目录、计费事件、用量汇总、主动采集,这些路径在沙箱上都能打通(逐条见第二节)。 |
| 不是 | 不是生产环境;数据是 mock;不构成 SLA。沙箱可随时重置,重置后旧钥匙立即失效。 |
| 不是 | 不是真设备、不是真证书:采集是演示数据归集,"证书引用"只是一个引用串,不签发真证书。 |
| 不是 | 不是全接口:审计查询、审计校验、设备证书三条在沙箱上没有放行(见第二节)。 |
二、主机与端点清单
主机:sandbox.neutralorbit.com(HTTPS)。接口主机与网站主机是两个站——把接口路径打到 neutralorbit.org 上会是 404,那是"站不同",不是接口坏了。
| 方法 | 路径 | 期望码 | 这条是干什么的 |
|---|---|---|---|
| GET | /healthz | 200 | 公开探针:只答"服务活着吗"。不要凭证、不含业务数据。 |
| GET | /readyz | 200 | 公开探针:就绪状态。回 503 的意思是"现在别打进来",不是故障。 |
| GET | /meta | 200 | 公开探针:服务标识(服务名、版本、法务主体、边界声明)。 |
| POST | /v1/devices | 401 | 设备注册与激活。 |
| POST | /v1/devices/{device_id}/heartbeat | 401 | 设备心跳。 |
| POST | /v1/billing/events | 401 | 计费事件上报。 |
| GET | /v1/device-models | 401 | 型号目录(只读)。 |
| POST | /v1/device-models | 401 | 新增型号。需 admin;沙箱不签发 admin,所以带钥匙也是 403。 |
| GET | /v1/devices/{device_id} | 401 | 设备档案(只读)。 |
| PATCH | /v1/devices/{device_id} | 401 | 改设备档案(换型号/停用/启用)。 |
| GET | /v1/usage | 401 | 用量汇总(since/until/group_by=day|device|metric)。 |
| POST | /v1/usage/collect | 401 | 触发一次采集(演示数据归集,不连真设备)。 |
| GET | /v1/usage/collect/{job_id} | 401 | 采集任务状态(只读)。 |
| GET | /v1/audit | 404 | 审计查询。沙箱没放行;主站不带凭证是 401。 |
| GET | /v1/audit/verify | 404 | 审计校验。沙箱没放行;主站不带凭证是 401。 |
| GET|POST | /v1/devices/{device_id}/certificate | 404 | 设备证书引用。沙箱没放行;主站不带凭证是 401。 |
| GET | /proof/verify | 404 | 证明包离线校验。主站与沙箱都不放行。 |
沙箱放行的路径于主站不同:沙箱不开放审计查询、审计校验与设备证书三条 —— 在主站它们是 401,在沙箱是 404。以本表为准:打过去是 404,不是你打错了,是这条没放行。
三、怎么领钥匙
领钥匙需书面申请:写明机构名、联系人、要用的接口、需要的期限,发至 partners@neutralorbit.com。我方人工审核后签发,限期不超过 7 天。
不提供在线申请页,不提供即时开通。
确认信里会写明发给你的 scope、到期时刻、调用上限。收不到确认信就是没批——不要拿别人的钥匙试,也不要反复投递。
- 写申请时按"方法 + 路径"列清楚要哪几条,例如
GET /v1/device-models、POST /v1/usage/collect。 - 期限写起止日期,≤ 7 天;到期即失效,不自动续期。
- 别用任何文档里出现过的示例钥匙:示例是形状演示,不是真钥匙;真钥匙只在确认信里。
四、钥匙的四条限制
| # | 限制 | 具体是什么 |
|---|---|---|
| 1 | 一次性 | 一把钥匙只发给一个机构的一个 POC;不续用、不继承、不转让。要再做一轮,重新申请。 |
| 2 | 限期 ≤7 天 | 默认 7 天,最短按小时给;到期即失效,不自动续期。 |
| 3 | 一条 scope,永不给 admin | 一把钥匙只带一条 scope(devices:read/devices:write/usage:read/usage:collect/billing:write 之一)。 |
| 4 | 限次 | 确认信里会写明你这把钥匙的调用上限;撞到上限就等,不要换钥匙绕。 |
新增型号接口(POST /v1/device-models)需要 admin,沙箱永远不签发 admin —— 所以这条在沙箱一定 403。
五、失败码怎么读
| 码 | 意思 | 怎么办 |
|---|---|---|
| 401 | 没报身份 | 带上凭证(Authorization: Bearer … 或 X-Api-Key: …)。 |
| 403 | 身份对,权限不够 | 这条 scope 不够,换接口或申请别的 scope。 |
| 404 | 这条路径没放行 | 不是服务坏了;见上面的端点清单。 |
| 429 | 同一把凭证连续失败 5 次会锁 15 分钟 | 等一下(Retry-After 会告诉你多少秒),别继续试。 |
六、三个自测动作(不需要钥匙就能做)
- 打
/healthz看 200 —— 站活着。 - 打任一写接口不带凭证,看 401 —— 鉴权真的在拦。
- 打一条不存在的路径,看 404 —— 白名单真的在拦。
curl -sS -i https://sandbox.neutralorbit.com/healthz
curl -sS -i -X POST https://sandbox.neutralorbit.com/v1/devices -H "Content-Type: application/json" -d '{}'
curl -sS -i https://sandbox.neutralorbit.com/nope
七、免责
沙箱是演示环境,数据为 mock,不构成 SLA;我方不对沙箱可用性作承诺。
- 沙箱随时可能重置,重置后旧钥匙立即失效;限速阈值可能调整;接口可能变。
- 以你收到的那封确认信与随包
openapi.yaml为准。 - 沙箱上的一切读数不能用作验收、结算或对外承诺的依据。
下一步 | 先看读数,再决定接不接。去「接口状态」 →