# chat.yakka.readMarker

> Published by [yakka.chat](https://lexicon.garden/identity/did:plc:wpjoy2orkqq5m65vq7gg7liz)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:wpjoy2orkqq5m65vq7gg7liz/chat.yakka.readMarker)
- [Documentation](https://lexicon.garden/lexicon/did:plc:wpjoy2orkqq5m65vq7gg7liz/chat.yakka.readMarker/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:wpjoy2orkqq5m65vq7gg7liz/chat.yakka.readMarker/examples)

## Definitions

### `chat.yakka.readMarker`

**Type**: `record`

How far the viewer has read in one space. Lives in the viewer's own chat.yakka.settings space, authority=self (ADR 0017), so read state follows the person across devices and into third-party clients.

**Key**: `any`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `space` | `string` (at-uri) | Yes | The space this marker is for. Also the record key, so a marker is upserted rather than accumulated. |
| `lastSeen` | `ref` → `com.atproto.repo.strongRef` | Yes | The last message the viewer has seen, by URI. Deliberately NOT yakka.chat's view sequence: that number is service-local and meaningless to another view (ADR 0012), so the portable form references the message and every app derives its own position. yakka.chat caches the derived sequence for unread math; this record stays the truth. |
| `updatedAt` | `string` (datetime) | Yes |  |

## Raw Schema

```json
{
  "id": "chat.yakka.readMarker",
  "defs": {
    "main": {
      "key": "any",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "space",
          "lastSeen",
          "updatedAt"
        ],
        "properties": {
          "space": {
            "type": "string",
            "format": "at-uri",
            "description": "The space this marker is for. Also the record key, so a marker is upserted rather than accumulated."
          },
          "lastSeen": {
            "ref": "com.atproto.repo.strongRef",
            "type": "ref",
            "description": "The last message the viewer has seen, by URI. Deliberately NOT yakka.chat's view sequence: that number is service-local and meaningless to another view (ADR 0012), so the portable form references the message and every app derives its own position. yakka.chat caches the derived sequence for unread math; this record stays the truth."
          },
          "updatedAt": {
            "type": "string",
            "format": "datetime"
          }
        }
      },
      "description": "How far the viewer has read in one space. Lives in the viewer's own chat.yakka.settings space, authority=self (ADR 0017), so read state follows the person across devices and into third-party clients."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
