I have been using the API for several days and I have compiled a few suggestions from the comments I have been reading on here as well as some personal nagging issues. Overall I think this API is a great beta product. Not many API’s I have worked with are as robust out-of-the-gate, so kudos. As for the suggestions:
- There should be a global stats section. I have been playing with the API and it seems that, for obvious reasons, the stats are specific to the game type in which they are played. It would be nice, however, if within the main sections (campaign, arena, warzone, custom) there was a global stats object that merged all of the stats from within that game type. I am having to loop through each type to generate these myself, but it would be much more efficient for devs if this was done on the API side. - Profile section only serves images. While I think this is probably just because it is in beta and you guys already know this, I will restate it for posterity. The profile section should probably contain more than just the emblem and spartan image. It would be nice if the character’s name, rank and other global information was here as well. There are some obvious redundancies by doing it this way, but logically it seems like that info should be in that place. Also, I may just be missing something, but I have been unable to find the service tag, or any colors associated to the gamertag as well despite the meta section containing colors. Again, might just be missing something. - It would be nice to get stats over time periods. Right now, from what I can tell, you can only get stats on a user from the current point in time. The best way I have found to get stats over time is to parse out the recently played games and figure them out on your own, but it would be nice to request stats from a specific date and have the API generate the same response but specific to the time period requested. This would allow developers the ability to view snapshots of a player from a specific date. - Realtime. I know, I know, this is a big request. Realtime is a hard thing and it’s probably a little early to be talking about it, but it would be nice to be able to pull real time data. or near realtime data into the API. No point’s lost on this one, though – I have only used one other API with real time data. - Maps and player location. This is something that I have used in previous halo API implementations, but the ability to see a generated top-down map of a level within the map metadata would be awesome. To add to this, having the X and Y location of the player during kills and deaths would be nice as well. It would allow developers to create heat maps as well as giving them some insight into the users play style other than weapons/stats. - Detailed armor and commendation statistics. I know you guys put a lot of work into the armor and weapon skins. I know because I put a lot of time into collecting them. It would be awesome if these things were able to be retrieved using the API. I know I want everyone to see my sweet weapon skin on my profile along with the fact that I am wearing all Legendaries and whatnot. - Popularity modifier. Okay, so this is one that I have been doing for a while on my own API sites, but it might be a cool thing to add on your side as well. What I have done in the past is anytime a player profile is viewed I will increment a counter on the player object. This number will act as a popularity counter. The more someone is viewed, the higher this number. I can then use that number to sort out my most viewed (popular) players. There are obviously some attribution issues, but if you limit count increments by unique gamertag views and/or time limit resets, I find that it is pretty accurate. You could probably link this to the waypoint site as well. - Email address player attribution. So the idea here would be to allow gamers to connect their stats profile back to a specific email address. This would allow developers to create verified accounts where the statistics are linked back to the same email address that is on the gamertag. There are some obvious security issues with offering email addresses within the API, but those can be resolved using a complex hashing process. On our side we can take the email supplied by our users (using the same hashing technique) and compare them to the hash on the API (basically the same way passwords are stored in databases). There are obviously other ways to do this, like OAuth, but I think for something as simple as this, it might be easier to implement this solution. - Last updated header. This may already be in place, but I couldn’t find any info regarding it. Adding the Last-Updated header to the API responses would allow us to serve locally cached versions of the data. It would be nice if we can request the Last-Updated time for an endpoint without incrementing our API rate limit number. Okay, that’s it for now. I hope this was somewhat helpful! Again, keep up the great work, folks!
