ink.resenha.reading
A reader's reading of a book no catalogue they use holds: the home of last resort, so any book can be added to a library and reviewed. One per book. Status, dates, rating, review and progress live here as they do on a buzz.bookhive.book or a social.popfeed.feed.listItem; the book is named in every key anyone uses, so any app that recognises one of them can show the reading. When the book gains a page in a catalogue app the reader uses, Resenha offers to move the reading there.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | resenha.ink |
| Indexed |
Showing version bafyreictojgcsp75ovqaxlafr7thsreq7rs4tvdjerj4p2vewzwt5acixm. Show the latest
Checks
Validlarge-stringdefs.main.record.properties.reviewmaxLength is over 20 KB. Use a blob for content that large.unlimited-stringdefs.main.record.properties.statusNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A reader's reading of a book no catalogue they use holds: the home of last resort, so any book can be added to a library and reviewed. One per book. Status, dates, rating, review and progress live here as they do on a buzz.bookhive.book or a social.popfeed.feed.listItem; the book is named in every key anyone uses, so any app that recognises one of them can show the reading. When the book gains a page in a catalogue app the reader uses, Resenha offers to move the reading there.",
"key": "tid",
"record": {
"properties": {
"book": {
"ref": "ink.resenha.defs#bookRef",
"type": "ref"
},
"bookProgress": {
"ref": "#progress",
"type": "ref"
},
"coverImage": {
"accept": [
"image/*"
],
"description": "The cover itself, kept in the reader's repository, for a book whose cover has no lasting address elsewhere.",
"maxSize": 2000000,
"type": "blob"
},
"coverUrl": {
"description": "The cover as the reader's app found it, for apps without a catalogue to ask. Kept for Resenha before 1.6.10, which reads only this; newer builds also write covers.",
"format": "uri",
"type": "string"
},
"covers": {
"description": "Every address of the cover the reader's app knew, surest first. A reader tries the next when one fails.",
"items": {
"format": "uri",
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"finishedAt": {
"format": "datetime",
"type": "string"
},
"review": {
"description": "The review as plain text. A formatted version, when there is one, is a site.standard.document the reader's ink.resenha.bookReview links to.",
"maxGraphemes": 15000,
"maxLength": 150000,
"type": "string"
},
"stars": {
"description": "In half stars, 1 to 10, as BookHive and Popfeed keep them.",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"startedAt": {
"format": "datetime",
"type": "string"
},
"status": {
"knownValues": [
"wantToRead",
"reading",
"finished",
"abandoned"
],
"type": "string"
}
},
"required": [
"book",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"progress": {
"description": "How far through the book the reader is, as BookHive's bookProgress has it.",
"properties": {
"currentPage": {
"minimum": 1,
"type": "integer"
},
"percent": {
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"totalPages": {
"minimum": 1,
"type": "integer"
},
"updatedAt": {
"format": "datetime",
"type": "string"
}
},
"required": [
"percent",
"updatedAt"
],
"type": "object"
}
},
"id": "ink.resenha.reading",
"lexicon": 1
}