Matthew Lindfield Seager

Matthew Lindfield Seager

Campaign Monitor API

I was working with the Campaign Monitor API (https://www.campaignmonitor.com/api/) today.

It works but I don’t love that their gem (http://campaignmonitor.github.io/createsend-ruby/) keeps returning Hashie Mashes instead of “real” Ruby objects. I might be missing something but I kept having to use parts of the Mash to fetch additional Mashes which then contained the data I was after. It would be nice if I could retrieve the “parent” object and then lazily load child objects as I access them.

On that note, the property names were quite inconsistent. Sometimes they would be ruby-like but then other times I’d have to write things like lists.map(&:Name) or client_ref.ClientID.

Lastly, I didn’t like that the API offers almost nothing in the way of filtering or searching when retrieving results. It felt like every time I wanted to do anything I had to iterate through a whole list (possibly across multiple pages) until I found the result I was after.

Maybe I’m spoiled by how developer friendly most Ruby code is but it felt a little like this API and the gem were just slapped together so they could tick off “RESTful API” and “Ruby wrapper” on their feature list checkboxes but without really thinking about the end user of the software.