org.passingreads.book.event
Schema Diff
+10 -16
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
}