验证状态:已源码核验、未联调(无 app 调用图);services 基线:源码归纳 @ 2026-09-14
分享发起方撤回一条自己发出的分享,是发起方一侧的退场动作(与受赠方一侧的解除设备分享相对)。App「取消分享」动作按 deviceShareId 发起:服务端把分享记录置 cancel share(写 cancelTime)后软删,并同步删除目标租户中的 To be confirm share / confirm share 分享投影——待确认与已确认的分享都可撤销。
发起方的分享记录 ID 从设备分享记录列表取得;分享全生命周期的 state 流转见发起设备分享。
| 判定证据 | 内容 |
|---|---|
| 旧 app 文档收录记录 | 旧 app 文档仓在 docs/api/main-api/device/data-acquisition-device/cancelShareForPersonalSpace/ 收录本端点,属 App 既有调用面 |
| 两代分工语义 | /v1/retail 第二代无 cancel 对应物;撤销写路径现役只有本端点(v1 侧仅分享发起有替代端点) |
| 后端持续维护迹象 | 撤销链路与绑定/解绑共享同一 service 与契约测试,第一代 2026-09 仍有维护提交 |
POST /main-service/main-api/device/data-acquisition-device/cancelShareForPersonalSpace — 分享发起方撤回一条自己发出的分享(发起方一侧的退场动作)
端点全量事实(参数、请求/响应字段、错误码、权限点)见清单层 device · data-acquisition-device 采集设备;业务语义(wire 惯例、限频、租户声明等)见设备业务 · data-acquisition-device 采集设备。
status=200 且 data=true 表示撤销完成。发起方再次拉取分享记录列表应不含该条(软删行被 delete_time is null 过滤);受赠方再次拉取设备列表应不再包含该设备。
业务失败均为业务拒绝族,error 为异常消息原文(判定口径见错误响应差异):
| error 原文 | 触发条件 |
|---|---|
Device share not exists |
deviceShareId 在当前租户(发起方租户)无有效分享记录:ID 不存在、已撤销/已解除/已随归属转移退场、或记录属于他人租户 |
Bean Validation 不拦截空值(DTO 无 @NotBlank):deviceShareId 缺省时查询条件为空匹配,同样落到 Device share not exists。
边界:
无客户端长连接资源需要释放。撤销成功后发起方应刷新分享记录列表,受赠方设备列表的可见变化依赖其下次拉取;服务端不向受赠方推送实时通知。
未执行真实联调:撤销与受赠方侧列表刷新的最终一致延迟、撤销与受赠方确认并发到达时的终态均无 App 实测佐证。