ink.resenha.bookReview
Schema Diff
+13 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 6 non-breaking changes.
Non-Breaking Changes (6)
- AddedVertex AddedVertex { vertex_id: "ink.resenha.bookReview:body.langs" }
- AddedVertex AddedVertex { vertex_id: "ink.resenha.bookReview:body.langs:items" }
- AddedVertex AddedVertex { vertex_id: "ink.resenha.bookReview:body.spoiler" }
- AddedEdge AddedEdge { src: "ink.resenha.bookReview:body", tgt: "ink.resenha.bookReview:body.langs", kind: "prop", name: Some("langs") }
- AddedEdge AddedEdge { src: "ink.resenha.bookReview:body", tgt: "ink.resenha.bookReview:body.spoiler", kind: "prop", name: Some("spoiler") }
- AddedEdge AddedEdge { src: "ink.resenha.bookReview:body.langs", tgt: "ink.resenha.bookReview:body.langs:items", kind: "items", name: None }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "ink.resenha.bookReview:body.langs" }AddedVertex { vertex_id: "ink.resenha.bookReview:body.langs:items" }AddedVertex { vertex_id: "ink.resenha.bookReview:body.spoiler" }
Additional Notes
- Non-breaking: AddedEdge { src: "ink.resenha.bookReview:body", tgt: "ink.resenha.bookReview:body.langs", kind: "prop", name: Some("langs") }
- Non-breaking: AddedEdge { src: "ink.resenha.bookReview:body", tgt: "ink.resenha.bookReview:body.spoiler", kind: "prop", name: Some("spoiler") }
- Non-breaking: AddedEdge { src: "ink.resenha.bookReview:body.langs", tgt: "ink.resenha.bookReview:body.langs:items", kind: "items", name: None }
1
1
{
2
2
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
5
"description": "One per reviewed book. The record key is the book's BookHive ID (hiveId), so a reader's review of a book can be found with a single getRecord.",
6
6
"key": "any",
7
7
"record": {
8
8
"properties": {
9
9
"book": {
10
10
"description": "The reader's buzz.bookhive.book record for the book. Its review field holds the same review as plain text.",
11
11
"format": "at-uri",
12
12
"type": "string"
13
13
},
14
14
"createdAt": {
15
15
"format": "datetime",
16
16
"type": "string"
17
17
},
18
18
"document": {
19
19
"description": "The site.standard.document that holds the review. Its content is the formatted review; its textContent is the same review as plain text.",
20
20
"format": "at-uri",
21
21
"type": "string"
22
22
},
23
23
"hiveId": {
24
24
"description": "The book's BookHive ID. Also the record key.",
25
25
"maxLength": 64,
26
26
"type": "string"
27
+
},
28
+
"langs": {
29
+
"description": "The languages the review is written in, as the reader chose them. BCP-47 codes, as in a Bluesky post's langs.",
30
+
"items": {
31
+
"format": "language",
32
+
"type": "string"
33
+
},
34
+
"maxLength": 3,
35
+
"type": "array"
36
+
},
37
+
"spoiler": {
38
+
"description": "The reader marked the review as giving away parts of the book. The document carries the same mark as a \"spoiler\" self-label.",
39
+
"type": "boolean"
27
40
}
28
41
},
29
42
"required": [
30
43
"document",
31
44
"book",
32
45
"hiveId",
33
46
"createdAt"
34
47
],
35
48
"type": "object"
36
49
},
37
50
"type": "record"
38
51
}
39
52
},
40
53
"description": "Connects a book review, published as a site.standard.document, to the book it reviews.",
41
54
"id": "ink.resenha.bookReview",
42
55
"lexicon": 1
43
56
}