Ну я вроде и рассказал, что это противоречит тому же SOLID
Проектировать API надо по требованиям предметной области.
SOLID, REST и т.д. - это конечно же хорошо, но когда из-за них архитектура становится трудной к пониманию - тупое следование им только усугубит ситуацию.
а почему я не могу в API сделать метод DELETE и в него передавать и тип объекта, и его id
Почему нет? Если объекты создаются динамически, а не предопределены, то передавать их тип - хорошая идея.
Все зависит от проблемы.
Есть где кратко изложенная теория по этому поводу?
Вряд-ли. Все зависит от проблемы/предметной области.
Могу посоветовать алгоритм:
1. Выявить функциональные требования к системе
2. Представить их в виде условных функций
3. Переписать их в виде вызовов API (за основу можно взять готовые паттерны проектирования: REST, SOAP и т.д.)
Посмотрите на API VK или Telegram. Это не REST, но тоже удобно