buzz.bookhive.hiveBook
Schema Diff
+7 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 4 non-breaking changes.
Non-Breaking Changes (4)
- AddedVertex AddedVertex { vertex_id: "buzz.bookhive.hiveBook:body.genres" }
- AddedVertex AddedVertex { vertex_id: "buzz.bookhive.hiveBook:body.genres:items" }
- AddedEdge AddedEdge { src: "buzz.bookhive.hiveBook:body", tgt: "buzz.bookhive.hiveBook:body.genres", kind: "prop", name: Some("genres") }
- AddedEdge AddedEdge { src: "buzz.bookhive.hiveBook:body.genres", tgt: "buzz.bookhive.hiveBook:body.genres:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "buzz.bookhive.hiveBook:body.genres" }AddedVertex { vertex_id: "buzz.bookhive.hiveBook:body.genres:items" }
Additional Notes
- Non-breaking: AddedEdge { src: "buzz.bookhive.hiveBook:body", tgt: "buzz.bookhive.hiveBook:body.genres", kind: "prop", name: Some("genres") }
- Non-breaking: AddedEdge { src: "buzz.bookhive.hiveBook:body.genres", tgt: "buzz.bookhive.hiveBook:body.genres:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "A book within the hive",
6
6
"key": "tid",
7
7
"record": {
8
8
"properties": {
9
9
"authors": {
10
10
"description": "The authors of the book (tab separated)",
11
11
"maxLength": 512,
12
12
"minLength": 1,
13
13
"type": "string"
14
14
},
15
15
"cover": {
16
16
"description": "URL to full-size cover image",
17
17
"type": "string"
18
18
},
19
19
"createdAt": {
20
20
"format": "datetime",
21
21
"type": "string"
22
22
},
23
23
"description": {
24
24
"description": "Book description/summary",
25
25
"maxLength": 5000,
26
26
"type": "string"
27
27
},
28
+
"genres": {
29
+
"description": "Book genres",
30
+
"items": {
31
+
"type": "string"
32
+
},
33
+
"type": "array"
34
+
},
28
35
"id": {
29
36
"description": "The book's hive id, used to correlate user's books with the hive",
30
37
"type": "string"
31
38
},
32
39
"identifiers": {
33
40
"description": "External identifiers for the book",
34
41
"ref": "buzz.bookhive.defs#bookIdentifiers",
35
42
"type": "ref"
36
43
},
37
44
"rating": {
38
45
"description": "Average rating (0-1000)",
39
46
"maximum": 1000,
40
47
"minimum": 0,
41
48
"type": "integer"
42
49
},
43
50
"ratingsCount": {
44
51
"description": "Number of ratings",
45
52
"type": "integer"
46
53
},
47
54
"source": {
48
55
"description": "The source service name (e.g. Goodreads)",
49
56
"type": "string"
50
57
},
51
58
"sourceId": {
52
59
"description": "ID of the book in the source service",
53
60
"type": "string"
54
61
},
55
62
"sourceUrl": {
56
63
"description": "URL to the book on the source service",
57
64
"type": "string"
58
65
},
59
66
"thumbnail": {
60
67
"description": "URL to thumbnail image",
61
68
"type": "string"
62
69
},
63
70
"title": {
64
71
"description": "The title of the book",
65
72
"maxLength": 512,
66
73
"minLength": 1,
67
74
"type": "string"
68
75
},
69
76
"updatedAt": {
70
77
"format": "datetime",
71
78
"type": "string"
72
79
}
73
80
},
74
81
"required": [
75
82
"id",
76
83
"title",
77
84
"authors",
78
85
"createdAt",
79
86
"updatedAt",
80
87
"thumbnail"
81
88
],
82
89
"type": "object"
83
90
},
84
91
"type": "record"
85
92
}
86
93
},
87
94
"id": "buzz.bookhive.hiveBook",
88
95
"lexicon": 1
89
96
}