a complete RESTful api