Delete an uncited knowledge source
Permanently deletes an unused source only. A retained snapshot or publication, including content required by call evidence, returns deletion_blocked with snapshot_reference or published_reference; use archive instead. Legacy draft knowledge fields do not block deletion. The service checks retained references and removes the source atomically, so publication and deletion cannot race. Deletion frees the resource_key and name and removes links from every agent library. Pending ingestion is cancelled and late worker results cannot recreate the source. No If-Match: eligibility is checked against current state inside the delete. Deleting an already absent source returns 404. The product Remove action selects permanent deletion or retention through the shared service; no archive screen is required.
Authentication
Create and manage workspace-owned keys through the existing app session routes, outside this public API. Creator and manager identities are audit actors only. Key validity follows workspace policy, expiry and explicit revocation, independently of creator membership. Do not include a workspace-selection header.
Path parameters
Headers
Stable key per logical intent, 1–255 printable characters. Persist it before sending. Retry the same key/body after an uncertain result for 24 hours. A changed body conflicts. Beyond retention, reconcile the resource before retrying; this is not permanent deduplication. Current authorization is rechecked on replay. Evaluation order: authenticate and check current authorization; look up intent; replay its stored receipt before checking the current revision; only a new intent evaluates If-Match and executes. Fingerprint includes method, path, body and original If-Match. A changed request returns idempotency_key_reused. The server stores only a keyed (HMAC) fingerprint, and no error or response ever returns a fingerprint or hash of a request. In-flight intent returns 409 idempotency_in_progress with Retry-After; retry the same intent after reconciliation. Receipts describe that attempt, not current resource state. A replay returns the original status code and body, with the response header Idempotent-Replayed: true.