Forums / Support / Halo API Support

Missing commendation levels?

OP fr33h33l

Endpoint:

Halo 5 - Commendations

Issue:

Some requiredLevel elements seem to be referencing level element( id)s that do not exist.

Assumptions:

The id field of the requiredLevel elements inside the returned commendation elements reference level elements.

These referenced level elements should all be found inside the returned commendations.

Reproduction:

# Extract all level ids
curl -s -H 'Ocp-Apim-Subscription-Key: KEY_REMOVED' https://www.haloapi.com/metadata/h5/metadata/commendations | jq '.[].levels[].id' | uniq | sort > levelIds.txt

# Number of level ids
cat levelIds.txt | wc -l
513

# Extract all level ids referenced by requiredLevel elements
curl -s -H 'Ocp-Apim-Subscription-Key: KEY_REMOVED' https://www.haloapi.com/metadata/h5/metadata/commendations | jq '.[].requiredLevels[].id' | uniq | sort > requiredLevels_levelIds.txt

# Number of referenced level ids
cat requiredLevels_levelIds.txt | wc -l
87

join levelIds.txt requiredLevels_levelIds.txt | wc -l
79

Question:

So, there are 8 level ids referenced that do not exist (in the data returned from the Halo 5 - Commendations endpoint).

Does this mean that the corresponding required levels are no longer used and should be removed or can these level elements be fetched from somewhere else (e.g. through the Halo 5 - Company Commendations endpoint)?
Hi there!

This is a great catch. Unfortunately, this isn't something that we'll likely get around to fixing in the API. But I can at least give you some additional data so you know what's missing... I know it's not ideal but I hope it's better than nothing.

It looks like these missing levels come from "Meta Commendations". Remember that Halo 5 has two types of commendations: "Progressive" and "Meta" Commendations.

Progressive Commendations count the number of times you've achieved a certain goal (like get X kills with Y weapon). They have one or more "levels" for you to achieve (these are reported in the API as "Levels"). Each level has a threshold you must reach in order to reach the level. Unlocking a level will give you a reward.

Meta Commendations are different from Progressive Commendations. Instead of counting the number of times you've achieved a goal, they look at the levels in other Progressive or Meta Commendations (these are reported in the API as "Required Levels"). Once you have earned all of the "Required Levels", you have completed the Meta Commendation. This will earn you a single Level so that Meta Commendations can be triggered by completing Progressive or Meta Commendations.

While it looks like the Metadata API reports the earned levels from Progressive Commendations, it does not appear to report the earned levels from Meta Commendations.

The missing 8 Commendation Levels in your original post are all mentioned by two Meta Commendations that each point to 4 Levels earned by other Meta Commendations. But as I said, it looks like all Meta Commendations aren't reporting their Levels - it's just harder to find these because they aren't referenced elsewhere in the response payload.

The missing Commendation Levels from your post are as follows:
{Commendation ID => Level ID}
78105ee9fcf84f6d805f8d7c54867721 => a9683704ee244466bf371588040acd66
30ab9cbc212d4e7fbe36efae95c57ab8 => 67eb8683e1f148748a0d3daf5025e954
e25157f6585d4d2ebe87ace211522aa0 => e848fbbdf6124c9f859cde8581faa2a1
3d95bd5e25d94859b2e5fd60c16a9796 => e2c5d2c9a73c417bbb342d461fbe4a2f
7230f929d45840e988660f21549568e9 => 8918f4ee262744c795b291739fa8d86b
78e5064b3b554bfda8a66dbc0bc0cfdd => b1143374c61c443ba943de982a3701b0
9345c43f2c9544f199f7e239f21b792e => dacca4a6527f4e04a55966b0fb3b4056
bf3187e47dd94f2183179aa567f89333 => d1e7fc1d16d742f2b391f0b201f50113

The other missing Commendation Levels are as follows:
13f8bfb65f7c45379bba4a43e9ec1483 => db83f92db37b45f79219899a3b8faaca
1ea707eb1b1346fb9c8424cadbdd6d6e => bee3c5973da5482f95b64ff4c4c94c89
fbba4bb357474d6ebf4976e130da819d => 11e1eeea4a114b7ebf45f563a7ab8b3f
369efe7fc0b4486d8ce06fd6383983f8 => 4facec13281c4a2d8840aa39c1652431
4e6ead54c247433ca3ef86e731586c43 => 75999ba6065e411a973b028ce8637d64
ab10aca75a4347adb77fa928ea1a8ff1 => 7949f197276c45a094fd658df00ef1e3
0c506f2e8f3f454f9469b5f337297a35 => bd2603fab6a34cff815f1094f9d63fcc
909f51acc43542b6949149595eb6db49 => e188881eef7a4318b47bfd9c2a67d725

I know this isn't an ideal solution, but if you add these missing levels to the response you get from the API, you should have a complete collection of all of the Commendations with all of their Levels.

Thanks again for the report - this went unnoticed for a long time.
Thanks for your extensive reply!

I haven't been working on this for a while and thus haven't checked the forums either.

I will look at your suggestions and try to use them in my solution.

Also, I fully understand that you cannot devote resources to fix this at this point in the product life cycle.

Here's to hoping that I can use what I have done so far for Halo Infinite without too much changes. :)