buzz.bookhive.defs
Schema Diff
+22 -0
1
1
{
2
2
"id": "buzz.bookhive.defs",
3
3
"defs": {
4
4
"owned": {
5
5
"type": "token",
6
6
"description": "User owns the book"
7
7
},
8
8
"review": {
9
9
"type": "object",
10
10
"required": [
11
11
"review",
12
12
"createdAt",
13
13
"did",
14
14
"handle"
15
15
],
16
16
"properties": {
17
17
"did": {
18
18
"type": "string",
19
19
"description": "The DID of the user who made the review"
20
20
},
21
21
"stars": {
22
22
"type": "integer",
23
23
"description": "The number of stars given to the book"
24
24
},
25
25
"handle": {
26
26
"type": "string",
27
27
"description": "The handle of the user who made the review"
28
28
},
29
29
"review": {
30
30
"type": "string",
31
31
"description": "The review content"
32
32
},
33
33
"createdAt": {
34
34
"type": "string",
35
35
"format": "datetime",
36
36
"description": "The date the review was created"
37
37
}
38
38
}
39
39
},
40
40
"comment": {
41
41
"type": "object",
42
42
"required": [
43
43
"comment",
44
44
"createdAt",
45
45
"book",
46
46
"parent",
47
47
"did",
48
48
"handle"
49
49
],
50
50
"properties": {
51
51
"did": {
52
52
"type": "string",
53
53
"description": "The DID of the user who made the comment"
54
54
},
55
55
"book": {
56
56
"ref": "com.atproto.repo.strongRef",
57
57
"type": "ref"
58
58
},
59
59
"handle": {
60
60
"type": "string",
61
61
"description": "The handle of the user who made the comment"
62
62
},
63
63
"parent": {
64
64
"ref": "com.atproto.repo.strongRef",
65
65
"type": "ref"
66
66
},
67
67
"comment": {
68
68
"type": "string",
69
69
"maxLength": 100000,
70
70
"description": "The content of the comment.",
71
71
"maxGraphemes": 10000
72
72
},
73
73
"createdAt": {
74
74
"type": "string",
75
75
"format": "datetime",
76
76
"description": "Client-declared timestamp when this comment was originally created."
77
77
}
78
78
}
79
79
},
80
80
"profile": {
81
81
"type": "object",
82
82
"required": [
83
83
"displayName",
84
84
"handle",
85
85
"booksRead",
86
86
"reviews"
87
87
],
88
88
"properties": {
89
89
"avatar": {
90
90
"type": "string"
91
91
},
92
92
"handle": {
93
93
"type": "string"
94
94
},
95
95
"reviews": {
96
96
"type": "integer",
97
97
"minimum": 0
98
98
},
99
99
"booksRead": {
100
100
"type": "integer",
101
101
"minimum": 0
102
102
},
103
103
"description": {
104
104
"type": "string"
105
105
},
106
106
"displayName": {
107
107
"type": "string"
108
108
},
109
109
"isFollowing": {
110
110
"type": "boolean",
111
111
"description": "Whether the authed user is following this profile"
112
112
}
113
113
}
114
114
},
115
115
"reading": {
116
116
"type": "token",
117
117
"description": "User is currently reading the book"
118
118
},
119
119
"activity": {
120
120
"type": "object",
121
121
"required": [
122
122
"type",
123
123
"createdAt",
124
124
"hiveId",
125
125
"title",
126
126
"userDid",
127
127
"userHandle"
128
128
],
129
129
"properties": {
130
130
"type": {
131
131
"type": "string",
132
132
"knownValues": [
133
133
"review",
134
134
"rated",
135
135
"started",
136
136
"finished"
137
137
]
138
138
},
139
139
"title": {
140
140
"type": "string",
141
141
"description": "The title of the book"
142
142
},
143
143
"hiveId": {
144
144
"type": "string",
145
145
"description": "The hive id of the book"
146
146
},
147
147
"userDid": {
148
148
"type": "string",
149
149
"description": "The DID of the user who added the book"
150
150
},
151
151
"createdAt": {
152
152
"type": "string",
153
153
"format": "datetime"
154
154
},
155
155
"userHandle": {
156
156
"type": "string",
157
157
"description": "The handle of the user who added the book"
158
158
}
159
159
}
160
160
},
161
161
"finished": {
162
162
"type": "token",
163
163
"description": "User has finished reading the book"
164
164
},
165
165
"userBook": {
166
166
"type": "object",
167
167
"required": [
168
168
"userDid",
169
169
"title",
170
170
"authors",
171
171
"hiveId",
172
172
"createdAt",
173
173
"thumbnail"
174
174
],
175
175
"properties": {
176
176
"cover": {
177
177
"type": "string",
178
178
"description": "Cover image of the book"
179
179
},
180
180
"stars": {
181
181
"type": "integer",
182
182
"maximum": 10,
183
183
"minimum": 1,
184
184
"description": "Number of stars given to the book (1-10) which will be mapped to 1-5 stars"
185
185
},
186
186
"title": {
187
187
"type": "string",
188
188
"maxLength": 512,
189
189
"minLength": 1,
190
190
"description": "The title of the book"
191
191
},
192
192
"hiveId": {
193
193
"type": "string",
194
194
"description": "The book's hive id, used to correlate user's books with the hive"
195
195
},
196
196
"rating": {
197
197
"type": "integer",
198
198
"maximum": 1000,
199
199
"minimum": 0,
200
200
"description": "Average rating (0-1000)"
201
201
},
202
202
"review": {
203
203
"type": "string",
204
204
"description": "The book's review",
205
205
"maxGraphemes": 15000
206
206
},
207
207
"status": {
208
208
"type": "string",
209
209
"knownValues": [
210
210
"buzz.bookhive.defs#finished",
211
211
"buzz.bookhive.defs#reading",
212
212
"buzz.bookhive.defs#wantToRead",
213
213
"buzz.bookhive.defs#abandoned",
214
214
"buzz.bookhive.defs#owned"
215
215
]
216
216
},
217
217
"authors": {
218
218
"type": "string",
219
219
"maxLength": 2048,
220
220
"minLength": 1,
221
221
"description": "The authors of the book (tab separated)"
222
222
},
223
223
"userDid": {
224
224
"type": "string",
225
225
"description": "The DID of the user who added the book"
226
226
},
227
227
"createdAt": {
228
228
"type": "string",
229
229
"format": "datetime"
230
230
},
231
231
"startedAt": {
232
232
"type": "string",
233
233
"format": "datetime",
234
234
"description": "The date the user started reading the book"
235
235
},
236
236
"thumbnail": {
237
237
"type": "string",
238
238
"description": "Cover image of the book"
239
239
},
240
240
"finishedAt": {
241
241
"type": "string",
242
242
"format": "datetime",
243
243
"description": "The date the user finished reading the book"
244
244
},
245
245
"userHandle": {
246
246
"type": "string",
247
247
"description": "The handle of the user who added the book"
248
248
},
249
249
"description": {
250
250
"type": "string",
251
251
"maxLength": 5000,
252
252
"description": "Book description/summary"
253
253
},
254
254
"bookProgress": {
255
255
"ref": "buzz.bookhive.defs#bookProgress",
256
256
"type": "ref",
257
257
"description": "Progress tracking information for the book"
258
258
}
259
259
}
260
260
},
261
261
"abandoned": {
262
262
"type": "token",
263
263
"description": "User has abandoned the book"
264
264
},
265
265
"wantToRead": {
266
266
"type": "token",
267
267
"description": "User wants to read the book"
268
268
},
269
269
"bookProgress": {
270
270
"type": "object",
271
271
"required": [
272
272
"updatedAt"
273
273
],
274
274
"properties": {
275
275
"percent": {
276
276
"type": "integer",
277
277
"maximum": 100,
278
278
"minimum": 0,
279
279
"description": "How far through the book the reader is (0-100)"
280
280
},
281
281
"updatedAt": {
282
282
"type": "string",
283
283
"format": "datetime",
284
284
"description": "When the progress was last updated"
285
285
},
286
286
"totalPages": {
287
287
"type": "integer",
288
288
"minimum": 1,
289
289
"description": "Total number of pages in the book"
290
290
},
291
291
"currentPage": {
292
292
"type": "integer",
293
293
"minimum": 1,
294
294
"description": "Current page the user is on"
295
295
},
296
296
"totalChapters": {
297
297
"type": "integer",
298
298
"minimum": 1,
299
299
"description": "Total number of chapters in the book"
300
300
},
301
301
"currentChapter": {
302
302
"type": "integer",
303
303
"minimum": 1,
304
304
"description": "Current chapter the user is on"
305
305
}
306
306
},
307
307
"description": "Reading progress tracking data"
308
+
},
309
+
"bookIdentifiers": {
310
+
"type": "object",
311
+
"properties": {
312
+
"hiveId": {
313
+
"type": "string",
314
+
"description": "BookHive's internal ID"
315
+
},
316
+
"isbn10": {
317
+
"type": "string",
318
+
"description": "10-digit ISBN"
319
+
},
320
+
"isbn13": {
321
+
"type": "string",
322
+
"description": "13-digit ISBN"
323
+
},
324
+
"goodreadsId": {
325
+
"type": "string",
326
+
"description": "Goodreads book ID"
327
+
}
328
+
},
329
+
"description": "External identifiers for a book"
308
330
}
309
331
},
310
332
"$type": "com.atproto.lexicon.schema",
311
333
"lexicon": 1
312
334
}