Skip to main content

SeriesDto

Series data transfer object

bookCountinteger<int64>required

Total number of books in this series

Example: 4
createdAtstring<date-time>required

When the series was created

Example: 2024-01-01T00:00:00Z
hasCustomCoverboolean | nullnullable

Whether the series has a custom cover uploaded

Example: false
idstring<uuid>required

Series unique identifier

Example: 550e8400-e29b-41d4-a716-446655440002
libraryIdstring<uuid>required

Library unique identifier

Example: 550e8400-e29b-41d4-a716-446655440000
libraryNamestringrequired

Name of the library this series belongs to

Example: Comics
localMaxChapternumber,null<float>nullable

Highest book_metadata.chapter across the books in this series.

None when no book in the series has chapter populated. When non-null and metadata.totalChapterCount is also known, the UI renders <localMaxChapter>/<totalChapterCount> ch.

Example: 137.5
localMaxVolumeinteger,null<int32>nullable

Highest book_metadata.volume across the books in this series.

None when no book in the series has volume populated. When non-null and metadata.totalVolumeCount is also known, the UI renders <localMaxVolume>/<totalVolumeCount> vol instead of the legacy <bookCount>/<totalVolumeCount> vol.

Example: 14
pathstring | nullnullable

Filesystem path to the series directory

Example: /media/comics/Batman - Year One
publisherstring | nullnullable

Publisher name

Example: DC Comics
selectedCoverSourcestring | nullnullable

Selected cover source (e.g., "first_book", "custom")

Example: first_book
summarystring | nullnullable

Summary/description from series_metadata

Example: The definitive origin story of Batman, following Bruce Wayne's first year as a vigilante.
titlestringrequired

Series title from series_metadata

Example: Batman: Year One
titleSortstring | nullnullable

Sort title from series_metadata (for ordering)

Example: batman year one
unreadCountinteger,null<int64>nullable

Number of unread books in this series (user-specific)

Example: 2
updatedAtstring<date-time>required

When the series was last updated

Example: 2024-01-15T10:30:00Z
upstreamChapterGapnumber,null<float>nullable

Difference between the upstream original-language chapter count (series_metadata.total_chapter_count, supplied by metadata providers like MangaBaka or AniList) and the highest locally-owned chapter (local_max_chapter).

Always None unless the series is tracked AND track_chapters is enabled AND the provider count is populated AND the rounded-to-1- decimal gap is positive. This is an informational signal, not a release announcement — Phase 6's MangaUpdates plugin owns the translation-release feed.

Example: 3
upstreamGapProviderstring | nullnullable

Display name of the metadata provider that supplied the upstream counts (e.g., "MangaBaka", "AniList"). Set whenever at least one of upstream_chapter_gap / upstream_volume_gap is populated. Used by the Phase 7 badge tooltip.

Example: MangaBaka
upstreamVolumeGapinteger,null<int32>nullable

Difference between the upstream original-language volume count (series_metadata.total_volume_count) and the highest locally-owned volume (local_max_volume). Same suppression rules as upstream_chapter_gap, gated on track_volumes.

Example: 1
volumesOwnedinteger,null<int64>nullable

Number of books in this series classified as a complete volume (volume IS NOT NULL AND chapter IS NULL).

Distinct from bookCount: a chapter inside a volume (v15 c126) counts as a chapter, not a volume. None when no books exist; Some(0) when books exist but none are complete volumes.

Example: 14
yearinteger,null<int32>nullable

Release year

Example: 1987
SeriesDto
{
"bookCount": 4,
"createdAt": "2024-01-01T00:00:00Z",
"hasCustomCover": false,
"id": "550e8400-e29b-41d4-a716-446655440002",
"libraryId": "550e8400-e29b-41d4-a716-446655440000",
"libraryName": "Comics",
"localMaxChapter": 137.5,
"localMaxVolume": 14,
"path": "/media/comics/Batman - Year One",
"publisher": "DC Comics",
"selectedCoverSource": "first_book",
"summary": "The definitive origin story of Batman, following Bruce Wayne's first year as a vigilante.",
"title": "Batman: Year One",
"titleSort": "batman year one",
"unreadCount": 2,
"updatedAt": "2024-01-15T10:30:00Z",
"upstreamChapterGap": 3,
"upstreamGapProvider": "MangaBaka",
"upstreamVolumeGap": 1,
"volumesOwned": 14,
"year": 1987
}