Designs an API with explicit decisions on contracts, versioning, errors, and the mistakes that are hard to undo.