It is inevitable that at some point while creating a plugin, you’ll have to interact with the internal Vagrant objects. The best documentation for these objects will be from the automatically generated docs based on the code. This page simply lists the classes which are the most important to view:
Vagrant::Environment
Vagrant::VM