Data format
Generated from schema/, the same JSON Schemas pnpm validate checks every file against. For how to use these fields, see Contributing mappings.
Works: data/works/<id>.yaml
Section titled “Works: data/works/<id>.yaml”One canonical work (usually one cour, film or OVA): data/works/
| Field | Type | Required | Description |
|---|---|---|---|
id |
slug | yes | Stable slug, equal to the file name. Never changes once published. |
type |
tv, movie, ova, ona, special |
||
status |
finished, airing, upcoming |
Omitted means finished. Open-ended ranges require airing. | |
year |
integer | at least 1900 | |
episodes |
integer or null | Regular episode count. null only while airing or upcoming. at least 1 | |
specials |
integer | Special (S) episode count. Omitted means unknown, which skips the specials bounds check. at least 0 | |
titles |
object | ||
ids |
WorkIds | Provider IDs. In a file that overrides a seed, null removes the seed’s ID. | |
projections |
WorkProjections | How season-based providers lay out this work’s episodes. In a file that overrides a seed, a block replaces the seed’s block for that provider, and null removes it. | |
aliases |
list of text | ||
prequel |
slug | id of the work this one directly follows. | |
notes |
string | ||
sources |
sources |
WorkIds
Section titled “WorkIds”Provider IDs. In a file that overrides a seed, null removes the seed’s ID.
| Field | Type | Required | Description |
|---|---|---|---|
anidb |
numericId or null | ||
anilist |
numericId or null | ||
mal |
numericId or null | ||
kitsu |
numericId or null | ||
tvdb_show |
numericId or null | ||
tmdb_show |
numericId or null | ||
tmdb_movie |
numericId or null | ||
imdb |
string or null |
WorkProjections
Section titled “WorkProjections”How season-based providers lay out this work’s episodes. In a file that overrides a seed, a block replaces the seed’s block for that provider, and null removes it.
| Field | Type | Required | Description |
|---|---|---|---|
tvdb_show |
projectionBlock or null | ||
tmdb_show |
projectionBlock or null |
Shared definitions (work)
Section titled “Shared definitions (work)”Lowercase letters and digits, separated by single hyphens (for example sousou-no-frieren).
Type: string; pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$, at most 120 characters.
Type: string.
numericId
Section titled “numericId”Type: integer; at least 1.
sources
Section titled “sources”Type: list of string.
episodeRange
Section titled “episodeRange”A single episode (12, “S3”) or a range (“1-12”, “S1-S2”, “892-” for open-ended). Prefix S = special, C = credit, T = trailer, P = parody; no prefix = regular.
Type: integer or string.
targetRange
Section titled “targetRange”Provider episode numbers for an N-to-M split: a single number or “12-13”.
Type: integer or string.
projection
Section titled “projection”Type: ProjectionEntry.
| Field | Type | Required | Description |
|---|---|---|---|
episodes |
episodeRange | yes | |
kind |
regular, special, credit, trailer, parody |
Defaults to the kind implied by the episodes prefix. | |
season |
integer | Provider season. Omit for providers or orderings without seasons (for example TVDB absolute order). at least 0 | |
start |
integer | Provider episode number of the first episode in the range. Defaults to the first canonical number. at least 0 | |
target |
targetRange | Only for N-to-M splits: one canonical episode to several provider episodes, or several to one. | |
gap |
boolean | Marks that the canonical episodes just before this range are intentionally unmapped. |
projectionList
Section titled “projectionList”Type: list of projection.
projectionBlock
Section titled “projectionBlock”One provider’s projection: a list of ranges, or an object when coverage needs a note.
Type: projectionList or ProjectionBlockObject.
Absolute sequences: data/sequences/<id>.yaml
Section titled “Absolute sequences: data/sequences/<id>.yaml”An absolute sequence: an ordered chain of works numbered continuously, the way fansubs number long series. data/sequences/
| Field | Type | Required | Description |
|---|---|---|---|
id |
slug | yes | |
members |
list of SequenceMember | yes | |
notes |
string | ||
sources |
sources |
SequenceMember
Section titled “SequenceMember”| Field | Type | Required | Description |
|---|---|---|---|
work |
slug | yes | |
episodes |
episodeRange | yes | Regular canonical episodes of the work covered by this member. |
absolute_start |
integer | yes | Absolute number of the first episode in the range. at least 1 |
default |
boolean | Marks this sequence as the default absolute numbering for the member work. Required on exactly one sequence when a work belongs to several. |
Shared definitions (sequence)
Section titled “Shared definitions (sequence)”Lowercase letters and digits, separated by single hyphens (for example sousou-no-frieren).
Type: string; pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$, at most 120 characters.
sources
Section titled “sources”Type: list of string.
episodeRange
Section titled “episodeRange”A single episode (12, “S3”) or a range (“1-12”, “S1-S2”, “892-” for open-ended). Prefix S = special, C = credit, T = trailer, P = parody; no prefix = regular.
Type: integer or string.
Release groups: data/groups/<id>.yaml
Section titled “Release groups: data/groups/<id>.yaml”A release group and its known numbering quirks: data/groups/
| Field | Type | Required | Description |
|---|---|---|---|
id |
slug | yes | |
aliases |
list of string | ||
overrides |
list of GroupOverride | ||
notes |
string | ||
sources |
sources |
GroupOverride
Section titled “GroupOverride”| Field | Type | Required | Description |
|---|---|---|---|
work |
slug | yes | |
numbering |
continue_prequel, absolute, offset |
yes | continue_prequel: numbers this work after its prequel’s last episode. absolute: uses the work’s absolute sequence (its default one, unless sequence names another). offset: adds offset to canonical numbers. |
offset |
integer | Required when numbering is offset, not allowed otherwise. | |
sequence |
slug | With numbering: absolute, the sequence this group numbers by, when it is not the work’s default sequence. |
Shared definitions (group)
Section titled “Shared definitions (group)”Lowercase letters and digits, separated by single hyphens (for example sousou-no-frieren).
Type: string; pattern ^[a-z0-9]+(?:-[a-z0-9]+)*$, at most 120 characters.
sources
Section titled “sources”Type: list of string.
Rejected bot proposals: data/rejected.yaml
Section titled “Rejected bot proposals: data/rejected.yaml”Bot proposals a maintainer rejected: data/rejected.yaml. The bots read it before proposing anything and never propose a matching change again. Hand-written only (origin: manual).
| Field | Type | Required | Description |
|---|---|---|---|
rejected |
list of relation or airing or tmdb_split or tmdb_extras | yes |
| Field | Type | Required | Description |
|---|---|---|---|
kind |
relation, airing, tmdb-split, tmdb-extras |
yes |
Shared definitions (rejected)
Section titled “Shared definitions (rejected)”Type: string; pattern ^[a-z0-9]+(-[a-z0-9]+)*$.
relation
Section titled “relation”A prequel link the bots must not propose: prequel as the prequel of work.
Type: RelationRejection.
| Field | Type | Required | Description |
|---|---|---|---|
kind |
relation |
yes | |
work |
slug | yes | |
prequel |
slug | yes | |
reason |
reason | yes | |
decided_by |
decided_by | yes | |
date |
date | yes | |
link |
link | ||
origin |
manual |
yes |
airing
Section titled “airing”An airing or count update the bots must not propose for work. Without episodes and status it covers every airing update for the work; with them, only updates to exactly those values.
Type: AiringRejection.
| Field | Type | Required | Description |
|---|---|---|---|
kind |
airing |
yes | |
work |
slug | yes | |
episodes |
integer or null | at least 0 | |
status |
airing, finished |
||
reason |
reason | yes | |
decided_by |
decided_by | yes | |
date |
date | yes | |
link |
link | ||
origin |
manual |
yes |
reason
Section titled “reason”Why the proposal was rejected, in a sentence.
Type: string.
decided_by
Section titled “decided_by”Who rejected it.
Type: string.
When it was rejected (YYYY-MM-DD).
Type: string; pattern ^\d{4}-\d{2}-\d{2}$.
The pull request or issue where it was rejected.
Type: string.
tmdb_extras
Section titled “tmdb_extras”TMDB episodes of work’s TMDB show that no work of ours covers (a bonus, a 3D version, a recap TMDB lists as a special). The TMDB checker counts them as mapped, so it stops flagging the show for them. Say which TMDB season and episodes, and why no work owns them.
Type: TmdbExtrasRejection.
| Field | Type | Required | Description |
|---|---|---|---|
kind |
tmdb-extras |
yes | |
work |
slug | yes | |
season |
integer | yes | The TMDB season the episodes are in (0 for specials). at least 0 |
episodes |
string | yes | The TMDB episode number, or a range such as 11-12. pattern ^[0-9]+(-[0-9]+)?$ |
reason |
reason | yes | |
decided_by |
decided_by | yes | |
date |
date | yes | |
link |
link | ||
origin |
manual |
yes |
tmdb_split
Section titled “tmdb_split”A split-cour proposal from the TMDB checker the bots must not make again for work: that its TMDB episodes continue the previous TMDB season.
Type: TmdbSplitRejection.
| Field | Type | Required | Description |
|---|---|---|---|
kind |
tmdb-split |
yes | |
work |
slug | yes | |
reason |
reason | yes | |
decided_by |
decided_by | yes | |
date |
date | yes | |
link |
link | ||
origin |
manual |
yes |
This product uses the TMDB API but is not endorsed or certified by TMDB.