{
"id": "social.popfeed.feed.listItem",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"identifiers",
"creativeWorkType",
"addedAt",
"listUri"
],
"properties": {
"title": {
"type": "string",
"maxLength": 1000,
"description": "Title of the creative work."
},
"genres": {
"type": "array",
"items": {
"type": "string",
"maxLength": 50
}
},
"poster": {
"type": "blob",
"accept": [
"image/*"
],
"maxSize": 2000000
},
"status": {
"type": "string",
"knownValues": [
"#finished",
"#in_progress",
"#backlog",
"#abandoned"
]
},
"addedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when the creative work was added to the list."
},
"listUri": {
"type": "string",
"format": "uri",
"description": "URI of the list where the item is stored."
},
"backdrop": {
"type": "blob",
"accept": [
"image/*"
],
"maxSize": 4000000
},
"listType": {
"type": "string",
"maxLength": 50,
"description": "The type of list, e.g., 'watchlist', 'favorites', 'to-read', etc."
},
"position": {
"type": "integer",
"description": "DEPRECATED"
},
"posterUrl": {
"type": "string",
"format": "uri",
"description": "Poster or cover image URL for the creative work. Soon to be deprecated in favor of the 'poster' blob field"
},
"startedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when the user started the creative work. Most relevant for books, TV shows, and video games."
},
"mainCredit": {
"type": "string",
"maxLength": 1000,
"description": "Main actor, director, author, or artist of the creative work."
},
"backdropUrl": {
"type": "string",
"format": "uri",
"description": "Backdrop image URL for the creative work. Soon to be deprecated in favor of the 'backdrop' blob field"
},
"completedAt": {
"type": "string",
"format": "datetime",
"description": "Timestamp when the user finished the creative work. Most relevant for books, TV shows, and video games."
},
"description": {
"type": "string",
"maxLength": 5000,
"description": "Optional description or commentary for the list item."
},
"identifiers": {
"ref": "#identifiers",
"type": "ref",
"description": "External identifiers for the creative work."
},
"releaseDate": {
"type": "string",
"format": "datetime",
"description": "Release date of the creative work."
},
"bookProgress": {
"ref": "#bookProgress",
"type": "ref",
"description": "Reading progress for books or book series (also supports audiobooks via time fields)."
},
"mainCreditRole": {
"enum": [
"director",
"author",
"artist",
"showrunner",
"lead_actor",
"creator",
"studio",
"publisher",
"developer",
"performer",
"network"
],
"type": "string",
"description": "The role of the main credit."
},
"watchedEpisodes": {
"type": "array",
"items": {
"ref": "#watchedEpisode",
"type": "ref"
},
"description": "For TV shows, the episodes the user has watched."
},
"creativeWorkType": {
"enum": [
"movie",
"tv_show",
"video_game",
"album",
"book",
"book_series",
"episode",
"album",
"ep",
"tv_season",
"tv_episode",
"track"
],
"type": "string",
"description": "The type of creative work this item represents."
}
}
}
},
"identifiers": {
"type": "object",
"properties": {
"asin": {
"type": "string",
"description": "Amazon Standard ID"
},
"mbId": {
"type": "string",
"description": "DEPRECATED - soon to be ignored"
},
"other": {
"type": "string",
"description": "Other external ID"
},
"hiveId": {
"type": "string",
"description": "BookHive ID for fast local lookup"
},
"igdbId": {
"type": "string",
"description": "IGDB ID for games"
},
"imdbId": {
"type": "string",
"description": "IMDb ID"
},
"isbn10": {
"type": "string",
"description": "ISBN-10 for books"
},
"isbn13": {
"type": "string",
"description": "ISBN-13 for books"
},
"tmdbId": {
"type": "string",
"description": "TMDb ID for movies/TV shows"
},
"mbReleaseId": {
"type": "string",
"description": "MusicBrainz ID for specific releases (albums, EPs, tracks)"
},
"seasonNumber": {
"type": "integer",
"description": "Season number for TV shows or series"
},
"episodeNumber": {
"type": "integer",
"description": "Episode number for TV shows or series"
},
"tmdbTvSeriesId": {
"type": "string",
"description": "TMDb ID for TV series"
},
"parentMbReleaseId": {
"type": "string",
"description": "MusicBrainz ID for parent release (e.g., album for a track)"
}
}
},
"bookProgress": {
"type": "object",
"required": [
"status",
"updatedAt"
],
"properties": {
"status": {
"enum": [
"in_progress",
"completed",
"paused"
],
"type": "string",
"description": "Overall progress state."
},
"percent": {
"type": "integer",
"description": "Optional explicit progress percentage (0–100)."
},
"updatedAt": {
"type": "string",
"format": "datetime",
"description": "Last time progress was updated."
},
"totalPages": {
"type": "integer",
"description": "Total pages (if known)."
},
"currentPage": {
"type": "integer",
"description": "Current page number (if applicable)."
},
"totalChapters": {
"type": "integer",
"description": "Total chapters (if known)."
},
"currentChapter": {
"type": "integer",
"description": "Current chapter number (optional alternative to pages)."
}
},
"description": "Tracks reading/listening progress for a book or book series item."
},
"watchedEpisode": {
"type": "object",
"required": [
"seasonNumber",
"episodeNumber"
],
"properties": {
"tmdbId": {
"type": "string"
},
"seasonNumber": {
"type": "integer"
},
"episodeNumber": {
"type": "integer"
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}