ink.resenha.bookReview
One per reviewed book. The record key is the book's BookHive ID (hiveId), so a reader's review of a book can be found with a single getRecord. A book BookHive doesn't hold is keyed by a stand-in instead, which is also its hiveId: isbn-… and the edition's ISBN-13, or resenha-… and the ink.resenha.reading's record key for a book with no ISBN. Records written before Resenha 1.6.10 may also be keyed popfeed-…, for a book the reader kept in Popfeed.
Details · record, key any
| Kind | record |
|---|---|
| Record key | any |
| Authority | resenha.ink |
| Indexed |
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"drawing": {
"properties": {
"background": {
"description": "The sheet the drawing is on.",
"knownValues": [
"paper",
"notebook"
],
"maxLength": 64,
"type": "string"
},
"block": {
"description": "The drawing block's position in the document's content, counting from 0.",
"minimum": 0,
"type": "integer"
},
"guideFills": {
"description": "The positions, from 0, of the block's fills that are the sheet rather than the writer's drawing.",
"items": {
"minimum": 0,
"type": "integer"
},
"maxLength": 1000,
"type": "array"
},
"guideStrokes": {
"description": "The positions, from 0, of the block's strokes that are ruled lines rather than the writer's drawing.",
"items": {
"minimum": 0,
"type": "integer"
},
"maxLength": 1000,
"type": "array"
}
},
"required": [
"block",
"background"
],
"type": "object"
},
"galleryImage": {
"properties": {
"block": {
"description": "The gallery block's position in the document's content, counting from 0.",
"minimum": 0,
"type": "integer"
},
"fullBleed": {
"description": "The image runs to the page's edges, as a single image block's fullBleed.",
"type": "boolean"
},
"image": {
"description": "The image's position in the gallery, counting from 0.",
"minimum": 0,
"type": "integer"
},
"width": {
"description": "The width the writer gave the image, in points, as a single image block's width.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"block",
"image"
],
"type": "object"
},
"main": {
"description": "One per reviewed book. The record key is the book's BookHive ID (hiveId), so a reader's review of a book can be found with a single getRecord. A book BookHive doesn't hold is keyed by a stand-in instead, which is also its hiveId: isbn-… and the edition's ISBN-13, or resenha-… and the ink.resenha.reading's record key for a book with no ISBN. Records written before Resenha 1.6.10 may also be keyed popfeed-…, for a book the reader kept in Popfeed.",
"key": "any",
"record": {
"properties": {
"book": {
"description": "The reader's record for the book: a buzz.bookhive.book or an ink.resenha.reading, whose review field holds the same review as plain text. A review published before Resenha 1.6.10 may still name a social.popfeed.feed.listItem, for a book the reader kept in Popfeed then. That record may since have been deleted, when the book moved to BookHive or a reading.",
"format": "at-uri",
"type": "string"
},
"bookRef": {
"description": "The book in every key anyone uses, so the review can be found for an edition no catalogue knows, by ISBN.",
"ref": "ink.resenha.defs#bookRef",
"type": "ref"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"document": {
"description": "The site.standard.document that holds the review. Its content is the formatted review; its textContent is the same review as plain text.",
"format": "at-uri",
"type": "string"
},
"drawings": {
"description": "How Resenha drew the document's drawing blocks: the sheet behind each and its ruled lines, which the blocks themselves hold as ordinary fills and strokes. One entry per drawing with a background.",
"items": {
"ref": "#drawing",
"type": "ref"
},
"maxLength": 50,
"type": "array"
},
"galleryImages": {
"description": "The layout the writer gave images inside the document's gallery blocks, which a gallery's images don't hold themselves. A single image block keeps its width and fullBleed in the block.",
"items": {
"ref": "#galleryImage",
"type": "ref"
},
"maxLength": 200,
"type": "array"
},
"hiveId": {
"description": "The book's BookHive ID, or the stand-in the record is keyed by for a book BookHive doesn't hold. Also the record key.",
"maxLength": 64,
"type": "string"
},
"langs": {
"description": "The languages the review is written in, as the reader chose them. BCP-47 codes, as in a Bluesky post's langs.",
"items": {
"format": "language",
"type": "string"
},
"maxLength": 3,
"type": "array"
},
"lineSpacing": {
"description": "The line spacing the writer chose, as a percentage of the font's own line height, as word processors count it. Known values: 100, 115, 150, 200. Absent for the usual spacing.",
"maximum": 400,
"minimum": 50,
"type": "integer"
},
"paragraphSpacing": {
"description": "The gap between paragraphs the writer chose, as a percentage of the text size. Known values: 40, 90, 150. Absent for the usual gap.",
"maximum": 400,
"minimum": 0,
"type": "integer"
},
"spoiler": {
"description": "The reader marked the review as giving away parts of the book. The document carries the same mark as a \"spoiler\" self-label.",
"type": "boolean"
}
},
"required": [
"document",
"book",
"hiveId",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"description": "Connects a book review, published as a site.standard.document, to the book it reviews.",
"id": "ink.resenha.bookReview",
"lexicon": 1
}