# ink.resenha.bookLink

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

✓ This is the authoritative definition for this NSID.

## Description

Which catalog book a book in the reader's library is, and which of the reader's records in each book app are that book. Resenha writes these when it matches a reader's Popfeed books to BookHive's catalog, so Popfeed's and BookHive's own records are never changed to hold the match.

## Links

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

## Definitions

### `ink.resenha.bookLink`

**Type**: `record`

One per book. The record key is the book's BookHive ID (hiveId); a book with no match yet is keyed popfeed-<record key of its first listItem>.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `bookhive` | `string` (at-uri) | No | The reader's buzz.bookhive.book record for the book, when they have one. |
| `hiveId` | `string` | No | The book's BookHive ID. Absent when no match was found. |
| `isbn13` | `string` | No | The edition the reader's records name, when they name one. |
| `matchedBy` | `string` | Yes | identifiers: an ISBN or Goodreads number agreed, or the item named its BookHive ID. search: title and author agreed. reader: chosen by the reader, and never changed automatically. none: no match yet. |
| `popfeed` | `array` | No | The reader's social.popfeed.feed.listItem records for the book. A book can be on more than one list. |
| `updatedAt` | `string` (datetime) | Yes |  |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "One per book. The record key is the book's BookHive ID (hiveId); a book with no match yet is keyed popfeed-<record key of its first listItem>.",
      "key": "any",
      "record": {
        "properties": {
          "bookhive": {
            "description": "The reader's buzz.bookhive.book record for the book, when they have one.",
            "format": "at-uri",
            "type": "string"
          },
          "hiveId": {
            "description": "The book's BookHive ID. Absent when no match was found.",
            "maxLength": 64,
            "type": "string"
          },
          "isbn13": {
            "description": "The edition the reader's records name, when they name one.",
            "maxLength": 13,
            "type": "string"
          },
          "matchedBy": {
            "description": "identifiers: an ISBN or Goodreads number agreed, or the item named its BookHive ID. search: title and author agreed. reader: chosen by the reader, and never changed automatically. none: no match yet.",
            "knownValues": [
              "identifiers",
              "search",
              "reader",
              "none"
            ],
            "type": "string"
          },
          "popfeed": {
            "description": "The reader's social.popfeed.feed.listItem records for the book. A book can be on more than one list.",
            "items": {
              "format": "at-uri",
              "type": "string"
            },
            "maxLength": 20,
            "type": "array"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "matchedBy",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "Which catalog book a book in the reader's library is, and which of the reader's records in each book app are that book. Resenha writes these when it matches a reader's Popfeed books to BookHive's catalog, so Popfeed's and BookHive's own records are never changed to hold the match.",
  "id": "ink.resenha.bookLink",
  "lexicon": 1
}
```
