ink.resenha.book.getBook
A book's page from Resenha's index: an edition's readers with their readings, everyone's reviews of it, and its other editions with theirs. By BookHive ID or ISBN-13, so a book BookHive's catalogue doesn't know has one page shared by its readers. Readers the caller blocks are left out. Requires the caller's service token.
Details · query
| Kind | query |
|---|---|
| Authority | book.resenha.ink |
| Indexed |
Checks
Validunlimited-stringdefs.otherEdition.properties.confidenceNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.otherEdition.properties.sources.itemsNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.reading.properties.sourceNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.reading.properties.statusNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"counts": {
"properties": {
"abandoned": {
"minimum": 0,
"type": "integer"
},
"read": {
"minimum": 0,
"type": "integer"
},
"reading": {
"minimum": 0,
"type": "integer"
},
"wantToRead": {
"minimum": 0,
"type": "integer"
}
},
"required": [
"wantToRead",
"reading",
"read",
"abandoned"
],
"type": "object"
},
"edition": {
"description": "One edition as the index knows it: BookHive's facts when it has the book, else what its readers' records say.",
"properties": {
"authors": {
"description": "Tab-separated, as BookHive stores them.",
"maxLength": 1024,
"type": "string"
},
"cover": {
"format": "uri",
"type": "string"
},
"covers": {
"items": {
"format": "uri",
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"genres": {
"items": {
"maxLength": 64,
"type": "string"
},
"maxLength": 32,
"type": "array"
},
"hiveId": {
"maxLength": 64,
"type": "string"
},
"isbn13": {
"maxLength": 13,
"type": "string"
},
"isbns": {
"description": "Every ISBN-13 known for the edition, when there is more than one.",
"items": {
"maxLength": 13,
"type": "string"
},
"maxLength": 16,
"type": "array"
},
"language": {
"maxLength": 64,
"type": "string"
},
"pages": {
"minimum": 1,
"type": "integer"
},
"publisher": {
"maxLength": 256,
"type": "string"
},
"title": {
"maxLength": 512,
"type": "string"
},
"year": {
"type": "integer"
}
},
"type": "object"
},
"main": {
"description": "A book's page from Resenha's index: an edition's readers with their readings, everyone's reviews of it, and its other editions with theirs. By BookHive ID or ISBN-13, so a book BookHive's catalogue doesn't know has one page shared by its readers. Readers the caller blocks are left out. Requires the caller's service token.",
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"book": {
"ref": "#edition",
"type": "ref"
},
"counts": {
"ref": "#counts",
"type": "ref"
},
"editions": {
"description": "Other editions of the book, surest first.",
"items": {
"ref": "#otherEdition",
"type": "ref"
},
"type": "array"
},
"profiles": {
"items": {
"ref": "ink.resenha.defs#profileView",
"type": "ref"
},
"type": "array"
},
"readings": {
"description": "Up to a hundred: the caller's follows first, then by the latest change.",
"items": {
"ref": "#reading",
"type": "ref"
},
"type": "array"
},
"reviews": {
"description": "Every review of this edition the index holds, newest first, each with the whole text and where its likes and comments live (popfeedReview or post) and how many.",
"items": {
"ref": "ink.resenha.defs#reviewView",
"type": "ref"
},
"type": "array"
}
},
"required": [
"book",
"counts",
"readings",
"reviews",
"editions"
],
"type": "object"
}
},
"parameters": {
"properties": {
"hiveId": {
"description": "The book's BookHive ID. Not a stand-in beginning popfeed-, which names one reader's copy.",
"maxLength": 64,
"type": "string"
},
"isbn13": {
"description": "The edition's ISBN-13, for a book without a BookHive ID.",
"maxLength": 13,
"type": "string"
}
},
"type": "params"
},
"type": "query"
},
"otherEdition": {
"properties": {
"book": {
"ref": "#edition",
"type": "ref"
},
"confidence": {
"description": "sure: tied by BookHive's catalogue, a reader's link or Open Library's work. likely: the same title and first author after normalising, which a reader can confirm.",
"knownValues": [
"sure",
"likely"
],
"type": "string"
},
"readers": {
"minimum": 0,
"type": "integer"
},
"reviews": {
"items": {
"ref": "ink.resenha.defs#reviewView",
"type": "ref"
},
"type": "array"
},
"sources": {
"items": {
"knownValues": [
"catalogue",
"bookhive",
"reader",
"match",
"openlibrary",
"title"
],
"type": "string"
},
"type": "array"
}
},
"required": [
"book",
"confidence",
"readers",
"reviews"
],
"type": "object"
},
"reading": {
"description": "One reader's record for the edition, with Resenha's likes and comments on it.",
"properties": {
"actor": {
"format": "did",
"type": "string"
},
"cid": {
"format": "cid",
"type": "string"
},
"commentCount": {
"minimum": 0,
"type": "integer"
},
"finishedAt": {
"format": "datetime",
"type": "string"
},
"hasReview": {
"type": "boolean"
},
"likeCount": {
"minimum": 0,
"type": "integer"
},
"progress": {
"ref": "ink.resenha.defs#progressView",
"type": "ref"
},
"source": {
"knownValues": [
"bookhive",
"popfeed"
],
"type": "string"
},
"stars": {
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"startedAt": {
"format": "datetime",
"type": "string"
},
"status": {
"knownValues": [
"wantToRead",
"reading",
"read",
"abandoned"
],
"type": "string"
},
"uri": {
"description": "The reader's BookHive book record or Popfeed list item.",
"format": "at-uri",
"type": "string"
},
"viewer": {
"ref": "ink.resenha.defs#viewerState",
"type": "ref"
}
},
"required": [
"uri",
"actor",
"source"
],
"type": "object"
}
},
"id": "ink.resenha.book.getBook",
"lexicon": 1
}