xyz.opnshelf.review
Schema Diff
+4 -0
Compatibility Analysis
Backward Compatible
Backward compatible. 2 non-breaking changes.
Non-Breaking Changes (2)
- AddedVertex AddedVertex { vertex_id: "xyz.opnshelf.review:body.spoiler" }
- AddedEdge AddedEdge { src: "xyz.opnshelf.review:body", tgt: "xyz.opnshelf.review:body.spoiler", kind: "prop", name: Some("spoiler") }
Migration Guidance
Added Elements
AddedVertex { vertex_id: "xyz.opnshelf.review:body.spoiler" }
Additional Notes
- Non-breaking: AddedEdge { src: "xyz.opnshelf.review:body", tgt: "xyz.opnshelf.review:body.spoiler", kind: "prop", name: Some("spoiler") }
1
1
{
2
2
"id": "xyz.opnshelf.review",
3
3
"defs": {
4
4
"main": {
5
5
"key": "tid",
6
6
"type": "record",
7
7
"record": {
8
8
"type": "object",
9
9
"required": [
10
10
"mediaType",
11
11
"mediaId",
12
12
"title",
13
13
"content",
14
14
"createdAt"
15
15
],
16
16
"properties": {
17
17
"title": {
18
18
"type": "string",
19
19
"maxLength": 3000,
20
20
"description": "Review title",
21
21
"maxGraphemes": 300
22
22
},
23
23
"content": {
24
24
"type": "string",
25
25
"maxLength": 100000,
26
26
"description": "Review body as markdown source",
27
27
"maxGraphemes": 20000
28
28
},
29
29
"mediaId": {
30
30
"type": "string",
31
31
"description": "TMDB movie ID or show ID"
32
32
},
33
+
"spoiler": {
34
+
"type": "boolean",
35
+
"description": "True when the body contains spoilers for the reviewed media item. The title is outside the spoiler boundary and must remain spoiler-free."
36
+
},
33
37
"createdAt": {
34
38
"type": "string",
35
39
"format": "datetime",
36
40
"description": "Record creation timestamp"
37
41
},
38
42
"mediaType": {
39
43
"enum": [
40
44
"movie",
41
45
"show",
42
46
"season",
43
47
"episode"
44
48
],
45
49
"type": "string",
46
50
"description": "Media type"
47
51
},
48
52
"updatedAt": {
49
53
"type": "string",
50
54
"format": "datetime",
51
55
"description": "Last edit timestamp"
52
56
},
53
57
"seasonNumber": {
54
58
"type": "integer",
55
59
"description": "Season number for season/episode items"
56
60
},
57
61
"episodeNumber": {
58
62
"type": "integer",
59
63
"description": "Episode number for episode items"
60
64
}
61
65
}
62
66
},
63
67
"description": "A user's long-form textual review of a media item. Carries no numeric score (that is a separate xyz.opnshelf.rating). Zero-or-many per media item per user."
64
68
}
65
69
},
66
70
"$type": "com.atproto.lexicon.schema",
67
71
"lexicon": 1
68
72
}