Apply a frozen annotation plan once, returning committed counts and post-images
const url = 'http://localhost:11044/api/v1/admin/kg/annotations/example/apply';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/apply \ --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 a dry-run returned. One-shot: a second apply, an unknown id, a plan past its expiresAt (300 seconds by default) or one frozen for another user or world is a 409
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: committed counts and post-images
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"}
