org.passingreads.book.event

passingreads.org

Schema Diff

+10 -16

From

CID
bafyreiaxtu6qywb...
Indexed At
2026-04-06 07:09 UTC
View this version

To

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

Compatibility Analysis

Breaking Changes Detected

7 breaking changes, 5 non-breaking changes.

Breaking Changes (7)
  • RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.signatures", kind: "prop", name: Some("signatures") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.did", kind: "prop", name: Some("did") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.bookSig", kind: "prop", name: Some("bookSig") }
  • RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.bookPub", kind: "prop", name: Some("bookPub") }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.event:body.bookPub" }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.event:body.bookSig" }
  • RemovedVertex RemovedVertex { vertex_id: "org.passingreads.book.event:body.did" }
Non-Breaking Changes (5)
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.signatures" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.book.event:body.signatures:items" }
  • AddedVertex AddedVertex { vertex_id: "org.passingreads.signature.book#main" }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.signatures", tgt: "org.passingreads.book.event:body.signatures:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "org.passingreads.book.event:body.signatures:items", tgt: "org.passingreads.signature.book#main", kind: "ref", name: None }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "org.passingreads.book.event:body.bookPub" }
  • RemovedVertex { vertex_id: "org.passingreads.book.event:body.bookSig" }
  • RemovedVertex { vertex_id: "org.passingreads.book.event:body.did" }

Added Elements

  • AddedVertex { vertex_id: "org.passingreads.book.event:body.signatures" }
  • AddedVertex { vertex_id: "org.passingreads.book.event:body.signatures:items" }
  • AddedVertex { vertex_id: "org.passingreads.signature.book#main" }

Additional Notes

  • Breaking: RequiredEdgeAdded { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.signatures", kind: "prop", name: Some("signatures") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.did", kind: "prop", name: Some("did") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.bookSig", kind: "prop", name: Some("bookSig") }
  • Breaking: RequiredEdgeRemoved { vertex_id: "org.passingreads.book.event:body", src: "org.passingreads.book.event:body", tgt: "org.passingreads.book.event:body.bookPub", kind: "prop", name: Some("bookPub") }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.signatures", tgt: "org.passingreads.book.event:body.signatures:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "org.passingreads.book.event:body.signatures:items", tgt: "org.passingreads.signature.book#main", kind: "ref", name: None }
1 1
{
2 2
  "$type": "com.atproto.lexicon.schema",
3 3
  "defs": {
4 4
    "main": {
5 5
      "description": "The status of a book has changed.",
6 6
      "key": "tid",
7 7
      "record": {
8 8
        "properties": {
9 9
          "book": {
10 10
            "description": "The book that was dropped (a org.passingreads.book.registration)",
11 11
            "ref": "com.atproto.repo.strongRef#main",
12 12
            "type": "ref"
13 13
          },
14 -
          "bookPub": {
15 -
            "description": "The multicodec public key of the book.",
16 -
            "type": "bytes"
17 -
          },
18 -
          "bookSig": {
19 -
            "description": "The signature of this record, without this attribute, as created by the private key associated with the book",
20 -
            "type": "bytes"
21 -
          },
22 -
          "did": {
23 -
            "description": "The DID of the person who registered the book. Included here, so it's verifiable with the bookSig.",
24 -
            "format": "did",
25 -
            "type": "string"
26 -
          },
27 14
          "event": {
28 15
            "description": "What event has occurred",
29 16
            "knownValues": [
30 17
              "org.passingreads.book.checkin",
31 18
              "org.passingreads.book.drop",
32 19
              "org.passingreads.book.find"
33 20
            ],
34 21
            "type": "string"
35 22
          },
36 23
          "location": {
37 24
            "description": "Where this event occurred (an h3 cell, an OSM place, or a link to an outpost — org.passingreads.outpost.registration)",
38 25
            "refs": [
39 26
              "com.atproto.repo.strongRef#main",
40 27
              "community.lexicon.location.hthree#main",
41 28
              "#osmLocation"
42 29
            ],
43 30
            "type": "union"
44 31
          },
45 32
          "occurredAt": {
46 33
            "description": "Client-declared timestamp of when the book was dropped",
47 34
            "format": "datetime",
48 35
            "type": "string"
36 +
          },
37 +
          "signatures": {
38 +
            "description": "Inline attestations binding this event to the book's keypair.",
39 +
            "items": {
40 +
              "ref": "org.passingreads.signature.book#main",
41 +
              "type": "ref"
42 +
            },
43 +
            "minLength": 1,
44 +
            "type": "array"
49 45
          }
50 46
        },
51 47
        "required": [
52 -
          "did",
53 48
          "book",
54 49
          "location",
55 -
          "bookPub",
56 -
          "bookSig",
50 +
          "signatures",
57 51
          "occurredAt"
58 52
        ],
59 53
        "type": "object"
60 54
      },
61 55
      "type": "record"
62 56
    },
63 57
    "osmLocation": {
64 58
      "description": "A physical location from OpenStreetMap.",
65 59
      "properties": {
66 60
        "category": {
67 61
          "description": "The type of place (e.g., cafe, library, park).",
68 62
          "type": "string"
69 63
        },
70 64
        "name": {
71 65
          "description": "The name of the place from OpenStreetMap.",
72 66
          "type": "string"
73 67
        },
74 68
        "osmId": {
75 69
          "description": "The OpenStreetMap element ID in interoperable format: N (node), W (way), or R (relation) prefix followed by numeric ID. Example: N123456789",
76 70
          "type": "string"
77 71
        },
78 72
        "value": {
79 73
          "description": "The H3 cell index for proximity queries.",
80 74
          "type": "string"
81 75
        }
82 76
      },
83 77
      "required": [
84 78
        "osmId",
85 79
        "name",
86 80
        "value"
87 81
      ],
88 82
      "type": "object"
89 83
    }
90 84
  },
91 85
  "id": "org.passingreads.book.event",
92 86
  "lexicon": 1
93 87
}

Compare Other Versions

Lexicon Garden

@