如何通过Foundry API将Writebacks编辑行恢复至BaseVersion?
Foundry Writeback已编辑行恢复解决方案
问题背景
我们在Palantir-Foundry场景下有一工作流,需将带Writeback的对象的底层数据集更新同步至Writeback,但该操作在已编辑行上执行失败。因Writeback采用“编辑优先(Edits-win)”模型,系统始终选择该行的编辑版本,这符合设计逻辑。在不重构整个应用的前提下,尝试通过Foundry REST API解决此问题:是否可将Foundry Writebacks中已编辑的行恢复为原始未编辑版本?已找到phonograph2 BaseVersion相关API文档,但未明确行恢复至BaseVersion的实现方法,需在特定事件触发时通过TypeScript函数仓库执行此操作。
可行方案:通过Phonograph2 API删除编辑记录
Phonograph2作为Foundry Writeback的底层服务,提供了删除指定行编辑记录的API。移除对应行的编辑条目后,系统会自动回退到底层数据集的原始版本,无需重构应用。
关键API端点
调用phonograph2/edit-contents:delete端点,可针对指定对象集和行ID删除编辑记录。
TypeScript函数实现示例
在Foundry函数仓库中创建如下函数,用于触发行恢复操作:
import { fetch } from "@foundry/functions-api"; export async function revertEditedRow(objectRid: string, rowId: string): Promise<void> { const apiEndpoint = `/phonograph2/edit-contents/${objectRid}/rows/${rowId}`; const response = await fetch(apiEndpoint, { method: "DELETE", headers: { "Content-Type": "application/json", "Accept": "application/json" } }); if (!response.ok) { throw new Error(`恢复行失败: ${response.statusText}`); } }
使用说明
objectRid:带Writeback配置的对象集RID(可在对象集详情页获取)rowId:需恢复行的唯一主键值- 权限配置:需为函数分配
phonograph2:edit-contents:delete权限,以及对应对象集的编辑权限
触发方式
将该函数绑定到Foundry事件(如数据集更新事件、自定义Webhook事件等),事件触发时先执行行恢复,再启动底层数据集到Writeback的同步工作流即可解决同步失败问题。
内容的提问来源于stack exchange,提问作者tessa
相关产品推荐
相关产品推荐

