at.isnot.review
Schema Diff
+2 -1
Compatibility Analysis
Breaking Changes Detected
1 breaking change, 0 non-breaking changes.
Breaking Changes (1)
- ConstraintTightened ConstraintTightened { vertex_id: "at.isnot.review#subject.type", sort: "knownValues", old_value: "[\"movie\",\"tv-show\",\"tv-season\",\"tv-episode\",\"book\",\"book-series\",\"album\",\"music-track\",\"video-game\",\"post\",\"publication\",\"app\",\"web-page\",\"web-stream\",\"code-repo\"]", new_value: "[\"movie\",\"tv-show\",\"tv-season\",\"tv-episode\",\"book\",\"book-series\",\"album\",\"music-track\",\"music-artist\",\"video-game\",\"post\",\"publication\",\"app\",\"web-page\",\"web-stream\",\"code-repo\"]" }
Migration Guidance
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "at.isnot.review#subject.type", sort: "knownValues", old_value: "[\"movie\",\"tv-show\",\"tv-season\",\"tv-episode\",\"book\",\"book-series\",\"album\",\"music-track\",\"video-game\",\"post\",\"publication\",\"app\",\"web-page\",\"web-stream\",\"code-repo\"]", new_value: "[\"movie\",\"tv-show\",\"tv-season\",\"tv-episode\",\"book\",\"book-series\",\"album\",\"music-track\",\"music-artist\",\"video-game\",\"post\",\"publication\",\"app\",\"web-page\",\"web-stream\",\"code-repo\"]" }
1
1
{
2
2
"id": "at.isnot.review",
3
3
"defs": {
4
4
"tag": {
5
5
"type": "object",
6
6
"required": [
7
7
"direction",
8
8
"adjective"
9
9
],
10
10
"properties": {
11
11
"adjective": {
12
12
"type": "string",
13
13
"maxLength": 160,
14
14
"description": "An adjective, in any language, that the subject either is, or is not.",
15
15
"maxGraphemes": 16,
16
16
"minGraphemes": 1
17
17
},
18
18
"direction": {
19
19
"enum": [
20
20
-2,
21
21
-1,
22
22
0,
23
23
1,
24
24
2
25
25
],
26
26
"type": "integer",
27
27
"description": "Whether the subject *is* the adjective (1), *is not* the adjective (-1) or, less commonly, *really* is (2), or *really* isn't (-2). A value of zero is an explicit 'no comment', uncertainty, or lack of opinion."
28
28
}
29
29
}
30
30
},
31
31
"main": {
32
32
"key": "tid",
33
33
"type": "record",
34
34
"record": {
35
35
"type": "object",
36
36
"required": [
37
37
"subject",
38
38
"tags",
39
39
"createdAt",
40
40
"updatedAt"
41
41
],
42
42
"properties": {
43
43
"tags": {
44
44
"type": "array",
45
45
"items": {
46
46
"ref": "#tag",
47
47
"type": "ref"
48
48
},
49
49
"maxLength": 32,
50
50
"minLength": 1,
51
51
"description": "The adjectives this review applies to the subject. An adjective should appear at most once; readers keep the last entry when it repeats."
52
52
},
53
53
"locale": {
54
54
"type": "string",
55
55
"format": "language",
56
56
"description": "The language the whole review is meant to be read in (BCP 47), not the language of any one adjective. Readers may render the sentence in this locale."
57
57
},
58
58
"subject": {
59
59
"ref": "#subject",
60
60
"type": "ref",
61
61
"description": "The thing being tagged, described well enough to display without fetching the referenced record. Readers can decide whether the cid must match for their purposes, or whether the at-uri alone is enough."
62
62
},
63
63
"createdAt": {
64
64
"type": "string",
65
65
"format": "datetime"
66
66
},
67
67
"updatedAt": {
68
68
"type": "string",
69
69
"format": "datetime"
70
70
}
71
71
}
72
72
},
73
-
"description": "A person's review of one thing: which adjectives it is, and is not. One record per subject per repo; update it rather than creating another."
73
+
"description": "A person's review of one thing: which adjectives it is, and is not. One record per subject and locale per repo; update it rather than creating another. If a repo ever holds more than one review of the same subject in the same locale, merge them into the earliest-created one (tag conflicts: latest updatedAt wins, then direction nearer 0, then positive) and delete the rest."
74
74
},
75
75
"subject": {
76
76
"type": "object",
77
77
"required": [
78
78
"uri",
79
79
"cid",
80
80
"title",
81
81
"type"
82
82
],
83
83
"properties": {
84
84
"cid": {
85
85
"type": "string",
86
86
"format": "cid",
87
87
"description": "The uri's cid when this tag was last updated."
88
88
},
89
89
"uri": {
90
90
"type": "string",
91
91
"format": "at-uri",
92
92
"description": "The atproto record that represents the thing being tagged."
93
93
},
94
94
"type": {
95
95
"type": "string",
96
96
"maxLength": 64,
97
97
"description": "The kind of thing the subject is. Open set; add values as lenses support them.",
98
98
"knownValues": [
99
99
"movie",
100
100
"tv-show",
101
101
"tv-season",
102
102
"tv-episode",
103
103
"book",
104
104
"book-series",
105
105
"album",
106
106
"music-track",
107
+
"music-artist",
107
108
"video-game",
108
109
"post",
109
110
"publication",
110
111
"app",
111
112
"web-page",
112
113
"web-stream",
113
114
"code-repo"
114
115
]
115
116
},
116
117
"title": {
117
118
"type": "string",
118
119
"maxLength": 2560,
119
120
"description": "The name of the thing being tagged, usually copied from a field on the subject record.",
120
121
"maxGraphemes": 256,
121
122
"minGraphemes": 1
122
123
},
123
124
"identifiers": {
124
125
"type": "array",
125
126
"items": {
126
127
"ref": "#identifier",
127
128
"type": "ref"
128
129
},
129
130
"maxLength": 32,
130
131
"description": "External identifiers for the subject, such as imdbId or isbn13."
131
132
}
132
133
}
133
134
},
134
135
"identifier": {
135
136
"type": "object",
136
137
"required": [
137
138
"key",
138
139
"value"
139
140
],
140
141
"properties": {
141
142
"key": {
142
143
"type": "string",
143
144
"maxLength": 64
144
145
},
145
146
"value": {
146
147
"type": "string",
147
148
"maxLength": 512
148
149
}
149
150
}
150
151
}
151
152
},
152
153
"$type": "com.atproto.lexicon.schema",
153
154
"lexicon": 1
154
155
}