API Changes - WoW Shadowlands Pre-Patch

Greeting adventurers,

As we approach the release of World of Warcraft Shadowlands, we want to get ahead of and surface some planned API changes that will impact the WoW Game Data and Profile APIs. Presently, these specific changes are being targeted for Shadowlands pre-patch.

The below list of changes is not conclusive to all of the changes being made with WoW Shadowlands, however, it does cover the list of changes considered to be “breaking”, as we currently know them today.

Level Cap / Squish

At pre-patch, all active characters in the API should have their character level squished from a max of 120 to a max of 50. This should be reflected in the following locations:

  • Character API
  • Account API
  • Guild Roster API

Other character details such as Item Levels, Character Stats, and Item Tooltip Stats will not be altered until after a character has logged in and out of the WoW Game Client. Any historic references to character level will not be affected, so pre-squish levels will still be seen in old leaderboard APIs and any other historic data.

Impact to Low-Level Characters

In addition, characters typically are not available to the Character API (or on the WoW Community Website) until they reach level 10. When the level cap adjustment takes place, this will cause characters previously level 10-20 to be adjusted to 5-10. In these situations, the character data will still be available in the API so as not to break existing functionality, but those characters will no longer be updated until they again reach level 10. If you hear or notice complaints about character data not updating, we suggest first checking whether the character has leveled to at least 10 in Shadowlands.

Character Appearance API

The Character Appearance API will be undergoing some changes to support the new character customizations featured in Shadowlands, With newly updated profiles, the legacy “appearance” section will be deprecated in favor of a new “customization” section detailing a character’s set of customization options and choices.

Old

{
  ...
  "appearance": {
    "face_variation": 0,
    "skin_color": 22,
    "hair_variation": 1,
    "hair_color": 6,
    "feature_variation": 7,
    "custom_display_options": [
      0,
      0,
      0
    ]
  }
}

New

{
  ...
  "customizations": [
    {
      "option": {
        "name": {
          "en_US": "Skin Color",
          "es_MX": "Color de piel",
          "pt_BR": "Cor da Pele",
          "de_DE": "Hautfarbe",
          "en_GB": "Skin Color",
          "es_ES": "Color de piel",
          "fr_FR": "Peau",
          "it_IT": "Pelle",
          "ru_RU": "Цвет кожи",
          "ko_KR": "피부색",
          "zh_TW": "膚色",
          "zh_CN": "肤色"
        },
        "id": 49
      },
      "choice": {
        "id": 823,
        "display_order": 22
      }
    },
    {
      "option": {
        "name": {
          "en_US": "Face",
          "es_MX": "Rostro",
          "pt_BR": "Rosto",
          "de_DE": "Gesicht",
          "en_GB": "Face",
          "es_ES": "Cara",
          "fr_FR": "Visage",
          "it_IT": "Viso",
          "ru_RU": "Лицо",
          "ko_KR": "얼굴",
          "zh_TW": "臉型",
          "zh_CN": "面部"
        },
        "id": 50
      },
      "choice": {
        "id": 825,
        "display_order": 0
      }
    },
    {
      "option": {
        "name": {
          "en_US": "Hair Style",
          "es_MX": "Peinado",
          "pt_BR": "Estilo do Cabelo",
          "de_DE": "Frisur",
          "en_GB": "Hair Style",
          "es_ES": "Peinado",
          "fr_FR": "Coiffure",
          "it_IT": "Capelli",
          "ru_RU": "Прическа",
          "ko_KR": "머리 모양",
          "zh_TW": "髮型",
          "zh_CN": "发型"
        },
        "id": 51
      },
      "choice": {
        "name": {
          "en_US": "Loose Tail",
          "es_MX": "Coleta aflojada",
          "pt_BR": "Rabo Solto",
          "de_DE": "Loser Zopf",
          "en_GB": "Loose Tail",
          "es_ES": "Coleta aflojada",
          "fr_FR": "Queue-de-cheval",
          "it_IT": "Coda sciolta",
          "ru_RU": "Свободный хвост",
          "ko_KR": "하나로 올려 묶은 긴 머리",
          "zh_TW": "蓬鬆馬尾",
          "zh_CN": "松马尾"
        },
        "id": 844,
        "display_order": 1
      }
    },
    {
      "option": {
        "name": {
          "en_US": "Hair Color",
          "es_MX": "Color de pelo",
          "pt_BR": "Cor do Cabelo",
          "de_DE": "Haarfarbe",
          "en_GB": "Hair Color",
          "es_ES": "Color de pelo",
          "fr_FR": "Couleur des cheveux",
          "it_IT": "Tinta",
          "ru_RU": "Цвет волос",
          "ko_KR": "머리색",
          "zh_TW": "髮色",
          "zh_CN": "发色"
        },
        "id": 52
      },
      "choice": {
        "id": 864,
        "display_order": 6
      }
    },
    {
      "option": {
        "name": {
          "en_US": "Markings",
          "es_MX": "Marcas",
          "pt_BR": "Marcas",
          "de_DE": "Tätowierungen",
          "en_GB": "Markings",
          "es_ES": "Marcas",
          "fr_FR": "Marques",
          "it_IT": "Marchi",
          "ru_RU": "Раскраска",
          "ko_KR": "특징",
          "zh_TW": "面紋",
          "zh_CN": "面纹"
        },
        "id": 53
      },
      "choice": {
        "name": {
          "en_US": "Serpent",
          "es_MX": "Serpiente",
          "pt_BR": "Serpente",
          "de_DE": "Schlange",
          "en_GB": "Serpent",
          "es_ES": "Serpiente",
          "fr_FR": "Serpent",
          "it_IT": "Serpente",
          "ru_RU": "Змей",
          "ko_KR": "독사",
          "zh_TW": "蛇形",
          "zh_CN": "蛇纹"
        },
        "id": 877,
        "display_order": 7
      }
    }
  ]
}

New customization “choices” may or may not have an accompanying localization name, depending on the option. Where possible, the “display_order” will be included for handling backwards compatibility with the old structure. Along with migrated character customizations, there will be many new options such as:

  • Eyebrows
  • Ears
  • Necklace
  • Earrings
  • Scars
  • Vines
  • Vine Color
  • Headdress
  • Nose Ring
  • Markings Color

Character Media API

The Character Media API will be updated for consistency with the standard media documents available in the Media API. Character Media responses will now include a more flexible generic list of asset entries by type, rather than explicit property names for each rendered scene.

Old

{
  ...
  "avatar_url": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-avatar.jpg",
  "bust_url": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-inset.jpg",
  "render_url": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-main.jpg"
}

New

{
  ...
  "assets": [
    {
      "key": "avatar",
      "value": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-avatar.jpg"
    },
    {
      "key": "inset",
      "value": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-inset.jpg"
    },
    {
      "key": "main",
      "value": "https://render-us.worldofwarcraft.com/character/{realm-slug}/{mod-value}/{id}-main.jpg"
    }
  ]
}

Achievement API

To support feature updates to achievements, we are adding a new “requirements” section and deprecating the “faction” property. This matches the patterns used in many of our other APIs (such as Quests and Mounts). Any new achievement requirements moving forward will be added to this section.

Old

{
  ...
  "faction": {
    "type": "HORDE",
    "name": {
      "en_US": "Horde",
      "es_MX": "Horda",
      "pt_BR": "Horda",
      "de_DE": "Horde",
      "en_GB": "Horde",
      "es_ES": "Horda",
      "fr_FR": "Horde",
      "it_IT": "Orda",
      "ru_RU": "Орда",
      "ko_KR": "호드",
      "zh_TW": "部落",
      "zh_CN": "部落"
    }
  }
}

New

{
  ...
  "requirements": {
    "faction": {
      "type": "HORDE",
      "name": {
        "en_US": "Horde",
        "es_MX": "Horda",
        "pt_BR": "Horda",
        "de_DE": "Horde",
        "en_GB": "Horde",
        "es_ES": "Horda",
        "fr_FR": "Horde",
        "it_IT": "Orda",
        "ru_RU": "Орда",
        "ko_KR": "호드",
        "zh_TW": "部落",
        "zh_CN": "部落"
      }
    }
  }
}

Quest API

After reviewing in-game functionality in regards to the Quest API, we have removed the following properties related to recommended character level:

{
  "recommended_level": 10,
  "recommended_minimum_level": 10,
  "recommended_maximum_level": 40,
}

Moving forward, quests generally scale according to player level, and as such, these properties are no longer relevant or accurate in representing level recommendations. The related properties in the “requirements” section will remain and should instead be used to determine the minimum and maximum levels in which a quest can be accepted.

Feedback

Feedback is welcomed.

While we understand it is not ideal when breaking changes are made, we wanted to get this information out to ensure that consumers have time to plan the necessary changes.

5 Likes

Thanks :slight_smile: The appearance changes cannot have been easy or simple!

I know this isn’t your team’s area of responsibility, but I was surprised to see that the en_GB l10n uses “Color” :stuck_out_tongue:

1 Like

Do you plan to fix missing quest info before Shadowlands?

I can’t wait to play pre-patch, this is awesome! I really appreciate all your hard work, especially now with the horrible pandemic we are living in, this is something may not realize but the undead pandemic it’s pretty much the same as the other one we are struggling so, in the end, it’s about timing, lol. :rofl: :+1:

Regarding the level squish - couldn’t it just be adjusted so that characters level 5 and up are exposed in the API? That would seem to be the most similar to “the way it is now”.

After having said that, it’s possible to get a character to level ten in a short evening session. If it’s as fast with the new system, then I wouldn’t be so worried about levels 5-9 missing from the API.

Just some thoughts. I’m OK either way, it’s good to know.

The appearance changes though … that’s going to be hard to test without access to a Beta API!

    == John ==

Oh - one other question, Shadowlands associated.

We get faction, gender, race, class, etc. right now.

Will we get Covenant?

Will there be Covenant related Game Data API’s? Or will we get at least a string, hopefully both localized as well as a slug?

If we just get ID’s, even if we get a localized string, we’ll need the Covenant game data API’s as well.

    == John ==