From 09c354a2cb1dfacd14ce772e91d31b773d078abe Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 15:26:08 +0000 Subject: [PATCH 1/6] Include severity in IPA rule test --- ...tesBetweenResourceNameAndPathParam.test.js | 24 +++++++++---------- .../IPA104EachResourceHasGetMethod.test.js | 10 ++++---- .../IPA104GetMethodHasNoRequestBody.test.js | 4 ++-- ...4GetMethodResponseHasNoInputFields.test.js | 4 ++-- ...ethodReturnsResponseSuffixedObject.test.js | 8 +++---- ...A104GetMethodReturnsSingleResource.test.js | 8 +++---- ...IPA104GetResponseCodeShouldBe200OK.test.js | 8 +++---- .../IPA105EachResourceHasListMethod.test.js | 4 ++-- .../IPA105ListMethodHasNoRequestBody.test.js | 2 +- ...tMethodResponseIsGetMethodResponse.test.js | 10 ++++---- ...PA105ListResponseCodeShouldBe200OK.test.js | 8 +++---- .../IPA105exceptionExtensionFormat.test.js | 8 +++---- ...RequestBodyIsRequestSuffixedObject.test.js | 10 ++++---- ...teMethodRequestHasNoReadonlyFields.test.js | 8 +++---- ...eateMethodResponseCodeIs201Created.test.js | 6 ++--- ...MethodShouldNotHaveQueryParameters.test.js | 6 ++--- ...109EachCustomMethodMustBeGetOrPost.test.js | 16 ++++++------- ...09EachCustomMethodMustUseCamelCase.test.js | 12 +++++----- ...3EachEnumValueMustBeUpperSnakeCase.test.js | 16 ++++++------- .../ipa/__tests__/__helpers__/testRule.js | 1 + 20 files changed, 87 insertions(+), 86 deletions(-) diff --git a/tools/spectral/ipa/__tests__/IPA102EachPathAlternatesBetweenResourceNameAndPathParam.test.js b/tools/spectral/ipa/__tests__/IPA102EachPathAlternatesBetweenResourceNameAndPathParam.test.js index 8605ef0dc0..41a6e0cfbf 100644 --- a/tools/spectral/ipa/__tests__/IPA102EachPathAlternatesBetweenResourceNameAndPathParam.test.js +++ b/tools/spectral/ipa/__tests__/IPA102EachPathAlternatesBetweenResourceNameAndPathParam.test.js @@ -49,37 +49,37 @@ testRule('xgen-IPA-102-path-alternate-resource-name-path-param', [ code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/resourceName1/resourceName2'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/resourceName/{pathParam1}/{pathParam2}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/resourceName1/{pathParam1}/resourceName2/resourceName3'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/resourceName1/{pathParam1}/resourceName2/{pathParam2}/{pathParam3}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/{pathParam}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/{pathParam1}/{pathParam2}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -100,37 +100,37 @@ testRule('xgen-IPA-102-path-alternate-resource-name-path-param', [ code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/resourceName1/resourceName2'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/resourceName/{pathParam1}/{pathParam2}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/resourceName1/{pathParam1}/resourceName2/resourceName3'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/resourceName1/{pathParam1}/resourceName2/{pathParam2}/{pathParam3}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/{pathParam}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-102-path-alternate-resource-name-path-param', message: 'API paths must alternate between resource name and path params.', path: ['paths', '/api/atlas/v2/unauth/{pathParam1}/{pathParam2}'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104EachResourceHasGetMethod.test.js b/tools/spectral/ipa/__tests__/IPA104EachResourceHasGetMethod.test.js index 006ce8be41..f4500faf4f 100644 --- a/tools/spectral/ipa/__tests__/IPA104EachResourceHasGetMethod.test.js +++ b/tools/spectral/ipa/__tests__/IPA104EachResourceHasGetMethod.test.js @@ -94,31 +94,31 @@ testRule('xgen-IPA-104-resource-has-GET', [ code: 'xgen-IPA-104-resource-has-GET', message: 'APIs must provide a get method for resources.', path: ['paths', '/standard'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-resource-has-GET', message: 'APIs must provide a get method for resources.', path: ['paths', '/standard/{exampleId}/nested'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-resource-has-GET', message: 'APIs must provide a get method for resources.', path: ['paths', '/standard/{exampleId}/nestedSingleton'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-resource-has-GET', message: 'APIs must provide a get method for resources.', path: ['paths', '/custom'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-resource-has-GET', message: 'APIs must provide a get method for resources.', path: ['paths', '/standardWithoutSubResource'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104GetMethodHasNoRequestBody.test.js b/tools/spectral/ipa/__tests__/IPA104GetMethodHasNoRequestBody.test.js index 0cd78970b0..07bf6a929c 100644 --- a/tools/spectral/ipa/__tests__/IPA104GetMethodHasNoRequestBody.test.js +++ b/tools/spectral/ipa/__tests__/IPA104GetMethodHasNoRequestBody.test.js @@ -63,13 +63,13 @@ testRule('xgen-IPA-104-get-method-no-request-body', [ code: 'xgen-IPA-104-get-method-no-request-body', message: 'The Get method must not include a request body.', path: ['paths', '/resource/{id}', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-no-request-body', message: 'The Get method must not include a request body.', path: ['paths', '/resource/{id}/singleton', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104GetMethodResponseHasNoInputFields.test.js b/tools/spectral/ipa/__tests__/IPA104GetMethodResponseHasNoInputFields.test.js index 19c6396da7..669d2226a2 100644 --- a/tools/spectral/ipa/__tests__/IPA104GetMethodResponseHasNoInputFields.test.js +++ b/tools/spectral/ipa/__tests__/IPA104GetMethodResponseHasNoInputFields.test.js @@ -141,7 +141,7 @@ testRule('xgen-IPA-104-get-method-response-has-no-input-fields', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-response-has-no-input-fields', @@ -156,7 +156,7 @@ testRule('xgen-IPA-104-get-method-response-has-no-input-fields', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsResponseSuffixedObject.test.js b/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsResponseSuffixedObject.test.js index b373421913..fec182de92 100644 --- a/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsResponseSuffixedObject.test.js +++ b/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsResponseSuffixedObject.test.js @@ -162,7 +162,7 @@ testRule('xgen-IPA-104-get-method-returns-response-suffixed-object', [ 'content', 'application/vnd.atlas.2023-01-01+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-response-suffixed-object', @@ -176,7 +176,7 @@ testRule('xgen-IPA-104-get-method-returns-response-suffixed-object', [ 'content', 'application/vnd.atlas.2024-01-01+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-response-suffixed-object', @@ -190,7 +190,7 @@ testRule('xgen-IPA-104-get-method-returns-response-suffixed-object', [ 'content', 'application/vnd.atlas.2025-01-01+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-response-suffixed-object', @@ -204,7 +204,7 @@ testRule('xgen-IPA-104-get-method-returns-response-suffixed-object', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsSingleResource.test.js b/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsSingleResource.test.js index d7792393a1..825e055031 100644 --- a/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsSingleResource.test.js +++ b/tools/spectral/ipa/__tests__/IPA104GetMethodReturnsSingleResource.test.js @@ -174,7 +174,7 @@ testRule('xgen-IPA-104-get-method-returns-single-resource', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-single-resource', @@ -189,7 +189,7 @@ testRule('xgen-IPA-104-get-method-returns-single-resource', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-single-resource', @@ -204,7 +204,7 @@ testRule('xgen-IPA-104-get-method-returns-single-resource', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-returns-single-resource', @@ -219,7 +219,7 @@ testRule('xgen-IPA-104-get-method-returns-single-resource', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA104GetResponseCodeShouldBe200OK.test.js b/tools/spectral/ipa/__tests__/IPA104GetResponseCodeShouldBe200OK.test.js index fc13ddc95e..16fa79aef2 100644 --- a/tools/spectral/ipa/__tests__/IPA104GetResponseCodeShouldBe200OK.test.js +++ b/tools/spectral/ipa/__tests__/IPA104GetResponseCodeShouldBe200OK.test.js @@ -95,28 +95,28 @@ testRule('xgen-IPA-104-get-method-response-code-is-200', [ message: 'The Get method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceOne/{id}', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-response-code-is-200', message: 'The Get method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceTwo/{id}', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-response-code-is-200', message: 'The Get method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceThree/{id}', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-104-get-method-response-code-is-200', message: 'The Get method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resource/{id}/singleton', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA105EachResourceHasListMethod.test.js b/tools/spectral/ipa/__tests__/IPA105EachResourceHasListMethod.test.js index e76de33946..60cc41971c 100644 --- a/tools/spectral/ipa/__tests__/IPA105EachResourceHasListMethod.test.js +++ b/tools/spectral/ipa/__tests__/IPA105EachResourceHasListMethod.test.js @@ -55,13 +55,13 @@ testRule('xgen-IPA-105-resource-has-list', [ code: 'xgen-IPA-105-resource-has-list', message: 'APIs must provide a List method for resources.', path: ['paths', '/standard'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-resource-has-list', message: 'APIs must provide a List method for resources.', path: ['paths', '/standard/{exampleId}/nested'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA105ListMethodHasNoRequestBody.test.js b/tools/spectral/ipa/__tests__/IPA105ListMethodHasNoRequestBody.test.js index 1278173f25..0e7efeec78 100644 --- a/tools/spectral/ipa/__tests__/IPA105ListMethodHasNoRequestBody.test.js +++ b/tools/spectral/ipa/__tests__/IPA105ListMethodHasNoRequestBody.test.js @@ -85,7 +85,7 @@ testRule('xgen-IPA-105-list-method-no-request-body', [ code: 'xgen-IPA-105-list-method-no-request-body', message: 'The List method must not include a request body.', path: ['paths', '/resource', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA105ListMethodResponseIsGetMethodResponse.test.js b/tools/spectral/ipa/__tests__/IPA105ListMethodResponseIsGetMethodResponse.test.js index be02af5db8..6458b1c2aa 100644 --- a/tools/spectral/ipa/__tests__/IPA105ListMethodResponseIsGetMethodResponse.test.js +++ b/tools/spectral/ipa/__tests__/IPA105ListMethodResponseIsGetMethodResponse.test.js @@ -400,7 +400,7 @@ testRule('xgen-IPA-105-list-method-response-is-get-method-response', [ message: 'The schema of each result in the List method response must be the same schema as the response of the Get method.', path: ['paths', '/resource', 'get', 'responses', '200', 'content', 'application/vnd.atlas.2024-08-05+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-is-get-method-response', @@ -415,14 +415,14 @@ testRule('xgen-IPA-105-list-method-response-is-get-method-response', [ 'content', 'application/vnd.atlas.2024-08-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-is-get-method-response', message: 'Could not validate that the List method returns the same resource object as the Get method. The Get method does not have a schema.', path: ['paths', '/resourceTwo', 'get', 'responses', '200', 'content', 'application/vnd.atlas.2024-01-05+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-is-get-method-response', @@ -437,7 +437,7 @@ testRule('xgen-IPA-105-list-method-response-is-get-method-response', [ 'content', 'application/vnd.atlas.2024-01-05+json', ], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -484,7 +484,7 @@ testRule('xgen-IPA-105-list-method-response-is-get-method-response', [ message: 'The schema of each result in the List method response must be the same schema as the response of the Get method.', path: ['paths', '/resource', 'get', 'responses', '200', 'content', 'application/vnd.atlas.2024-08-05+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA105ListResponseCodeShouldBe200OK.test.js b/tools/spectral/ipa/__tests__/IPA105ListResponseCodeShouldBe200OK.test.js index 7a1342dae2..90880ce29e 100644 --- a/tools/spectral/ipa/__tests__/IPA105ListResponseCodeShouldBe200OK.test.js +++ b/tools/spectral/ipa/__tests__/IPA105ListResponseCodeShouldBe200OK.test.js @@ -83,28 +83,28 @@ testRule('xgen-IPA-105-list-method-response-code-is-200', [ message: 'The List method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceOne', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-code-is-200', message: 'The List method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceTwo', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-code-is-200', message: 'The List method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceThree', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-105-list-method-response-code-is-200', message: 'The List method must return a 200 OK response. This method either lacks a 200 OK response or defines a different 2xx status code.', path: ['paths', '/resourceFour', 'get'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA105exceptionExtensionFormat.test.js b/tools/spectral/ipa/__tests__/IPA105exceptionExtensionFormat.test.js index 1a72f31b08..9b2dd5c9c8 100644 --- a/tools/spectral/ipa/__tests__/IPA105exceptionExtensionFormat.test.js +++ b/tools/spectral/ipa/__tests__/IPA105exceptionExtensionFormat.test.js @@ -53,25 +53,25 @@ testRule('xgen-IPA-005-exception-extension-format', [ code: 'xgen-IPA-005-exception-extension-format', message: 'IPA exceptions must have a valid rule name and a reason.', path: ['paths', '/path1', 'x-xgen-IPA-exception'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-005-exception-extension-format', message: 'IPA exceptions must have a valid rule name and a reason.', path: ['paths', '/path2', 'x-xgen-IPA-exception', 'xgen-IPA-100-rule-name'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-005-exception-extension-format', message: 'IPA exceptions must have a valid rule name and a reason.', path: ['paths', '/path3', 'x-xgen-IPA-exception', 'invalid-rule-name'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-005-exception-extension-format', message: 'IPA exceptions must have a valid rule name and a reason.', path: ['paths', '/path4', 'x-xgen-IPA-exception', 'xgen-IPA-100-rule-name'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestBodyIsRequestSuffixedObject.test.js b/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestBodyIsRequestSuffixedObject.test.js index b76e2592d5..4c89c4398b 100644 --- a/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestBodyIsRequestSuffixedObject.test.js +++ b/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestBodyIsRequestSuffixedObject.test.js @@ -156,31 +156,31 @@ testRule('xgen-IPA-106-create-method-request-body-is-request-suffixed-object', [ code: 'xgen-IPA-106-create-method-request-body-is-request-suffixed-object', message: 'The schema must reference a schema with a Request suffix.', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-request-body-is-request-suffixed-object', message: 'The schema must reference a schema with a Request suffix.', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2024-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-request-body-is-request-suffixed-object', message: 'The schema must reference a schema with a Request suffix.', path: ['paths', '/resourceTwo', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-request-body-is-request-suffixed-object', message: 'The schema must reference a schema with a Request suffix.', path: ['paths', '/resourceTwo', 'post', 'requestBody', 'content', 'application/vnd.atlas.2024-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-request-body-is-request-suffixed-object', message: 'The schema is defined inline and must reference a predefined schema.', path: ['paths', '/resourceThree', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestHasNoReadonlyFields.test.js b/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestHasNoReadonlyFields.test.js index bd5c056b11..7b3dc739fa 100644 --- a/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestHasNoReadonlyFields.test.js +++ b/tools/spectral/ipa/__tests__/IPA106CreateMethodRequestHasNoReadonlyFields.test.js @@ -154,14 +154,14 @@ testRule('xgen-IPA-106-create-method-request-has-no-readonly-fields', [ message: 'The Create method request object must not include input fields (readOnly properties). Found readOnly property at: id. ', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-request-has-no-readonly-fields', message: 'The Create method request object must not include input fields (readOnly properties). Found readOnly property at one of the inline schemas. ', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2024-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -194,7 +194,7 @@ testRule('xgen-IPA-106-create-method-request-has-no-readonly-fields', [ message: 'The Create method request object must not include input fields (readOnly properties). Found readOnly property at: user.userId. ', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -227,7 +227,7 @@ testRule('xgen-IPA-106-create-method-request-has-no-readonly-fields', [ message: 'The Create method request object must not include input fields (readOnly properties). Found readOnly property at: items.items.itemId. ', path: ['paths', '/resource', 'post', 'requestBody', 'content', 'application/vnd.atlas.2023-01-01+json'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA106CreateMethodResponseCodeIs201Created.test.js b/tools/spectral/ipa/__tests__/IPA106CreateMethodResponseCodeIs201Created.test.js index d9d8ecade9..0e6cc7570b 100644 --- a/tools/spectral/ipa/__tests__/IPA106CreateMethodResponseCodeIs201Created.test.js +++ b/tools/spectral/ipa/__tests__/IPA106CreateMethodResponseCodeIs201Created.test.js @@ -76,21 +76,21 @@ testRule('xgen-IPA-106-create-method-response-code-is-201', [ message: 'The Create method must return a 201 Created response. This method either lacks a 201 Created response or defines a different 2xx status code.', path: ['paths', '/resourceOne', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-response-code-is-201', message: 'The Create method must return a 201 Created response. This method either lacks a 201 Created response or defines a different 2xx status code.', path: ['paths', '/resourceTwo', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-response-code-is-201', message: 'The Create method must return a 201 Created response. This method either lacks a 201 Created response or defines a different 2xx status code.', path: ['paths', '/resourceThree', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA106CreateMethodShouldNotHaveQueryParameters.test.js b/tools/spectral/ipa/__tests__/IPA106CreateMethodShouldNotHaveQueryParameters.test.js index f49dffe0d4..665b11d240 100644 --- a/tools/spectral/ipa/__tests__/IPA106CreateMethodShouldNotHaveQueryParameters.test.js +++ b/tools/spectral/ipa/__tests__/IPA106CreateMethodShouldNotHaveQueryParameters.test.js @@ -122,19 +122,19 @@ testRule('xgen-IPA-106-create-method-should-not-have-query-parameters', [ code: 'xgen-IPA-106-create-method-should-not-have-query-parameters', message: 'Create operations should not have query parameters. Found [filter]. ', path: ['paths', '/resource', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-should-not-have-query-parameters', message: 'Create operations should not have query parameters. Found [query-param]. ', path: ['paths', '/resourceTwo', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-106-create-method-should-not-have-query-parameters', message: 'Create operations should not have query parameters. Found [query-param-2]. ', path: ['paths', '/resourceTwo', 'post'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustBeGetOrPost.test.js b/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustBeGetOrPost.test.js index f05a50cc62..893d046239 100644 --- a/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustBeGetOrPost.test.js +++ b/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustBeGetOrPost.test.js @@ -95,49 +95,49 @@ testRule('xgen-IPA-109-custom-method-must-be-GET-or-POST', [ code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/a/{exampleId}:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/a:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/b/{exampleId}:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/b:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/c/{exampleId}:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/c:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/d/{exampleId}:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-be-GET-or-POST', message: 'The HTTP method for custom methods must be GET or POST.', path: ['paths', '/d:method'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustUseCamelCase.test.js b/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustUseCamelCase.test.js index 70f4895936..eb33ec292f 100644 --- a/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustUseCamelCase.test.js +++ b/tools/spectral/ipa/__tests__/IPA109EachCustomMethodMustUseCamelCase.test.js @@ -47,37 +47,37 @@ testRule('xgen-IPA-109-custom-method-must-use-camel-case', [ code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'MethodName must use camelCase format.', path: ['paths', '/a/{exampleId}:MethodName'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'MethodName must use camelCase format.', path: ['paths', '/a:MethodName'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'method_name must use camelCase format.', path: ['paths', '/a/{exampleId}:method_name'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'method_name must use camelCase format.', path: ['paths', '/a:method_name'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'Custom method name cannot be empty or blank.', path: ['paths', '/a/{exampleId}:'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-109-custom-method-must-use-camel-case', message: 'Custom method name cannot be empty or blank.', path: ['paths', '/a:'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA123EachEnumValueMustBeUpperSnakeCase.test.js b/tools/spectral/ipa/__tests__/IPA123EachEnumValueMustBeUpperSnakeCase.test.js index 5c84c65f84..72fe3e429a 100644 --- a/tools/spectral/ipa/__tests__/IPA123EachEnumValueMustBeUpperSnakeCase.test.js +++ b/tools/spectral/ipa/__tests__/IPA123EachEnumValueMustBeUpperSnakeCase.test.js @@ -98,25 +98,25 @@ testRule('xgen-IPA-123-enum-values-must-be-upper-snake-case', [ code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[0]:exampleA enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName', 'properties', 'exampleProperty'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[1]:exampleB enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName', 'properties', 'exampleProperty'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[0]:exampleA enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName2', 'properties', 'exampleProperty'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[1]:exampleB enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName2', 'properties', 'exampleProperty'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -168,13 +168,13 @@ testRule('xgen-IPA-123-enum-values-must-be-upper-snake-case', [ code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[0]:exampleA enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[1]:exampleB enum value must be UPPER_SNAKE_CASE. ', path: ['components', 'schemas', 'SchemaName'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, @@ -244,13 +244,13 @@ testRule('xgen-IPA-123-enum-values-must-be-upper-snake-case', [ code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[0]:exampleA enum value must be UPPER_SNAKE_CASE. ', path: ['paths', '/a/{exampleId}', 'get', 'parameters', '0', 'schema'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, { code: 'xgen-IPA-123-enum-values-must-be-upper-snake-case', message: 'enum[1]:exampleB enum value must be UPPER_SNAKE_CASE. ', path: ['paths', '/a/{exampleId}', 'get', 'parameters', '0', 'schema'], - severity: DiagnosticSeverity.Warning, + severity: DiagnosticSeverity.Error, }, ], }, diff --git a/tools/spectral/ipa/__tests__/__helpers__/testRule.js b/tools/spectral/ipa/__tests__/__helpers__/testRule.js index d3cc2e8240..06e369e74d 100644 --- a/tools/spectral/ipa/__tests__/__helpers__/testRule.js +++ b/tools/spectral/ipa/__tests__/__helpers__/testRule.js @@ -26,6 +26,7 @@ export default (ruleName, tests) => { expect(error.code).toEqual(testCase.errors[index].code); expect(error.message).toMatch(testCase.errors[index].message); expect(error.path).toEqual(testCase.errors[index].path); + expect(error.severity).toEqual(testCase.errors[index].severity); }); }); } From e4cc4126e3247cf706a0074d6b97183e8dd226cd Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 15:31:53 +0000 Subject: [PATCH 2/6] Fix --- .../__tests__/IPA125OneOfMustHaveDiscriminator.test.js | 10 +++++----- .../ipa/__tests__/IPA125OneOfNoBaseTypes.test.js | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/spectral/ipa/__tests__/IPA125OneOfMustHaveDiscriminator.test.js b/tools/spectral/ipa/__tests__/IPA125OneOfMustHaveDiscriminator.test.js index 8a3e411574..79a8f074e4 100644 --- a/tools/spectral/ipa/__tests__/IPA125OneOfMustHaveDiscriminator.test.js +++ b/tools/spectral/ipa/__tests__/IPA125OneOfMustHaveDiscriminator.test.js @@ -79,7 +79,7 @@ testRule('xgen-IPA-125-oneOf-must-have-discriminator', [ message: 'The discriminator mapping must match the oneOf references. Unmatched Discriminator mappings with oneOf references: #/components/schemas/Bird', path: ['components', 'schemas', 'Animal'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, @@ -100,7 +100,7 @@ testRule('xgen-IPA-125-oneOf-must-have-discriminator', [ code: 'xgen-IPA-125-oneOf-must-have-discriminator', message: 'The schema has oneOf but no discriminator property.', path: ['components', 'schemas', 'Animal'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, @@ -122,7 +122,7 @@ testRule('xgen-IPA-125-oneOf-must-have-discriminator', [ code: 'xgen-IPA-125-oneOf-must-have-discriminator', message: 'Discriminator property is not an object.', path: ['components', 'schemas', 'Animal'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, @@ -149,7 +149,7 @@ testRule('xgen-IPA-125-oneOf-must-have-discriminator', [ code: 'xgen-IPA-125-oneOf-must-have-discriminator', message: 'Discriminator has no propertyName defined.', path: ['components', 'schemas', 'Animal'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, @@ -173,7 +173,7 @@ testRule('xgen-IPA-125-oneOf-must-have-discriminator', [ code: 'xgen-IPA-125-oneOf-must-have-discriminator', message: 'Discriminator must have a mapping object.', path: ['components', 'schemas', 'Animal'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, diff --git a/tools/spectral/ipa/__tests__/IPA125OneOfNoBaseTypes.test.js b/tools/spectral/ipa/__tests__/IPA125OneOfNoBaseTypes.test.js index 76513b9096..401a2a7996 100644 --- a/tools/spectral/ipa/__tests__/IPA125OneOfNoBaseTypes.test.js +++ b/tools/spectral/ipa/__tests__/IPA125OneOfNoBaseTypes.test.js @@ -72,7 +72,7 @@ testRule('xgen-IPA-125-oneOf-no-base-types', [ code: 'xgen-IPA-125-oneOf-no-base-types', message: 'oneOf should not contain base types like integer, number, string, or boolean.', path: ['components', 'schemas', 'MixedType'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, @@ -93,7 +93,7 @@ testRule('xgen-IPA-125-oneOf-no-base-types', [ code: 'xgen-IPA-125-oneOf-no-base-types', message: 'oneOf should not contain base types like integer, number, string, or boolean.', path: ['components', 'schemas', 'BaseTypes'], - severity: DiagnosticSeverity.Error, + severity: DiagnosticSeverity.Warning, }, ], }, From 4d8166fa7df6a74a41f4f9d7ea5720057f17f352 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 15:48:00 +0000 Subject: [PATCH 3/6] Test --- .github/workflows/spectral-lint.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/spectral-lint.yml b/.github/workflows/spectral-lint.yml index a3f1513f24..c308695694 100644 --- a/.github/workflows/spectral-lint.yml +++ b/.github/workflows/spectral-lint.yml @@ -38,7 +38,7 @@ jobs: - name: Install npm dependencies run: npm install - name: Fetch OAS file from Dev Branch - run: curl -O "https://raw.githubusercontent.com/mongodb/openapi/refs/heads/dev/openapi/.raw/v2.yaml" + run: curl -o dev-oas.yaml "https://raw.githubusercontent.com/mongodb/openapi/refs/heads/dev/openapi/.raw/v2.yaml" working-directory: ${{ github.workspace }} - name: Spectral action uses: stoplightio/spectral-action@2ad0b9302e32a77c1caccf474a9b2191a8060d83 @@ -51,3 +51,7 @@ jobs: with: file_glob: ${{ github.workspace }}//v2.yaml spectral_ruleset: tools/spectral/ipa/ipa-spectral.yaml + - name: IPA validation + run: | + npx spectral lint dev-oas.yaml --ruleset=${{ github.workspace }}/tools/spectral/ipa/ipa-spectral.yaml + From 7a2bc50f1ae347ee216d0b62e0076ee82743fd93 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 15:51:03 +0000 Subject: [PATCH 4/6] Test --- .github/workflows/spectral-lint.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/spectral-lint.yml b/.github/workflows/spectral-lint.yml index c308695694..36f9ce840c 100644 --- a/.github/workflows/spectral-lint.yml +++ b/.github/workflows/spectral-lint.yml @@ -17,6 +17,7 @@ on: permissions: issues: write contents: write + checks: write jobs: spectral-lint: @@ -46,11 +47,6 @@ jobs: # Path to the OpenAPI spec files and openapi/.raw/v2.yaml file_glob: openapi/.raw/v2.yaml spectral_ruleset: tools/spectral/.spectral.yaml #If updated, need to update in MMS too. - - name: IPA validation action - uses: stoplightio/spectral-action@2ad0b9302e32a77c1caccf474a9b2191a8060d83 - with: - file_glob: ${{ github.workspace }}//v2.yaml - spectral_ruleset: tools/spectral/ipa/ipa-spectral.yaml - name: IPA validation run: | npx spectral lint dev-oas.yaml --ruleset=${{ github.workspace }}/tools/spectral/ipa/ipa-spectral.yaml From 832f283d9cd99b2d7515e39827d908c60253fd61 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 15:54:49 +0000 Subject: [PATCH 5/6] Test --- .github/workflows/spectral-lint.yml | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/workflows/spectral-lint.yml b/.github/workflows/spectral-lint.yml index 36f9ce840c..6349b643ed 100644 --- a/.github/workflows/spectral-lint.yml +++ b/.github/workflows/spectral-lint.yml @@ -31,13 +31,6 @@ jobs: sparse-checkout: | openapi/ tools/spectral - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: '20.x' - cache: 'npm' - - name: Install npm dependencies - run: npm install - name: Fetch OAS file from Dev Branch run: curl -o dev-oas.yaml "https://raw.githubusercontent.com/mongodb/openapi/refs/heads/dev/openapi/.raw/v2.yaml" working-directory: ${{ github.workspace }} @@ -47,6 +40,11 @@ jobs: # Path to the OpenAPI spec files and openapi/.raw/v2.yaml file_glob: openapi/.raw/v2.yaml spectral_ruleset: tools/spectral/.spectral.yaml #If updated, need to update in MMS too. + - name: IPA validation action + uses: stoplightio/spectral-action@2ad0b9302e32a77c1caccf474a9b2191a8060d83 + with: + file_glob: dev-oas.yaml + spectral_ruleset: tools/spectral/ipa/ipa-spectral.yaml - name: IPA validation run: | npx spectral lint dev-oas.yaml --ruleset=${{ github.workspace }}/tools/spectral/ipa/ipa-spectral.yaml From 15354d46cd7c5440104192a454f25567166821d3 Mon Sep 17 00:00:00 2001 From: Lovisa Berggren Date: Thu, 20 Mar 2025 16:07:40 +0000 Subject: [PATCH 6/6] Fix --- .github/workflows/spectral-lint.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/spectral-lint.yml b/.github/workflows/spectral-lint.yml index ebff27cb21..a694c862fb 100644 --- a/.github/workflows/spectral-lint.yml +++ b/.github/workflows/spectral-lint.yml @@ -47,4 +47,5 @@ jobs: uses: stoplightio/spectral-action@2ad0b9302e32a77c1caccf474a9b2191a8060d83 with: file_glob: v2.yaml - spectral_ruleset: tools/spectral/ipa/ipa-spectral.yaml \ No newline at end of file + spectral_ruleset: tools/spectral/ipa/ipa-spectral.yaml + \ No newline at end of file