@lefnire => Initial API support including specs

Don't merge yet. Going to clean up this PR first. I'll notify you when it's ready.