diff --git a/.github/workflows/spectral-lint.yml b/.github/workflows/spectral-lint.yml index fc8d95b51..ad84f4637 100644 --- a/.github/workflows/spectral-lint.yml +++ b/.github/workflows/spectral-lint.yml @@ -32,4 +32,4 @@ jobs: with: # Path to the OpenAPI spec files and openapi/v2.yaml file_glob: openapi/v2.yaml - spectral_ruleset: tools/spectral/.spectral.yaml + spectral_ruleset: tools/spectral/.spectral.yaml #If updated, need to update in MMS too. diff --git a/tools/spectral/.spectral.yaml b/tools/spectral/.spectral.yaml index eb4614f05..78017c105 100644 --- a/tools/spectral/.spectral.yaml +++ b/tools/spectral/.spectral.yaml @@ -184,6 +184,17 @@ rules: field: allow_diff pattern: "^true$" + no-slash-before-custom-method: + description: "Custom methods (e.g., ':applyItem') should not be preceded by a '/'." + message: "The path '{{path}}' contains a '/' before a custom method. Custom methods should not start with a '/'." + severity: error + given: "$.paths" + then: + field: "@key" + function: pattern + functionOptions: + notMatch: "/[^/]+/:[a-zA-Z]+$" + overrides: - files: # load sample data has an issue with different path param names for different VERBS - "*.yaml#/paths/~1api~1atlas~1v1.0~1groups~1%7BgroupId%7D~1sampleDatasetLoad~1%7BsampleDatasetId%7D" diff --git a/tools/spectral/README.md b/tools/spectral/README.md new file mode 100644 index 000000000..1bcaf9aca --- /dev/null +++ b/tools/spectral/README.md @@ -0,0 +1,11 @@ +# Spectral updates + +If adding new rules or updating .spectral.yaml overall, the validations will instantly get updated across mongodb/openapi repository. + +To propagate the changes in MMS, engineers must open a PR and update the pinned commit sha in mms. + +Please perform the following steps: +1. [ ] Open a PR with the spectral changes and validate that the Spectral lint checks work. +2. [ ] Review and merge the PR. +3. [ ] Open a PR in mms, updating the commit sha of the spectral file imported. +4. [ ] Validate all tests pass. \ No newline at end of file