{
"id": "club.filmclash.comparison",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"winner",
"loser",
"createdAt"
],
"properties": {
"loser": {
"ref": "#work",
"type": "ref"
},
"winner": {
"ref": "#work",
"type": "ref"
},
"session": {
"type": "string",
"maxLength": 64,
"description": "Optional id grouping comparisons made in one shuffle/refine or insertion session. Enables UX analytics and active-learning batching."
},
"createdAt": {
"type": "string",
"format": "datetime"
}
}
},
"description": "A single pairwise preference: the user prefers `winner` over `loser`."
},
"work": {
"type": "object",
"required": [
"tmdbId",
"type"
],
"properties": {
"type": {
"type": "string",
"maxLength": 64,
"description": "Open work vocabulary. FilmClash uses movie/tv_show initially; the open set leaves room to extend without a breaking change.",
"knownValues": [
"movie",
"tv_show",
"book",
"game",
"music"
]
},
"imdbId": {
"type": "string",
"maxLength": 32,
"description": "IMDB id, e.g. \"tt5950044\". Optional but recommended as a stable secondary key."
},
"tmdbId": {
"type": "string",
"maxLength": 32,
"description": "TMDB id, stored as a string (e.g. \"1061474\")."
}
},
"description": "Identity of a title, by external catalog id. Uses a shared identifier convention for cross-app join compatibility."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}
Metadata
- DID
-
did:plc:wdmbctd3ezqqnmrbvdu4ygme
- CID
-
bafyreidyotrhz6aelth5wprg3suxiub4m3itptczeccak7dx4ovu2vmq6a
- Indexed At
- 2026-06-22 20:03 UTC
- AT-URI
-
at://did:plc:wdmbctd3ezqqnmrbvdu4ygme/com.atproto.lexicon.schema/club.filmclash.comparison