chore(api): break out AppAPI into its own module