Continuing the work from 05/02/2023, updated the @microsoft.azure/openapi-validator
dependency on @microsoft.azure/openapi-validator-rulesets
from 1.0.1
to 1.1.0
,
As a result, updated the package version from 2.0.1
to 2.1.0
.
in preparation to publish few last months of changes to the ruleset.
For details, see:
Deploy pending azure-openapi-validator (LintDiff) changes from staging to prod #6071
Azure/azure-sdk-tools#6071
Continuing the work from 05/01/2023, updated the @microsoft.azure/openapi-validator-rulesets
to 1.1.0
in preparation to publish few last months of changes to the ruleset.
Also committed pending changes from "rush build".
For details, see:
Deploy pending azure-openapi-validator (LintDiff) changes from staging to prod #6071
Azure/azure-sdk-tools#6071
In preparation for deployment of pending ruleset changes to production,
affixed package @microsoft.azure/openapi-validator-rulesets
version used by @microsoft.azure/openapi-validator
to be exactly 1.0.1
. Also updated @microsoft.azure/openapi-validator-core
to be 1.0.1
.
For details, see:
Deploy pending azure-openapi-validator (LintDiff) changes from staging to prod #6071
Azure/azure-sdk-tools#6071
Migrate all dotnet rules to spectral or typescript.
- RequiredReadOnlySystemData - Change severity to warning.
- deleteOperationResponse - For LRO delete, 200 is no longer required.
- validFormats - Support 'arm-id' format.
- TrackedResourcePatchOperation - Fix false positive for long running patch operation.
- XmsIdentifierValidation - Check the identifying properties of objects in the array.
- XmsEnumValidation - Extends to check the enum in parameters & move to typescript validator.
- ExtensionResourcePathPattern - To ensure extension resource path pattern conform to rpaas contract.
- ParametersOrder - To ensure the parameters in the same order as they are ranked in the path.
- EnumMustRespectType - To ensure the enum values conform to the type.
- UniqueClientParameterName - throw exception when reference contains '.'.
- LongRunningResponseStatusCode - support response code '202' in patch operation.
- TrackedResourceListBySubscription - throw exception when list result model's properties is null.
- DescriptionAndTitleMissing - description & title are not required for reference properties.
- PathResourceProviderMatchNamespace - fix the false alarm when the provider namespace in swagger file path is null.
- TopLevelResourcesListBySubscription - fix false positive caused by unused model.
- AvoidAnonymousTypes - add exception: anonymous types with 'x-ms-client-name'
- MissingTypeObject - To ensure a schema with "properties" or "additionalProperties" must have explicit "type:object" statement, which means a schema is an object.
- LongRunningResponseStatusCode - For data plane spec, the '202' is considered a valid terminal status code for delete or put/patch operation.
- ImplementPrivateEndpointAPIs - fix inconsistent message.
- MissingXmsErrorResponse - Validate if error code 4xx or 5xx defined with x-ms-error-response.
- UniqueModelName - Validate if model name is unique case insensitive.
- AzureResourceTagsSchemaValidation - Validate if tags definition is same with the common types.
- PrivateEndpointResourceSchemaValidation - Validate if private link APIs fully defined.
- ImplementPrivateEndpointAPIs - Validate if private link resources defined correctly.
- R4009 - Change rule name from RequiredSystemDataInNewApiVersion to RequiredReadOnlySystemData and check if it's readonly.
- AvoidAnonymousTypes - Apply to additionalProperties and allOf schema.
- Added modeler4 consumer plugin to run modeler4 check.
- Rpaas_ResourceProvisioningState - Validate if 'provisioningState' is defined in a resource definition.
- TopLevelResourcesListByResourceGroup - Only resource group level resources apply to this rule.
- UniqueXmsEnumName - Compare enum type and modelAsString too, optimize message.
- ValidResponseCodeRequired - Validate if a operation contains valid status code.
- UniqueClientParameterName - Ensure the client parameter name unique in same API version.
- UniqueXmsExample - Ensure the x-ms-examples name unique in same API version.
- RequiredSystemDataInNewApiVersion - Change severity to "error" and only check the operations which return a ARM resource in the response.
- ValidFormats - Allowed formats defined in https://github.com/ajv-validator/ajv-formats#formats .
- LongRunningResponseStatusCode - Allowed code "202" in post operation.
- New validation rule for long running DELETE operation, for RPs hosted in RP-as-a-Service platform. Documentation link
- New validation rule for long running POST operation, for RPs hosted in RP-as-a-Service platform. Documentation link
- PathResourceProviderNamePascalCase - allow acronyms that consist of only two characters.
- PreviewVersionOverOneYear rule - validate if there is any preview version over one year. Documentation link
- New validation rule for long running PUT operation, for RPs hosted in RP-as-a-Service platform. Documentation link
- AllowedTopLevelProperties rule - allow new top-level property:"extendedlocation"
- AllResourcesMustHaveGetOperation rule - the rule ensure all the ARM resources have a get operation.
- NestedResourcesMustHaveListOperation rule - the rule ensure all nested resources have a list operation which return a resource collection.
- TopLevelResourcesListByResourceGroup rule - the rule ensure all top level resources have a list operation by resource group which return a resource collection.
- TopLevelResourcesListBySubscription rule - the rule ensure all top level resources have a list operation by subscriptions which return a resource collection.
- OperationsApiResponseSchema rule - the rule ensure all the operations API have the correct schema.
- GetCollectionResponseSchema rule - the rule ensure the collection schema is an array whose item is exactly the schema of the specific resource.
- DefaultErrorResponseSchema - throw exception when the examples of operations contain $ref
- DescriptiveDescriptionRequired rule - change ruleId to
R4020
- DescriptionAndTitleMissing rule - change ruleId to
R4021
- OperationDescriptionOrSummaryRequired rule - change ruleId to
R4022
- EnumMustHaveType rule - fix false positive when
enum
is a property. - EnumMustNotHaveEmptyValue - fix false positive when
enum
is a property. - EnumUniqueValue - fix false positive when
enum
is a property. - IntegerTypeMustHaveFormat - fix false positive when
enum
is inx-ms-examples
. - UniqueXmsEnumName - fix false positive when
enum
is inx-ms-examples
. - OperationsAPIImplementation - fix false positive when exists multiple providers in path.
- RequiredSystemDataInNewApiVersion rule - the rule ensure the responses of GET, PUT and PATCH in new API versions contain the systemData object.
- RequiredDefaultResponse rule - the rule ensure every operation have a default error response implementation.
- DeleteOperationResponses rule - the rule ensure all DELETE methods have responses code implementation: 200, 204.
- XmsPageableMustHaveCorrespondingResponse rule - the rule ensure the corresponding nextlink property has been defined in the response schema when specifying a x-ms-pagable/nextLinkName.
- IntegerTypeMustHaveFormat rule - the rule ensure the type:integer have a required format.
- ValidFormats rule - format:
time
is allowed. - LongRunningOperationsWithLongRunningExtension rule - apply to data-plane.
- XmsEnumNameUnique rule - the rule should passed if the two enums are defined with same entries.
- XmsEnumNameUnique rule - The rule will check if every x-ms-enum name unique.
- XmsCodeGenerationSettingDeprecated rule: The rule ensure x-ms-code-generation-settings extension should not be used.
- DefaultErrorResponseSchema rule - The rule will check if default error response is corresponding to the ARM specification.
- AvoidEmptyResponseSchema - The rule ensure the response schema is not empty.
- PathResourceTypeNameCamelCase: Typo & fix regex bug.
- OperationIdRequired rule - change severity to error.
- EnumUniqueValue rule: change category to SDKViolation , severity to error.
- EnumMustHaveType rule: change category to SDKViolation , severity to error.
- EnumMustNotHaveEmptyValue: change category to SDKViolation , severity to error.
- PathResourceProviderNamePascalCase: change severity to error.
- PathResourceTypeNameCamelCase: change severity to error.
- OperationIdRequired rule - The rule will check if every operation have a unique operationId.
- EnumUniqueValue rule: check Enum values whether case-insensitive unique
- EnumMustHaveType rule: check Enum values must define its type
- EnumMustNotHaveEmptyValue: check Enum values must not have empty string.
- PathResourceProviderNamePascalCase: resource provider naming in path follow pascal case
- PathResourceTypeNameCamelCase: resource type naming in path follow camel case
- PathResourceProviderMatchNamespace: check the last resource provider in path matches namespace
- Changed the linter rule BodyTopLevelProperties -- Added systemdata as allowed top level properties
- Changed the linter rule PatchBodyParametersSchema -- Allowed required property to be discriminator
- Remove linter rule UniqueResourcePaths R2059: reason is external resource provider in path is valid.
- when x-ms-path contains OData, it will fail the SwaggerParser.Parse. fix this bug, and add a test to it.
- LongRunningOperationsOptionsValidator rule - The rule will check if a post LRO operation has "x-ms-long-running-operation-options" extension enabled. Refer Issue #172, PR #179 and PR #4039 for further details.
- PageableOperation rule - The rule will check if a get operation returns a schema (with 3 or less properties) with an array property. If it is so, the linter will suggest the operation might be pageable. Refer PR #161 for further details.
- Removed the Category RPCViolation and renamed it to ARMViolation in both dotnet and typescript linters.
- Changed the linter rule XmsExamplesRequired -- it now has a Category of
Documentation
and an id ofD5001
. Refer Issue #189 for further details.
- Fixed Typo in AllowedTopLevelProperties list in BodyTopLevelProperties rule.Refer Issue #144 and PR #146 for further details.
- XmsParameterLocation - Any global parameter (other than subscription Id and API Version) must have the "x-ms-parameter-location" extension applied. If the parameter should be a client parameter, then the extension must have the value "client". Else, it must have the have "method". Refer Issue #84 and PR #2649 for further details.
- Fixed camel case suggestions, lowercasing the first character.
- Both dotnet and typescript sections can be debugged again.
- Fixed errors in the application of
NotNodeName
rule.
- Correcting path returned by PostOperationIdContainsUrlVerb rule
- Added zones as allowed top level properties
- Better camelcased suggestions
- Better handling of empty operationIds in OpenAPI specs
- Case insensitive checks for top level resource properties
- Better messaging for tracked resources related rules
- ArraySchemaMustHaveItems – A schema of array type must always contain an items property. without it, AutoRest will fail to generate an SDK. Documentation link Category: SDK Error
- LicenseHeaderMustNotBeSpecified - x-ms-code-generation-settings must not have the license section specified in the OpenAPI documents since each generated SDK can have a different licensing header. This information must be provided either from the command line or the configuration file when actually generating the sdk. Documentation link Category : SDK Warning
- PostOperationIdContainsUrlVerb - A POST operation's operationId should contain the verb indicated at the end of the corresponding url. Documentation link Category : SDK Warning
-
Ensure Top level properties cannot be outside a fixed set. Linked issue
-
Add Message about tenant level resources to ListByResourceGroup and ListBySubscription. Linked issue
-
Ensuring validating items property must exist for an array type.
-
Better path reporting for R3010. Linked issue
-
Filtering resource models returned only by post. Linked issue
-
Adding rule categorizations (Merge state and document type) to validation rules. Linked issue