# World of Warcraft API for Drupal

A modular suite that brings Battle.net and World of Warcraft data into your Drupal site. Use as much or as little as you need — every submodule is optional, every capability is pluggable.

## Mental model

```
  Blizzard Battle.net APIs
        │
  BattleNetClient          (auth, rate limit, retry)
        │
  Per-domain submodules    (Api → Sync → Entities → Dashboard)
        │
  Drupal site              (entities, taxonomies, Views, your code)
```

Three kinds of data flow in:

- **Reference data** — realms, classes, races, factions → stored as taxonomy terms.
- **Catalogs** — achievements, mounts, pets, titles, toys, creatures, quests → stored as content entities.
- **Profiles** — per-character and per-guild state → stored as owner-agnostic junction entities.

See [Architecture overview](architecture/overview.md) for the full 3-layer model.

## Where to start

### You're installing the suite
1. [Installation](getting-started/installation.md)
2. [Configuration](getting-started/configuration.md) (Battle.net credentials)
3. [Battle.net login](getting-started/battlenet-login.md) if you want players to sign in

### You want to use it
- [Usage overview](usage/overview.md) — the capability matrix
- [Recipe: character tracking](usage/recipes/character-tracking.md) — public player pages
- [Recipe: guild dashboard](usage/recipes/guild-dashboard.md) — guild profile + crest (roster/achievements ship as extension points only)
- [Recipe: achievement planner](usage/recipes/achievement-planner.md) — browsable catalog with progress

### You're an operator
- [Dashboard](operations/dashboard.md) — admin status + one-click actions
- [Drush commands](operations/drush.md)
- [Syncing data](operations/syncing.md) — cadence, batching, the 30-day TTL

### You're extending or integrating
- [Plugin system](architecture/plugin-system.md) — DashboardSectionProvider + CharacterDataProvider + SearchableDataProvider
- [Adding submodules](development/adding-submodules.md)
- [Character data providers](development/character-data-providers.md)
- [Dashboard providers](development/dashboard-providers.md)
- [Search providers](development/search-providers.md)
- [API compliance](development/api-compliance.md) — Blizzard ToS, the 30-day TTL, rate limits

### You want the full inventory
- [Module reference](reference/modules.md)
- [Entity reference](reference/entities.md)
- [Service reference](reference/services.md)
- [Blizzard API coverage](reference/apis.md) — what's wired, what's partial, what's not

## At a glance

| Capability | Module | Status |
|---|---|---|
| Battle.net OAuth login | `wow_battlenet_login` | Stable |
| Characters (profile + media) | `wow_character` | Stable |
| Guilds (profile + crest) | `wow_guild` | Stable |
| Achievement catalog + progress | `wow_achievement` | Stable |
| Mount / pet / title / toy collections | `wow_mount` `wow_pet` `wow_title` `wow_toy` | Stable |
| Reputation factions + standings | `wow_reputation` | Stable |
| Item catalog (on-demand) | `wow_item` | Partial — see [API coverage](reference/apis.md) |
| Creature catalog (on-demand) | `wow_creature` | Stable |
| Quest catalog (batch sync) | `wow_quest` | Stable |
| Reference data (realms, classes, races, etc.) | `wow_realm`, `wow_playable_*`, `wow_power_type` | Stable |
| CKEditor 5 WoW link insertion | `wow_editor` | Stable |
| Equipment, Mythic+, PvP, professions | — | Not started |

## Localization

Taxonomy-based reference data respects the site's installed locales; when available, Blizzard's localized names are used directly. See [Configuration](getting-started/configuration.md).

## License and attribution

This module is maintained under Drupal's license. Data is sourced from the Blizzard Battle.net API — see [API compliance](development/api-compliance.md) for Blizzard's terms and how the suite implements them (30-day TTL, rate limits, deletion on de-link, credential safety).
