An API should state what it will do and do what it has said.
You should not have to read the code behind the API to call it. There should not be a “tribal knowledge” on the behavior of the API.
It should not have unintended consequences not described in the API.
One litmus test to do is to ask if none of the engineers are in the team anymore whether they would be any context lost not conveyed by the API.
Software Engineering from the Frontlines Course on Maven
If you liked this article, I will be teaching a “Software Engineering from the Frontlines” course on Maven where I will teach hard-learned lessons I acquired developing large-scale products at companies such as Uber, Airbnb, and Microsoft.
I've fallen in love with FastAPI recently, and one of the reasons I enjoy using it is because it automatically generates Swagger documentation from the function declarations. There's no need to mess with additional configuration or documentation--the functions themselves are the source of truth.