diff --git a/docs/body-top-level-properties.md b/docs/body-top-level-properties.md index ce757a690..65c230365 100644 --- a/docs/body-top-level-properties.md +++ b/docs/body-top-level-properties.md @@ -15,7 +15,7 @@ ARM OpenAPI(swagger) specs ## Description Top level properties should be one of `name`, `type`, `id`, `location`, `properties`, `tags`, `plan`, `sku`, `etag`, -`managedBy`, `identity`, `systemData`, `extendedlocation`. Per [ARM guidelines](https://github.com/cloud-and-ai-microsoft/resource-provider-contract/blob/master/v1.0/resource-api-reference.md), +`managedBy`, `managedByExtended`, `identity`, `kind`, `zones`, `systemData`, `extendedLocation`. Per [ARM guidelines](https://github.com/cloud-and-ai-microsoft/resource-provider-contract/blob/master/v1.0/resource-api-reference.md), top level properties of a resource should be only ones from the allowed set. ## How to fix diff --git a/docs/rules.md b/docs/rules.md index 7f2703807..8bf488471 100644 --- a/docs/rules.md +++ b/docs/rules.md @@ -154,7 +154,7 @@ Please refer to [body-properties-names-camel-case.md](./body-properties-names-ca ### BodyTopLevelProperties Top level properties should be one of `name`, `type`, `id`, `location`, `properties`, `tags`, `plan`, `sku`, `etag`, -`managedBy`, `identity`, `systemData`, `extendedlocation`. Per [ARM guidelines](https://github.com/cloud-and-ai-microsoft/resource-provider-contract/blob/master/v1.0/resource-api-reference.md), +`managedBy`, `managedByExtended`, `identity`, `kind`, `zones`, `systemData`, `extendedLocation`. Per [ARM guidelines](https://github.com/cloud-and-ai-microsoft/resource-provider-contract/blob/master/v1.0/resource-api-reference.md), top level properties of a resource should be only ones from the allowed set. Please refer to [body-top-level-properties.md](./body-top-level-properties.md) for details. diff --git a/packages/rulesets/CHANGELOG.md b/packages/rulesets/CHANGELOG.md index df8f5d01c..b876eff52 100644 --- a/packages/rulesets/CHANGELOG.md +++ b/packages/rulesets/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log - @microsoft.azure/openapi-validator-rulesets +## 2.2.3 + +### Patches + +- [BodyTopLevelProperties] Add "managedByExtended" to allowed list of top-level properties ## 2.2.2 ### Patches diff --git a/packages/rulesets/package.json b/packages/rulesets/package.json index 7f49b0ffc..60594f4ab 100644 --- a/packages/rulesets/package.json +++ b/packages/rulesets/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft.azure/openapi-validator-rulesets", - "version": "2.2.2", + "version": "2.2.3", "description": "Azure OpenAPI Validator", "main": "dist/index.js", "files": [ diff --git a/packages/rulesets/src/native/functions/arm-resource-validation.ts b/packages/rulesets/src/native/functions/arm-resource-validation.ts index 0bd9144c0..5a93666db 100644 --- a/packages/rulesets/src/native/functions/arm-resource-validation.ts +++ b/packages/rulesets/src/native/functions/arm-resource-validation.ts @@ -77,6 +77,7 @@ export function* armResourcePropertiesBag(openapiSection: any, options: {}, ctx: "sku", "etag", "managedby", + "managedbyextended", "identity", "kind", "zones", @@ -144,6 +145,7 @@ export function* bodyTopLevelProperties(openapiSection: any, options: {}, ctx: R "sku", "etag", "managedby", + "managedbyextended", "identity", "kind", "zones", @@ -155,7 +157,7 @@ export function* bodyTopLevelProperties(openapiSection: any, options: {}, ctx: R if (!allowedBodyTopLevelProperties.includes(propName.toLowerCase())) { yield { location: ["definitions", re.modelName], - message: `Top level properties should be one of name, type, id, location, properties, tags, plan, sku, etag, managedBy, identity, zones. Model definition '${re.modelName}' has extra properties ['${propName}'].`, + message: `Top level properties should be one of name, type, id, location, properties, tags, plan, sku, etag, managedBy, managedByExtended, identity, kind, zones, systemData, extendedLocation. Model definition '${re.modelName}' has extra properties ['${propName}'].`, } } } diff --git a/packages/rulesets/src/native/tests/resources/body-top-level-properties-real-swagger.json b/packages/rulesets/src/native/tests/resources/body-top-level-properties-real-swagger.json index ec7af1a30..46d3c80d4 100644 --- a/packages/rulesets/src/native/tests/resources/body-top-level-properties-real-swagger.json +++ b/packages/rulesets/src/native/tests/resources/body-top-level-properties-real-swagger.json @@ -140,6 +140,13 @@ "type": "string", "description": "The escaped name of the namespace." }, + "managedByExtended": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The fully qualified resource IDs of the resources that manage this resource" + }, "classification": { "$ref": "#/definitions/NamespaceClassification", "description": "Kind of namespace"