web api interface complete with tests