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.
Thanks

Vagrantfile | Vagrant by HashiCorp (vagrantup.com)

It would be nice to have a syntax reference or at least a hint as to why the error occurs. It sucks you need to know ruby to know why this happens. I already know enough languages. It would have been better if Vagrant had it’s own DSL with docs so people didn’t need to know ruby.