Kerzo Quest Expansion Public API
Comprehensive technical documentation for World of Warcraft addon developers. Integrate accurate quest expansion data, official crest textures, atmospheric parchment background tinting, and zero-maintenance settings synchronization into your own interface.
KQE exposes its entire interface through the global table _G.KerzoQuestExpansion.
For code invocation, international developers use canonical English methods (e.g. API.GetQuestExpansion),
while native Spanish aliases (e.g. API.ObtenerExpansionMision) are provided for internal Kerzo architecture compatibility.
10 Official Blizzard Languages (12 Locales): In full accordance with the Kerzo Development Architecture (arquitectura_desarrollo.md),
all strings, UI elements, expansion names, tooltips, and data returned via API.GetLocalizedText() natively support
enUS, enGB, esES, esMX, deDE, frFR, itIT,
ptBR, ruRU, koKR, zhCN, and zhTW with zero CPU idle in background.
1. Dual Operation Model (Standalone vs Library)
KQE is engineered to behave either as an autonomous player-facing addon or as a silent underlying data engine for host addons (like Kerzo Classic Quest Log, quest trackers, or custom UI replacements).
| Capability | Standalone Mode | Library Mode (Embedded) |
|---|---|---|
| Blizzard Settings Category | Active (Registered under AddOns) | Disabled / Hidden automatically |
| Default QuestLog Injection | Active (hooks native Blizzard log) | Suspended (Host addon controls rendering) |
| NPC Gossip & Quest Dialog Tint | Active (tints default dialogs) | Delegated to host addon |
| Public Global API | Active | Active |
| Addon List Display Title | Kerzo Quest Expansion |
Kerzo Quest Expansion [Library] |
2. API Versioning Contract & Retrocompatibility
To ensure third-party addons never break when KQE introduces internal updates or signature changes, KQE incorporates an explicit version handshake contract.
When loading KQE, host addons can query API:GetAPI(requiredMajorVersion). If KQE advances to future major versions, compatibility wrappers ensure older signatures remain 100% operational.
local KQE_ROOT = _G.KerzoQuestExpansion
if not KQE_ROOT then return end
-- 1. Request API v2 explicitly:
local KQE = KQE_ROOT:GetAPI(2)
if not KQE then
print("[MyAddon] Incompatible KQE version installed.")
return
end
-- 2. Switch KQE to library mode so it subordinates cleanly:
KQE:SetLibraryMode(true)
-- 3. Consume API methods safely:
local expKey, name, logo = KQE:GetQuestExpansion(questID)
3. Mode Control Methods
Returns whether KQE is currently subordinated as a passive data engine.
Enables or disables library mode. Disables Blizzard settings panels and default Blizzard UI hooks when true.
- active boolean Enable library mode (true) or restore standalone mode (false).
Inverse of IsLibraryMode().
Checks if a recognized companion addon (e.g. Kerzo Classic Quest Log) is active in the current session.
4. Quest Identification & Cromatics
Identifies which expansion or era a quest belongs to across 73,000+ indexed quests and 28 eras.
- questID number The numeric identifier of the quest.
• key: Canonical expansion identifier (e.g. "TWW", "MIDNIGHT", "FOREVER", "WOTLK")
• name: Localized name (e.g. "The War Within")
• logoPath: Full texture file path for the official crest
• aspectRatio: Width-to-height ratio (e.g. 2.55, 1.39) to prevent texture distortion
• expId: Internal numeric catalogue index
local key, name, logo, ratio = KQE:GetQuestExpansion(78522)
if logo then
myTexture:SetTexture(logo)
myTexture:SetSize(22 * ratio, 22)
end
Retrieves the active RGB normalized floats and hex string for the requested expansion.
- expansionKey string Expansion canonical key (e.g. "TWW", "LEGION").
Generates a formatted text bullet for quest listings (e.g. "|cffeb7a1f•|r " or "|cff99e6f2∞|r " for WoW Forever).
5. Parchment & Dialogue Background Tinting
Evaluates whether a quest should have background atmospheric tinting according to user settings and presets.
local shouldTint, r, g, b, alpha = KQE:ShouldTintQuest(questID)
if shouldTint then
parchmentBg:SetColorTexture(r, g, b, alpha)
parchmentBg:Show()
else
parchmentBg:Hide()
end
Returns the currently selected preset filter: "all", "classic", "modern", "none", or "custom".
Applies a predefined tinting filter matrix across all expansions and notifies observers.
- presetId string One of: "all", "classic", "modern", "none".
Overrides the official theme color for an expansion with custom RGB floats (0.0 to 1.0).
6. Ready-to-Use UI Badges
Constructs an interactive button pre-configured with the official expansion texture and dynamic mouseover tooltip.
badge:SetPoint(...).Updates an existing badge with the given quest's expansion logo, adapting its aspect ratio automatically. Hides the badge if invalid.
7. Dynamic Settings Schema (Zero-Maintenance UI)
KQE provides a complete schema via GetSettingsSchema(). Host addons can loop through this schema to generate check buttons,
sliders, and color pickers automatically without writing a single line of boilerplate code when new features are added.
Returns an array of setting field descriptor tables:
{
clave = "MostrarLogosDetalle", -- Configuration key
tipo = "booleano", -- "booleano" | "rango" | "seleccion"
defecto = true, -- Factory default
categoria = "visual", -- "visual" | "tintado" | "sistema"
claveTexto = "opt:ShowLogosDetail", -- Localization token
claveDesc = "opt:desc:ShowLogosDetail"
}
Fetches the current live value for any configuration key.
Updates a configuration key, persists the value, and triggers reactive observer callbacks.
8. Reactive Observer Pattern
Host addons can subscribe to configuration changes without polling or manual reloading.
local function OnKQEConfigChanged(key, newValue, oldValue)
if key == "TintarFondoExpansion" or key == "OpacidadTinte" then
MyQuestLog:RefreshParchmentTints()
elseif key == "MostrarLogosLista" then
MyQuestLog:RefreshListIcons()
end
end
-- Subscribe:
KQE:RegisterConfigObserver(OnKQEConfigChanged)
-- Unsubscribe (on addon teardown):
KQE:UnregisterConfigObserver(OnKQEConfigChanged)
9. Localization Engine
In strict accordance with the Kerzo Development Architecture (arquitectura_desarrollo.md),
KQE provides complete, native localization across all 10 official Blizzard languages (12 locale variants) using on-demand closure loading with zero CPU idle in background:
| Locale Code | Language | Region / Coverage |
|---|---|---|
enUS / enGB | English | United States / United Kingdom / International |
esES | Español (Castellano) | Spain |
esMX | Español (Latino) | Latin America / Mexico |
deDE | Deutsch | Germany / Austria / Switzerland |
frFR | Français | France / Belgium / Canada |
itIT | Italiano | Italy |
ptBR | Português | Brazil / Portugal |
ruRU | Русский | Russia / CIS |
koKR | 한국어 | South Korea |
zhCN | 简体中文 | China (Simplified) |
zhTW | 繁體中文 | Taiwan / Hong Kong (Traditional) |
KQE:GetLocalizedText(token, optLocale) → Returns the translated string for the requested token with automatic resolution cascade (Active Locale → enUS Fallback → GlobalStrings → Token key).
10. Canonical Expansion Keys Catalog
| Key | Expansion Title | Theme Color | Default Texture Asset |
|---|---|---|---|
WOW | Classic / Vanilla | #ffd100 | logo_00_wow.png |
TBC | The Burning Crusade | #22b14c | logo_01_tbc.png |
WOTLK | Wrath of the Lich King | #00a2e8 | logo_02_wotlk.png |
CATA | Cataclysm | #c13b14 | logo_03_cata.png |
MOP | Mists of Pandaria | #00a86b | logo_04_mop.png |
WOD | Warlords of Draenor | #8f522e | logo_05_wod.png |
LEGION | Legion | #55ff00 | logo_06_legion.png |
BFA | Battle for Azeroth | #ff8000 | logo_07_bfa.png |
SHADOWLANDS | Shadowlands | #99b3cc | logo_08_shadowlands.png |
DRAGONFLIGHT | Dragonflight | #dc3232 | logo_09_dragonflight.png |
TWW | The War Within | #eb7a1f | logo_10_tww.png |
MIDNIGHT | Midnight | #6c429c | logo_11_midnight.png |
FOREVER | World of Warcraft Forever | #99e6f2 | logo_01_60_forever.png |
SOD_P1..P8 | Season of Discovery | #e03a3a | logo_01_15_sod.png |
11. Technical API Changelog
- Dual Operation Architecture: Introduced
SetLibraryMode()andIsLibraryMode()for seamless embedding without Blizzard UI conflicts. - Version Handshake: Added
GetAPI(version)andIsVersionCompatible(version)to guarantee backward compatibility with host addons. - Dynamic Settings Schema: Published
GetSettingsSchema(),GetOption(), andSetOption()for self-generating host settings panels. - Reactive Observer Pattern: Added
RegisterConfigObserver()to allow host addons to react to color, tint, and opacity updates in real time. - Atmospheric Parchment Engine: Exposed
ShouldTintQuest(questID)and preset matrices for custom background tinting. - Bilingual API Aliases: Introduced 100% English method names (e.g.
GetQuestExpansion) alongside existing canonical Spanish methods.
- Internal Blizzard QuestLog title and detail hooks.
- Over 40,000 quests mapped with official logos across Retail and Classic clients.