Our API modules depend on subclassing for common operations. This makes it hard to mix and match, and makes it virtually impossible to mock all services used by a given API module (see T57516).
To fix this, we should create helper classes for specific aspects of API operations (e.g. finding entities, saving entities, etc), and use them in the concrete modules via composition.