-
Notifications
You must be signed in to change notification settings - Fork 47
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[GetCollectionResponseSchema] Does not disambiguate paths that share the same "/providers" suffix #750
Comments
From Azure/azure-rest-api-specs#30656 (comment):
So, the issue we want to fix is:
|
Since ARM considers the V1 and V2 endpoints the same resource type, the collection get and point get should have the same response schema across both V1 and V2. With that in mind, the rule is valid to flag here because the V2 point get response schema does not match the V1 collection get response (and vice versa with V1 point, V2 collection). We can add another linter rule to specifically point out that endpoints which only differ by the scope (e.g. subscription vs. tenant scope) must have the same response schema. Explicitly showing an error for this might help clear up confusion in this scenario. This rule can also suggest using a scope parameter to consolidate the endpoints. |
Agree with @bdefoy 's evaluation. |
Overview
In the following PR, rule
GetCollectionResponseSchema
raised an error that appears to be a false positive, caused by two paths that share the same "/providers..." suffix.Azure/azure-rest-api-specs#30656 (comment)
My first question is whether this scenario, where two paths in a spec only vary by a
/subscriptions/{subscriptionId}
prefix, but return different data types, should even be allowed?@bdefoy, @rkmanda: What do you think?
If not, then the rule is technically correct to raise an error here, but the error message is misleading.
If so, then the rule will need to be updated to allow it. Inspecting the code, I believe the root cause is around here, since it only considers the path after the last index of
"/providers"
. This code would need to be updated, to consider the prefix before this as well.azure-openapi-validator/packages/rulesets/src/native/utilities/arm-helper.ts
Lines 508 to 516 in edb6559
V1 APIs
/subscriptions/{subscriptionId}/providers/Microsoft.HybridCompute/locations/{location}/publishers/{publisher}/extensionTypes/{extensionType}/versions/{version}
operationId:
ExtensionMetadata_Get
Response:
#/definitions/ExtensionValue
/subscriptions/{subscriptionId}/providers/Microsoft.HybridCompute/locations/{location}/publishers/{publisher}/extensionTypes/{extensionType}/versions
operationId:
ExtensionMetadata_List
Response:
#/definitions/ExtensionValueListResult
V2 APIs
/providers/Microsoft.HybridCompute/locations/{location}/publishers/{publisher}/extensionTypes/{extensionType}/versions/{version}
operationId:
ExtensionMetadataV2_Get
Response:
#/definitions/ExtensionValueV2
/providers/Microsoft.HybridCompute/locations/{location}/publishers/{publisher}/extensionTypes/{extensionType}/versions
operationId:
ExtensionMetadataV2_List
Response:
#/definitions/ExtensionValueListResultV2
The text was updated successfully, but these errors were encountered: