Type Definitions

VeeDB provides comprehensive type definitions for all VNDB API entities and request/response structures.

Common Types

Query and Response Types

class veedb.QueryRequest(filters: list | str | None = <factory>, fields: str = 'id', sort: str = 'id', reverse: bool = False, results: int = 10, page: int = 1, user: str | None = None, count: bool = False, compact_filters: bool = False, normalized_filters: bool = False)[source]

Bases: object

Common structure for database querying POST requests.

Request structure for querying VNDB endpoints.

Attributes:

  • filters (Optional[Union[List, str]]): Filter expression

  • fields (Optional[str]): Comma-separated list of fields to retrieve

  • sort (Optional[str]): Field to sort by

  • reverse (bool): Whether to sort in reverse order (default: False)

  • results (Optional[int]): Maximum number of results to return

  • page (Optional[int]): Page number for pagination

  • user (Optional[str]): User ID for user-specific queries

  • count (bool): Whether to include result count (default: False)

  • compact_filters (bool): Whether to use compact filter format (default: False)

Example:

query = QueryRequest(
    filters=["title", "~", "fate"],
    fields="id, title, rating",
    sort="rating",
    reverse=True,
    results=10
)
filters: list | str | None
fields: str = 'id'
sort: str = 'id'
reverse: bool = False
results: int = 10
page: int = 1
user: str | None = None
count: bool = False
compact_filters: bool = False
normalized_filters: bool = False
to_dict() dict[source]

Converts to dict, removing None values, for JSON payload.

__init__(filters: list | str | None = <factory>, fields: str = 'id', sort: str = 'id', reverse: bool = False, results: int = 10, page: int = 1, user: str | None = None, count: bool = False, compact_filters: bool = False, normalized_filters: bool = False) None
class veedb.apitypes.common.QueryResponse(results: List[T], more: bool, count: int | None = None, compact_filters: str | None = None, normalized_filters: list | None = None)[source]

Bases: Generic[T]

Common structure for database querying POST responses.

Response structure from VNDB query endpoints.

results: List[T]
more: bool
count: int | None = None
compact_filters: str | None = None
normalized_filters: list | None = None
__init__(results: List[T], more: bool, count: int | None = None, compact_filters: str | None = None, normalized_filters: list | None = None) None

Identifier Types

veedb.VNDBID

Type alias for VNDB entity IDs (strings starting with specific prefixes). alias of str

veedb.ReleaseDate

Type for release dates in VNDB format. alias of str

Enumeration Types

veedb.LanguageEnum

Enumeration of supported languages. alias of Literal[‘ar’, ‘eu’, ‘be’, ‘bg’, ‘ca’, ‘ck’, ‘zh’, ‘zh-Hans’, ‘zh-Hant’, ‘hr’, ‘cs’, ‘da’, ‘nl’, ‘en’, ‘eo’, ‘fi’, ‘fr’, ‘gl’, ‘de’, ‘el’, ‘he’, ‘hi’, ‘hu’, ‘ga’, ‘id’, ‘it’, ‘iu’, ‘ja’, ‘kk’, ‘ko’, ‘la’, ‘lv’, ‘lt’, ‘mk’, ‘ms’, ‘ne’, ‘no’, ‘fa’, ‘pl’, ‘pt-br’, ‘pt-pt’, ‘ro’, ‘ru’, ‘gd’, ‘sr’, ‘sk’, ‘sl’, ‘es’, ‘sv’, ‘ta’, ‘th’, ‘tr’, ‘uk’, ‘ur’, ‘vi’]

veedb.PlatformEnum

Enumeration of supported platforms. alias of Literal[‘win’, ‘lin’, ‘mac’, ‘web’, ‘tdo’, ‘ios’, ‘and’, ‘bdp’, ‘dos’, ‘dvd’, ‘drc’, ‘nes’, ‘sfc’, ‘fm7’, ‘fm8’, ‘fmt’, ‘gba’, ‘gbc’, ‘msx’, ‘nds’, ‘swi’, ‘sw2’, ‘wii’, ‘wiu’, ‘n3d’, ‘p88’, ‘p98’, ‘pce’, ‘pcf’, ‘psp’, ‘ps1’, ‘ps2’, ‘ps3’, ‘ps4’, ‘ps5’, ‘psv’, ‘smd’, ‘scd’, ‘sat’, ‘vnd’, ‘x1s’, ‘x68’, ‘xb1’, ‘xb3’, ‘xbo’, ‘xxs’, ‘mob’, ‘oth’]

veedb.StaffRoleEnum

Enumeration of staff roles. alias of Literal[‘scenario’, ‘director’, ‘chardesign’, ‘art’, ‘music’, ‘songs’, ‘translator’, ‘editor’, ‘qa’, ‘staff’]

veedb.TagCategoryEnum

Enumeration of tag categories. alias of Literal[‘cont’, ‘ero’, ‘tech’]

veedb.ProducerTypeEnum

Enumeration of producer types. alias of Literal[‘co’, ‘in’, ‘ng’]

veedb.DevStatusEnum

Enumeration of development status values. alias of Literal[0, 1, 2]

Request Types

List Update Payloads

class veedb.UlistUpdatePayload(vote: int | None = None, notes: str | None = None, started: str | None = None, finished: str | None = None, labels: List[int] | None = None, labels_set: List[int] | None = None, labels_unset: List[int] | None = None)[source]

Bases: object

Payload for updating user visual novel lists.

Attributes:

  • id (str): VN ID to update

  • vote (Optional[int]): User rating (1-100)

  • notes (Optional[str]): User notes

  • started (Optional[str]): Date started reading

  • finished (Optional[str]): Date finished reading

  • labels (Optional[List[int]]): List label IDs

Example:

payload = UlistUpdatePayload(
    id="v17",
    vote=85,
    notes="Excellent sci-fi visual novel",
    finished="2023-06-15"
)
vote: int | None = None
notes: str | None = None
started: str | None = None
finished: str | None = None
labels: List[int] | None = None
labels_set: List[int] | None = None
labels_unset: List[int] | None = None
to_dict() dict[source]

Converts to dict, removing None values, for JSON payload.

__init__(vote: int | None = None, notes: str | None = None, started: str | None = None, finished: str | None = None, labels: List[int] | None = None, labels_set: List[int] | None = None, labels_unset: List[int] | None = None) None
class veedb.RlistUpdatePayload(status: Literal[0, 1, 2, 3, 4] | None = None)[source]

Bases: object

Payload for updating user release lists.

Attributes:

  • id (str): Release ID to update

  • status (Optional[str]): Release status

status: Literal[0, 1, 2, 3, 4] | None = None
to_dict() dict[source]

Converts to dict, removing None values, for JSON payload.

__init__(status: Literal[0, 1, 2, 3, 4] | None = None) None

Entity Types

Visual Novel Entities

Visual novel related entity types.

Key Classes:

  • VN: Main visual novel entity

  • VNQueryItem: VN data as returned from queries

  • VNImage: VN cover image information

  • VNRelation: VN relationship information

  • VNAnime: Related anime information

  • VNLength: VN length statistics

class veedb.apitypes.entities.vn.VNTitle(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str, latin: str | None = None, official: bool = False, main: bool = False)[source]

Bases: object

lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']
title: str
latin: str | None = None
official: bool = False
main: bool = False
__init__(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str, latin: str | None = None, official: bool = False, main: bool = False) None
class veedb.apitypes.entities.vn.VNImageInfo(id: str | None = None, url: str | None = None, dims: List[int] | None = None, sexual: float | None = None, violence: float | None = None, votecount: int | None = None, thumbnail: str | None = None, release: ForwardRef('VNScreenshotRelease') | None = None)[source]

Bases: object

id: str | None = None
url: str | None = None
dims: List[int] | None = None
sexual: float | None = None
violence: float | None = None
votecount: int | None = None
thumbnail: str | None = None
release: VNScreenshotRelease | None = None
__init__(id: str | None = None, url: str | None = None, dims: List[int] | None = None, sexual: float | None = None, violence: float | None = None, votecount: int | None = None, thumbnail: str | None = None, release: VNScreenshotRelease | None = None) None
class veedb.apitypes.entities.vn.VNScreenshotRelease(id: str, title: Optional[str] = None, alttitle: Optional[str] = None, languages: List[veedb.apitypes.entities.release.ReleaseLanguageSpecific] = <factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']] = <factory>, media: List[veedb.apitypes.entities.release.ReleaseMedia] = <factory>, vns: List[veedb.apitypes.entities.release.ReleaseVNLink] = <factory>, producers: List[veedb.apitypes.entities.release.ReleaseProducerLink] = <factory>, images: List[veedb.apitypes.entities.release.ReleaseImage] = <factory>, released: Optional[str] = None, minage: Optional[int] = None, patch: bool = False, freeware: bool = False, uncensored: Optional[bool] = None, official: bool = False, has_ero: bool = False, resolution: Union[Literal['non-standard'], Tuple[int, int], NoneType] = None, engine: Optional[str] = None, voiced: Optional[Literal[1, 2, 3, 4]] = None, notes: Optional[str] = None, gtin: Optional[str] = None, catalog: Optional[str] = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]

Bases: Release

__init__(id: str, title: str | None = None, alttitle: str | None = None, languages: List[ReleaseLanguageSpecific] = <factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, media: List[ReleaseMedia] = <factory>, vns: List[ReleaseVNLink] = <factory>, producers: List[ReleaseProducerLink] = <factory>, images: List[ReleaseImage] = <factory>, released: str | None = None, minage: int | None = None, patch: bool = False, freeware: bool = False, uncensored: bool | None = None, official: bool = False, has_ero: bool = False, resolution: Tuple[int, int] | None=None, engine: str | None = None, voiced: Literal[1, 2, 3, 4] | None=None, notes: str | None = None, gtin: str | None = None, catalog: str | None = None, extlinks: List[Extlink] = <factory>) None

Bases: Tag

rating: float = 0.0
spoiler: int = 0
lie: bool = False
__init__(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Literal['cont', 'ero', 'tech'] | None=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None, rating: float = 0.0, spoiler: int = 0, lie: bool = False) None
class veedb.apitypes.entities.vn.VNDeveloper(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, type: Optional[Literal['co', 'in', 'ng']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]

Bases: Producer

__init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, type: Literal['co', 'in', 'ng'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>) None
class veedb.apitypes.entities.vn.VNEdition(eid: int, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None, name: str | None = None, official: bool | None = None)[source]

Bases: object

eid: int
lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
name: str | None = None
official: bool | None = None
__init__(eid: int, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None, name: str | None = None, official: bool | None = None) None

Bases: Staff

role: Literal['scenario', 'director', 'chardesign', 'art', 'music', 'songs', 'translator', 'editor', 'qa', 'staff'] = ''
note: str | None = None
eid: int | None = None
__init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>, role: Literal['scenario', 'director', 'chardesign', 'art', 'music', 'songs', 'translator', 'editor', 'qa', 'staff']='', note: str | None = None, eid: int | None = None) None
class veedb.apitypes.entities.vn.VNVoiceActor(note: str | None = None, staff: ForwardRef('VNVAStaff') | None = None, character: ForwardRef('VNVACharacter') | None = None)[source]

Bases: object

note: str | None = None
staff: VNVAStaff | None = None
character: VNVACharacter | None = None
__init__(note: str | None = None, staff: VNVAStaff | None = None, character: VNVACharacter | None = None) None
class veedb.apitypes.entities.vn.VNVAStaff(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, gender: Optional[Literal['m', 'f']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, aliases: List[veedb.apitypes.entities.staff.StaffAlias] = <factory>)[source]

Bases: Staff

__init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>) None
class veedb.apitypes.entities.vn.VNVACharacter(id: str, name: Optional[str] = None, original: Optional[str] = None, aliases: List[str] = <factory>, description: Optional[str] = None, image: Optional[veedb.apitypes.entities.character.CharacterImageInfo] = None, blood_type: Optional[Literal['a', 'b', 'ab', 'o']] = None, height: Optional[int] = None, weight: Optional[int] = None, bust: Optional[int] = None, waist: Optional[int] = None, hips: Optional[int] = None, cup: Optional[str] = None, age: Optional[int] = None, birthday: Optional[Tuple[int, int]] = None, sex: Optional[Tuple[Optional[Literal['m', 'f', 'b', 'n']], Optional[Literal['m', 'f', 'b', 'n']]]] = None, gender: Optional[Tuple[Optional[Literal['m', 'f', 'o', 'a']], Optional[Literal['m', 'f', 'o', 'a']]]] = None, vns: List[veedb.apitypes.entities.character.CharacterVNLink] = <factory>, traits: List[veedb.apitypes.entities.character.CharacterTraitLink] = <factory>)[source]

Bases: Character

__init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, description: str | None = None, image: CharacterImageInfo | None = None, blood_type: Literal['a', 'b', 'ab', 'o'] | None=None, height: int | None = None, weight: int | None = None, bust: int | None = None, waist: int | None = None, hips: int | None = None, cup: str | None = None, age: int | None = None, birthday: Tuple[int, int] | None=None, sex: Literal['m', 'f', 'b', 'n'] | None, ~typing.Literal['m', 'f', 'b', 'n'] | None] | None=None, gender: Literal['m', 'f', 'o', 'a'] | None, ~typing.Literal['m', 'f', 'o', 'a'] | None] | None=None, vns: List[CharacterVNLink] = <factory>, traits: List[CharacterTraitLink] = <factory>) None
class veedb.apitypes.entities.vn.VN(id: str, title: str | None = None, alttitle: str | None = None, titles: List[veedb.apitypes.entities.vn.VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, devstatus: Optional[Literal[0, 1, 2]]=None, released: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: veedb.apitypes.entities.vn.VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[veedb.apitypes.entities.vn.VNImageInfo] = <factory>, relations: List[ForwardRef('VNRelation')] = <factory>, tags: List[veedb.apitypes.entities.vn.VNTagLink] = <factory>, developers: List[veedb.apitypes.entities.vn.VNDeveloper] = <factory>, editions: List[veedb.apitypes.entities.vn.VNEdition] = <factory>, staff: List[veedb.apitypes.entities.vn.VNStaffLink] = <factory>, va: List[veedb.apitypes.entities.vn.VNVoiceActor] = <factory>, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]

Bases: object

id: str
title: str | None = None
alttitle: str | None = None
titles: List[VNTitle]
aliases: List[str]
olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
devstatus: Literal[0, 1, 2] | None = None
released: str | None = None
languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]
platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]
image: VNImageInfo | None = None
length: int | None = None
length_minutes: int | None = None
length_votes: int | None = None
description: str | None = None
average: float | None = None
rating: float | None = None
votecount: int | None = None
screenshots: List[VNImageInfo]
relations: List[VNRelation]
tags: List[VNTagLink]
developers: List[VNDeveloper]
editions: List[VNEdition]
staff: List[VNStaffLink]
__init__(id: str, title: str | None = None, alttitle: str | None = None, titles: List[VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, devstatus: Literal[0, 1, 2] | None=None, released: str | None = None, languages: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[VNImageInfo] = <factory>, relations: List[VNRelation] = <factory>, tags: List[VNTagLink] = <factory>, developers: List[VNDeveloper] = <factory>, editions: List[VNEdition] = <factory>, staff: List[VNStaffLink] = <factory>, va: List[VNVoiceActor] = <factory>, extlinks: List[Extlink] = <factory>) None
va: List[VNVoiceActor]
class veedb.apitypes.entities.vn.VNRelation(id: str, title: str | None = None, alttitle: str | None = None, titles: List[veedb.apitypes.entities.vn.VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, devstatus: Optional[Literal[0, 1, 2]]=None, released: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: veedb.apitypes.entities.vn.VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[veedb.apitypes.entities.vn.VNImageInfo] = <factory>, relations: List[ForwardRef('VNRelation')] = <factory>, tags: List[veedb.apitypes.entities.vn.VNTagLink] = <factory>, developers: List[veedb.apitypes.entities.vn.VNDeveloper] = <factory>, editions: List[veedb.apitypes.entities.vn.VNEdition] = <factory>, staff: List[veedb.apitypes.entities.vn.VNStaffLink] = <factory>, va: List[veedb.apitypes.entities.vn.VNVoiceActor] = <factory>, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, relation: str = '', relation_official: bool = False)[source]

Bases: VN

__init__(id: str, title: str | None = None, alttitle: str | None = None, titles: List[VNTitle] = <factory>, aliases: List[str] = <factory>, olang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, devstatus: Literal[0, 1, 2] | None=None, released: str | None = None, languages: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=<factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, image: VNImageInfo | None = None, length: int | None = None, length_minutes: int | None = None, length_votes: int | None = None, description: str | None = None, average: float | None = None, rating: float | None = None, votecount: int | None = None, screenshots: List[VNImageInfo] = <factory>, relations: List[VNRelation] = <factory>, tags: List[VNTagLink] = <factory>, developers: List[VNDeveloper] = <factory>, editions: List[VNEdition] = <factory>, staff: List[VNStaffLink] = <factory>, va: List[VNVoiceActor] = <factory>, extlinks: List[Extlink] = <factory>, relation: str = '', relation_official: bool = False) None
relation: str = ''
relation_official: bool = False

Character Entities

Character related entity types.

Key Classes:

  • Character: Main character entity

  • CharacterQueryItem: Character data from queries

  • CharacterImage: Character image information

  • CharacterTrait: Character trait information

  • CharacterVN: Character’s VN appearances

class veedb.apitypes.entities.character.CharacterImageInfo(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None)[source]

Bases: ImageCommon

__init__(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None) None

Bases: object

id: str
spoiler: int | None = None
role: Literal['main', 'primary', 'side', 'appears'] | None = None
release: dict | None = None
title: str | None = None
__init__(id: str, spoiler: int | None = None, role: Literal['main', 'primary', 'side', 'appears'] | None = None, release: dict | None = None, title: str | None = None) None

Bases: object

id: str
spoiler: int | None = None
lie: bool | None = None
name: str | None = None
group_id: str | None = None
group_name: str | None = None
__init__(id: str, spoiler: int | None = None, lie: bool | None = None, name: str | None = None, group_id: str | None = None, group_name: str | None = None) None
class veedb.apitypes.entities.character.Character(id: str, name: Optional[str] = None, original: Optional[str] = None, aliases: List[str] = <factory>, description: Optional[str] = None, image: Optional[veedb.apitypes.entities.character.CharacterImageInfo] = None, blood_type: Optional[Literal['a', 'b', 'ab', 'o']] = None, height: Optional[int] = None, weight: Optional[int] = None, bust: Optional[int] = None, waist: Optional[int] = None, hips: Optional[int] = None, cup: Optional[str] = None, age: Optional[int] = None, birthday: Optional[Tuple[int, int]] = None, sex: Optional[Tuple[Optional[Literal['m', 'f', 'b', 'n']], Optional[Literal['m', 'f', 'b', 'n']]]] = None, gender: Optional[Tuple[Optional[Literal['m', 'f', 'o', 'a']], Optional[Literal['m', 'f', 'o', 'a']]]] = None, vns: List[veedb.apitypes.entities.character.CharacterVNLink] = <factory>, traits: List[veedb.apitypes.entities.character.CharacterTraitLink] = <factory>)[source]

Bases: object

id: str
name: str | None = None
original: str | None = None
aliases: List[str]
description: str | None = None
image: CharacterImageInfo | None = None
blood_type: Literal['a', 'b', 'ab', 'o'] | None = None
height: int | None = None
weight: int | None = None
bust: int | None = None
waist: int | None = None
hips: int | None = None
cup: str | None = None
age: int | None = None
birthday: Tuple[int, int] | None = None
sex: Tuple[Literal['m', 'f', 'b', 'n'] | None, Literal['m', 'f', 'b', 'n'] | None] | None = None
gender: Tuple[Literal['m', 'f', 'o', 'a'] | None, Literal['m', 'f', 'o', 'a'] | None] | None = None
vns: List[CharacterVNLink]
traits: List[CharacterTraitLink]
__init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, description: str | None = None, image: CharacterImageInfo | None = None, blood_type: Literal['a', 'b', 'ab', 'o'] | None=None, height: int | None = None, weight: int | None = None, bust: int | None = None, waist: int | None = None, hips: int | None = None, cup: str | None = None, age: int | None = None, birthday: Tuple[int, int] | None=None, sex: Literal['m', 'f', 'b', 'n'] | None, ~typing.Literal['m', 'f', 'b', 'n'] | None] | None=None, gender: Literal['m', 'f', 'o', 'a'] | None, ~typing.Literal['m', 'f', 'o', 'a'] | None] | None=None, vns: List[CharacterVNLink] = <factory>, traits: List[CharacterTraitLink] = <factory>) None

Producer Entities

Producer/developer related entity types.

Key Classes:

  • Producer: Main producer entity

  • ProducerQueryItem: Producer data from queries

  • ProducerRelation: Producer relationship information

class veedb.apitypes.entities.producer.Producer(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, type: Optional[Literal['co', 'in', 'ng']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]

Bases: object

id: str
name: str | None = None
original: str | None = None
aliases: List[str]
lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
type: Literal['co', 'in', 'ng'] | None = None
description: str | None = None
__init__(id: str, name: str | None = None, original: str | None = None, aliases: List[str] = <factory>, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, type: Literal['co', 'in', 'ng'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>) None

Release Entities

Release related entity types.

Key Classes:

  • Release: Main release entity

  • ReleaseQueryItem: Release data from queries

  • ReleaseMedia: Release media information

  • ReleaseProducer: Release producer information

class veedb.apitypes.entities.release.ReleaseLanguageSpecific(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str | None = None, latin: str | None = None, mtl: bool = False, main: bool = False)[source]

Bases: object

lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']
title: str | None = None
latin: str | None = None
mtl: bool = False
main: bool = False
__init__(lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'], title: str | None = None, latin: str | None = None, mtl: bool = False, main: bool = False) None
class veedb.apitypes.entities.release.ReleaseMedia(medium: str, qty: int | None = None)[source]

Bases: object

medium: str
qty: int | None = None
__init__(medium: str, qty: int | None = None) None

Bases: object

id: str
rtype: Literal['trial', 'partial', 'complete'] | None = None
title: str | None = None
original_language: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
__init__(id: str, rtype: Literal['trial', 'partial', 'complete'] | None = None, title: str | None = None, original_language: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None) None

Bases: object

id: str
developer: bool | None = None
publisher: bool | None = None
name: str | None = None
original_name: str | None = None
type: Literal['co', 'in', 'ng'] | None = None
__init__(id: str, developer: bool | None = None, publisher: bool | None = None, name: str | None = None, original_name: str | None = None, type: Literal['co', 'in', 'ng'] | None = None) None
class veedb.apitypes.entities.release.ReleaseImage(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None, type: Literal['pkgfront', 'pkgback', 'pkgcontent', 'pkgside', 'pkgmed', 'dig'], vn: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None, photo: bool = False, thumbnail: str | None = None, thumbnail_dims: Tuple[int, int] | None = None)[source]

Bases: ImageCommon

type: Literal['pkgfront', 'pkgback', 'pkgcontent', 'pkgside', 'pkgmed', 'dig']
vn: str | None = None
languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None
photo: bool = False
thumbnail: str | None = None
thumbnail_dims: Tuple[int, int] | None = None
__init__(id: str | None, url: str | None, dims: List[int] | None, sexual: float | None, violence: float | None, votecount: int | None, type: Literal['pkgfront', 'pkgback', 'pkgcontent', 'pkgside', 'pkgmed', 'dig'], vn: str | None = None, languages: List[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']] | None = None, photo: bool = False, thumbnail: str | None = None, thumbnail_dims: Tuple[int, int] | None = None) None
class veedb.apitypes.entities.release.Release(id: str, title: Optional[str] = None, alttitle: Optional[str] = None, languages: List[veedb.apitypes.entities.release.ReleaseLanguageSpecific] = <factory>, platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']] = <factory>, media: List[veedb.apitypes.entities.release.ReleaseMedia] = <factory>, vns: List[veedb.apitypes.entities.release.ReleaseVNLink] = <factory>, producers: List[veedb.apitypes.entities.release.ReleaseProducerLink] = <factory>, images: List[veedb.apitypes.entities.release.ReleaseImage] = <factory>, released: Optional[str] = None, minage: Optional[int] = None, patch: bool = False, freeware: bool = False, uncensored: Optional[bool] = None, official: bool = False, has_ero: bool = False, resolution: Union[Literal['non-standard'], Tuple[int, int], NoneType] = None, engine: Optional[str] = None, voiced: Optional[Literal[1, 2, 3, 4]] = None, notes: Optional[str] = None, gtin: Optional[str] = None, catalog: Optional[str] = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>)[source]

Bases: object

id: str
title: str | None = None
alttitle: str | None = None
languages: List[ReleaseLanguageSpecific]
platforms: List[Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]
media: List[ReleaseMedia]
vns: List[ReleaseVNLink]
producers: List[ReleaseProducerLink]
images: List[ReleaseImage]
released: str | None = None
minage: int | None = None
patch: bool = False
freeware: bool = False
uncensored: bool | None = None
official: bool = False
has_ero: bool = False
resolution: Literal['non-standard'] | Tuple[int, int] | None = None
engine: str | None = None
voiced: Literal[1, 2, 3, 4] | None = None
notes: str | None = None
gtin: str | None = None
catalog: str | None = None
__init__(id: str, title: str | None = None, alttitle: str | None = None, languages: List[ReleaseLanguageSpecific] = <factory>, platforms: Literal['win', 'lin', 'mac', 'web', 'tdo', 'ios', 'and', 'bdp', 'dos', 'dvd', 'drc', 'nes', 'sfc', 'fm7', 'fm8', 'fmt', 'gba', 'gbc', 'msx', 'nds', 'swi', 'sw2', 'wii', 'wiu', 'n3d', 'p88', 'p98', 'pce', 'pcf', 'psp', 'ps1', 'ps2', 'ps3', 'ps4', 'ps5', 'psv', 'smd', 'scd', 'sat', 'vnd', 'x1s', 'x68', 'xb1', 'xb3', 'xbo', 'xxs', 'mob', 'oth']]=<factory>, media: List[ReleaseMedia] = <factory>, vns: List[ReleaseVNLink] = <factory>, producers: List[ReleaseProducerLink] = <factory>, images: List[ReleaseImage] = <factory>, released: str | None = None, minage: int | None = None, patch: bool = False, freeware: bool = False, uncensored: bool | None = None, official: bool = False, has_ero: bool = False, resolution: Tuple[int, int] | None=None, engine: str | None = None, voiced: Literal[1, 2, 3, 4] | None=None, notes: str | None = None, gtin: str | None = None, catalog: str | None = None, extlinks: List[Extlink] = <factory>) None

Staff Entities

Staff related entity types.

Key Classes:

  • Staff: Main staff entity

  • StaffQueryItem: Staff data from queries

  • StaffAlias: Staff alias information

class veedb.apitypes.entities.staff.StaffAlias(aid: int, name: str | None = None, ismain: bool | None = None, latin: str | None = None)[source]

Bases: object

aid: int
name: str | None = None
ismain: bool | None = None
latin: str | None = None
__init__(aid: int, name: str | None = None, ismain: bool | None = None, latin: str | None = None) None
class veedb.apitypes.entities.staff.Staff(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Optional[Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi']]=None, gender: Optional[Literal['m', 'f']]=None, description: str | None = None, extlinks: List[veedb.apitypes.common.Extlink] = <factory>, aliases: List[veedb.apitypes.entities.staff.StaffAlias] = <factory>)[source]

Bases: object

id: str
aid: int | None = None
ismain: bool | None = None
name: str | None = None
original: str | None = None
lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None = None
gender: Literal['m', 'f'] | None = None
description: str | None = None
aliases: List[StaffAlias]
__init__(id: str, aid: int | None = None, ismain: bool | None = None, name: str | None = None, original: str | None = None, lang: Literal['ar', 'eu', 'be', 'bg', 'ca', 'ck', 'zh', 'zh-Hans', 'zh-Hant', 'hr', 'cs', 'da', 'nl', 'en', 'eo', 'fi', 'fr', 'gl', 'de', 'el', 'he', 'hi', 'hu', 'ga', 'id', 'it', 'iu', 'ja', 'kk', 'ko', 'la', 'lv', 'lt', 'mk', 'ms', 'ne', 'no', 'fa', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'gd', 'sr', 'sk', 'sl', 'es', 'sv', 'ta', 'th', 'tr', 'uk', 'ur', 'vi'] | None=None, gender: Literal['m', 'f'] | None=None, description: str | None = None, extlinks: List[Extlink] = <factory>, aliases: List[StaffAlias] = <factory>) None

Tag Entities

Tag related entity types.

Key Classes:

  • Tag: Main tag entity

  • TagQueryItem: Tag data from queries

class veedb.apitypes.entities.tag.Tag(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Optional[Literal['cont', 'ero', 'tech']]=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None)[source]

Bases: object

id: str
name: str | None = None
aliases: List[str]
description: str | None = None
category: Literal['cont', 'ero', 'tech'] | None = None
searchable: bool | None = None
applicable: bool | None = None
vn_count: int | None = None
__init__(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, category: Literal['cont', 'ero', 'tech'] | None=None, searchable: bool | None = None, applicable: bool | None = None, vn_count: int | None = None) None

Trait Entities

Character trait related entity types.

Key Classes:

  • Trait: Main trait entity

  • TraitQueryItem: Trait data from queries

class veedb.apitypes.entities.trait.Trait(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, searchable: bool | None = None, applicable: bool | None = None, group_id: str | None = None, group_name: str | None = None, char_count: int | None = None)[source]

Bases: object

id: str
name: str | None = None
aliases: List[str]
description: str | None = None
searchable: bool | None = None
applicable: bool | None = None
group_id: str | None = None
group_name: str | None = None
char_count: int | None = None
__init__(id: str, name: str | None = None, aliases: List[str] = <factory>, description: str | None = None, searchable: bool | None = None, applicable: bool | None = None, group_id: str | None = None, group_name: str | None = None, char_count: int | None = None) None

Quote Entities

Quote related entity types.

Key Classes:

  • Quote: Main quote entity

  • QuoteQueryItem: Quote data from queries

class veedb.apitypes.entities.quote.Quote(id: str, quote: str | None = None, score: int | None = None, vn: Dict[str, Any] | None = None, character: Dict[str, Any] | None = None)[source]

Bases: object

id: str
quote: str | None = None
score: int | None = None
vn: Dict[str, Any] | None = None
character: Dict[str, Any] | None = None
__init__(id: str, quote: str | None = None, score: int | None = None, vn: Dict[str, Any] | None = None, character: Dict[str, Any] | None = None) None

User List Entities

User list related entity types.

Key Classes:

  • Ulist: User VN list entry

  • UlistQueryItem: User list data from queries

  • UlistLabels: User list label information

class veedb.apitypes.entities.ulist.UlistLabelInfo(id: int, label: str)[source]

Bases: object

id: int
label: str
__init__(id: int, label: str) None
class veedb.apitypes.entities.ulist.UlistReleaseInfo(id: str, list_status: Literal[0, 1, 2, 3, 4] | None = None, title: str | None = None)[source]

Bases: object

id: str
list_status: Literal[0, 1, 2, 3, 4] | None = None
title: str | None = None
__init__(id: str, list_status: Literal[0, 1, 2, 3, 4] | None = None, title: str | None = None) None
class veedb.apitypes.entities.ulist.UlistItem(id: str, added: int | None = None, voted: int | None = None, lastmod: int | None = None, vote: int | None = None, started: str | None = None, finished: str | None = None, notes: str | None = None, labels: List[veedb.apitypes.entities.ulist.UlistLabelInfo] = <factory>, vn: Optional[Dict[str, Any]]=<factory>, releases: List[veedb.apitypes.entities.ulist.UlistReleaseInfo] = <factory>)[source]

Bases: object

id: str
added: int | None = None
voted: int | None = None
lastmod: int | None = None
vote: int | None = None
started: str | None = None
finished: str | None = None
notes: str | None = None
labels: List[UlistLabelInfo]
vn: Dict[str, Any] | None
releases: List[UlistReleaseInfo]
__init__(id: str, added: int | None = None, voted: int | None = None, lastmod: int | None = None, vote: int | None = None, started: str | None = None, finished: str | None = None, notes: str | None = None, labels: List[UlistLabelInfo] = <factory>, vn: Dict[str, ~typing.Any] | None=<factory>, releases: List[UlistReleaseInfo] = <factory>) None
class veedb.apitypes.entities.ulist.UlistLabel(id: int, label: str, private: bool, count: int | None = None)[source]

Bases: object

id: int
label: str
private: bool
count: int | None = None
__init__(id: int, label: str, private: bool, count: int | None = None) None

User Entities

User related entity types.

Key Classes:

  • User: Main user entity

  • UserQueryItem: User data from queries

  • AuthInfo: Authentication information

  • Stats: Database statistics

class veedb.apitypes.entities.user.User(id: str, username: str, lengthvotes: int | None = None, lengthvotes_sum: int | None = None)[source]

Bases: object

Represents a user object as returned by the GET /user endpoint.

id: str
username: str
lengthvotes: int | None = None
lengthvotes_sum: int | None = None
__init__(id: str, username: str, lengthvotes: int | None = None, lengthvotes_sum: int | None = None) None
class veedb.apitypes.entities.user.AuthInfo(id: str, username: str, permissions: List[str] = <factory>)[source]

Bases: object

Represents the authentication information as returned by GET /authinfo.

id: str
username: str
permissions: List[str]
__init__(id: str, username: str, permissions: List[str] = <factory>) None
class veedb.apitypes.entities.user.UserStats(chars: int, producers: int, releases: int, staff: int, tags: int, traits: int, vn: int)[source]

Bases: object

Represents the database statistics as returned by GET /stats. Note: The API documentation calls this endpoint GET /stats, and the response fields are direct counts for various entities.

chars: int
producers: int
releases: int
staff: int
tags: int
traits: int
vn: int
__init__(chars: int, producers: int, releases: int, staff: int, tags: int, traits: int, vn: int) None

Type Usage Examples

Creating Query Requests

from veedb import QueryRequest

# Basic query
basic_query = QueryRequest(
    filters=["id", "=", "v17"],
    fields="title, rating"
)

# Complex query with sorting and pagination
complex_query = QueryRequest(
    filters=["and", ["rating", ">", 8.0], ["released", ">", "2020-01-01"]],
    fields="id, title, rating, released, description",
    sort="rating",
    reverse=True,
    results=25,
    page=1
)

# User-specific query
user_query = QueryRequest(
    filters=["uid", "=", "u12345"],
    fields="id, vote, notes, vn{title}",
    user="u12345"
)

Working with Response Data

# Query visual novels
response = await client.vn.query(query)

# Response is typed as QueryResponse[VNQueryItem]
for vn in response.results:
    print(f"Title: {vn.title}")
    print(f"Rating: {vn.rating}")
    print(f"Released: {vn.released}")

    # Access nested data
    if vn.image:
        print(f"Cover: {vn.image.url}")

    if vn.developers:
        for dev in vn.developers:
            print(f"Developer: {dev.name}")

Updating User Lists

from veedb import UlistUpdatePayload

# Create update payload
payload = UlistUpdatePayload(
    id="v17",
    vote=90,
    notes="Amazing storyline!",
    started="2023-06-01",
    finished="2023-06-15",
    labels=[1, 3]  # Label IDs
)

# Update user list
await client.ulist.update("v17", payload)

Working with Enums

from veedb import LanguageEnum, PlatformEnum

# Query releases for specific language and platform
query = QueryRequest(
    filters=[
        "and",
        ["languages", "=", [LanguageEnum.EN]],
        ["platforms", "=", [PlatformEnum.WIN]]
    ],
    fields="title, languages, platforms"
)

response = await client.release.query(query)

Type Annotations

VeeDB is fully typed and supports type checking with mypy:

from typing import List
from veedb import VNDB, QueryRequest, QueryResponse
from veedb.apitypes.entities.vn import VNQueryItem

async def get_top_vns(client: VNDB, limit: int = 10) -> List[VNQueryItem]:
    query = QueryRequest(
        filters=["rating", ">", 8.0],
        fields="title, rating",
        sort="rating",
        reverse=True,
        results=limit
    )

    response: QueryResponse[VNQueryItem] = await client.vn.query(query)
    return response.results

# Usage with type checking
async def main() -> None:
    async with VNDB() as client:
        top_vns = await get_top_vns(client, 20)
        for vn in top_vns:
            # Type checker knows vn is VNQueryItem
            print(f"{vn.title}: {vn.rating}")

Optional Fields

Many entity fields are optional and may be None:

async def safe_field_access():
    response = await client.vn.query(query)

    for vn in response.results:
        # Always check optional fields
        if vn.rating is not None:
            print(f"Rating: {vn.rating}")
        else:
            print("No rating available")

        # Safe access with default
        description = vn.description or "No description available"
        print(f"Description: {description}")

        # Check nested optional fields
        if vn.image and vn.image.url:
            print(f"Cover image: {vn.image.url}")

Union Types

Some fields accept multiple types:

from typing import Union

# Filters can be various types
def create_filter(value: Union[str, int, List[str]]) -> List:
    if isinstance(value, list):
        return ["id", "=", value]
    else:
        return ["title", "~", str(value)]

# Use with different types
string_filter = create_filter("fate")
list_filter = create_filter(["v17", "v18"])

Generic Types

VeeDB uses generics for type safety:

from typing import TypeVar, Generic
from veedb.client import _BaseEntityClient

# Entity clients are generic
T_Entity = TypeVar('T_Entity')
T_QueryItem = TypeVar('T_QueryItem')

# This ensures type safety across different endpoints
vn_client: _BaseEntityClient[VN, VNQueryItem] = client.vn
char_client: _BaseEntityClient[Character, CharacterQueryItem] = client.character

Dataclass Features

All entity types are dataclasses with additional features:

from dataclasses import asdict, astuple

# Convert to dictionary
vn_dict = asdict(vn)
print(f"VN as dict: {vn_dict}")

# Convert to tuple
vn_tuple = astuple(vn)

# Create with partial data
from veedb.apitypes.entities.vn import VN

partial_vn = VN(
    id="v17",
    title="Ever17",
    # Other fields will be None
)

Type Validation

VeeDB uses dacite for runtime type validation:

# Data from API is automatically validated
response = await client.vn.query(query)

# If API returns invalid data, dacite will raise an error
# This ensures type safety at runtime

Best Practices

  1. Use Type Hints: Always use type hints for better IDE support

  2. Check Optional Fields: Always check if optional fields are None

  3. Use Enums: Use provided enums instead of string literals

  4. Type Guards: Use isinstance() for union type checking

  5. Dataclass Methods: Take advantage of dataclass features

  6. Generic Awareness: Understand generic type parameters

  7. Runtime Validation: Trust that VeeDB validates API responses

IDE Support

VeeDB provides excellent IDE support through:

  • Autocomplete: Full autocompletion for all fields and methods

  • Type Checking: Static type checking with mypy

  • Documentation: Docstrings for all public APIs

  • Error Detection: Catch type errors before runtime