Skip to content

no-query-in-post

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

ARM POST operations must not declare query parameters other than api-version.

ARM POST operations should pass request-specific input in the request body, not as query parameters. Keeping POST inputs in the payload gives SDKs a stable request shape and keeps ARM APIs consistent with Azure Resource Manager RPC guidelines.

Only the standard api-version query parameter is allowed.

  • Area: API, SDK

Extra query parameters on ARM POST operations violate the ARM POST request contract and can lead to inconsistent generated SDK method signatures.

This rule corresponds to the LintDiff rule ParametersInPost.

@armProviderNamespace
namespace Microsoft.Contoso;
model Widget is TrackedResource<{}> {
...ResourceNameParameter<Widget>;
}
model ActionRequest {
value: string;
}
model ActionResponse {
result: string;
}
model ActionParameters {
@query mode?: string;
}
@armResourceOperations
interface Widgets {
doAction is ArmResourceActionSync<
Widget,
ActionRequest,
ActionResponse,
Foundations.DefaultBaseParameters<Widget>,
ActionParameters
>;
}
@armProviderNamespace
namespace Microsoft.Contoso;
model Widget is TrackedResource<{}> {
...ResourceNameParameter<Widget>;
}
model ActionRequest {
mode?: string;
value: string;
}
model ActionResponse {
result: string;
}
@armResourceOperations
interface Widgets {
doAction is ArmResourceActionSync<Widget, ActionRequest, ActionResponse>;
}