@redocly/openapi-core 1.25.15 → 1.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/__tests__/utils.ts +0 -3
- package/lib/bundle.js +3 -3
- package/lib/config/all.js +129 -48
- package/lib/config/builtIn.d.ts +1 -1
- package/lib/config/builtIn.js +5 -3
- package/lib/config/config-resolvers.d.ts +3 -1
- package/lib/config/config-resolvers.js +16 -14
- package/lib/config/config.d.ts +2 -2
- package/lib/config/config.js +38 -20
- package/lib/config/minimal.js +124 -49
- package/lib/config/recommended-strict.js +123 -48
- package/lib/config/recommended.js +122 -47
- package/lib/config/rules.d.ts +2 -2
- package/lib/config/spec.d.ts +3 -0
- package/lib/config/spec.js +30 -0
- package/lib/config/types.d.ts +23 -23
- package/lib/config/utils.d.ts +1 -1
- package/lib/config/utils.js +33 -23
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -2
- package/lib/lint.js +3 -3
- package/lib/oas-types.d.ts +11 -11
- package/lib/oas-types.js +6 -6
- package/lib/rules/arazzo/criteria-unique.d.ts +2 -2
- package/lib/rules/arazzo/index.d.ts +2 -2
- package/lib/rules/arazzo/index.js +6 -6
- package/lib/rules/arazzo/parameters-unique.d.ts +2 -2
- package/lib/rules/arazzo/requestBody-replacements-unique.d.ts +2 -2
- package/lib/rules/arazzo/sourceDescription-type.d.ts +2 -0
- package/lib/rules/arazzo/{source-description-type.js → sourceDescription-type.js} +5 -3
- package/lib/rules/arazzo/sourceDescriptions-name-unique.d.ts +2 -2
- package/lib/rules/arazzo/sourceDescriptions-not-empty.d.ts +2 -0
- package/lib/rules/arazzo/sourceDescriptions-not-empty.js +18 -0
- package/lib/rules/arazzo/step-onFailure-unique.d.ts +2 -2
- package/lib/rules/arazzo/step-onSuccess-unique.d.ts +2 -2
- package/lib/rules/arazzo/stepId-unique.d.ts +2 -2
- package/lib/rules/arazzo/workflow-dependsOn.d.ts +2 -2
- package/lib/rules/arazzo/workflowId-unique.d.ts +2 -2
- package/lib/rules/async2/index.js +5 -2
- package/lib/rules/async3/index.js +5 -2
- package/lib/rules/common/assertions/index.d.ts +2 -2
- package/lib/rules/common/struct.d.ts +2 -0
- package/lib/rules/common/{spec.js → struct.js} +3 -3
- package/lib/rules/oas2/index.js +5 -2
- package/lib/rules/oas3/index.js +5 -2
- package/lib/rules/spot/no-criteria-xpath.d.ts +2 -2
- package/lib/rules/spot/parameters-not-in-body.d.ts +2 -2
- package/lib/rules/spot/version-enum.d.ts +2 -2
- package/lib/types/arazzo.d.ts +1 -1
- package/lib/types/arazzo.js +3 -16
- package/lib/types/redocly-yaml.d.ts +6 -8
- package/lib/types/redocly-yaml.js +47 -13
- package/lib/typings/arazzo.d.ts +1 -6
- package/lib/utils.d.ts +1 -1
- package/lib/utils.js +3 -2
- package/lib/visitors.d.ts +5 -6
- package/package.json +1 -3
- package/src/__tests__/lint.test.ts +3 -3
- package/src/bundle.ts +3 -3
- package/src/config/__tests__/__snapshots__/config-resolvers.test.ts.snap +228 -72
- package/src/config/__tests__/__snapshots__/config.test.ts.snap +16 -3
- package/src/config/__tests__/config-resolvers.test.ts +14 -2
- package/src/config/__tests__/config.test.ts +11 -6
- package/src/config/all.ts +129 -48
- package/src/config/builtIn.ts +10 -8
- package/src/config/config-resolvers.ts +37 -45
- package/src/config/config.ts +46 -22
- package/src/config/minimal.ts +124 -49
- package/src/config/recommended-strict.ts +123 -48
- package/src/config/recommended.ts +122 -47
- package/src/config/rules.ts +2 -2
- package/src/config/spec.ts +31 -0
- package/src/config/types.ts +27 -33
- package/src/config/utils.ts +38 -26
- package/src/index.ts +1 -1
- package/src/lint.ts +6 -6
- package/src/oas-types.ts +19 -20
- package/src/rules/arazzo/__tests__/criteria-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/no-criteria-xpath.test.ts +1 -2
- package/src/rules/arazzo/__tests__/parameters-not-in-body.test.ts +1 -2
- package/src/rules/arazzo/__tests__/parameters-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/requestBody-replacements-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/source-description-type.test.ts +2 -4
- package/src/rules/arazzo/__tests__/sourceDescription-name-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/sourceDescriptions-not-empty.test.ts +104 -0
- package/src/rules/arazzo/__tests__/step-onFailure-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/step-onSuccess-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/stepId-unique.test.ts +1 -2
- package/src/rules/arazzo/__tests__/version-enum.test.ts +1 -2
- package/src/rules/arazzo/__tests__/workflow-dependsOn.test.ts +3 -6
- package/src/rules/arazzo/__tests__/workflowId-unique.test.ts +2 -4
- package/src/rules/arazzo/criteria-unique.ts +2 -2
- package/src/rules/arazzo/index.ts +22 -22
- package/src/rules/arazzo/parameters-unique.ts +2 -2
- package/src/rules/arazzo/requestBody-replacements-unique.ts +2 -2
- package/src/rules/arazzo/{source-description-type.ts → sourceDescription-type.ts} +6 -5
- package/src/rules/arazzo/sourceDescriptions-name-unique.ts +2 -2
- package/src/rules/arazzo/sourceDescriptions-not-empty.ts +17 -0
- package/src/rules/arazzo/step-onFailure-unique.ts +2 -2
- package/src/rules/arazzo/step-onSuccess-unique.ts +2 -2
- package/src/rules/arazzo/stepId-unique.ts +2 -2
- package/src/rules/arazzo/workflow-dependsOn.ts +2 -2
- package/src/rules/arazzo/workflowId-unique.ts +2 -2
- package/src/rules/async2/index.ts +5 -2
- package/src/rules/async3/index.ts +5 -2
- package/src/rules/common/__tests__/no-enum-type-mismatch.test.ts +1 -1
- package/src/rules/common/__tests__/{spec.test.ts → struct.test.ts} +35 -35
- package/src/rules/common/assertions/index.ts +2 -2
- package/src/rules/common/{spec.ts → struct.ts} +2 -2
- package/src/rules/oas2/index.ts +5 -2
- package/src/rules/oas3/__tests__/spec/spec.test.ts +10 -10
- package/src/rules/oas3/index.ts +5 -2
- package/src/rules/spot/no-criteria-xpath.ts +2 -2
- package/src/rules/spot/parameters-not-in-body.ts +2 -2
- package/src/rules/spot/version-enum.ts +2 -2
- package/src/types/arazzo.ts +2 -14
- package/src/types/redocly-yaml.ts +48 -17
- package/src/typings/arazzo.ts +1 -10
- package/src/utils.ts +4 -2
- package/src/visitors.ts +4 -6
- package/tsconfig.tsbuildinfo +1 -1
- package/lib/rules/arazzo/source-description-type.d.ts +0 -2
- package/lib/rules/common/spec.d.ts +0 -2
- package/lib/rules/spot/no-actions-type-end.d.ts +0 -2
- package/lib/rules/spot/no-actions-type-end.js +0 -28
- package/src/rules/arazzo/__tests__/no-actions-type-end.test.ts +0 -122
- package/src/rules/spot/no-actions-type-end.ts +0 -27
package/lib/typings/arazzo.d.ts
CHANGED
|
@@ -10,17 +10,12 @@ export interface OpenAPISourceDescription {
|
|
|
10
10
|
url: string;
|
|
11
11
|
'x-serverUrl'?: string;
|
|
12
12
|
}
|
|
13
|
-
export interface NoneSourceDescription {
|
|
14
|
-
name: string;
|
|
15
|
-
type: 'none';
|
|
16
|
-
'x-serverUrl': string;
|
|
17
|
-
}
|
|
18
13
|
export interface ArazzoSourceDescription {
|
|
19
14
|
name: string;
|
|
20
15
|
type: 'arazzo';
|
|
21
16
|
url: string;
|
|
22
17
|
}
|
|
23
|
-
export type SourceDescription = OpenAPISourceDescription |
|
|
18
|
+
export type SourceDescription = OpenAPISourceDescription | ArazzoSourceDescription;
|
|
24
19
|
export interface Parameter {
|
|
25
20
|
in?: 'header' | 'query' | 'path' | 'cookie' | 'body';
|
|
26
21
|
name: string;
|
package/lib/utils.d.ts
CHANGED
|
@@ -49,7 +49,7 @@ export declare function assignOnlyExistingConfig<T extends string | {
|
|
|
49
49
|
export declare function getMatchingStatusCodeRange(code: number | string): string;
|
|
50
50
|
export declare function isCustomRuleId(id: string): boolean;
|
|
51
51
|
export declare function doesYamlFileExist(filePath: string): boolean;
|
|
52
|
-
export declare function showWarningForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string): void;
|
|
52
|
+
export declare function showWarningForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string, link?: string): void;
|
|
53
53
|
export declare function showErrorForDeprecatedField(deprecatedField: string, updatedField?: string, updatedObject?: string): void;
|
|
54
54
|
export type Falsy = undefined | null | false | '' | 0;
|
|
55
55
|
export declare function isTruthy<Truthy>(value: Truthy | Falsy): value is Truthy;
|
package/lib/utils.js
CHANGED
|
@@ -218,10 +218,11 @@ function doesYamlFileExist(filePath) {
|
|
|
218
218
|
fs?.hasOwnProperty?.('existsSync') &&
|
|
219
219
|
fs.existsSync(filePath));
|
|
220
220
|
}
|
|
221
|
-
function showWarningForDeprecatedField(deprecatedField, updatedField, updatedObject) {
|
|
221
|
+
function showWarningForDeprecatedField(deprecatedField, updatedField, updatedObject, link) {
|
|
222
|
+
const readMoreText = link ? `Read more about this change: ${link}` : '';
|
|
222
223
|
logger_1.logger.warn(`The '${logger_1.colorize.red(deprecatedField)}' field is deprecated. ${updatedField
|
|
223
224
|
? `Use ${logger_1.colorize.green(getUpdatedFieldName(updatedField, updatedObject))} instead. `
|
|
224
|
-
: ''}
|
|
225
|
+
: ''}${readMoreText}\n`);
|
|
225
226
|
}
|
|
226
227
|
function showErrorForDeprecatedField(deprecatedField, updatedField, updatedObject) {
|
|
227
228
|
throw new Error(`Do not use '${deprecatedField}' field. ${updatedField ? `Use '${getUpdatedFieldName(updatedField, updatedObject)}' instead. ` : ''}\n`);
|
package/lib/visitors.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ import type { Oas3Definition, Oas3ExternalDocs, Oas3Info, Oas3Contact, Oas3Compo
|
|
|
6
6
|
import type { Oas2Definition, Oas2Tag, Oas2ExternalDocs, Oas2SecurityRequirement, Oas2Info, Oas2Contact, Oas2License, Oas2PathItem, Oas2Operation, Oas2Header, Oas2Response, Oas2Schema, Oas2Xml, Oas2Parameter, Oas2SecurityScheme } from './typings/swagger';
|
|
7
7
|
import type { Async2Definition } from './typings/asyncapi';
|
|
8
8
|
import type { Async3Definition } from './typings/asyncapi3';
|
|
9
|
-
import type { ArazzoDefinition, ArazzoSourceDescription, CriteriaObject, ExtendedOperation, InfoObject,
|
|
9
|
+
import type { ArazzoDefinition, ArazzoSourceDescription, CriteriaObject, ExtendedOperation, InfoObject, OnFailureObject, OnSuccessObject, OpenAPISourceDescription, Parameter, Replacement, RequestBody, SourceDescription, Step, Workflow } from './typings/arazzo';
|
|
10
10
|
export type SkipFunctionContext = Pick<UserContext, 'location' | 'rawNode' | 'resolve' | 'rawLocation'>;
|
|
11
11
|
export type VisitFunction<T> = (node: T, ctx: UserContext & {
|
|
12
12
|
ignoreNextVisitorsOnNode: () => void;
|
|
@@ -149,7 +149,6 @@ type ArazzoFlatVisitor = {
|
|
|
149
149
|
ParameterObject?: VisitFunctionOrObject<Parameter>;
|
|
150
150
|
InfoObject?: VisitFunctionOrObject<InfoObject>;
|
|
151
151
|
OpenAPISourceDescription?: VisitFunctionOrObject<OpenAPISourceDescription>;
|
|
152
|
-
NoneSourceDescription?: VisitFunctionOrObject<NoneSourceDescription>;
|
|
153
152
|
ArazzoSourceDescription?: VisitFunctionOrObject<ArazzoSourceDescription>;
|
|
154
153
|
SourceDescription?: VisitFunctionOrObject<SourceDescription>;
|
|
155
154
|
ExtendedOperation?: VisitFunctionOrObject<ExtendedOperation>;
|
|
@@ -182,7 +181,7 @@ export type Oas3Visitor = BaseVisitor & Oas3NestedVisitor & Record<string, Visit
|
|
|
182
181
|
export type Oas2Visitor = BaseVisitor & Oas2NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Oas2NestedVisitor>>;
|
|
183
182
|
export type Async2Visitor = BaseVisitor & Async2NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Async2NestedVisitor>>;
|
|
184
183
|
export type Async3Visitor = BaseVisitor & Async3NestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, Async3NestedVisitor>>;
|
|
185
|
-
export type
|
|
184
|
+
export type Arazzo1Visitor = BaseVisitor & ArazzoNestedVisitor & Record<string, VisitFunction<any> | NestedVisitObject<any, ArazzoNestedVisitor>>;
|
|
186
185
|
export type NestedVisitor<T> = Exclude<T, 'any' | 'ref' | 'Root'>;
|
|
187
186
|
export type NormalizedOasVisitors<T extends BaseVisitor> = {
|
|
188
187
|
[V in keyof T]-?: {
|
|
@@ -203,17 +202,17 @@ export type Oas3Rule = (options: Record<string, any>) => Oas3Visitor | Oas3Visit
|
|
|
203
202
|
export type Oas2Rule = (options: Record<string, any>) => Oas2Visitor | Oas2Visitor[];
|
|
204
203
|
export type Async2Rule = (options: Record<string, any>) => Async2Visitor | Async2Visitor[];
|
|
205
204
|
export type Async3Rule = (options: Record<string, any>) => Async3Visitor | Async3Visitor[];
|
|
206
|
-
export type
|
|
205
|
+
export type Arazzo1Rule = (options: Record<string, any>) => Arazzo1Visitor | Arazzo1Visitor[];
|
|
207
206
|
export type Oas3Preprocessor = (options: Record<string, any>) => Oas3Visitor;
|
|
208
207
|
export type Oas2Preprocessor = (options: Record<string, any>) => Oas2Visitor;
|
|
209
208
|
export type Async2Preprocessor = (options: Record<string, any>) => Async2Visitor;
|
|
210
209
|
export type Async3Preprocessor = (options: Record<string, any>) => Async3Visitor;
|
|
211
|
-
export type
|
|
210
|
+
export type Arazzo1Preprocessor = (options: Record<string, any>) => Arazzo1Visitor;
|
|
212
211
|
export type Oas3Decorator = (options: Record<string, any>) => Oas3Visitor;
|
|
213
212
|
export type Oas2Decorator = (options: Record<string, any>) => Oas2Visitor;
|
|
214
213
|
export type Async2Decorator = (options: Record<string, any>) => Async2Visitor;
|
|
215
214
|
export type Async3Decorator = (options: Record<string, any>) => Async3Visitor;
|
|
216
|
-
export type
|
|
215
|
+
export type Arazzo1Decorator = (options: Record<string, any>) => Arazzo1Visitor;
|
|
217
216
|
export type OasRule = Oas3Rule;
|
|
218
217
|
export type OasPreprocessor = Oas3Preprocessor;
|
|
219
218
|
export type OasDecorator = Oas3Decorator;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redocly/openapi-core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.26.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"engines": {
|
|
@@ -41,7 +41,6 @@
|
|
|
41
41
|
"https-proxy-agent": "^7.0.4",
|
|
42
42
|
"js-levenshtein": "^1.1.6",
|
|
43
43
|
"js-yaml": "^4.1.0",
|
|
44
|
-
"lodash.isequal": "^4.5.0",
|
|
45
44
|
"minimatch": "^5.0.1",
|
|
46
45
|
"node-fetch": "^2.6.1",
|
|
47
46
|
"pluralize": "^8.0.0",
|
|
@@ -50,7 +49,6 @@
|
|
|
50
49
|
"devDependencies": {
|
|
51
50
|
"@types/js-levenshtein": "^1.1.0",
|
|
52
51
|
"@types/js-yaml": "^4.0.3",
|
|
53
|
-
"@types/lodash.isequal": "^4.5.5",
|
|
54
52
|
"@types/minimatch": "^3.0.5",
|
|
55
53
|
"@types/node": "^20.11.5",
|
|
56
54
|
"@types/node-fetch": "^2.5.7",
|
|
@@ -295,7 +295,7 @@ describe('lint', () => {
|
|
|
295
295
|
},
|
|
296
296
|
],
|
|
297
297
|
"message": "Expected type \`License\` (object) but got \`string\`",
|
|
298
|
-
"ruleId": "
|
|
298
|
+
"ruleId": "struct",
|
|
299
299
|
"severity": "error",
|
|
300
300
|
"suggest": [],
|
|
301
301
|
},
|
|
@@ -324,7 +324,7 @@ describe('lint', () => {
|
|
|
324
324
|
},
|
|
325
325
|
],
|
|
326
326
|
"message": "Expected type \`License\` (object) but got \`string\`",
|
|
327
|
-
"ruleId": "
|
|
327
|
+
"ruleId": "struct",
|
|
328
328
|
"severity": "error",
|
|
329
329
|
"suggest": [],
|
|
330
330
|
},
|
|
@@ -1611,7 +1611,7 @@ describe('lint', () => {
|
|
|
1611
1611
|
},
|
|
1612
1612
|
],
|
|
1613
1613
|
"message": "Property \`dependentRequired\` is not expected here.",
|
|
1614
|
-
"ruleId": "
|
|
1614
|
+
"ruleId": "struct",
|
|
1615
1615
|
"severity": "error",
|
|
1616
1616
|
"suggest": [],
|
|
1617
1617
|
},
|
package/src/bundle.ts
CHANGED
|
@@ -163,7 +163,7 @@ export async function bundleDocument(opts: {
|
|
|
163
163
|
} = opts;
|
|
164
164
|
const specVersion = detectSpec(document.parsed);
|
|
165
165
|
const specMajorVersion = getMajorSpecVersion(specVersion);
|
|
166
|
-
const rules = config.
|
|
166
|
+
const rules = config.getRulesForSpecVersion(specMajorVersion);
|
|
167
167
|
const types = normalizeTypes(
|
|
168
168
|
config.extendTypes(customTypes ?? getTypes(specVersion), specVersion),
|
|
169
169
|
config
|
|
@@ -303,7 +303,7 @@ export function mapTypeToComponent(typeName: string, version: SpecMajorVersion)
|
|
|
303
303
|
default:
|
|
304
304
|
return null;
|
|
305
305
|
}
|
|
306
|
-
case SpecMajorVersion.
|
|
306
|
+
case SpecMajorVersion.Arazzo1:
|
|
307
307
|
switch (typeName) {
|
|
308
308
|
case 'Root.workflows_items.parameters_items':
|
|
309
309
|
case 'Root.workflows_items.steps_items.parameters_items':
|
|
@@ -408,7 +408,7 @@ function makeBundleVisitor(
|
|
|
408
408
|
components = root.components = root.components || {};
|
|
409
409
|
} else if (version === SpecMajorVersion.Async3) {
|
|
410
410
|
components = root.components = root.components || {};
|
|
411
|
-
} else if (version === SpecMajorVersion.
|
|
411
|
+
} else if (version === SpecMajorVersion.Arazzo1) {
|
|
412
412
|
components = root.components = root.components || {};
|
|
413
413
|
}
|
|
414
414
|
},
|
|
@@ -2,18 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
exports[`resolveConfig should ignore minimal from the root and read local file 1`] = `
|
|
4
4
|
{
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
5
|
+
"arazzo1Decorators": {},
|
|
6
|
+
"arazzo1Preprocessors": {},
|
|
7
|
+
"arazzo1Rules": {
|
|
8
8
|
"criteria-unique": "warn",
|
|
9
|
-
"no-actions-type-end": "warn",
|
|
10
9
|
"no-criteria-xpath": "warn",
|
|
11
10
|
"parameters-not-in-body": "warn",
|
|
12
11
|
"parameters-unique": "error",
|
|
13
12
|
"requestBody-replacements-unique": "warn",
|
|
14
13
|
"sourceDescription-name-unique": "error",
|
|
15
14
|
"sourceDescription-type": "error",
|
|
16
|
-
"
|
|
15
|
+
"sourceDescriptions-not-empty": "error",
|
|
17
16
|
"step-onFailure-unique": "warn",
|
|
18
17
|
"step-onSuccess-unique": "warn",
|
|
19
18
|
"stepId-unique": "error",
|
|
@@ -29,7 +28,6 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
29
28
|
"info-license-strict": "warn",
|
|
30
29
|
"no-channel-trailing-slash": "off",
|
|
31
30
|
"operation-operationId": "warn",
|
|
32
|
-
"spec": "error",
|
|
33
31
|
"tag-description": "warn",
|
|
34
32
|
"tags-alphabetical": "off",
|
|
35
33
|
},
|
|
@@ -41,7 +39,6 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
41
39
|
"info-license-strict": "warn",
|
|
42
40
|
"no-channel-trailing-slash": "off",
|
|
43
41
|
"operation-operationId": "warn",
|
|
44
|
-
"spec": "error",
|
|
45
42
|
"tag-description": "warn",
|
|
46
43
|
"tags-alphabetical": "off",
|
|
47
44
|
},
|
|
@@ -51,9 +48,48 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
51
48
|
"oas2Preprocessors": {},
|
|
52
49
|
"oas2Rules": {
|
|
53
50
|
"boolean-parameter-prefixes": "error",
|
|
51
|
+
"info-contact": "off",
|
|
52
|
+
"info-license": "warn",
|
|
53
|
+
"info-license-strict": "warn",
|
|
54
|
+
"info-license-url": "off",
|
|
55
|
+
"no-ambiguous-paths": "warn",
|
|
56
|
+
"no-enum-type-mismatch": "error",
|
|
57
|
+
"no-http-verbs-in-paths": "off",
|
|
58
|
+
"no-identical-paths": "error",
|
|
59
|
+
"no-invalid-parameter-examples": "off",
|
|
60
|
+
"no-invalid-schema-examples": "off",
|
|
61
|
+
"no-path-trailing-slash": "error",
|
|
62
|
+
"no-required-schema-properties-undefined": "off",
|
|
63
|
+
"no-unresolved-refs": "error",
|
|
64
|
+
"operation-2xx-response": "warn",
|
|
65
|
+
"operation-4xx-response": "error",
|
|
66
|
+
"operation-description": "error",
|
|
67
|
+
"operation-operationId": "warn",
|
|
68
|
+
"operation-operationId-unique": "error",
|
|
69
|
+
"operation-operationId-url-safe": "error",
|
|
70
|
+
"operation-parameters-unique": "error",
|
|
71
|
+
"operation-singular-tag": "off",
|
|
72
|
+
"operation-summary": "error",
|
|
73
|
+
"operation-tag-defined": "off",
|
|
74
|
+
"parameter-description": "off",
|
|
75
|
+
"path-declaration-must-exist": "error",
|
|
76
|
+
"path-excludes-patterns": "off",
|
|
77
|
+
"path-http-verbs-order": "error",
|
|
78
|
+
"path-not-include-query": "error",
|
|
79
|
+
"path-parameters-defined": "error",
|
|
80
|
+
"path-params-defined": "off",
|
|
81
|
+
"path-segment-plural": "off",
|
|
82
|
+
"paths-kebab-case": "off",
|
|
54
83
|
"request-mime-type": "off",
|
|
84
|
+
"required-string-property-missing-min-length": "off",
|
|
85
|
+
"response-contains-header": "off",
|
|
55
86
|
"response-contains-property": "off",
|
|
56
87
|
"response-mime-type": "off",
|
|
88
|
+
"scalar-property-missing-example": "off",
|
|
89
|
+
"security-defined": "error",
|
|
90
|
+
"spec-strict-refs": "off",
|
|
91
|
+
"tag-description": "warn",
|
|
92
|
+
"tags-alphabetical": "off",
|
|
57
93
|
},
|
|
58
94
|
"oas3_0Decorators": {},
|
|
59
95
|
"oas3_0Preprocessors": {},
|
|
@@ -61,22 +97,61 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
61
97
|
"array-parameter-serialization": "off",
|
|
62
98
|
"boolean-parameter-prefixes": "error",
|
|
63
99
|
"component-name-unique": "off",
|
|
100
|
+
"info-contact": "off",
|
|
101
|
+
"info-license": "warn",
|
|
102
|
+
"info-license-strict": "warn",
|
|
103
|
+
"info-license-url": "off",
|
|
104
|
+
"no-ambiguous-paths": "warn",
|
|
64
105
|
"no-empty-servers": "error",
|
|
106
|
+
"no-enum-type-mismatch": "error",
|
|
65
107
|
"no-example-value-and-externalValue": "error",
|
|
108
|
+
"no-http-verbs-in-paths": "off",
|
|
109
|
+
"no-identical-paths": "error",
|
|
66
110
|
"no-invalid-media-type-examples": {
|
|
67
111
|
"allowAdditionalProperties": false,
|
|
68
112
|
"severity": "error",
|
|
69
113
|
},
|
|
114
|
+
"no-invalid-parameter-examples": "off",
|
|
115
|
+
"no-invalid-schema-examples": "off",
|
|
116
|
+
"no-path-trailing-slash": "error",
|
|
117
|
+
"no-required-schema-properties-undefined": "off",
|
|
70
118
|
"no-server-example.com": "warn",
|
|
71
119
|
"no-server-trailing-slash": "error",
|
|
72
120
|
"no-server-variables-empty-enum": "error",
|
|
73
121
|
"no-undefined-server-variable": "error",
|
|
122
|
+
"no-unresolved-refs": "error",
|
|
74
123
|
"no-unused-components": "warn",
|
|
124
|
+
"operation-2xx-response": "warn",
|
|
75
125
|
"operation-4xx-problem-details-rfc7807": "off",
|
|
126
|
+
"operation-4xx-response": "error",
|
|
127
|
+
"operation-description": "error",
|
|
128
|
+
"operation-operationId": "warn",
|
|
129
|
+
"operation-operationId-unique": "error",
|
|
130
|
+
"operation-operationId-url-safe": "error",
|
|
131
|
+
"operation-parameters-unique": "error",
|
|
132
|
+
"operation-singular-tag": "off",
|
|
133
|
+
"operation-summary": "error",
|
|
134
|
+
"operation-tag-defined": "off",
|
|
135
|
+
"parameter-description": "off",
|
|
136
|
+
"path-declaration-must-exist": "error",
|
|
137
|
+
"path-excludes-patterns": "off",
|
|
138
|
+
"path-http-verbs-order": "error",
|
|
139
|
+
"path-not-include-query": "error",
|
|
140
|
+
"path-parameters-defined": "error",
|
|
141
|
+
"path-params-defined": "off",
|
|
142
|
+
"path-segment-plural": "off",
|
|
143
|
+
"paths-kebab-case": "off",
|
|
76
144
|
"request-mime-type": "off",
|
|
145
|
+
"required-string-property-missing-min-length": "off",
|
|
146
|
+
"response-contains-header": "off",
|
|
77
147
|
"response-contains-property": "off",
|
|
78
148
|
"response-mime-type": "off",
|
|
149
|
+
"scalar-property-missing-example": "off",
|
|
150
|
+
"security-defined": "error",
|
|
79
151
|
"spec-components-invalid-map-name": "error",
|
|
152
|
+
"spec-strict-refs": "off",
|
|
153
|
+
"tag-description": "warn",
|
|
154
|
+
"tags-alphabetical": "off",
|
|
80
155
|
},
|
|
81
156
|
"oas3_1Decorators": {},
|
|
82
157
|
"oas3_1Preprocessors": {},
|
|
@@ -84,31 +159,14 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
84
159
|
"array-parameter-serialization": "off",
|
|
85
160
|
"boolean-parameter-prefixes": "error",
|
|
86
161
|
"component-name-unique": "off",
|
|
87
|
-
"no-empty-servers": "error",
|
|
88
|
-
"no-example-value-and-externalValue": "error",
|
|
89
|
-
"no-invalid-media-type-examples": "error",
|
|
90
|
-
"no-server-example.com": "warn",
|
|
91
|
-
"no-server-trailing-slash": "error",
|
|
92
|
-
"no-server-variables-empty-enum": "error",
|
|
93
|
-
"no-undefined-server-variable": "error",
|
|
94
|
-
"no-unused-components": "warn",
|
|
95
|
-
"operation-4xx-problem-details-rfc7807": "off",
|
|
96
|
-
"request-mime-type": "off",
|
|
97
|
-
"response-contains-property": "off",
|
|
98
|
-
"response-mime-type": "off",
|
|
99
|
-
"spec-components-invalid-map-name": "error",
|
|
100
|
-
},
|
|
101
|
-
"preprocessors": {},
|
|
102
|
-
"recommendedFallback": false,
|
|
103
|
-
"rules": {
|
|
104
|
-
"boolean-parameter-prefixes": "error",
|
|
105
162
|
"info-contact": "off",
|
|
106
163
|
"info-license": "warn",
|
|
107
164
|
"info-license-strict": "warn",
|
|
108
165
|
"info-license-url": "off",
|
|
109
|
-
"local/operation-id-not-test": "error",
|
|
110
166
|
"no-ambiguous-paths": "warn",
|
|
167
|
+
"no-empty-servers": "error",
|
|
111
168
|
"no-enum-type-mismatch": "error",
|
|
169
|
+
"no-example-value-and-externalValue": "error",
|
|
112
170
|
"no-http-verbs-in-paths": "off",
|
|
113
171
|
"no-identical-paths": "error",
|
|
114
172
|
"no-invalid-media-type-examples": "error",
|
|
@@ -116,8 +174,14 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
116
174
|
"no-invalid-schema-examples": "off",
|
|
117
175
|
"no-path-trailing-slash": "error",
|
|
118
176
|
"no-required-schema-properties-undefined": "off",
|
|
177
|
+
"no-server-example.com": "warn",
|
|
178
|
+
"no-server-trailing-slash": "error",
|
|
179
|
+
"no-server-variables-empty-enum": "error",
|
|
180
|
+
"no-undefined-server-variable": "error",
|
|
119
181
|
"no-unresolved-refs": "error",
|
|
182
|
+
"no-unused-components": "warn",
|
|
120
183
|
"operation-2xx-response": "warn",
|
|
184
|
+
"operation-4xx-problem-details-rfc7807": "off",
|
|
121
185
|
"operation-4xx-response": "error",
|
|
122
186
|
"operation-description": "error",
|
|
123
187
|
"operation-operationId": "warn",
|
|
@@ -136,32 +200,46 @@ exports[`resolveConfig should ignore minimal from the root and read local file 1
|
|
|
136
200
|
"path-params-defined": "off",
|
|
137
201
|
"path-segment-plural": "off",
|
|
138
202
|
"paths-kebab-case": "off",
|
|
203
|
+
"request-mime-type": "off",
|
|
139
204
|
"required-string-property-missing-min-length": "off",
|
|
140
205
|
"response-contains-header": "off",
|
|
206
|
+
"response-contains-property": "off",
|
|
207
|
+
"response-mime-type": "off",
|
|
141
208
|
"scalar-property-missing-example": "off",
|
|
142
209
|
"security-defined": "error",
|
|
143
|
-
"spec": "error",
|
|
210
|
+
"spec-components-invalid-map-name": "error",
|
|
144
211
|
"spec-strict-refs": "off",
|
|
145
212
|
"tag-description": "warn",
|
|
146
213
|
"tags-alphabetical": "off",
|
|
147
214
|
},
|
|
215
|
+
"preprocessors": {},
|
|
216
|
+
"recommendedFallback": false,
|
|
217
|
+
"rules": {
|
|
218
|
+
"boolean-parameter-prefixes": "error",
|
|
219
|
+
"local/operation-id-not-test": "error",
|
|
220
|
+
"no-invalid-media-type-examples": "error",
|
|
221
|
+
"operation-2xx-response": "warn",
|
|
222
|
+
"operation-4xx-response": "error",
|
|
223
|
+
"operation-description": "error",
|
|
224
|
+
"path-http-verbs-order": "error",
|
|
225
|
+
"struct": "error",
|
|
226
|
+
},
|
|
148
227
|
}
|
|
149
228
|
`;
|
|
150
229
|
|
|
151
230
|
exports[`resolveStyleguideConfig should resolve extends with local file config which contains path to nested config 1`] = `
|
|
152
231
|
{
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
232
|
+
"arazzo1Decorators": {},
|
|
233
|
+
"arazzo1Preprocessors": {},
|
|
234
|
+
"arazzo1Rules": {
|
|
156
235
|
"criteria-unique": "warn",
|
|
157
|
-
"no-actions-type-end": "warn",
|
|
158
236
|
"no-criteria-xpath": "warn",
|
|
159
237
|
"parameters-not-in-body": "warn",
|
|
160
238
|
"parameters-unique": "error",
|
|
161
239
|
"requestBody-replacements-unique": "warn",
|
|
162
240
|
"sourceDescription-name-unique": "error",
|
|
163
241
|
"sourceDescription-type": "error",
|
|
164
|
-
"
|
|
242
|
+
"sourceDescriptions-not-empty": "error",
|
|
165
243
|
"step-onFailure-unique": "warn",
|
|
166
244
|
"step-onSuccess-unique": "warn",
|
|
167
245
|
"stepId-unique": "error",
|
|
@@ -177,7 +255,6 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
177
255
|
"info-license-strict": "warn",
|
|
178
256
|
"no-channel-trailing-slash": "off",
|
|
179
257
|
"operation-operationId": "warn",
|
|
180
|
-
"spec": "error",
|
|
181
258
|
"tag-description": "warn",
|
|
182
259
|
"tags-alphabetical": "off",
|
|
183
260
|
},
|
|
@@ -189,7 +266,6 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
189
266
|
"info-license-strict": "warn",
|
|
190
267
|
"no-channel-trailing-slash": "off",
|
|
191
268
|
"operation-operationId": "warn",
|
|
192
|
-
"spec": "error",
|
|
193
269
|
"tag-description": "warn",
|
|
194
270
|
"tags-alphabetical": "off",
|
|
195
271
|
},
|
|
@@ -199,9 +275,48 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
199
275
|
"oas2Preprocessors": {},
|
|
200
276
|
"oas2Rules": {
|
|
201
277
|
"boolean-parameter-prefixes": "error",
|
|
278
|
+
"info-contact": "off",
|
|
279
|
+
"info-license": "warn",
|
|
280
|
+
"info-license-strict": "warn",
|
|
281
|
+
"info-license-url": "off",
|
|
282
|
+
"no-ambiguous-paths": "warn",
|
|
283
|
+
"no-enum-type-mismatch": "error",
|
|
284
|
+
"no-http-verbs-in-paths": "off",
|
|
285
|
+
"no-identical-paths": "error",
|
|
286
|
+
"no-invalid-parameter-examples": "off",
|
|
287
|
+
"no-invalid-schema-examples": "off",
|
|
288
|
+
"no-path-trailing-slash": "error",
|
|
289
|
+
"no-required-schema-properties-undefined": "off",
|
|
290
|
+
"no-unresolved-refs": "error",
|
|
291
|
+
"operation-2xx-response": "error",
|
|
292
|
+
"operation-4xx-response": "off",
|
|
293
|
+
"operation-description": "off",
|
|
294
|
+
"operation-operationId": "warn",
|
|
295
|
+
"operation-operationId-unique": "error",
|
|
296
|
+
"operation-operationId-url-safe": "error",
|
|
297
|
+
"operation-parameters-unique": "error",
|
|
298
|
+
"operation-singular-tag": "off",
|
|
299
|
+
"operation-summary": "error",
|
|
300
|
+
"operation-tag-defined": "off",
|
|
301
|
+
"parameter-description": "off",
|
|
302
|
+
"path-declaration-must-exist": "error",
|
|
303
|
+
"path-excludes-patterns": "off",
|
|
304
|
+
"path-http-verbs-order": "off",
|
|
305
|
+
"path-not-include-query": "error",
|
|
306
|
+
"path-parameters-defined": "error",
|
|
307
|
+
"path-params-defined": "off",
|
|
308
|
+
"path-segment-plural": "off",
|
|
309
|
+
"paths-kebab-case": "off",
|
|
202
310
|
"request-mime-type": "off",
|
|
311
|
+
"required-string-property-missing-min-length": "off",
|
|
312
|
+
"response-contains-header": "off",
|
|
203
313
|
"response-contains-property": "off",
|
|
204
314
|
"response-mime-type": "off",
|
|
315
|
+
"scalar-property-missing-example": "off",
|
|
316
|
+
"security-defined": "error",
|
|
317
|
+
"spec-strict-refs": "off",
|
|
318
|
+
"tag-description": "warn",
|
|
319
|
+
"tags-alphabetical": "off",
|
|
205
320
|
},
|
|
206
321
|
"oas3_0Decorators": {},
|
|
207
322
|
"oas3_0Preprocessors": {},
|
|
@@ -209,22 +324,61 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
209
324
|
"array-parameter-serialization": "off",
|
|
210
325
|
"boolean-parameter-prefixes": "error",
|
|
211
326
|
"component-name-unique": "off",
|
|
327
|
+
"info-contact": "off",
|
|
328
|
+
"info-license": "warn",
|
|
329
|
+
"info-license-strict": "warn",
|
|
330
|
+
"info-license-url": "off",
|
|
331
|
+
"no-ambiguous-paths": "warn",
|
|
212
332
|
"no-empty-servers": "error",
|
|
333
|
+
"no-enum-type-mismatch": "error",
|
|
213
334
|
"no-example-value-and-externalValue": "error",
|
|
335
|
+
"no-http-verbs-in-paths": "off",
|
|
336
|
+
"no-identical-paths": "error",
|
|
214
337
|
"no-invalid-media-type-examples": {
|
|
215
338
|
"allowAdditionalProperties": false,
|
|
216
339
|
"severity": "warn",
|
|
217
340
|
},
|
|
341
|
+
"no-invalid-parameter-examples": "off",
|
|
342
|
+
"no-invalid-schema-examples": "off",
|
|
343
|
+
"no-path-trailing-slash": "error",
|
|
344
|
+
"no-required-schema-properties-undefined": "off",
|
|
218
345
|
"no-server-example.com": "warn",
|
|
219
346
|
"no-server-trailing-slash": "error",
|
|
220
347
|
"no-server-variables-empty-enum": "error",
|
|
221
348
|
"no-undefined-server-variable": "error",
|
|
349
|
+
"no-unresolved-refs": "error",
|
|
222
350
|
"no-unused-components": "warn",
|
|
351
|
+
"operation-2xx-response": "error",
|
|
223
352
|
"operation-4xx-problem-details-rfc7807": "off",
|
|
353
|
+
"operation-4xx-response": "off",
|
|
354
|
+
"operation-description": "off",
|
|
355
|
+
"operation-operationId": "warn",
|
|
356
|
+
"operation-operationId-unique": "error",
|
|
357
|
+
"operation-operationId-url-safe": "error",
|
|
358
|
+
"operation-parameters-unique": "error",
|
|
359
|
+
"operation-singular-tag": "off",
|
|
360
|
+
"operation-summary": "error",
|
|
361
|
+
"operation-tag-defined": "off",
|
|
362
|
+
"parameter-description": "off",
|
|
363
|
+
"path-declaration-must-exist": "error",
|
|
364
|
+
"path-excludes-patterns": "off",
|
|
365
|
+
"path-http-verbs-order": "off",
|
|
366
|
+
"path-not-include-query": "error",
|
|
367
|
+
"path-parameters-defined": "error",
|
|
368
|
+
"path-params-defined": "off",
|
|
369
|
+
"path-segment-plural": "off",
|
|
370
|
+
"paths-kebab-case": "off",
|
|
224
371
|
"request-mime-type": "off",
|
|
372
|
+
"required-string-property-missing-min-length": "off",
|
|
373
|
+
"response-contains-header": "off",
|
|
225
374
|
"response-contains-property": "off",
|
|
226
375
|
"response-mime-type": "off",
|
|
376
|
+
"scalar-property-missing-example": "off",
|
|
377
|
+
"security-defined": "error",
|
|
227
378
|
"spec-components-invalid-map-name": "error",
|
|
379
|
+
"spec-strict-refs": "off",
|
|
380
|
+
"tag-description": "warn",
|
|
381
|
+
"tags-alphabetical": "off",
|
|
228
382
|
},
|
|
229
383
|
"oas3_1Decorators": {},
|
|
230
384
|
"oas3_1Preprocessors": {},
|
|
@@ -232,49 +386,14 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
232
386
|
"array-parameter-serialization": "off",
|
|
233
387
|
"boolean-parameter-prefixes": "error",
|
|
234
388
|
"component-name-unique": "off",
|
|
235
|
-
"no-empty-servers": "error",
|
|
236
|
-
"no-example-value-and-externalValue": "error",
|
|
237
|
-
"no-invalid-media-type-examples": "warn",
|
|
238
|
-
"no-server-example.com": "warn",
|
|
239
|
-
"no-server-trailing-slash": "error",
|
|
240
|
-
"no-server-variables-empty-enum": "error",
|
|
241
|
-
"no-undefined-server-variable": "error",
|
|
242
|
-
"no-unused-components": "warn",
|
|
243
|
-
"operation-4xx-problem-details-rfc7807": "off",
|
|
244
|
-
"request-mime-type": "off",
|
|
245
|
-
"response-contains-property": "off",
|
|
246
|
-
"response-mime-type": "off",
|
|
247
|
-
"spec-components-invalid-map-name": "error",
|
|
248
|
-
},
|
|
249
|
-
"preprocessors": {},
|
|
250
|
-
"recommendedFallback": undefined,
|
|
251
|
-
"rules": {
|
|
252
|
-
"assertions": [
|
|
253
|
-
{
|
|
254
|
-
"assertionId": "rule/path-item-get-defined",
|
|
255
|
-
"defined": true,
|
|
256
|
-
"message": "Every path item must have a GET operation.",
|
|
257
|
-
"property": "get",
|
|
258
|
-
"subject": "PathItem",
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
"assertionId": "rule/tag-description",
|
|
262
|
-
"message": "Tag description must be at least 13 characters and end with a full stop.",
|
|
263
|
-
"minLength": 13,
|
|
264
|
-
"pattern": "/\\.$/",
|
|
265
|
-
"property": "description",
|
|
266
|
-
"severity": "error",
|
|
267
|
-
"subject": "Tag",
|
|
268
|
-
},
|
|
269
|
-
],
|
|
270
|
-
"boolean-parameter-prefixes": "error",
|
|
271
389
|
"info-contact": "off",
|
|
272
390
|
"info-license": "warn",
|
|
273
391
|
"info-license-strict": "warn",
|
|
274
392
|
"info-license-url": "off",
|
|
275
|
-
"local/operation-id-not-test": "error",
|
|
276
393
|
"no-ambiguous-paths": "warn",
|
|
394
|
+
"no-empty-servers": "error",
|
|
277
395
|
"no-enum-type-mismatch": "error",
|
|
396
|
+
"no-example-value-and-externalValue": "error",
|
|
278
397
|
"no-http-verbs-in-paths": "off",
|
|
279
398
|
"no-identical-paths": "error",
|
|
280
399
|
"no-invalid-media-type-examples": "warn",
|
|
@@ -282,8 +401,14 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
282
401
|
"no-invalid-schema-examples": "off",
|
|
283
402
|
"no-path-trailing-slash": "error",
|
|
284
403
|
"no-required-schema-properties-undefined": "off",
|
|
404
|
+
"no-server-example.com": "warn",
|
|
405
|
+
"no-server-trailing-slash": "error",
|
|
406
|
+
"no-server-variables-empty-enum": "error",
|
|
407
|
+
"no-undefined-server-variable": "error",
|
|
285
408
|
"no-unresolved-refs": "error",
|
|
409
|
+
"no-unused-components": "warn",
|
|
286
410
|
"operation-2xx-response": "error",
|
|
411
|
+
"operation-4xx-problem-details-rfc7807": "off",
|
|
287
412
|
"operation-4xx-response": "off",
|
|
288
413
|
"operation-description": "off",
|
|
289
414
|
"operation-operationId": "warn",
|
|
@@ -302,14 +427,45 @@ exports[`resolveStyleguideConfig should resolve extends with local file config w
|
|
|
302
427
|
"path-params-defined": "off",
|
|
303
428
|
"path-segment-plural": "off",
|
|
304
429
|
"paths-kebab-case": "off",
|
|
430
|
+
"request-mime-type": "off",
|
|
305
431
|
"required-string-property-missing-min-length": "off",
|
|
306
432
|
"response-contains-header": "off",
|
|
433
|
+
"response-contains-property": "off",
|
|
434
|
+
"response-mime-type": "off",
|
|
307
435
|
"scalar-property-missing-example": "off",
|
|
308
436
|
"security-defined": "error",
|
|
309
|
-
"spec": "error",
|
|
437
|
+
"spec-components-invalid-map-name": "error",
|
|
310
438
|
"spec-strict-refs": "off",
|
|
311
439
|
"tag-description": "warn",
|
|
312
440
|
"tags-alphabetical": "off",
|
|
313
441
|
},
|
|
442
|
+
"preprocessors": {},
|
|
443
|
+
"recommendedFallback": undefined,
|
|
444
|
+
"rules": {
|
|
445
|
+
"assertions": [
|
|
446
|
+
{
|
|
447
|
+
"assertionId": "rule/path-item-get-defined",
|
|
448
|
+
"defined": true,
|
|
449
|
+
"message": "Every path item must have a GET operation.",
|
|
450
|
+
"property": "get",
|
|
451
|
+
"subject": "PathItem",
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"assertionId": "rule/tag-description",
|
|
455
|
+
"message": "Tag description must be at least 13 characters and end with a full stop.",
|
|
456
|
+
"minLength": 13,
|
|
457
|
+
"pattern": "/\\.$/",
|
|
458
|
+
"property": "description",
|
|
459
|
+
"severity": "error",
|
|
460
|
+
"subject": "Tag",
|
|
461
|
+
},
|
|
462
|
+
],
|
|
463
|
+
"boolean-parameter-prefixes": "error",
|
|
464
|
+
"local/operation-id-not-test": "error",
|
|
465
|
+
"no-invalid-media-type-examples": "warn",
|
|
466
|
+
"operation-2xx-response": "error",
|
|
467
|
+
"operation-4xx-response": "off",
|
|
468
|
+
"struct": "error",
|
|
469
|
+
},
|
|
314
470
|
}
|
|
315
471
|
`;
|