update
既存のファクトを1件、その場で書き換えます。
POST/v1/update
MCPでも update ツールとして利用できます。
まずrecallでファクトを見つけてください。応答のすべてのファクトには、IDの末尾5文字である ref があります。そのファクトの subject、predicate、ref と、変更内容を渡します。
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
subject | string | はい | 現在の主語。保存されているとおりに指定します。 |
predicate | string | はい | 現在の述語。WorksAt でも works_at が見つかります。 |
ref | string | はい | ファクトIDの末尾5文字、またはID全体。 |
new_subject | string | いいえ | 新しい主語。最大45文字。その名前と完全に一致するエンティティにリンクします。 |
new_predicate | string | いいえ | 新しい述語。 |
new_object | string | JSON | いいえ | 新しい目的語。テキスト、type:id、JSONのいずれか。 |
context | string | いいえ | 新しい注記。最大4,000文字。 |
if_object | string | JSON | いいえ | 保存されている目的語がこの値と等しい場合にだけ更新します。JSONは内容で比較します。カウンターなど、複数の書き手が同時に変更しうる値に使います。 |
collection | string | いいえ | コレクションコード。省略すると接続時のデフォルト値を使い、"" はデフォルト領域を強制します。 |
new_subject、new_predicate、new_object、context のうち少なくとも1つを指定してください。省略したフィールドは保存済みの値を保持します。
リクエスト
{
"subject": "task:GO-12",
"predicate": "status",
"ref": "X2C9A",
"new_object": "done",
"if_object": "in_progress"
}
応答
{
"before": { "id": "01KJ8Z3W5Q2YB7N4R6T8VX2C9A", "ref": "X2C9A", "subject": "task:GO-12", "predicate": "status", "value": "in_progress" },
"after": { "id": "01KJ8Z3W5Q2YB7N4R6T8VX2C9A", "ref": "X2C9A", "subject": "task:GO-12", "predicate": "status", "value": "done" }
}
エラー
| ステータス | 条件 |
|:--|:--|
| 400 | 変更内容がない、または ref がIDの5文字・26文字のどちらでもない |
| 404 | subject、predicate、ref に一致するファクトがない |
| 409 | 2件のファクトが同じrefを持つ。ref にID全体を指定してください |
| 409 | if_object が一致しなくなった:fact changed: current object is …。recallしてから再試行してください |
先に読み取らずに単一値の述語を設定するには、rememberで replace: true を使います。