Deletion

delete_own tombstones a comment whose authorId is the actor. moderate tombstones any comment in the token's resource. deletedBy is that actor, so a moderator is not stored as the author. Tokenless test mode does not include moderate.

The same transaction sets deletedAt and deletedBy, nulls body, clears mentions, increments version, and subtracts the freed bytes from that environment's meter. Ordinary reads and events do not contain the old body or mention ids. The widget paints This comment was deleted. That sentence is chrome. It is not stored as the body.

The root comment's tombstone stays so replies still have a thread. A thread whose comments are all tombstones remains: ids, status, timestamps, and null bodies. Edit and reply on a tombstone return not_found. A second delete of the same version conflicts. A replay of the same operationId returns the original tombstone snapshot.

Deleting one comment is not a resource purge. Purge is a secret-key call, POST /api/v1/resources/purge, for one tuple: appId, tenantKey, resourceType, resourceId, and operationId. It freezes writes first, then deletes threads, comments, mention payloads, and read markers. Id-only events may remain. The widget has no purge method. There is no cross-tenant bulk delete from the browser.

Export keeps tombstones with body: null and mentions: []. See export and purge.

Related: Identity and tokens · Unread · Export guide