The Riot Games API: Transforms
Hello all, Leigh Estes, aka RiotSchmick, here. I’m a software engineer at Riot Games working on the Riot Developer Experience team. Our responsibilities include providing the edge infrastructure that supports both internal and external developers.
I previously wrote a series on the infrastructure that supports our public API product. I’m excited to revisit this series to tell you more about a new part of our infrastructure – the feature we call transforms. I’ll outline the reasons that we felt transforms were a valuable feature to invest in and how we implemented them.
I’ll also dive into specific use cases for transforms that have added significant value. As mentioned in our previous articles, one of the original reasons we decided to build a public API was to prevent scraping of platform services. We needed to get it up and running as quickly as possible, because the scraping of the platform was putting a heavy load on the platform servers.
That additional load was affecting players’ ability to play games in certain regions. To build a public API product that external parties would use in lieu of scraping, we had to pull data from various unrelated services in order to provide the same data that players could scrape themselves. We found that all of these unrelated services used different conventions for request parameters, response data, paths, etc.
For example, across these services, we found the same concept referred to variably as “platform,” “shard,” “platformId,” “location,” and “region.” In addition, some services used REST conventions, some used RPC conventions, and some used a blend of the two.