Skip to content

Collections

Four submodules, same shape: mounts, battle pets, toys, titles. Each provides a catalog of what exists in-game and tracks which items each character has collected.

Mounts — wow_mount

  • Catalog: mount name, description, source (vendor/drop/quest/etc.), faction restrictions, and icon.
  • Per-character: which mounts are collected, favorites, and usability flags.
drush en wow_mount -y
drush wow:sync-mounts --force

Battle pets — wow_pet

  • Catalog: pet name, battle-pet type (Beast, Dragonkin, Mechanical, etc.), source, abilities.
  • Per-character: collected pet instances with nickname, level, quality (rarity), breed, favorite flag.
drush en wow_pet -y
drush wow:sync-pets --force

Toys — wow_toy

  • Catalog: toy name, source, item reference.
  • Per-character: which toys are unlocked.
drush en wow_toy -y
drush wow:sync-toys --force

Titles — wow_title

  • Catalog: title name (including gender-specific forms) and display order.
  • Per-character: which titles are earned and which one is currently active.
drush en wow_title -y
drush wow:sync-titles --force

How per-character collection works

Each collection module registers a CharacterDataProvider plugin. When wow_character syncs a character, the plugin runs automatically and fills in that character's collection from the matching /profile/wow/character/{realm}/{name}/collections/{type} endpoint.

There's no "collection sync" step separate from character sync. Enable the collection module → run the catalog sync → refresh characters.

If the catalog hasn't been synced yet, unknown items are silently skipped in the per-character sync. Catalogs always sync first.

Dashboard actions

Each collection module exposes catalog actions on the dashboard (Sync now, Force resync, Wipe). There is no per-character collection button — collection freshness is tied to character refresh.

Storage model

Collections use owner-agnostic junction entities (wow_mount_collection, wow_collected_pet, wow_title_award, wow_toy_collection). The character owner reference is projected in only when wow_character is enabled. Disabling wow_character doesn't orphan the junction rows, but character-specific queries stop working. See lifecycle.