Azure is built upon resource providers. An example of a resource provider is Microsoft.Compute which provides us with virtual machines in Azure. Azure Resource Manager (ARM) is the central hub for communicating with these providers. You can never communicate directly with a resource provider. Regardless if you use the web portal, the az client, or the Rest API, everything goes via Azure Resource Manager.
Azure Resource Manager provides a scalable way to create resources. Using JSON formatted templates we can create resources in a declarative way. These templates are called ARM templates. From the web console, you can click “Export Template” to get an ARM template for that specific resource. A more human-friendly format option is to use Bicep to declare Azure resources you want to have created.