user api + tests