Recently, Thorsten Von Eicken, founder of RightScale and Adrian Cole, founder of jclouds, both offered interesting insights regarding cloud APIs -- in effect, defining some of the "dos and don'ts" of API design. Since we (at Eucalyptus) struggle with the implementation of different APIs somewhat regularly, I felt like I could shed some light on the perspective with which we work during these struggles.
From our perspective, understanding the distinction and separation between the design of the API from the abstractions to which it is an interface is important. That is, when we look at API we see two aspects of it:
-- the operations on abstractions referred to by the API calls
-- the syntax and operational behaviors of the API calls themselves