pub.leaflet.content

leaflet.pub

Schema Diff

+19 -0

From

CID
bafyreiebbctoorv...
Indexed At
2026-02-18 20:04 UTC
View this version

To

CID
bafyreifn7oxzbjw...
Indexed At
2026-05-21 02:54 UTC
View this version

Compatibility Analysis

Backward Compatible

Backward compatible. 6 non-breaking changes.

Non-Breaking Changes (6)
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.content.blobPages" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.content.blobs" }
  • AddedVertex AddedVertex { vertex_id: "pub.leaflet.content.blobs:items" }
  • AddedEdge AddedEdge { src: "pub.leaflet.content", tgt: "pub.leaflet.content.blobPages", kind: "prop", name: Some("blobPages") }
  • AddedEdge AddedEdge { src: "pub.leaflet.content", tgt: "pub.leaflet.content.blobs", kind: "prop", name: Some("blobs") }
  • AddedEdge AddedEdge { src: "pub.leaflet.content.blobs", tgt: "pub.leaflet.content.blobs:items", kind: "items", name: None }

Migration Guidance

Added Elements

  • AddedVertex { vertex_id: "pub.leaflet.content.blobPages" }
  • AddedVertex { vertex_id: "pub.leaflet.content.blobs" }
  • AddedVertex { vertex_id: "pub.leaflet.content.blobs:items" }

Additional Notes

  • Non-breaking: AddedEdge { src: "pub.leaflet.content", tgt: "pub.leaflet.content.blobPages", kind: "prop", name: Some("blobPages") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.content", tgt: "pub.leaflet.content.blobs", kind: "prop", name: Some("blobs") }
  • Non-breaking: AddedEdge { src: "pub.leaflet.content.blobs", tgt: "pub.leaflet.content.blobs:items", kind: "items", name: None }
1 1
{
2 2
  "id": "pub.leaflet.content",
3 3
  "defs": {
4 4
    "main": {
5 5
      "type": "object",
6 6
      "required": [
7 7
        "pages"
8 8
      ],
9 9
      "properties": {
10 +
        "blobs": {
11 +
          "type": "array",
12 +
          "items": {
13 +
            "type": "blob",
14 +
            "accept": [
15 +
              "*/*"
16 +
            ],
17 +
            "maxSize": 10000000
18 +
          },
19 +
          "description": "Blobs referenced inside `blobPages`. Load-bearing when `blobPages` is set: the PDS only scans the top level of a record for blob references when deciding what to garbage-collect, so any image/etc. blob now living inside the opaque JSON blob must be mirrored here to remain referenced."
20 +
        },
10 21
        "pages": {
11 22
          "type": "array",
12 23
          "items": {
13 24
            "refs": [
14 25
              "pub.leaflet.pages.linearDocument",
15 26
              "pub.leaflet.pages.canvas"
16 27
            ],
17 28
            "type": "union"
18 29
          }
30 +
        },
31 +
        "blobPages": {
32 +
          "type": "blob",
33 +
          "accept": [
34 +
            "application/json"
35 +
          ],
36 +
          "maxSize": 5000000,
37 +
          "description": "JSON-encoded array of pages. When the inline pages array would be too large to store on the PDS, the pages are uploaded as a blob and referenced here. When set, consumers MUST ignore `pages` and use the decoded blob contents as the page array; the inline `pages` field will be empty or a stub."
19 38
        }
20 39
      },
21 40
      "description": "Content format for leaflet documents"
22 41
    }
23 42
  },
24 43
  "$type": "com.atproto.lexicon.schema",
25 44
  "lexicon": 1,
26 45
  "revision": 1,
27 46
  "description": "A lexicon for long form rich media documents"
28 47
}

Compare Other Versions

Lexicon Garden

@