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
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"identifier": {
5
5
"properties": {
6
6
"key": {
7
7
"maxLength": 64,
8
8
"type": "string"
9
9
},
10
10
"value": {
11
11
"maxLength": 512,
12
12
"type": "string"
13
13
}
14
14
},
15
15
"required": [
16
16
"key",
17
17
"value"
18
18
],
19
19
"type": "object"
20
20
},
21
21
"main": {
22
-
"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.",
22
+
"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.",
23
23
"key": "tid",
24
24
"record": {
25
25
"properties": {
26
26
"createdAt": {
27
27
"format": "datetime",
28
28
"type": "string"
29
29
},
30
30
"locale": {
31
31
"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.",
32
32
"format": "language",
33
33
"type": "string"
34
34
},
35
35
"subject": {
36
36
"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.",
37
37
"ref": "#subject",
38
38
"type": "ref"
39
39
},
40
40
"tags": {
41
41
"description": "The adjectives this review applies to the subject. An adjective should appear at most once; readers keep the last entry when it repeats.",
42
42
"items": {
43
43
"ref": "#tag",
44
44
"type": "ref"
45
45
},
46
46
"maxLength": 32,
47
47
"minLength": 1,
48
48
"type": "array"
49
49
},
50
50
"updatedAt": {
51
51
"format": "datetime",
52
52
"type": "string"
53
53
}
54
54
},
55
55
"required": [
56
56
"subject",
57
57
"tags",
58
58
"createdAt",
59
59
"updatedAt"
60
60
],
61
61
"type": "object"
62
62
},
63
63
"type": "record"
64
64
},
65
65
"subject": {
66
66
"properties": {
67
67
"cid": {
68
68
"description": "The uri's cid when this tag was last updated.",
69
69
"format": "cid",
70
70
"type": "string"
71
71
},
72
72
"identifiers": {
73
73
"description": "External identifiers for the subject, such as imdbId or isbn13.",
74
74
"items": {
75
75
"ref": "#identifier",
76
76
"type": "ref"
77
77
},
78
78
"maxLength": 32,
79
79
"type": "array"
80
80
},
81
81
"title": {
82
82
"description": "The name of the thing being tagged, usually copied from a field on the subject record.",
83
83
"maxGraphemes": 256,
84
84
"maxLength": 2560,
85
85
"minGraphemes": 1,
86
86
"type": "string"
87
87
},
88
88
"type": {
89
89
"description": "The kind of thing the subject is. Open set; add values as lenses support them.",
90
90
"knownValues": [
91
91
"movie",
92
92
"tv-show",
93
93
"tv-season",
94
94
"tv-episode",
95
95
"book",
96
96
"book-series",
97
97
"album",
98
98
"music-track",
99
+
"music-artist",
99
100
"video-game",
100
101
"post",
101
102
"publication",
102
103
"app",
103
104
"web-page",
104
105
"web-stream",
105
106
"code-repo"
106
107
],
107
108
"maxLength": 64,
108
109
"type": "string"
109
110
},
110
111
"uri": {
111
112
"description": "The atproto record that represents the thing being tagged.",
112
113
"format": "at-uri",
113
114
"type": "string"
114
115
}
115
116
},
116
117
"required": [
117
118
"uri",
118
119
"cid",
119
120
"title",
120
121
"type"
121
122
],
122
123
"type": "object"
123
124
},
124
125
"tag": {
125
126
"properties": {
126
127
"adjective": {
127
128
"description": "An adjective, in any language, that the subject either is, or is not.",
128
129
"maxGraphemes": 16,
129
130
"maxLength": 160,
130
131
"minGraphemes": 1,
131
132
"type": "string"
132
133
},
133
134
"direction": {
134
135
"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.",
135
136
"enum": [
136
137
-2,
137
138
-1,
138
139
0,
139
140
1,
140
141
2
141
142
],
142
143
"type": "integer"
143
144
}
144
145
},
145
146
"required": [
146
147
"direction",
147
148
"adjective"
148
149
],
149
150
"type": "object"
150
151
}
151
152
},
152
153
"id": "at.isnot.review",
153
154
"lexicon": 1
154
155
}