Ну во первых стоит отказаться от использования слова "api" в названии папок, файлов, классов, функций, etc.
Я подобную задачу решал приблизительно так:
..shop
....users.js
....books.js
..buyer
....users.js
....books.js
..users.js
..books.js
При этом users.js и books.js, лежащие в папках shop и buyer, наследовались от users.js и books.js, лежавшие в корневой папке.