From
bafyreic4ryhfeljs2jpnpsc3tzh5u3fj3ptapldvxnelai62jnssfwcgrm
indexed 2026-09-15 00:15 UTC
View this version
To
bafyreifys66trp5raw44f5efuzdwu43btsepdo6m4zrrbtwrdtu2aoyriq
indexed 2026-09-17 02:53 UTC
View this version
Compatibility
breaking 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\"]" }
Changes
11
{22
"$type": "com.atproto.lexicon.schema",33
"defs": {44
"identifier": {55
"properties": {66
"key": {77
"maxLength": 64,88
"type": "string"99
},1010
"value": {1111
"maxLength": 512,1212
"type": "string"1313
}1414
},1515
"required": [1616
"key",1717
"value"1818
],1919
"type": "object"2020
},2121
"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.",2323
"key": "tid",2424
"record": {2525
"properties": {2626
"createdAt": {2727
"format": "datetime",2828
"type": "string"2929
},3030
"locale": {3131
"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.",3232
"format": "language",3333
"type": "string"3434
},3535
"subject": {3636
"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.",3737
"ref": "#subject",3838
"type": "ref"3939
},4040
"tags": {4141
"description": "The adjectives this review applies to the subject. An adjective should appear at most once; readers keep the last entry when it repeats.",4242
"items": {4343
"ref": "#tag",4444
"type": "ref"4545
},4646
"maxLength": 32,4747
"minLength": 1,4848
"type": "array"4949
},5050
"updatedAt": {5151
"format": "datetime",5252
"type": "string"5353
}5454
},5555
"required": [5656
"subject",5757
"tags",5858
"createdAt",5959
"updatedAt"6060
],6161
"type": "object"6262
},6363
"type": "record"6464
},6565
"subject": {6666
"properties": {6767
"cid": {6868
"description": "The uri's cid when this tag was last updated.",6969
"format": "cid",7070
"type": "string"7171
},7272
"identifiers": {7373
"description": "External identifiers for the subject, such as imdbId or isbn13.",7474
"items": {7575
"ref": "#identifier",7676
"type": "ref"7777
},7878
"maxLength": 32,7979
"type": "array"8080
},8181
"title": {8282
"description": "The name of the thing being tagged, usually copied from a field on the subject record.",8383
"maxGraphemes": 256,8484
"maxLength": 2560,8585
"minGraphemes": 1,8686
"type": "string"8787
},8888
"type": {8989
"description": "The kind of thing the subject is. Open set; add values as lenses support them.",9090
"knownValues": [9191
"movie",9292
"tv-show",9393
"tv-season",9494
"tv-episode",9595
"book",9696
"book-series",9797
"album",9898
"music-track",99
"music-artist",99100
"video-game",100101
"post",101102
"publication",102103
"app",103104
"web-page",104105
"web-stream",105106
"code-repo"106107
],107108
"maxLength": 64,108109
"type": "string"109110
},110111
"uri": {111112
"description": "The atproto record that represents the thing being tagged.",112113
"format": "at-uri",113114
"type": "string"114115
}115116
},116117
"required": [117118
"uri",118119
"cid",119120
"title",120121
"type"121122
],122123
"type": "object"123124
},124125
"tag": {125126
"properties": {126127
"adjective": {127128
"description": "An adjective, in any language, that the subject either is, or is not.",128129
"maxGraphemes": 16,129130
"maxLength": 160,130131
"minGraphemes": 1,131132
"type": "string"132133
},133134
"direction": {134135
"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.",135136
"enum": [136137
-2,137138
-1,138139
0,139140
1,140141
2141142
],142143
"type": "integer"143144
}144145
},145146
"required": [146147
"direction",147148
"adjective"148149
],149150
"type": "object"150151
}151152
},152153
"id": "at.isnot.review",153154
"lexicon": 1154155
}