Conditionally undo an applied plan; a later edit wins and reports as a conflict
const url = 'http://localhost:11044/api/v1/admin/kg/annotations/example/undo';const options = {method: 'POST', headers: {'X-Embabel-Api-Key': '<X-Embabel-Api-Key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://localhost:11044/api/v1/admin/kg/annotations/example/undo \ --header 'X-Embabel-Api-Key: <X-Embabel-Api-Key>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The planId of an applied plan, looked up in the acting user’s annotation audit journal for this world rather than the plan store, so it works after the plan is consumed or expired; 409 when nothing under it is left to undo
Query Parameters
Section titled “Query Parameters”Optional, and never needed: the call always acts as the signed-in principal. Naming the principal changes nothing; naming anyone else is refused with 403.
Responses
Section titled “Responses”The outcome: what the undo reverted
The result of applying or undoing a frozen plan.
object
Targets written: set to the planned value on apply, restored to their prior value on undo.
Targets that still exist but moved since the plan froze. Skipped, not forced.
Targets that could not be re-bound in scope: deleted, re-owned or re-labeled. Deliberately ONE bucket — separating them would leak whether another tenant’s data exists.
The plan applied or undone, echoed from the path.
One committed post-image per target written.
One committed post-image, read back inside the write transaction.
object
Audit record id for this individual write.
The written node’s identity property value. Type depends on the label’s identity property.
The property that was written.
The property’s value as committed, read back after the write; null when the write cleared it.
Targets considered: the frozen plan’s selection on apply, the plan’s audited writes on undo. applied, conflicted and disappearedOrUnauthorized add up to it.
Example generated
{ "applied": 1, "conflicted": 1, "disappearedOrUnauthorized": 1, "planId": "example", "postImages": [ { "auditId": "example", "identity": "example", "property": "example", "value": "example" } ], "selected": 1}No authenticated principal
A refusal carrying only a human-readable reason.
object
What went wrong, in the terms the caller can act on.
Example generated
{ "error": "example"}Annotation writes disabled by feature flag, or username names someone other than the signed-in principal
A refusal carrying only a human-readable reason.
object
What went wrong, in the terms the caller can act on.
Example generated
{ "error": "example"}Plan rejected, expired, or frozen for another user
A refusal carrying only a human-readable reason.
object
What went wrong, in the terms the caller can act on.
Example generated
{ "error": "example"}
