org.passingreads.book.event

passingreads.org

Schema Diff

+99 -6

From

CID
bafyreih5hs2nxl6...
Indexed At
2026-04-29 04:17 UTC
View this version

To

CID
bafyreihmn6sjqcd...
Indexed At
2026-09-10 16:07 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

12 breaking changes, 59 non-breaking changes.

Breaking Changes (12)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#giftAcceptance", src: "org.passingreads.book.event#giftAcceptance", tgt: "org.passingreads.book.event#giftAcceptance.gift", kind: "prop", name: Some("gift") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#drop", src: "org.passingreads.book.event#drop", tgt: "org.passingreads.book.event#drop.location", kind: "prop", name: Some("location") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#gift", src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.recipient", kind: "prop", name: Some("recipient") }
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#checkin", src: "org.passingreads.book.event#checkin", tgt: "org.passingreads.book.event#checkin.location", kind: "prop", name: Some("location") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.location", kind: "prop", name: Some("location") }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.event:body.location:variant2" }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant0", kind: "variant", name: Some("com.atproto.repo.strongRef#main") }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant1", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant2", kind: "variant", name: Some("#osmLocation") }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location:variant0", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location:variant1", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • RemovedEdge RemovedEdge { src: "org.passingreads.book.event:body.location:variant2", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
Non-Breaking Changes (59)
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#gift.recipient" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance.gift" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant0" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant1" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant2" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant3" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant4" }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#checkin.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#drop.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find", tgt: "org.passingreads.book.event#find.location", kind: "prop", name: Some("location") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#find.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.location", kind: "prop", name: Some("location") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#gift.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event#giftAcceptance.gift", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.details", kind: "prop", name: Some("details") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant0", kind: "variant", name: Some("#drop") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant1", kind: "variant", name: Some("#find") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant2", kind: "variant", name: Some("#checkin") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant3", kind: "variant", name: Some("#gift") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant4", kind: "variant", name: Some("#giftAcceptance") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant0", tgt: "org.passingreads.book.event#drop", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant1", tgt: "org.passingreads.book.event#find", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant2", tgt: "org.passingreads.book.event#checkin", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant3", tgt: "org.passingreads.book.event#gift", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.details:variant4", tgt: "org.passingreads.book.event#giftAcceptance", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "org.passingreads.book.event:body.location:variant2" }

Added Elements

  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#checkin.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#drop.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#find.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.location:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#gift.recipient" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance" }
  • AddedVertex { vertex_id: "org.passingreads.book.event#giftAcceptance.gift" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant0" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant1" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant2" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant3" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.details:variant4" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#gift", src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.recipient", kind: "prop", name: Some("recipient") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#giftAcceptance", src: "org.passingreads.book.event#giftAcceptance", tgt: "org.passingreads.book.event#giftAcceptance.gift", kind: "prop", name: Some("gift") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#checkin", src: "org.passingreads.book.event#checkin", tgt: "org.passingreads.book.event#checkin.location", kind: "prop", name: Some("location") }
  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event#drop", src: "org.passingreads.book.event#drop", tgt: "org.passingreads.book.event#drop.location", kind: "prop", name: Some("location") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.location", kind: "prop", name: Some("location") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant0", kind: "variant", name: Some("com.atproto.repo.strongRef#main") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant1", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant2", kind: "variant", name: Some("#osmLocation") }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location:variant0", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location:variant1", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Breaking: RemovedEdge { src: "org.passingreads.book.event:body.location:variant2", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location", tgt: "org.passingreads.book.event#checkin.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#checkin.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location", tgt: "org.passingreads.book.event#drop.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#drop.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find", tgt: "org.passingreads.book.event#find.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location", tgt: "org.passingreads.book.event#find.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#find.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift", tgt: "org.passingreads.book.event#gift.location", kind: "prop", name: Some("location") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location", tgt: "org.passingreads.book.event#gift.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#gift.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event#giftAcceptance.gift", tgt: "com.atproto.repo.strongRef#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.details", kind: "prop", name: Some("details") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant0", kind: "variant", name: Some("#drop") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant1", kind: "variant", name: Some("#find") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant2", kind: "variant", name: Some("#checkin") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant3", kind: "variant", name: Some("#gift") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details", tgt: "org.passingreads.book.event:body.details:variant4", kind: "variant", name: Some("#giftAcceptance") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant0", tgt: "org.passingreads.book.event#drop", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant1", tgt: "org.passingreads.book.event#find", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant2", tgt: "org.passingreads.book.event#checkin", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant3", tgt: "org.passingreads.book.event#gift", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.details:variant4", tgt: "org.passingreads.book.event#giftAcceptance", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant0", kind: "variant", name: Some("community.lexicon.location.hthree#main") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.location", tgt: "org.passingreads.book.event:body.location:variant1", kind: "variant", name: Some("#osmLocation") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.location:variant0", tgt: "community.lexicon.location.hthree#main", kind: "ref", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.location:variant1", tgt: "org.passingreads.book.event#osmLocation", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 +
    "checkin": {
5 +
      "description": "The book has moved, but has not changed hands.",
6 +
      "properties": {
7 +
        "location": {
8 +
          "description": "Where the book is now (an h3 cell or an OSM place)",
9 +
          "refs": [
10 +
            "community.lexicon.location.hthree#main",
11 +
            "#osmLocation"
12 +
          ],
13 +
          "type": "union"
14 +
        }
15 +
      },
16 +
      "required": [
17 +
        "location"
18 +
      ],
19 +
      "type": "object"
20 +
    },
21 +
    "drop": {
22 +
      "description": "The book was left at a location for someone else to take.",
23 +
      "properties": {
24 +
        "location": {
25 +
          "description": "Where the book was left (an h3 cell or an OSM place)",
26 +
          "refs": [
27 +
            "community.lexicon.location.hthree#main",
28 +
            "#osmLocation"
29 +
          ],
30 +
          "type": "union"
31 +
        }
32 +
      },
33 +
      "required": [
34 +
        "location"
35 +
      ],
36 +
      "type": "object"
37 +
    },
38 +
    "find": {
39 +
      "description": "The book was picked up, and is now held by the actor.",
40 +
      "properties": {
41 +
        "location": {
42 +
          "description": "Where the book was picked up (an h3 cell or an OSM place), if the finder chose to record it",
43 +
          "refs": [
44 +
            "community.lexicon.location.hthree#main",
45 +
            "#osmLocation"
46 +
          ],
47 +
          "type": "union"
48 +
        }
49 +
      },
50 +
      "type": "object"
51 +
    },
52 +
    "gift": {
53 +
      "description": "The book was handed to a named person. It is theirs once they publish a #giftAcceptance.",
54 +
      "properties": {
55 +
        "location": {
56 +
          "description": "Where the handover happened, if the giver chose to record it.",
57 +
          "refs": [
58 +
            "community.lexicon.location.hthree#main",
59 +
            "#osmLocation"
60 +
          ],
61 +
          "type": "union"
62 +
        },
63 +
        "recipient": {
64 +
          "description": "The person the book was handed to, and the only one who may accept it.",
65 +
          "format": "did",
66 +
          "type": "string"
67 +
        }
68 +
      },
69 +
      "required": [
70 +
        "recipient"
71 +
      ],
72 +
      "type": "object"
73 +
    },
74 +
    "giftAcceptance": {
75 +
      "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.",
76 +
      "properties": {
77 +
        "gift": {
78 +
          "description": "The org.passingreads.book.event whose #gift is being accepted.",
79 +
          "ref": "com.atproto.repo.strongRef#main",
80 +
          "type": "ref"
81 +
        }
82 +
      },
83 +
      "required": [
84 +
        "gift"
85 +
      ],
86 +
      "type": "object"
87 +
    },
4 88
    "main": {
5 89
      "description": "The status of a book has changed.",
6 90
      "key": "tid",
7 91
      "record": {
8 92
        "properties": {
9 93
          "book": {
10 94
            "description": "The book that was dropped (a org.passingreads.book.registration)",
11 95
            "ref": "com.atproto.repo.strongRef#main",
12 96
            "type": "ref"
13 97
          },
98 +
          "details": {
99 +
            "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.",
100 +
            "refs": [
101 +
              "#drop",
102 +
              "#find",
103 +
              "#checkin",
104 +
              "#gift",
105 +
              "#giftAcceptance"
106 +
            ],
107 +
            "type": "union"
108 +
          },
14 109
          "event": {
15 -
            "description": "What event has occurred",
110 +
            "description": "DEPRECATED: superseded by `details`, and ignored whenever `details` is present. Retained so this lexicon still describes records written before the union existed.",
16 111
            "knownValues": [
17 112
              "org.passingreads.book.checkin",
18 113
              "org.passingreads.book.drop",
19 114
              "org.passingreads.book.find"
20 115
            ],
21 116
            "type": "string"
22 117
          },
23 118
          "location": {
24 -
            "description": "Where this event occurred (an h3 cell, an OSM place, or a link to an outpost — org.passingreads.outpost.registration)",
119 +
            "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.",
25 120
            "refs": [
26 -
              "com.atproto.repo.strongRef#main",
27 121
              "community.lexicon.location.hthree#main",
28 122
              "#osmLocation"
29 123
            ],
30 124
            "type": "union"
31 125
          },
32 126
          "occurredAt": {
33 127
            "description": "Client-declared timestamp of when the book was dropped",
34 128
            "format": "datetime",
35 129
            "type": "string"
36 130
          },
37 131
          "signatures": {
38 -
            "description": "Inline attestations binding this event to the book's keypair.",
132 +
            "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.",
39 133
            "items": {
40 134
              "ref": "org.passingreads.signature.book#main",
41 135
              "type": "ref"
42 136
            },
43 -
            "minLength": 1,
137 +
            "minLength": 0,
44 138
            "type": "array"
45 139
          }
46 140
        },
47 141
        "required": [
48 142
          "book",
49 -
          "location",
50 143
          "signatures",
51 144
          "occurredAt"
52 145
        ],
53 146
        "type": "object"
54 147
      },
55 148
      "type": "record"
56 149
    },
57 150
    "osmLocation": {
58 151
      "description": "A physical location from OpenStreetMap.",
59 152
      "properties": {
60 153
        "category": {
61 154
          "description": "The type of place (e.g., cafe, library, park).",
62 155
          "type": "string"
63 156
        },
64 157
        "name": {
65 158
          "description": "The name of the place from OpenStreetMap.",
66 159
          "type": "string"
67 160
        },
68 161
        "osmId": {
69 162
          "description": "The OpenStreetMap element ID in interoperable format: N (node), W (way), or R (relation) prefix followed by numeric ID. Example: N123456789",
70 163
          "type": "string"
71 164
        },
72 165
        "value": {
73 166
          "description": "The H3 cell index for proximity queries.",
74 167
          "type": "string"
75 168
        }
76 169
      },
77 170
      "required": [
78 171
        "osmId",
79 172
        "name",
80 173
        "value"
81 174
      ],
82 175
      "type": "object"
83 176
    }
84 177
  },
85 178
  "id": "org.passingreads.book.event",
86 179
  "lexicon": 1
87 180
}

Compare Other Versions

Lexicon Garden

@