pub.leaflet.content
Schema Diff
+19 -0
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
}