# Dashboard

The WoW dashboard at **Administration > Reports > World of Warcraft** (`/admin/reports/wow`) gives you an at-a-glance view of everything the module manages.

## What you see

Each enabled submodule contributes a section showing:

- **Status icon** — green check (OK), yellow warning (needs attention), or red cross (error).
- **Item label** — what's being tracked (e.g., "Realms synced", "Characters stored").
- **Current value** — entity count, last sync date, or connection status.
- **Actions** — a dropdown with available operations (Sync now, Force resync, Wipe).

Counts are eventually consistent with Blizzard and **not monotonically increasing** — the daily [TTL sweep](../development/api-compliance.md#30-day-data-ttl) deletes rows whose `last_fetched` is older than 30 days, so a stored count can go down between reads even without admin action. That is the expected behavior, not a regression.

## Actions

### Sync now

Runs the sync for the default region.

- **Reference data** (realms, classes, races, specializations, power types, reputation factions) is a single-shot fetch that completes quickly.
- **Queue-backed catalogs** (achievements, mounts, pets, titles, toys) are enqueued into the Advanced Queue processor; the dashboard action drains that queue inline as a Drupal batch with a progress bar so you can watch it finish.

If Blizzard reports no changes since your last sync (conditional request returns 304), nothing is written — the action completes instantly with a "not modified" message.

### Force resync

Available on catalog-backed modules (achievements, characters, guilds, and collection catalogs). Wipes stored data and re-syncs everything from scratch. Shows a confirmation dialog before proceeding. Runs as a batch.

### Wipe

Deletes all stored entities for that data type without re-syncing. Taxonomy-backed data (realms, classes, races, specializations, power types, reputation factions) does not offer a wipe action — deleting and recreating taxonomy terms would break any content that references them.

## Battle.net API status

The top section shows your API connection health:

- **Connection** — whether the module can authenticate with Blizzard.
- **Client ID / Client secret** — whether credentials are configured (the secret is shown obfuscated).
- **Default region** — which region's data you're syncing.
- **Icon caching** — whether media assets are stored locally (recommended).

Rate-limit counters (per-hour + per-second, both in Drupal State, serialized under a lock) run automatically behind the scenes; there is no separate dashboard row for them today. If a request exceeds the cap, the client throws a `RuntimeException` rather than silently stalling. See [API compliance](../development/api-compliance.md#rate-limiting).
