Можно рассмотреть схему, при которой модуль сам предоставляет другим возможность использовать свои данные. В данном случае - внешний интерфейс с методом, достраивающим внешний запрос в соответствии с теми фильтрами, которые переданы в функцию. А также методом, возвращающим описание возможных фильтров - так, чтобы вопрос, что вообще можно запросить у модуля, решался не вне его, а в нем же самом. Так внешний модуль ничего не будет знать об используемом, но при этом сможет использовать его данные.