org.passingreads.book.event
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"checkin": {
"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": {
"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": {
"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)",
"refs": [
"community.lexicon.location.hthree#main",
"#osmLocation"
],
"type": "union"
}
},
"required": [
"location"
],
"type": "object"
},
"gift": {
"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": {
"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"
},
"main": {
"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"
},
"osmLocation": {
"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"
}
},
"id": "org.passingreads.book.event",
"lexicon": 1
}
Metadata
- DID
-
did:plc:oeipalbxet5jghoqe6b6ctu6 - CID
-
bafyreidycff5x4lqnibjthvxvxshaaohq2atwrrmocj4xpvcg36ue3cigi - Indexed At
- 2026-09-10 14:16 UTC
- AT-URI
-
at://did:plc:oeipalbxet5jghoqe6b6ctu6/com.atproto.lexicon.schema/org.passingreads.book.event
Version History (6 versions)
Referenced Schemas (2)
- community.lexicon.location.hthree
- org.passingreads.signature.book
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
A confirmed book event for display purposes. Omits the `signatures` array and book reference since it's shown in context of a book.
-
Represents a book being moved to a location, without changing hands.