dev.atfs.repo.deleteFile

Release the caller's claim on a file previously uploaded to — or pinned by — this atfs instance. The semantics are pin removal, not unconditional deletion: several accounts can hold independent claims on the same cid (see dev.atfs.repo.uploadFile, which merges an idempotent re-upload's claim rather than rejecting it), and the underlying bytes — its raw block plus any UnixFS DAG artifacts built for it — are physically deleted only once the last claim on it goes. A caller's own claim is always gone on success, whether or not that triggered the physical deletion; see the output's contentDeleted field to tell the two apart. It is also the inverse of dev.atfs.repo.pinFile: a pin request the instance hasn't been able to satisfy yet is a claim before the fact, so calling this with a cid that is still being fetched withdraws the caller's interest in it, and the fetch itself is abandoned (with anything partially fetched discarded) only once the last account waiting on it has done so. Since nothing was stored on the caller's behalf, nothing is deleted: that case succeeds with contentDeleted false. Only a cid with neither stored bytes nor a pending request of the caller's is reported as an error. There is deliberately no com.atproto alias for this method, unlike uploadFile/getFile: atproto itself has no explicit blob-deletion call — a PDS garbage-collects a blob once no record in the repo references it any longer — so there is no existing wire contract to mirror. Requires auth (a caller's own inter-service auth JWT, signed by its account's signing key), but — unlike uploadFile — authorization is by pin-set membership, not the upload allowlist: an account removed from the allowlist can still release claims it holds from before it was delisted.

Repository @atfs.dev did:web:atfs.dev namespace authority
Details · procedure
Kindprocedure
Authorityrepo.atfs.dev
Indexed

Procedure

procedure · POST

Input

application/json

cid

requiredstring · cid

The blessed CID (see dev.atfs.file) of the file to release the caller's claim on.

Output

application/json

contentDeleted

requiredboolean

Whether this call was the one that removed the last claim, triggering physical deletion of the stored bytes (and, for a large file, its UnixFS DAG artifacts). false means other accounts still hold claims on the cid, so it remains fully served.

Errors

BlobNotFound

No file is stored under this cid, and no pinFile request of the caller's is waiting on it either. Existence isn't secret — the /ipfs/<cid> gateway serves any stored cid to anyone — so this is reported distinctly from NotPinned rather than folded into it.

NotPinned

The file exists, but the caller holds no claim on it — there is nothing for this call to release.

Similar lexicons

semantic match

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • Fetch a file previously uploaded to this atfs instance. Compatible with com.atproto.sync.getBlob — also mounted, unmodified, under that name, for callers that have no reason to know atfs has its own name for it — with one deliberate difference: did is optional here. Requiring a did the way a PDS does is a repo-scoping artifact (a PDS's blobs live inside a specific account's repo); atfs content is content-addressed by cid alone, and the /ipfs/<cid> gateway path already serves it that way, so a di

  • Pin a file that already exists on the IPFS network, as if the caller had uploaded it to this instance: the bytes are fetched, verified against the reference's blessed cid, stored, served, and announced, and the caller ends up holding an ordinary claim on them (see dev.atfs.repo.deleteFile). A dev.atfs.file reference is the whole request — it already names the cid the fetched bytes must hash to (which is what makes the fetch trustless whatever the source), the ipfsRoot to fetch, the size to refus