dev.atfs.repo.getFile

atfs.dev

Schema Diff

+5 -1

From

CID
bafyreidleopovza...
Indexed At
2026-08-09 02:33 UTC
View this version

To

CID
bafyreiapvzr7lio...
Indexed At
2026-08-17 08:18 UTC
View this version

Compatibility Analysis

Backward Compatible

No changes detected.

1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "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 did-less getFile exposes nothing a full IPFS client couldn't already reach. When did is supplied, the file is served only if that account holds a claim on it — pin-set membership (see dev.atfs.repo.deleteFile), which any claimant satisfies whether or not it was the one that originally uploaded the file — a mismatch is reported identically to a missing file — matching com.atproto.sync.getBlob's own scoping exactly; the com.atproto.sync.getBlob alias always requires it, to stay PDS-compatible. Does not require auth, on either name.",
6 6
      "errors": [
7 7
        {
8 -
          "description": "No file is stored under this cid, or — when did is supplied — that account holds no claim on it; the two are reported identically, matching com.atproto.sync.getBlob's own behavior.",
8 +
          "description": "No file is stored under this cid, or — when did is supplied — that account holds no claim on it; the two are reported identically, matching com.atproto.sync.getBlob's own behavior. Also reported, indistinguishably, when this instance once tried to fetch this cid and gave up: a failed fetch stays impossible to tell apart from a cid that was never asked for.",
9 9
          "name": "BlobNotFound"
10 +
        },
11 +
        {
12 +
          "description": "This instance doesn't have the file yet but is actively trying to fetch it (see dev.atfs.repo.pinFile). Served over HTTP 503 with a Retry-After header naming how long to wait before asking again; retrying is the status check.",
13 +
          "name": "ContentPending"
10 14
        }
11 15
      ],
12 16
      "output": {
13 17
        "encoding": "*/*"
14 18
      },
15 19
      "parameters": {
16 20
        "properties": {
17 21
          "cid": {
18 22
            "description": "The blessed CID (see dev.atfs.file) of the file to fetch.",
19 23
            "format": "cid",
20 24
            "type": "string"
21 25
          },
22 26
          "did": {
23 27
            "description": "Restrict the fetch to a file this account holds a claim on (pin-set membership — not necessarily the account that uploaded it). Optional here — unlike on the com.atproto.sync.getBlob alias, where it's required to stay PDS-compatible — since atfs content is addressed by cid alone, so omitting did simply serves any file with that cid.",
24 28
            "format": "did",
25 29
            "type": "string"
26 30
          }
27 31
        },
28 32
        "required": [
29 33
          "cid"
30 34
        ],
31 35
        "type": "params"
32 36
      },
33 37
      "type": "query"
34 38
    }
35 39
  },
36 40
  "id": "dev.atfs.repo.getFile",
37 41
  "lexicon": 1
38 42
}

Compare Other Versions

Lexicon Garden

@