I’ve designed literally dozens of component APIs over the years, including for clients like Apple, and I’ve learned quite a bit about the process.
As with any piece of software designed for use by humans, we have to think about the use cases. We have to make the most commonly-needed stuff easy, without undue configuration. Default behaviours should be useful as-is, and should be sensibly chosen. The software should be discoverable, and should allow the user to generalise from known paradigms. It’s all exactly the same set of principles as when we’re creating UIs.
Świetny artykuł na temat projektowania API.