buzz.bookhive.getReadingStats

bookhive.buzz

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "bookSummary": {
      "properties": {
        "authors": {
          "type": "string"
        },
        "cover": {
          "type": "string"
        },
        "hiveId": {
          "type": "string"
        },
        "pageCount": {
          "type": "integer"
        },
        "rating": {
          "type": "integer"
        },
        "thumbnail": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "hiveId",
        "title",
        "authors"
      ],
      "type": "object"
    },
    "genreStat": {
      "properties": {
        "count": {
          "minimum": 0,
          "type": "integer"
        },
        "genre": {
          "type": "string"
        }
      },
      "required": [
        "genre",
        "count"
      ],
      "type": "object"
    },
    "main": {
      "description": "Get reading statistics for a user for a given year.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "availableYears": {
              "items": {
                "type": "integer"
              },
              "type": "array"
            },
            "stats": {
              "ref": "buzz.bookhive.getReadingStats#readingStats",
              "type": "ref"
            },
            "year": {
              "type": "integer"
            }
          },
          "required": [
            "stats",
            "availableYears",
            "year"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "handle": {
            "description": "The user handle or DID",
            "type": "string"
          },
          "year": {
            "description": "The year to fetch stats for. Defaults to current year.",
            "maximum": 2100,
            "minimum": 2000,
            "type": "integer"
          }
        },
        "required": [
          "handle"
        ],
        "type": "params"
      },
      "type": "query"
    },
    "ratingDistribution": {
      "properties": {
        "five": {
          "minimum": 0,
          "type": "integer"
        },
        "four": {
          "minimum": 0,
          "type": "integer"
        },
        "one": {
          "minimum": 0,
          "type": "integer"
        },
        "three": {
          "minimum": 0,
          "type": "integer"
        },
        "two": {
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "one",
        "two",
        "three",
        "four",
        "five"
      ],
      "type": "object"
    },
    "readingStats": {
      "properties": {
        "averagePageCount": {
          "type": "integer"
        },
        "averageRating": {
          "description": "Average rating * 10 (e.g. 42 = 4.2 stars)",
          "type": "integer"
        },
        "booksCount": {
          "minimum": 0,
          "type": "integer"
        },
        "firstBookOfYear": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "lastBookOfYear": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "leastPopularBook": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "longestBook": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "mostPopularBook": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "pagesRead": {
          "minimum": 0,
          "type": "integer"
        },
        "ratingDistribution": {
          "ref": "buzz.bookhive.getReadingStats#ratingDistribution",
          "type": "ref"
        },
        "shortestBook": {
          "ref": "buzz.bookhive.getReadingStats#bookSummary",
          "type": "ref"
        },
        "topGenres": {
          "items": {
            "ref": "buzz.bookhive.getReadingStats#genreStat",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "booksCount",
        "ratingDistribution",
        "topGenres"
      ],
      "type": "object"
    }
  },
  "id": "buzz.bookhive.getReadingStats",
  "lexicon": 1
}

Validate Record

Validate a record against buzz.bookhive.getReadingStats

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:enu2j5xjlqsjaylv3du4myh4
CID
bafyreicaqmppnhifo2mg57nbizkgqqmwqwkbvwas2yxdquxbc47vhou6wy
Indexed At
2026-03-25 09:47 UTC
AT-URI
at://did:plc:enu2j5xjlqsjaylv3du4myh4/com.atproto.lexicon.schema/buzz.bookhive.getReadingStats

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

Lexicon Garden

@