Basic CRUD semi-REST API