Skip to content

no-query-in-collection

Id
@azure-tools/typespec-azure-resource-manager/no-query-in-collection

ARM collection GET operations must not declare query parameters beyond api-version and $filter.

ARM collection GET operations may use only the standard api-version and $filter query parameters. Additional query parameters make list operations inconsistent across resource providers and introduce nonstandard method parameters in generated SDKs.

The rule applies to GET operations whose emitted ARM path identifies a resource collection. Query parameter names are case-sensitive, so $FILTER is not equivalent to $filter.

@armProviderNamespace
namespace Microsoft.Contoso;
@route("/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/widgets")
@get
op listWidgets(
@path subscriptionId: string,
@query("api-version") apiVersion: string,
@query continuationToken?: string,
): void;
@armProviderNamespace
namespace Microsoft.Contoso;
@route("/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/widgets")
@get
op listWidgets(
@path subscriptionId: string,
@query("api-version") apiVersion: string,
@query("$filter") filter?: string,
): void;

This rule is the native TypeSpec equivalent of the Swagger validator rule QueryParametersInCollectionGet.