MyClassesController is doing too much work here. You should create a couple of additional classes: a model, and a proxy. TextBookModel, which inherits from MyMergedModel, will call out to TextBookProxy, which does the actual connection to bkstr.com.

Also, I think there should be a separate controller for books, eg TextBookController, which maps to the /api/my/books_detail route. 

For the simplest example pattern, see FinancialsController, MyFinancials (the model), and FinancialsProxy (the proxy) to see how they work together in layers. 

You definitely want caching at the proxy layer and at the model layer too. Inheriting from MyMergedModel and using the get_feed_internal pattern will give you model-level caching for free. See FinancialsProxy for how to get proxy-level caching working.