# ink.resenha.bookReview

> Published by [resenha.ink](https://lexicon.garden/identity/did:plc:v7itjf4h3sb5zuegiiskctqb)

✓ This is the authoritative definition for this NSID.

## Description

Connects a book review, published as a site.standard.document, to the book it reviews.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:v7itjf4h3sb5zuegiiskctqb/ink.resenha.bookReview)
- [Documentation](https://lexicon.garden/lexicon/did:plc:v7itjf4h3sb5zuegiiskctqb/ink.resenha.bookReview/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:v7itjf4h3sb5zuegiiskctqb/ink.resenha.bookReview/examples)

## Definitions

### `ink.resenha.bookReview`

**Type**: `record`

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.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `book` | `string` (at-uri) | Yes | The reader's record for the book: a buzz.bookhive.book, whose review field holds the same review as plain text, or, for a book the reader keeps in Popfeed, a social.popfeed.feed.listItem, whose newest social.popfeed.feed.review holds it as plain text with a link to the formatted review. |
| `createdAt` | `string` (datetime) | Yes |  |
| `document` | `string` (at-uri) | Yes | The site.standard.document that holds the review. Its content is the formatted review; its textContent is the same review as plain text. |
| `hiveId` | `string` | Yes | The book's BookHive ID. Also the record key. |
| `langs` | `array` | No | The languages the review is written in, as the reader chose them. BCP-47 codes, as in a Bluesky post's langs. |
| `spoiler` | `boolean` | No | The reader marked the review as giving away parts of the book. The document carries the same mark as a "spoiler" self-label. |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "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.",
      "key": "any",
      "record": {
        "properties": {
          "book": {
            "description": "The reader's record for the book: a buzz.bookhive.book, whose review field holds the same review as plain text, or, for a book the reader keeps in Popfeed, a social.popfeed.feed.listItem, whose newest social.popfeed.feed.review holds it as plain text with a link to the formatted review.",
            "format": "at-uri",
            "type": "string"
          },
          "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"
          },
          "hiveId": {
            "description": "The book's BookHive ID. 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"
          },
          "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
}
```
