跳转到内容

删除究竟做了什么(按资源划分)

在 RealityConnect API 中,“删除”根据删除对象的不同而含义不同。有些资源会进入可恢复的回收站,大多数则会被彻底移除。本页按资源逐一给出参考,便于设计清理逻辑或同步一致性逻辑。


资源删除恢复彻底清除
数据节点(分部、站点、文件夹、twin、项目、Data Bundle、Asset Library 等)软删除(进入回收站)PATCH /v1/nodes/{nodeId}/restore删除 30 天后自动执行,或通过 DELETE /v1/nodes/{nodeId}/hard 立即执行
POI硬删除不可用立即
区域硬删除不可用立即
Box asset硬删除不可用立即
Model asset(RealityPlan)硬删除不可用立即
Asset Library 模型硬删除(只要仍有资产引用它就会被阻止)不可用解除阻止后立即执行
Asset Library 标签硬删除不可用立即
用户组硬删除不可用立即
用户组成员身份硬删除不可用立即
邀请(组织或节点)硬删除(撤销)不可用立即
对象附件硬删除(仅移除已存储的文件)不可用立即

只有数据节点有回收站。本表中的其他所有资源一旦删除调用成功就会立即消失,服务器端没有任何恢复途径。

DELETE /v1/nodes/{nodeId} 会对节点进行软删除:节点不会被移除,而是进入组织的回收站。回收站中的节点具有以下特性:

  • 通过 GET /v1/trash 列出(支持分页,可按 deletedAt 或 name 排序)。
  • 可以通过 PATCH /v1/nodes/{nodeId}/restore 恢复;如果恢复会导致组织超出其存储配额,该调用可能会以 409 StorageLimitExceeded 失败。
  • 通过 DELETE /v1/nodes/{nodeId}/hard 被永久删除,或在进入回收站 30 天后自动删除。

如果节点当前不在回收站中,恢复和彻底删除都会返回 409 NoNodeRemoved,这既包括从未被删除过的节点 id,也包括已经被彻底删除或已自动清除的节点 id。

彻底删除一个节点还会移除其在回收站中的后代节点,以及涉及该子树内节点的所有派生记录。子树之外恰好派生自子树内某个对象的节点不受影响。

DELETE /v1/nodes/{nodeId} 可能因以下三种原因被拒绝,返回 409 Conflict:

代码含义能否用 ?force=true 绕过?
NodeHasDerivatives该节点存在派生输出(例如已处理的结果),必须先移除。响应会在 derivatives[] 中准确列出是哪些节点造成了阻塞。否
NodeHasBundleDependants该节点的 Data Bundle 存在依赖项。否
NodeNotInDeletableState该节点当前正在处理中,或处理失败(isProcessing / isFailed)。是

force=true(查询字符串,必须精确为 "true" 或 "false")仅能绕过 NodeNotInDeletableState。存在派生项或 Bundle 依赖项的节点必须先解决相应问题,没有绕过的方法。完整的响应结构和建议的处理方式参见错误代码。

Asset Library 模型有一个更简单的同类锁定机制:只要仍有资产引用该模型,DELETE /v1/asset-library/{ownerContextId}/models/{libraryModelId} 就会返回 409 Conflict。一旦最后一个引用消失,删除就是硬删除且不可恢复,不像节点那样是软删除。

软删除的节点会立即且无条件地从 GET /v1/nodes/{id}/browse 和 GET /v1/nodes/search 中消失,这两个端点都没有可用于包含回收站节点的参数。查看回收站中节点的唯一方式是 GET /v1/trash;只有恢复该节点,才能让它重新可被浏览和搜索到。

关于节点层级结构和搜索本身的工作方式,请参见节点类型与层级结构和搜索 Business Object 和节点。

  • 完整的命名错误代码集合,包括本页引用的所有代码,请参见错误代码。
  • 关于解析用于寻址 POI、区域、资产和附件的 contextId,请参见contextId 接受的值。