I'm trying to design a reporting API for our company (we do real time bidding on advertising). I'm not sure how to structure it and what conventions to use. (for example, there's really nothing to "set" in terms of reporting).<p>How would you design this API? Are there any good books or resources covering this?
Good APIs are like good code. You don't want to get creative. Instead, you want the API to be usable by being immediately familiar. Follow the lead of popular, well-designed APIs (Parse and Twilio come to mind). You should follow a predictable pattern, which minimizes the amount of time required to learn your API. For example, if your endpoints are in the "/[noun]/[verb].json" scheme, then you should stick to that all the way through.<p>I suggest starting out by strictly adhering to REST standards, and then choose areas where you want to be flexible to increase usability (allowing POST calls to be overridden and interpreted as PUT calls, for example).<p>Check out this checklist: <a href="https://mathieu.fenniak.net/the-api-checklist/" rel="nofollow">https://mathieu.fenniak.net/the-api-checklist/</a><p>I can also enthusiastically recommend Apiary (<a href="https://apiary.io" rel="nofollow">https://apiary.io</a>) for designing and mocking up your API. It's absolutely fantastic.
Could you elaborate a bit more?<p>By reporting API, do you mean a structured way for some users/clients to extract operational data about their activity with your product, in order to let them play with it and do their own reporting on top of it?
Or do you mean a layer in your software presenting aggregated data in form or reports?
To design an API, there are a few good ebooks, well worth the price:
<a href="https://leanpub.com/build-apis-you-wont-hate" rel="nofollow">https://leanpub.com/build-apis-you-wont-hate</a><p>Not sure what you mean by a "reporting" API?
Also worth investigating is <a href="http://apis.io/" rel="nofollow">http://apis.io/</a> , a growing repository for API interface design patterns.