Skip to main content

SeriesListItem

canonicalTitlestringrequired
coverUrlstring | nullnullable
descriptionstring | nullnullable

Short synopsis. The list UI clamps this to a few lines; the detail page shows it in full.

firstSeenAtinteger<int64>required
genresstring[]required
idinteger<int32>required
kindstring | nullnullable
lastReleaseAtinteger<int64>required
metadataSourcestringrequired

Provenance of the row's metadata (offline_cache, api, or manual). The browse UI flags manual series so they read differently from provider-backed ones (no cover/metadata is expected).

ownedbooleanrequired
ratingnumber,null<double>nullable

Provider rating on a 0-10 scale; surfaced on the list view so a future sort-by-rating has a number to display.

releaseCountinteger<int64>required

Number of releases currently linked to this series. Surfaced as a badge in the feed so manual re-links that orphan a series (zero releases) are visible at a glance. Matches what GET /releases?seriesId=… returns.

statusstring | nullnullable
tagsstring[]required
totalChaptersinteger,null<int32>nullable

Published total chapter count from provider metadata; pair to [Self::total_volumes] for sort-by-chapter results.

totalVolumesinteger,null<int32>nullable

Published total volume count from provider metadata; surfaced on the list view so sort-by-volume results have a number to display.

yearinteger,null<int32>nullable
SeriesListItem
{
"canonicalTitle": "string",
"coverUrl": "string",
"description": "string",
"firstSeenAt": 0,
"genres": [
"string"
],
"id": 0,
"kind": "string",
"lastReleaseAt": 0,
"metadataSource": "string",
"owned": true,
"rating": 0,
"releaseCount": 0,
"status": "string",
"tags": [
"string"
],
"totalChapters": 0,
"totalVolumes": 0,
"year": 0
}