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