Grunt 0.1.9 (Codename S) Is Available Now
The 0.1.9 release is an important one for several reasons, but mainly because it completes the journey on documenting the core Halo Infinite API. That’s right, you now have a fully-documented library that will continue evolving, but you no longer have to guess what data type is where.
This release includes the following changes:
- Complete API surface documentation. All of the calls and data models have proper XML comments associated with them (which means - documentation on
docs.gruntapi.com
as well). This also means that there are no longer compiler warnings (shall you venture down that path) when trying to build the library locally or on the GitHub Actions runner. - Duplicative files and data models are removed, making sure that the same data is not captured by two (or more) different classes. There is one for everything. That means that classes like
RankRecap
now refer to a sharedCsr
-bound property rather than its own thing with exactly the same data. This was a side-effect of how I was generating entities from all the JSON responses as I was exploring the API, and as it evolves, more cleanup will be done. - Speaking of which,
MatchCsr
is now justCsr
. Playlist
now properly inheritsAssetBase
and doesn’t re-implement the same set of properties again.PlaylistRotationEntry
also properly implementsAssetBase
now.AuthoringAssetVersion
now also implementsAssetBase
properly, without property repetition.AuthoringAssetRating
? Yea, also implementsAssetBase
properly.- Different
object
properties (that still require exploration as to what they are) are now mapped todynamic
entities. What this means is that at runtime you no longer need to convert the object to something more readable - you can just rely on a dynamically-inferred implementation that I hope at some point in the future to replace with an actual class (right now I just don’t know what those are). - More arrays got swapped for more LINQ-friendly
List<T>
properties. HaloInfinite343MicrosoftStoreTitle
is notMicrosoftStoreMapping
.- Most properties are now properly nullable, where applicable. That means they can be set to
null
. - You can now get the playlist configuration via
GameCmsGetMultiplayerPlaylistConfiguration
. With this function you can see what rules are applicable to different playlists, like the VM size, VM content configuration type, TrueMatch settings, and more. This function REST call is not referenced in the master settings endpoint but was used on the Halo Waypoint website. - You can also now get the emblem mapping (emblem to nameplate to color) via
GameCmsGetEmblemMapping
. - Did you ever wonder how to get matchmade medals? Well wonder no more, because you can get them via
StatsGetPlayerServiceRecord
(this will get the full service record for a player, medals included) andGameCmsGetMedalMetadata
to get the types of medals and their related metadata to map to. Fun fact - medals are just one giant sprite sheet. HaloInfinite343SteamStoreTitle
andHaloInfiniteSteamStoreTitle
are now bothSteamStoreMapping
.GameVariant
is no more.GenericAsset
is its successor.GrantedCurrency
is also no more. Instead, you haveCurrencyAmount
.- Different endpoint authentication methods are now properly represented in
AuthenticationMethod
so you don’t have to guess by their integer representation. - General stylistic code cleanup to make it more readable and consistent with StyleCop requirements.