What is API Design? Principles & Best Practices