From
bafyreickl74koa6mk4ybqa27rvv3pxmgu5rtqhuyam7vdunxusxlhm7b4m
indexed 2026-04-06 07:09 UTC
View this version
To
bafyreibtayqrtoid2lamsmvjto6awyi5kxwncagj75crns5d6cqkwp2h3a
indexed 2026-04-29 04:17 UTC
View this version
Compatibility
breaking 6 breaking changes, 6 non-breaking changes.
Breaking changes (6)
- RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.note:body.bookPub" }
- RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.note:body.bookSig" }
- RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.note:body.did" }
- RemovedEdge RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.bookPub", kind: "prop", name: Some("bookPub") }
- RemovedEdge RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.bookSig", kind: "prop", name: Some("bookSig") }
- RemovedEdge RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.did", kind: "prop", name: Some("did") }
Non-breaking changes (6)
- AddedVertex AddedVertex { vertex_id: "org.passingreads.book.note:body.signatures" }
- AddedVertex AddedVertex { vertex_id: "org.passingreads.book.note:body.signatures:items" }
- AddedVertex AddedVertex { vertex_id: "org.passingreads.signature.book#main" }
- AddedEdge AddedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.signatures", kind: "prop", name: Some("signatures") }
- AddedEdge AddedEdge { src: "org.passingreads.book.note:body.signatures", tgt: "org.passingreads.book.note:body.signatures:items", kind: "items", name: None }
- AddedEdge AddedEdge { src: "org.passingreads.book.note:body.signatures:items", tgt: "org.passingreads.signature.book#main", kind: "ref", name: None }
Migration guidance
Removed
RemovedVertex { vertex_id: "org.passingreads.book.note:body.bookPub" }RemovedVertex { vertex_id: "org.passingreads.book.note:body.bookSig" }RemovedVertex { vertex_id: "org.passingreads.book.note:body.did" }
Added
AddedVertex { vertex_id: "org.passingreads.book.note:body.signatures" }AddedVertex { vertex_id: "org.passingreads.book.note:body.signatures:items" }AddedVertex { vertex_id: "org.passingreads.signature.book#main" }
Notes
- Breaking: RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.bookPub", kind: "prop", name: Some("bookPub") }
- Breaking: RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.bookSig", kind: "prop", name: Some("bookSig") }
- Breaking: RemovedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.did", kind: "prop", name: Some("did") }
- Non-breaking: AddedEdge { src: "org.passingreads.book.note:body", tgt: "org.passingreads.book.note:body.signatures", kind: "prop", name: Some("signatures") }
- Non-breaking: AddedEdge { src: "org.passingreads.book.note:body.signatures", tgt: "org.passingreads.book.note:body.signatures:items", kind: "items", name: None }
- Non-breaking: AddedEdge { src: "org.passingreads.book.note:body.signatures:items", tgt: "org.passingreads.signature.book#main", kind: "ref", name: None }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"image": {55
"properties": {66
"alt": {77
"description": "Alt text description of the image",88
"maxGraphemes": 1000,99
"maxLength": 10000,1010
"type": "string"1111
},1212
"aspectRatio": {1313
"ref": "org.passingreads.defs#aspectRatio",1414
"type": "ref"1515
},1616
"image": {1717
"accept": [1818
"image/png",1919
"image/jpeg"2020
],2121
"maxSize": 1000000,2222
"type": "blob"2323
}2424
},2525
"required": [2626
"image",2727
"alt"2828
],2929
"type": "object"3030
},3131
"main": {3232
"key": "tid",3333
"record": {3434
"properties": {3535
"aboutPublication": {3636
"description": "If true, this note is about the publication in general rather than this specific physical copy. Such notes may be shown on any book with the same publicationId.",3737
"type": "boolean"3838
},3939
"book": {4040
"description": "The book the note is 'in' (a org.passingreads.book.registration)",4141
"ref": "com.atproto.repo.strongRef#main",4242
"type": "ref"4343
},44
"bookPub": {45
"description": "The MultiFormat public key of the book.",46
"type": "bytes"47
},48
"bookSig": {49
"description": "The MultiFormat signature of this record, without this attribute, as created by the private key associated with the book.",50
"type": "bytes"51
},5244
"createdAt": {5345
"format": "datetime",54
"type": "string"55
},56
"did": {57
"description": "The DID of the person who wrote this note. Included here, so it's verifiable with the bookSig.",58
"format": "did",5946
"type": "string"6047
},6148
"images": {6249
"description": "Images attached to the note",6350
"items": {6451
"ref": "#image",6552
"type": "ref"6653
},6754
"maxLength": 3,6855
"type": "array"6956
},7057
"note": {7158
"description": "The text content of the note left in the book",7259
"maxGraphemes": 1000,7360
"maxLength": 10000,7461
"minLength": 1,7562
"type": "string"7663
},64
"signatures": {65
"description": "Inline attestations binding this note to the book's keypair (optional).",66
"items": {67
"ref": "org.passingreads.signature.book#main",68
"type": "ref"69
},70
"minLength": 1,71
"type": "array"72
},7773
"spoilerPageNumber": {7874
"description": "If set, this note contains spoilers for readers who haven't reached this page (may also contain the special value 'end')",7975
"maxLength": 6,8076
"minLength": 1,8177
"type": "string"8278
}8379
},8480
"type": "object"8581
},8682
"type": "record"8783
}8884
},8985
"id": "org.passingreads.book.note",9086
"lexicon": 19187
}