Skip to content

A GraphQL wrapper for the World of Warcraft Game Data APIs and Profile APIs.

License

Notifications You must be signed in to change notification settings

vmroycroft/wowql

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WowQL

Version MIT License

A GraphQL wrapper for the World of Warcraft Game Data APIs and Profile APIs. Built with Apollo Server.

Some WoW endpoints still need to be implemented. See the Implementation Status section for a list of the WoW endpoints and their status.

Quick Start

  1. Install dependencies

    npm install
    
  2. Update environment variables

    Rename .env.example to .env and set the following variables:

    PORT=4000
    REDIS_HOST="redis server ip"
    REDIS_PORT=6379
    REDIS_PASSWORD="password"
    CLIENT_ID="blizzard battle.net client id"
    CLIENT_SECRET="blizzard battle.net client secret"
    OAUTH_SUCCESS_REDIRECT="successful login redirect url"
    OAUTH_FAILURE_REDIRECT="failed login redirect url"
    
    • The port to run the server on
    • The Redis server IP
    • The port the Redis server runs on
    • The Redis server password
    • Your Client ID and Client Secret from your Blizzard Battle.net OAuth client
    • The URL to redirect clients to on a successful login
    • The URL to redirect clients to on a failed login
  3. Start Redis in a Docker container

    docker-compose up -d
    
  4. Start the server

    npm start
    

GraphQL Playground

Apollo Server provides GraphQL Playground for you to test your GraphQL queries before implementing them in client code.

With your server running, go to http://localhost:4000/api in your browser to open GraphQL Playground. It includes:

  • A text area for writing queries
  • A play button to execute queries
  • A text area for viewing query results
  • Views for schema inspection and generated documentation

Schema Documentation

In addition to the documentation generated by GraphQL Playground, schema documentation is also available as browsable webpages via graphdoc.

Run the following command to generate the webpages, which can be hosted on a web server. A docs/ directory will be created in the root of the project.

npm run graphdoc

Roadmap

  • Implement the rest of the WoW API endpoints
  • Implement unit tests
  • Allow for query params (namespace, region, locale, etc.)

Implementation Status

The GraphQL implementation status of each WoW API endpoint is listed below.

Game Data APIs

Name Endpoint Status
Achievement Categories Index /data/wow/achievement-category/index red Not Started
Achievement Category /data/wow/achievement-category/{achievementCategoryId} red Not Started
Achievements Index /data/wow/achievement/index red Not Started
Achievement /data/wow/achievement/{achievementId} red Not Started
Achievement Media /data/wow/media/achievement/{achievementId} red Not Started
Auctions /data/wow/connected-realm/{connectedRealmId}/auctions red Not Started
Azerite Essences Index /data/wow/azerite-essence/index red Not Started
Azerite Essence /data/wow/azerite-essence/{azeriteEssenceId} red Not Started
Azerite Essence Media /data/wow/media/azerite-essence/{azeriteEssenceId} red Not Started
Connected Realms Index /data/wow/connected-realm/index red Not Started
Connected Realm /data/wow/connected-realm/{connectedRealmId} red Not Started
Creature Families Index /data/wow/creature-family/index red Not Started
Creature Family /data/wow/creature-family/{creatureFamilyId} red Not Started
Creature Types Index /data/wow/creature-type/index red Not Started
Creature Type /data/wow/creature-type/{creatureTypeId} red Not Started
Creature /data/wow/creature/{creatureId} red Not Started
Creature Display Media /data/wow/media/creature-display/{creatureDisplayId} red Not Started
Creature Family Media /data/wow/media/creature-family/{creatureFamilyId} red Not Started
Guild Crest Components Index /data/wow/guild-crest/index red Not Started
Guild Crest Border Media /data/wow/media/guild-crest/border/{borderId} red Not Started
Guild Crest Emblem Media /data/wow/media/guild-crest/emblem/{emblemId} red Not Started
Item Classes Index /data/wow/item-class/index red Not Started
Item Class /data/wow/item-class/{itemClassId} red Not Started
Item Sets Index /data/wow/item-set/index red Not Started
Item Set /data/wow/item-set/{itemSetId} red Not Started
Item Subclass /data/wow/item-class/{itemClassId}/item-subclass/{itemSubclassId} red Not Started
Item /data/wow/item/{itemId} red Not Started
Item Media /data/wow/media/item/{itemId} red Not Started
Journal Expansions Index /data/wow/journal-expansion/index red Not Started
Journal Expansion /data/wow/journal-expansion/{journalExpansionId} red Not Started
Journal Encounters Index /data/wow/journal-encounter/index red Not Started
Journal Encounter /data/wow/journal-encounter/{journalEncounterId} red Not Started
Journal Instances Index /data/wow/journal-instance/index red Not Started
Journal Instance /data/wow/journal-instance/{journalInstanceId} red Not Started
Mounts Index /data/wow/mount/index red Not Started
Mount /data/wow/mount/{mountId} red Not Started
Mythic Keystone Affixes Index /data/wow/keystone-affix/index red Not Started
Mythic Keystone Affix /data/wow/keystone-affix/{keystoneAffixId} red Not Started
Mythic Keystone Affix Media /data/wow/media/keystone-affix/{keystoneAffixId} red Not Started
Mythic Keystone Dungeons Index /data/wow/media/keystone-affix/{keystoneAffixId} red Not Started
Mythic Keystone Dungeon /data/wow/mythic-keystone/dungeon/{dungeonId} red Not Started
Mythic Keystone Index /data/wow/mythic-keystone/index red Not Started
Mythic Keystone Periods Index /data/wow/mythic-keystone/period/index red Not Started
Mythic Keystone Period /data/wow/mythic-keystone/period/{periodId} red Not Started
Mythic Keystone Seasons Index /data/wow/mythic-keystone/season/index red Not Started
Mythic Keystone Season /data/wow/mythic-keystone/season/{seasonId} red Not Started
Mythic Keystone Leaderboards Index /data/wow/connected-realm/{connectedRealmId}/mythic-leaderboard/index red Not Started
Mythic Keystone Leaderboard /data/wow/connected-realm/{connectedRealmId}/mythic-leaderboard/{dungeonId}/period/{period} red Not Started
Mythic Raid Leaderboard /data/wow/leaderboard/hall-of-fame/{raid}/{faction} red Not Started
Pets Index /data/wow/pet/index red Not Started
Pet /data/wow/pet/{petId} red Not Started
Playable Classes Index /data/wow/playable-class/index red Not Started
Playable Class /data/wow/playable-class/{classId} red Not Started
Playable Class Media /data/wow/media/playable-class/{playableClassId} red Not Started
PvP Talent Slots /data/wow/playable-class/{classId}/pvp-talent-slots red Not Started
Playable Races Index /data/wow/playable-race/index red Not Started
Playable Race /data/wow/playable-race/{playableRaceId} red Not Started
Playable Specializations Index /data/wow/playable-specialization/index red Not Started
Playable Specialization /data/wow/playable-specialization/{specId} red Not Started
Playable Specialization Media /data/wow/media/playable-specialization/{specId} red Not Started
Power Types Index /data/wow/power-type/index red Not Started
Power Type /data/wow/power-type/{powerTypeId} red Not Started
PvP Seasons Index /data/wow/pvp-season/index red Not Started
PvP Season /data/wow/pvp-season/{pvpSeasonId} red Not Started
PvP Leaderboards Index /data/wow/pvp-season/{pvpSeasonId}/pvp-leaderboard/index red Not Started
PvP Leaderboard /data/wow/pvp-season/{pvpSeasonId}/pvp-leaderboard/{pvpBracket} red Not Started
PvP Rewards Index /data/wow/pvp-season/{pvpSeasonId}/pvp-reward/index red Not Started
PvP Tier Media /data/wow/media/pvp-tier/{pvpTierId} red Not Started
PvP Tiers Index /data/wow/pvp-tier/index red Not Started
PvP Tier /data/wow/pvp-tier/{pvpTierId} red Not Started
Quests Index /data/wow/quest/index red Not Started
Quest /data/wow/quest/{questId} red Not Started
Quest Categories Index /data/wow/quest/category/index red Not Started
Quest Category /data/wow/quest/category/{questCategoryId} red Not Started
Quest Areas Index /data/wow/quest/area/index red Not Started
Quest Area /data/wow/quest/area/{questAreaId} red Not Started
Quest Types Index /data/wow/quest/type/index red Not Started
Quest Type /data/wow/quest/type/{questTypeId} red Not Started
Realms Index /data/wow/realm/index red Not Started
Realm /data/wow/realm/{realmSlug} red Not Started
Regions Index /data/wow/region/index red Not Started
Region /data/wow/region/{regionId} red Not Started
Reputation Factions Index /data/wow/reputation-faction/index red Not Started
Reputation Faction /data/wow/reputation-faction/{reputationFactionId} red Not Started
Reputation Tiers Index /data/wow/reputation-tiers/index red Not Started
Reputation Tiers /data/wow/reputation-tiers/{reputationTiersId} red Not Started
Spell /data/wow/spell/{spellId} red Not Started
Spell Media /data/wow/media/spell/{spellId} red Not Started
Talents Index /data/wow/talent/index red Not Started
Talent /data/wow/talent/{talentId} red Not Started
PvP Talents Index /data/wow/pvp-talent/index red Not Started
PvP Talent /data/wow/pvp-talent/{pvpTalentId} red Not Started
Titles Index /data/wow/title/index red Not Started
Title /data/wow/title/{titleId} red Not Started
WoW Token Index /data/wow/token/index red Not Started

Profile APIs

Name Endpoint Status
Account Profile Summary /profile/user/wow green Completed
Protected Character Profile Summary /profile/user/wow/protected-character/{realmId}-{characterId} red Not Started
Account Collections Index /profile/user/wow/collections red Not Started
Account Mounts Collections Summary /profile/user/wow/collections/mounts red Not Started
Character Achievements Summary /profile/wow/character/{realmSlug}/{characterName}/achievements red Not Started
Character Achievement Statistics /profile/wow/character/{realmSlug}/{characterName}/achievements/statistics red Not Started
Character Appearance Summary /profile/wow/character/{realmSlug}/{characterName}/appearance red Not Started
Character Collections Index /profile/wow/character/{realmSlug}/{characterName}/collections red Not Started
Character Mounts Collection Summary /profile/wow/character/{realmSlug}/{characterName}/collections/mounts red Not Started
Character Pets Collection Summary /profile/wow/character/{realmSlug}/{characterName}/collections/pets red Not Started
Character Equipment Summary /profile/wow/character/{realmSlug}/{characterName}/equipment green Completed
Character Hunter Pets Summary /profile/wow/character/{realmSlug}/{characterName}/hunter-pets red Not Started
Character Media Summary /profile/wow/character/{realmSlug}/{characterName}/character-media green Completed
Character Mythic Keystone Profile Index /profile/wow/character/{realmSlug}/{characterName}/mythic-keystone-profile red Not Started
Character Mythic Keystone Season Details /profile/wow/character/{realmSlug}/{characterName}/mythic-keystone-profile/season/{seasonId} red Not Started
Character Profile Summary /profile/wow/character/{realmSlug}/{characterName} green Completed
Character Profile Status /profile/wow/character/{realmSlug}/{characterName}/status red Not Started
Character PvP Bracket Statistics /profile/wow/character/{realmSlug}/{characterName}/pvp-bracket/{pvpBracket} red Not Started
Character PvP Summary /profile/wow/character/{realmSlug}/{characterName}/pvp-summary red Not Started
Character Quests /profile/wow/character/{realmSlug}/{characterName}/quests red Not Started
Character Completed Quests /profile/wow/character/{realmSlug}/{characterName}/quests/completed red Not Started
Character Reputations Summary /profile/wow/character/{realmSlug}/{characterName}/reputations green Completed
Character Specializations Summary /profile/wow/character/{realmSlug}/{characterName}/specializations red Not Started
Character Statistics Summary /profile/wow/character/{realmSlug}/{characterName}/statistics red Not Started
Character Titles Summary /profile/wow/character/{realmSlug}/{characterName}/titles red Not Started
Guild /data/wow/guild/{realmSlug}/{nameSlug} red Not Started
Guild Activity /data/wow/guild/{realmSlug}/{nameSlug}/activity red Not Started
Guild Achievements /data/wow/guild/{realmSlug}/{nameSlug}/achievements red Not Started
Guild Roster /data/wow/guild/{realmSlug}/{nameSlug}/roster red Not Started