in src/TemplateRefGenerator/Generators/MarkdownGenerator.cs [404:503]
private static string GetArmTemplateZone(ConfigLoader configLoader, ResourceMetadata resource, ImmutableArray<NamedType> namedTypes, RemarksFile remarks, int anchorIndex)
{
var sb = new StringBuilder();
sb.Append($"""
::: zone pivot="deployment-language-arm-template"
## ARM template resource definition
The {resource.UnqualifiedResourceType} resource type can be deployed with operations that target:
""");
if (resource.Type.ScopeType.HasFlag(ScopeType.Tenant))
{
sb.Append($"""
* **Tenant** - See [tenant deployment commands](/azure/azure-resource-manager/templates/deploy-to-tenant)
""");
}
if (resource.Type.ScopeType.HasFlag(ScopeType.ManagementGroup))
{
sb.Append($"""
* **Management groups** - See [management group deployment commands](/azure/azure-resource-manager/templates/deploy-to-management-group)
""");
}
if (resource.Type.ScopeType.HasFlag(ScopeType.Subscription))
{
sb.Append($"""
* **Subscription** - See [subscription deployment commands](/azure/azure-resource-manager/templates/deploy-to-subscription)
""");
}
if (resource.Type.ScopeType.HasFlag(ScopeType.ResourceGroup))
{
sb.Append($"""
* **Resource groups** - See [resource group deployment commands](/azure/azure-resource-manager/templates/deploy-to-resource-group)
""");
}
var samples = CodeSampleGenerator.GetExample(resource, namedTypes, CodeSampleGenerator.Flavor.Json);
sb.Append($"""
For a list of changed properties in each API version, see [change log](~/{resource.Provider.ToLowerInvariant()}/change-log/{resource.UnqualifiedResourceType.ToLowerInvariant()}.md).
## Resource format
To create a {resource.ResourceType} resource, add the following JSON to your template.
```json
{samples.MainSample}
```
""");
sb.Append(GetDeploymentRemarks(resource, remarks, DeploymentType.Json));
foreach (var (discObjectType, discSamples) in samples.DiscrimatedSamples)
{
sb.Append($"""
### {discObjectType.Name} objects
Set the **{discObjectType.Discriminator}** property to specify the type of object.
""");
foreach (var discSample in discSamples)
{
sb.Append($"""
For **{discSample.DiscriminatorValue}**, use:
```json
{discSample.Sample}
```
""");
}
}
sb.Append(GenerateOptionalSection("Property Values", [
GetPropertyValues(resource, DeploymentType.Json, namedTypes, remarks, anchorIndex),
]));
sb.Append(GenerateOptionalSection("Usage Examples", [
GetJsonQuickstartsSection(configLoader.GetSamples(), resource),
]));
sb.Append($"""
::: zone-end
""");
return sb.ToString();
}