# com.hectorsector.book.status

> Published by [hectorsector.com](https://lexicon.garden/identity/did:plc:lnhiu2ti45q7ucgw2welc7wn)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:lnhiu2ti45q7ucgw2welc7wn/com.hectorsector.book.status)
- [Documentation](https://lexicon.garden/lexicon/did:plc:lnhiu2ti45q7ucgw2welc7wn/com.hectorsector.book.status/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:lnhiu2ti45q7ucgw2welc7wn/com.hectorsector.book.status/examples)

## Definitions

### `com.hectorsector.book.status`

**Type**: `record`

A reading status change event for a book. Records are append-only and timestamped — each status transition creates a new record rather than mutating an existing one. The current status of a book is derived by taking the most recent status record (by createdAt) referencing that book.

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `book` | `ref` → `com.atproto.repo.strongRef` | Yes | Strong reference to the com.hectorsector.book.book anchor this status applies to. |
| `status` | `string` | Yes | The reading status being set. Open union — future status tokens may be added; consumers should handle unknown values gracefully. |
| `createdAt` | `string` (datetime) | Yes | When the status change occurred. May differ from the record's server-side timestamp when backfilling history from imports (e.g. StoryGraph CSV). |

### `com.hectorsector.book.status#paused`

**Type**: `token`

The user has paused reading the book and hasn't yet decided if they will continue.

The user has paused reading the book and hasn't yet decided if they will continue.

### `com.hectorsector.book.status#reading`

**Type**: `token`

The user is currently reading the book.

The user is currently reading the book.

### `com.hectorsector.book.status#finished`

**Type**: `token`

The user has completed the book.

The user has completed the book.

### `com.hectorsector.book.status#wantToRead`

**Type**: `token`

The user intends to read the book.

The user intends to read the book.

### `com.hectorsector.book.status#didNotFinish`

**Type**: `token`

The user has indicated they won't complete this book.

The user has indicated they won't complete this book.

## Raw Schema

```json
{
  "id": "com.hectorsector.book.status",
  "defs": {
    "main": {
      "key": "tid",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "book",
          "status",
          "createdAt"
        ],
        "properties": {
          "book": {
            "ref": "com.atproto.repo.strongRef",
            "type": "ref",
            "description": "Strong reference to the com.hectorsector.book.book anchor this status applies to."
          },
          "status": {
            "type": "string",
            "maxLength": 128,
            "description": "The reading status being set. Open union — future status tokens may be added; consumers should handle unknown values gracefully.",
            "knownValues": [
              "com.hectorsector.book.status#wantToRead",
              "com.hectorsector.book.status#reading",
              "com.hectorsector.book.status#paused",
              "com.hectorsector.book.status#didNotFinish",
              "com.hectorsector.book.status#finished"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the status change occurred. May differ from the record's server-side timestamp when backfilling history from imports (e.g. StoryGraph CSV)."
          }
        }
      },
      "description": "A reading status change event for a book. Records are append-only and timestamped — each status transition creates a new record rather than mutating an existing one. The current status of a book is derived by taking the most recent status record (by createdAt) referencing that book."
    },
    "paused": {
      "type": "token",
      "description": "The user has paused reading the book and hasn't yet decided if they will continue."
    },
    "reading": {
      "type": "token",
      "description": "The user is currently reading the book."
    },
    "finished": {
      "type": "token",
      "description": "The user has completed the book."
    },
    "wantToRead": {
      "type": "token",
      "description": "The user intends to read the book."
    },
    "didNotFinish": {
      "type": "token",
      "description": "The user has indicated they won't complete this book."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
