Terraform Specifications

Specifications by Category and Module Classification

CategoryResourcePatternUtility
Contribution/Support988
Telemetry222
Naming/Composition20149
CodeStyle313131
Inputs/Outputs141110
Testing10109
Documentation444
Release/Publishing444
Summary948477

How to propose changes to the specifications?

Important

Any updates to existing or new specifications for Terraform must be submitted as a draft for review by Azure Terraform PG/Engineering(@Azure/terraform-avm) and AVM core team(@Azure/avm-core-team).

AzAPI is mandatory for AVM Terraform modules

Every new AVM Terraform module — resource, pattern, or utility — MUST use the AzAPI provider for every control-plane resource and supported data-plane operation. This applies throughout the module repository, including submodules, examples, end-to-end tests, Terraform tests, fixtures, and documentation snippets.

AzureRM is permitted only for a specific data-plane/non-ARM API operation that AzAPI cannot implement, under the narrow exception in TFFR3. It is never permitted for an ARM control-plane resource or as a convenience alternative to AzAPI.

This requirement is intentional and is driven by the following factors:

  • Built-in retries and error handling. AzAPI exposes first-class retry and timeouts blocks, including regex-based error matching, which lets modules handle transient failures (for example, scope locks being removed or eventual-consistency errors) deterministically and without external workarounds.
  • Pre-flight validation. AzAPI performs ARM API pre-flight checks at plan time, surfacing many configuration errors before an apply is attempted. This produces faster feedback loops and fewer partially-deployed resources.
  • Day-zero access to the latest Azure features. Because AzAPI talks directly to the Azure Resource Manager REST API, modules can adopt new resource types, properties and API versions as soon as they ship in Azure — without waiting for an AzureRM provider release.
  • Alignment with Bicep and ARM. AzAPI uses the same resource type identifiers (e.g. Microsoft.KeyVault/vaults@2023-07-01) and the same property shape as Bicep and ARM templates. This makes it dramatically easier to translate documentation, samples and Bicep modules into Terraform, and keeps Bicep and Terraform AVM modules conceptually aligned.
  • Close partnership with the Azure engineering teams. AzAPI is built and maintained in close collaboration with the Azure Resource Provider engineering teams. Issues in AzAPI can be triaged directly against the underlying ARM behavior, and the AVM team works directly with the AzAPI engineering team on roadmap and breaking changes.
  • Consistency across the AVM ecosystem. Standardizing on AzAPI means every AVM Terraform module uses the same patterns for identity, diagnostic settings, role assignments, locks and private endpoints — primarily through the Azure/avm-utl-interfaces/azure utility module — which simplifies authoring, review and consumer experience.

What changed recently?

See what specifications changed in the last 12 months...

#IDLast Modified (UTC)Git HistoryLast Commit
1TFFR82026-10-30 11:51:27All Commits8224eb1
2TFNFR252026-10-30 11:51:27All Commits8224eb1
3SFR32026-10-29 15:42:05All Commitsf76baaa
4SFR42026-10-29 15:42:05All Commitsf76baaa
5SNFR232026-09-30 20:15:32All Commits2bbadf2
6RMNFR12026-09-24 12:11:47All Commits3d5ead4
7SNFR202026-09-23 14:49:31All Commitsed4a240
8PMNFR12026-09-22 00:30:23All Commitse8d8c4d
9SNFR82026-09-22 00:30:23All Commitse8d8c4d
10UMNFR12026-09-22 00:30:23All Commitse8d8c4d
11TFFR92026-09-04 07:52:46All Commits911dd77
12RMFR72026-09-01 19:58:44All Commits917cf78
13TFFR12026-09-01 19:58:44All Commits917cf78
14TFFR22026-09-01 19:58:44All Commits917cf78
15TFFR32026-09-01 19:58:44All Commits917cf78
16TFFR42026-09-01 19:58:44All Commits917cf78
17TFFR52026-09-01 19:58:44All Commits917cf78
18TFFR62026-09-01 19:58:44All Commits917cf78
19TFFR72026-09-01 19:58:44All Commits917cf78
20TFNFR102026-09-01 19:58:44All Commits917cf78
21TFNFR232026-09-01 19:58:44All Commits917cf78
22TFNFR272026-09-01 19:58:44All Commits917cf78
23TFNFR392026-09-01 19:58:44All Commits917cf78
24TFNFR402026-09-01 19:58:44All Commits917cf78
25SNFR32026-09-01 19:06:42All Commits20d0864
26SNFR92026-09-01 19:06:42All Commits20d0864
27TFRMNFR12026-08-20 20:03:16All Commitsbd641f6
28TFNFR152026-08-20 20:03:16All Commitsbd641f6
29TFNFR202026-08-20 20:03:16All Commitsbd641f6
30TFNFR212026-08-20 20:03:16All Commitsbd641f6
31TFNFR262026-08-20 20:03:16All Commitsbd641f6
32TFNFR412026-08-20 20:03:16All Commitsbd641f6
33TFNFR82026-08-20 20:03:16All Commitsbd641f6
34TFNFR362026-08-20 19:45:20All Commits6f87e8e
35TFNFR72026-08-19 12:02:54All Commits5bd25d8
36TFNFR52026-08-10 16:48:22All Commits43fb148
37TFRMFR12026-06-01 20:01:29All Commits448be6e
38TFRMNFR22026-06-01 20:01:29All Commits448be6e
39SNFR122026-05-26 15:12:56All Commitsb7412ee
40SNFR22026-05-26 15:12:56All Commitsb7412ee
41SNFR262026-05-26 15:12:56All Commitsb7412ee
42TFNFR112026-05-26 15:12:56All Commitsb7412ee
43TFNFR122026-05-26 15:12:56All Commitsb7412ee
44TFNFR172026-05-26 15:12:56All Commitsb7412ee
45TFNFR182026-05-26 15:12:56All Commitsb7412ee
46TFNFR292026-05-26 15:12:56All Commitsb7412ee
47TFNFR342026-05-26 15:12:56All Commitsb7412ee
48TFNFR382026-05-26 15:12:56All Commitsb7412ee
49SNFR222026-03-03 17:52:56All Commitsbfd2e82
50SFR12025-11-20 03:40:40All Commits631e4ef
51SFR22025-11-20 03:40:40All Commits631e4ef
52SNFR12025-11-20 03:40:40All Commits631e4ef
53SNFR102025-11-20 03:40:40All Commits631e4ef
54SNFR112025-11-20 03:40:40All Commits631e4ef
55SNFR142025-11-20 03:40:40All Commits631e4ef
56SNFR152025-11-20 03:40:40All Commits631e4ef
57SNFR162025-11-20 03:40:40All Commits631e4ef
58SNFR182025-11-20 03:40:40All Commits631e4ef
59SNFR192025-11-20 03:40:40All Commits631e4ef
60SNFR212025-11-20 03:40:40All Commits631e4ef
61SNFR252025-11-20 03:40:40All Commits631e4ef
62SNFR42025-11-20 03:40:40All Commits631e4ef
63SNFR52025-11-20 03:40:40All Commits631e4ef
64SNFR62025-11-20 03:40:40All Commits631e4ef
65SNFR72025-11-20 03:40:40All Commits631e4ef
66TFNFR12025-11-20 03:40:40All Commits631e4ef
67TFNFR132025-11-20 03:40:40All Commits631e4ef
68TFNFR142025-11-20 03:40:40All Commits631e4ef
69TFNFR162025-11-20 03:40:40All Commits631e4ef
70TFNFR192025-11-20 03:40:40All Commits631e4ef
71TFNFR22025-11-20 03:40:40All Commits631e4ef
72TFNFR222025-11-20 03:40:40All Commits631e4ef
73TFNFR242025-11-20 03:40:40All Commits631e4ef
74TFNFR32025-11-20 03:40:40All Commits631e4ef
75TFNFR302025-11-20 03:40:40All Commits631e4ef
76TFNFR312025-11-20 03:40:40All Commits631e4ef
77TFNFR332025-11-20 03:40:40All Commits631e4ef
78TFNFR352025-11-20 03:40:40All Commits631e4ef
79TFNFR372025-11-20 03:40:40All Commits631e4ef
80TFNFR42025-11-20 03:40:40All Commits631e4ef
81TFNFR62025-11-20 03:40:40All Commits631e4ef
82TFNFR92025-11-20 03:40:40All Commits631e4ef