Skip to content

beyond-nesting-levels

Id
@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels

Tracked Resources must use 3 or fewer levels of nesting.

Tracked Resources must use 3 or fewer levels of nesting. Deeply nested resources make the API harder to use and are discouraged by ARM guidelines.

  • Area: API

Nesting resources beyond three levels violates the RPC contract.

This rule corresponds to the LintDiff rule TrackedResourceBeyondThirdLevel.

@armProviderNamespace
namespace MyService;
// 4 levels of nesting: A > B > C > D — too deep
model A is TrackedResource<{}> {
...ResourceNameParameter<A>;
}
@parentResource(A)
model B is TrackedResource<{}> {
...ResourceNameParameter<B>;
}
@parentResource(B)
model C is TrackedResource<{}> {
...ResourceNameParameter<C>;
}
@parentResource(C)
model D is TrackedResource<{}> {
...ResourceNameParameter<D>;
}
@armProviderNamespace
namespace MyService;
// 3 levels of nesting: A > B > C
model A is TrackedResource<{}> {
...ResourceNameParameter<A>;
}
@parentResource(A)
model B is TrackedResource<{}> {
...ResourceNameParameter<B>;
}
@parentResource(B)
model C is TrackedResource<{}> {
...ResourceNameParameter<C>;
}

Suppress per the RPC guidelines; otherwise restructure so the resource layout has no more than three levels of nesting.