org.passingreads.book.event

passingreads.org

Documentation

The status of a book has changed.

main record

The status of a book has changed.

Record Key tid Timestamp-based ID

Properties

details union Optional

What happened to the book. Each member carries the fields that event type requires — notably whether a `location` is mandatory. Absent only on records written before this union existed, which carry `event` and a top-level `location` instead.

event string Optional

DEPRECATED: superseded by `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.

Known values: org.passingreads.book.checkin, org.passingreads.book.drop, org.passingreads.book.find
location union Optional

DEPRECATED: superseded by the `location` inside `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.

occurredAt string datetime Required

Client-declared timestamp of when the book was dropped

signatures array of ref org.passingreads.signature.book#main Required

Inline attestations binding this event to the book's keypair. Empty only on a #giftAcceptance, whose authority is the referenced gift naming the accepting repository.

minLength: 0 items
View raw schema
{
  "description": "The status of a book has changed.",
  "key": "tid",
  "record": {
    "properties": {
      "book": {
        "description": "The book that was dropped (a org.passingreads.book.registration)",
        "ref": "com.atproto.repo.strongRef#main",
        "type": "ref"
      },
      "details": {
        "description": "What happened to the book. Each member carries the fields that event type requires — notably whether a `location` is mandatory. Absent only on records written before this union existed, which carry `event` and a top-level `location` instead.",
        "refs": [
          "#drop",
          "#find",
          "#checkin",
          "#gift",
          "#giftAcceptance"
        ],
        "type": "union"
      },
      "event": {
        "description": "DEPRECATED: superseded by `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.",
        "knownValues": [
          "org.passingreads.book.checkin",
          "org.passingreads.book.drop",
          "org.passingreads.book.find"
        ],
        "type": "string"
      },
      "location": {
        "description": "DEPRECATED: superseded by the `location` inside `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.",
        "refs": [
          "community.lexicon.location.hthree#main",
          "#osmLocation"
        ],
        "type": "union"
      },
      "occurredAt": {
        "description": "Client-declared timestamp of when the book was dropped",
        "format": "datetime",
        "type": "string"
      },
      "signatures": {
        "description": "Inline attestations binding this event to the book's keypair. Empty only on a #giftAcceptance, whose authority is the referenced gift naming the accepting repository.",
        "items": {
          "ref": "org.passingreads.signature.book#main",
          "type": "ref"
        },
        "minLength": 0,
        "type": "array"
      }
    },
    "required": [
      "book",
      "signatures",
      "occurredAt"
    ],
    "type": "object"
  },
  "type": "record"
}
checkin object

The book has moved, but has not changed hands.

Properties

View raw schema
{
  "description": "The book has moved, but has not changed hands.",
  "properties": {
    "location": {
      "description": "Where the book is now (an h3 cell or an OSM place)",
      "refs": [
        "community.lexicon.location.hthree#main",
        "#osmLocation"
      ],
      "type": "union"
    }
  },
  "required": [
    "location"
  ],
  "type": "object"
}
drop object

The book was left at a location for someone else to take.

Properties

View raw schema
{
  "description": "The book was left at a location for someone else to take.",
  "properties": {
    "location": {
      "description": "Where the book was left (an h3 cell or an OSM place)",
      "refs": [
        "community.lexicon.location.hthree#main",
        "#osmLocation"
      ],
      "type": "union"
    }
  },
  "required": [
    "location"
  ],
  "type": "object"
}
find object

The book was picked up, and is now held by the actor.

Properties

View raw schema
{
  "description": "The book was picked up, and is now held by the actor.",
  "properties": {
    "location": {
      "description": "Where the book was picked up (an h3 cell or an OSM place), if the finder chose to record it",
      "refs": [
        "community.lexicon.location.hthree#main",
        "#osmLocation"
      ],
      "type": "union"
    }
  },
  "type": "object"
}
gift object

The book was handed to a named person. It is theirs once they publish a #giftAcceptance.

Properties

recipient string did Required

The person the book was handed to, and the only one who may accept it.

View raw schema
{
  "description": "The book was handed to a named person. It is theirs once they publish a #giftAcceptance.",
  "properties": {
    "location": {
      "description": "Where the handover happened, if the giver chose to record it.",
      "refs": [
        "community.lexicon.location.hthree#main",
        "#osmLocation"
      ],
      "type": "union"
    },
    "recipient": {
      "description": "The person the book was handed to, and the only one who may accept it.",
      "format": "did",
      "type": "string"
    }
  },
  "required": [
    "recipient"
  ],
  "type": "object"
}
giftAcceptance object

The named recipient of a #gift has taken the book. Carries no signatures: the recipient need not hold the book's keypair, and the signed gift naming their repository is the authority instead.

Properties

View raw schema
{
  "description": "The named recipient of a #gift has taken the book. Carries no signatures: the recipient need not hold the book's keypair, and the signed gift naming their repository is the authority instead.",
  "properties": {
    "gift": {
      "description": "The org.passingreads.book.event whose #gift is being accepted.",
      "ref": "com.atproto.repo.strongRef#main",
      "type": "ref"
    }
  },
  "required": [
    "gift"
  ],
  "type": "object"
}
osmLocation object

A physical location from OpenStreetMap.

Properties

category string Optional

The type of place (e.g., cafe, library, park).

name string Required

The name of the place from OpenStreetMap.

osmId string Required

The OpenStreetMap element ID in interoperable format: N (node), W (way), or R (relation) prefix followed by numeric ID. Example: N123456789

value string Required

The H3 cell index for proximity queries.

View raw schema
{
  "description": "A physical location from OpenStreetMap.",
  "properties": {
    "category": {
      "description": "The type of place (e.g., cafe, library, park).",
      "type": "string"
    },
    "name": {
      "description": "The name of the place from OpenStreetMap.",
      "type": "string"
    },
    "osmId": {
      "description": "The OpenStreetMap element ID in interoperable format: N (node), W (way), or R (relation) prefix followed by numeric ID. Example: N123456789",
      "type": "string"
    },
    "value": {
      "description": "The H3 cell index for proximity queries.",
      "type": "string"
    }
  },
  "required": [
    "osmId",
    "name",
    "value"
  ],
  "type": "object"
}

Lexicon Garden

@