API 2 initial rewrite with all working methods

cc @ericalthatcher