Design an interface other teams will build on, well enough to say what each choice commits you to, to change it later without breaking anybody, and to make its failures something a caller can actually handle
Designing an Interface to Call

An interface is a promise that is expensive to withdraw. This course covers naming the things, choosing the operations, saying what went wrong, handling repeats, paging, and changing it after people depend on it.
8 lessons, written and corrected before you arrived. Reading them here needs no account. The first reads the whole way through; the others open and then stop, because a page nobody owns cannot tell who is reading it. Starting the course gives you your own copy, where every idea has problems standing under it and you can ask about any sentence.