Refactor APIs, everything is mostly stubbed out

This is a cleanup of the messy integration I did and also includes some API changes to have things make more sense long term.

I have to run and don't have time to annotate this like I would like, but ping me if you want to talk about it more.

Basically I added the final API layer, as well as the validator layer (stubbed out) that will take care of user auth as well as permissions for keys. They may need a bit of refactor, but I thought it was good for now!

All the test pass and the API works pretty well atm!