api overhaul. DO NOT MERGE

Major restructuring of how the API works internally.

Do not merge yet. I've left a lot of the methods blank. For now, let me know what you think of the new way of specifying API endpoints.
Should add `is_index=True` here if we keep that.