Vagrantfile syntax and objects full reference?

Where does one find documentation on the syntax of the Vagrantfile? While I can create a vagrantfile and do quite a bit by copy/pasting and experimentation, I haven’t grasped where the parts of the file get their functions and properties and requirements.

For example I’m trying to add disks to ubuntu/focal64, and increase the size of the given primary disk.
Using Vagrant Disk Usage | Vagrant by HashiCorp as a guide,
I’d expect to be able to add the following line and have the VM be created with a 100GB disk, instead of the default 40GB. But this does not work.
config.vm.disk :disk, size: “100GB”, primary: true
Trying to learn more, I saw “config.vm.define” and wanted to know what ‘define’ was. Searching vagrant documentation returns no hits. It got me thinking,
Where is the reference for the ‘config’ object that has a ‘vm’ property?
Where is the reference for the ‘vm’ object that as a ‘define’ property?
Is my basic understanding out of whack?
Further down the page, they did
(0..3).each do |i|
which it states is using Ruby. Do I need to learn Ruby to understand the Vagrantfile, the objects presented, their properties and potential values for properties, especially when they’re enum?
I don’t see anyone else asking this question so expect I’m just not finding some very obvious documentation.

Vagrantfile | Vagrant by HashiCorp (