From
bafyreidi5d52canrl2m7x7n2wh5yyhnrseyludp6msjymzzpmobvhgioyi
indexed 2026-11-04 16:37 UTC
View this version
To
bafyreiaucbd2erw62lglewgqt6ltvhaluphacldo4zswbwbvvudvs5kvyq
indexed 2026-11-04 21:56 UTC
View this version
Compatibility
backward compatible Backward compatible. 2 non-breaking changes.
Non-breaking changes (2)
- AddedVertex AddedVertex { vertex_id: "ink.resenha.bookLink:body.reading" }
- AddedEdge AddedEdge { src: "ink.resenha.bookLink:body", tgt: "ink.resenha.bookLink:body.reading", kind: "prop", name: Some("reading") }
Migration guidance
Added
AddedVertex { vertex_id: "ink.resenha.bookLink:body.reading" }
Notes
- Non-breaking: AddedEdge { src: "ink.resenha.bookLink:body", tgt: "ink.resenha.bookLink:body.reading", kind: "prop", name: Some("reading") }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"main": {55
"description": "One per book. The record key is the book's BookHive ID (hiveId); a book with no match yet is keyed popfeed-<record key of its first listItem>.",66
"key": "any",77
"record": {88
"properties": {99
"book": {1010
"description": "The book in every key anyone uses: the link's own fields say which records are the book, this says which book.",1111
"ref": "ink.resenha.defs#bookRef",1212
"type": "ref"1313
},1414
"bookhive": {1515
"description": "The reader's buzz.bookhive.book record for the book, when they have one.",1616
"format": "at-uri",1717
"type": "string"1818
},1919
"hiveId": {2020
"description": "The book's BookHive ID. Absent when no match was found.",2121
"maxLength": 64,2222
"type": "string"2323
},2424
"isbn13": {2525
"description": "The edition the reader's records name, when they name one.",2626
"maxLength": 13,2727
"type": "string"2828
},2929
"matchedBy": {3030
"description": "identifiers: an ISBN or Goodreads number agreed, or the item named its BookHive ID. search: title and author agreed. reader: chosen by the reader, and never changed automatically. none: no match yet.",3131
"knownValues": [3232
"identifiers",3333
"search",3434
"reader",3535
"none"3636
],3737
"type": "string"3838
},3939
"popfeed": {4040
"description": "The reader's social.popfeed.feed.listItem records for the book. A book can be on more than one list.",4141
"items": {4242
"format": "at-uri",4343
"type": "string"4444
},4545
"maxLength": 20,4646
"type": "array"4747
},48
"reading": {49
"description": "The reader's ink.resenha.reading record for the book, when that's where they keep it. A reading and the reader's Popfeed items named here are one book.",50
"format": "at-uri",51
"type": "string"52
},4853
"updatedAt": {4954
"format": "datetime",5055
"type": "string"5156
}5257
},5358
"required": [5459
"matchedBy",5560
"updatedAt"5661
],5762
"type": "object"5863
},5964
"type": "record"6065
}6166
},6267
"description": "Which catalog book a book in the reader's library is, and which of the reader's records in each book app are that book. Resenha writes these when it matches a reader's Popfeed books to BookHive's catalog, so Popfeed's and BookHive's own records are never changed to hold the match.",6368
"id": "ink.resenha.bookLink",6469
"lexicon": 16570
}