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.

Repository @resenha.ink did:plc:v7itjf4h3sb5zuegiiskctqb namespace authority
Details · record, key tid
Kindrecord
Record keytid
Authorityresenha.ink
Indexed

Showing version bafyreictojgcsp75ovqaxlafr7thsreq7rs4tvdjerj4p2vewzwt5acixm. Show the latest

cid bafyreictojgcsp75ovqaxlafr7thsreq7rs4tvdjerj4p2vewzwt5acixm

Checks

Valid
  • large-string defs.main.record.properties.reviewmaxLength is over 20 KB. Use a blob for content that large.
  • unlimited-string defs.main.record.properties.statusNo maxLength, maxGraphemes or format limits this string.
JSONDownload
{
  "$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
}