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.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | repo.atfs.dev |
| Indexed |
Procedure
procedure · POSTInput
application/jsonThe blessed CID (see dev.atfs.file) of the file to release the caller's claim on.
Output
application/jsonWhether 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 matchLexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
dev.atfs.repo.getFile
queryFetch 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
-
dev.atfs.repo.pinFile
procedurePin 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