@amritk/lint 0.4.2 → 0.4.4

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.
Files changed (39) hide show
  1. package/AI.md +16 -2
  2. package/README.md +43 -6
  3. package/dist/core/bounded-cache.d.ts +18 -0
  4. package/dist/core/bounded-cache.js +20 -0
  5. package/dist/core/filter-expression.d.ts +60 -0
  6. package/dist/core/filter-expression.js +320 -0
  7. package/dist/core/filter.d.ts +25 -0
  8. package/dist/core/filter.js +206 -0
  9. package/dist/core/index.d.ts +2 -0
  10. package/dist/core/index.js +4 -0
  11. package/dist/core/jsonpath.d.ts +1 -1
  12. package/dist/core/jsonpath.js +24 -72
  13. package/dist/functions/alphabetical.js +3 -1
  14. package/dist/functions/casing.js +13 -10
  15. package/dist/functions/pattern.js +2 -1
  16. package/dist/index.d.ts +49 -3
  17. package/dist/index.js +82 -23
  18. package/dist/parsers/depth.d.ts +21 -0
  19. package/dist/parsers/depth.js +28 -0
  20. package/dist/parsers/index.d.ts +1 -0
  21. package/dist/parsers/index.js +3 -0
  22. package/dist/parsers/json.js +16 -0
  23. package/dist/parsers/yaml.js +16 -8
  24. package/dist/rules/openapi/functions/oas-schema.d.ts +3 -3
  25. package/dist/rules/openapi/schemas/index.d.ts +3 -3
  26. package/dist/rules/openapi/schemas/index.js +10 -8
  27. package/dist/rules/openapi/schemas/oas20.d.ts +2 -0
  28. package/dist/rules/openapi/schemas/oas20.js +4 -0
  29. package/dist/rules/openapi/schemas/oas30.d.ts +2 -0
  30. package/dist/rules/openapi/schemas/oas30.js +4 -0
  31. package/dist/rules/openapi/schemas/oas31.d.ts +2 -0
  32. package/dist/rules/openapi/schemas/oas31.js +4 -0
  33. package/dist/rules/openapi/schemas/oas32.d.ts +2 -0
  34. package/dist/rules/openapi/schemas/oas32.js +4 -0
  35. package/package.json +6 -4
  36. package/dist/rules/openapi/schemas/oas20.json +0 -1
  37. package/dist/rules/openapi/schemas/oas30.json +0 -1
  38. package/dist/rules/openapi/schemas/oas31.json +0 -1
  39. package/dist/rules/openapi/schemas/oas32.json +0 -1
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { createRequire } from "node:module";
3
- import { dirname, isAbsolute, resolve as resolvePath } from "node:path";
4
- import { createRuleset as createCoreRuleset, lintWithResult } from "./core/index.js";
3
+ import { dirname, isAbsolute, resolve as resolvePath, sep } from "node:path";
4
+ import { createBoundedCache, createRuleset as createCoreRuleset, lintWithResult } from "./core/index.js";
5
5
  import { createFixPlugin, FIX_PLUGIN_NAME } from "./fix/index.js";
6
6
  import { builtinFunctions } from "./functions/index.js";
7
7
  import { parseWithPointers } from "./parsers/index.js";
@@ -17,9 +17,19 @@ const loadRulesetFile = (file) => {
17
17
  const module = require2(file);
18
18
  return module.default ?? module;
19
19
  };
20
- const resolveNamedRuleset = (name, basePath = process.cwd()) => {
20
+ const assertWithinRoot = (file, restrictTo, what) => {
21
+ if (restrictTo === void 0)
22
+ return;
23
+ const root = resolvePath(restrictTo);
24
+ const resolved = resolvePath(file);
25
+ if (resolved !== root && !resolved.startsWith(root.endsWith(sep) ? root : `${root}${sep}`)) {
26
+ throw new Error(`${what} "${file}" resolves outside the permitted root ${root}`);
27
+ }
28
+ };
29
+ const resolveNamedRuleset = (name, basePath = process.cwd(), options = {}) => {
21
30
  if (name.startsWith(".") || isAbsolute(name)) {
22
31
  const file2 = resolvePath(basePath, name);
32
+ assertWithinRoot(file2, options.restrictTo, "Extended ruleset");
23
33
  return { definition: loadRulesetFile(file2), basePath: dirname(file2) };
24
34
  }
25
35
  let file;
@@ -28,10 +38,12 @@ const resolveNamedRuleset = (name, basePath = process.cwd()) => {
28
38
  } catch {
29
39
  throw new Error(`Cannot resolve extended ruleset "${name}" from ${basePath}`);
30
40
  }
41
+ assertWithinRoot(file, options.restrictTo, "Extended ruleset");
31
42
  return { definition: loadRulesetFile(file), basePath: dirname(file) };
32
43
  };
33
- const loadFunctionByName = (basePath, dir, name) => {
44
+ const loadFunctionByName = (basePath, dir, name, restrictTo) => {
34
45
  const baseFile = resolvePath(basePath, dir, name);
46
+ assertWithinRoot(baseFile, restrictTo, "Custom function");
35
47
  for (const candidate of [baseFile, `${baseFile}.js`, `${baseFile}.cjs`, `${baseFile}.mjs`]) {
36
48
  try {
37
49
  const resolvedFile = require2.resolve(candidate);
@@ -47,7 +59,7 @@ const loadFunctionByName = (basePath, dir, name) => {
47
59
  }
48
60
  throw new Error(`Cannot resolve custom function "${name}" from ${resolvePath(basePath, dir)}`);
49
61
  };
50
- const collectCustomFunctions = (definition, basePath, into, seen) => {
62
+ const collectCustomFunctions = (definition, basePath, into, seen, restrictTo) => {
51
63
  if (seen.has(definition))
52
64
  return;
53
65
  seen.add(definition);
@@ -60,36 +72,66 @@ const collectCustomFunctions = (definition, basePath, into, seen) => {
60
72
  if (seen.has(key))
61
73
  continue;
62
74
  seen.add(key);
63
- const resolved = resolveNamedRuleset(target, basePath);
64
- collectCustomFunctions(resolved.definition, resolved.basePath, into, seen);
75
+ const resolved = resolveNamedRuleset(target, basePath, { ...restrictTo !== void 0 ? { restrictTo } : {} });
76
+ collectCustomFunctions(resolved.definition, resolved.basePath, into, seen, restrictTo);
65
77
  } else {
66
- collectCustomFunctions(target, basePath, into, seen);
78
+ collectCustomFunctions(target, basePath, into, seen, restrictTo);
67
79
  }
68
80
  }
69
81
  }
70
82
  if (Array.isArray(definition.functions)) {
71
83
  const dir = definition.functionsDir ?? "functions";
72
84
  for (const name of definition.functions)
73
- into[name] = loadFunctionByName(basePath, dir, name);
85
+ into[name] = loadFunctionByName(basePath, dir, name, restrictTo);
74
86
  }
75
87
  };
76
- const createRuleset = (definition, basePath) => {
77
- const resolved = definition ?? {};
88
+ const buildRuleset = (definition, basePath, restrictTo) => {
78
89
  let functions = builtinFunctions;
79
90
  const custom = {};
80
- collectCustomFunctions(resolved, basePath ?? process.cwd(), custom, /* @__PURE__ */ new Set());
91
+ collectCustomFunctions(definition, basePath ?? process.cwd(), custom, /* @__PURE__ */ new Set(), restrictTo);
81
92
  if (Object.keys(custom).length > 0)
82
93
  functions = { ...builtinFunctions, ...custom };
83
- return createCoreRuleset(resolved, {
94
+ return createCoreRuleset(definition, {
84
95
  functions,
85
- resolve: resolveNamedRuleset,
96
+ resolve: (name, from) => resolveNamedRuleset(name, from, { ...restrictTo !== void 0 ? { restrictTo } : {} }),
86
97
  ...basePath !== void 0 ? { basePath } : {}
87
98
  });
88
99
  };
100
+ const rulesetsByDefinition = /* @__PURE__ */ new WeakMap();
101
+ const emptyRulesets = createBoundedCache(16);
102
+ const createRuleset = (definition, basePath, options = {}) => {
103
+ const { restrictTo } = options;
104
+ const key = `${restrictTo ?? ""}\0${basePath ?? process.cwd()}`;
105
+ if (definition === void 0) {
106
+ const cached2 = emptyRulesets.get(key);
107
+ if (cached2)
108
+ return cached2;
109
+ const built2 = buildRuleset({}, basePath, restrictTo);
110
+ emptyRulesets.set(key, built2);
111
+ return built2;
112
+ }
113
+ let byBasePath = rulesetsByDefinition.get(definition);
114
+ if (!byBasePath) {
115
+ byBasePath = createBoundedCache(16);
116
+ rulesetsByDefinition.set(definition, byBasePath);
117
+ }
118
+ const cached = byBasePath.get(key);
119
+ if (cached)
120
+ return cached;
121
+ const built = buildRuleset(definition, basePath, restrictTo);
122
+ byBasePath.set(key, built);
123
+ return built;
124
+ };
89
125
  const lintDocument = async (input, options = {}) => (await lintDocumentWithResult(input, options)).diagnostics;
90
126
  const lintDocumentWithResult = async (input, options = {}) => {
91
- const { ruleset: rulesetDefinition, rulesetBasePath, resolve, plugins, ...documentOptions } = options;
92
- const ruleset = createRuleset(rulesetDefinition, rulesetBasePath);
127
+ const { ruleset: rulesetDefinition, rulesetBasePath, restrictTo, ...rest } = options;
128
+ const ruleset = createRuleset(rulesetDefinition, rulesetBasePath, {
129
+ ...restrictTo !== void 0 ? { restrictTo } : {}
130
+ });
131
+ return runLint(input, ruleset, rest);
132
+ };
133
+ const runLint = async (input, ruleset, options) => {
134
+ const { resolve, plugins, ...documentOptions } = options;
93
135
  return lintWithResult(input, {
94
136
  ...documentOptions,
95
137
  ruleset,
@@ -97,23 +139,40 @@ const lintDocumentWithResult = async (input, options = {}) => {
97
139
  ...plugins ? { plugins } : {}
98
140
  });
99
141
  };
142
+ const appliedKey = (fix) => `${fix.code}\0${fix.path.map((segment) => typeof segment === "number" ? `[${segment}]` : `.${segment}`).join("")}`;
100
143
  const MAX_FIX_PASSES = 10;
101
144
  const fixDocument = async (input, options = {}) => {
102
- const { fixers = {}, safeOnly, ...lintOptions } = options;
145
+ const { fixers = {}, safeOnly, ruleset: rulesetDefinition, rulesetBasePath, restrictTo, ...lintOptions } = options;
103
146
  const plugin = createFixPlugin(fixers, { safeOnly: safeOnly !== false });
147
+ const ruleset = createRuleset(rulesetDefinition, rulesetBasePath, {
148
+ ...restrictTo !== void 0 ? { restrictTo } : {}
149
+ });
104
150
  let current = input;
151
+ let passes = 0;
152
+ let converged = false;
105
153
  const applied = [];
154
+ const seen = /* @__PURE__ */ new Set();
106
155
  for (let pass = 0; pass < MAX_FIX_PASSES; pass++) {
107
- const result = await lintDocumentWithResult(current, { ...lintOptions, plugins: [plugin] });
108
- if (result.output === void 0 || result.output === current)
156
+ const result = await runLint(current, ruleset, { ...lintOptions, plugins: [plugin] });
157
+ if (result.output === void 0 || result.output === current) {
158
+ converged = true;
109
159
  break;
160
+ }
110
161
  current = result.output;
162
+ passes++;
111
163
  const data = result.pluginData[FIX_PLUGIN_NAME];
112
- if (data)
113
- applied.push(...data.applied);
164
+ if (data) {
165
+ for (const fix of data.applied) {
166
+ const key = appliedKey(fix);
167
+ if (seen.has(key))
168
+ continue;
169
+ seen.add(key);
170
+ applied.push(fix);
171
+ }
172
+ }
114
173
  }
115
- const remaining = await lintDocument(current, lintOptions);
116
- return { output: current, fixed: applied.length > 0, remaining, applied };
174
+ const remaining = (await runLint(current, ruleset, lintOptions)).diagnostics;
175
+ return { output: current, fixed: applied.length > 0, remaining, applied, converged, passes };
117
176
  };
118
177
  export {
119
178
  FIX_PLUGIN_NAME2 as FIX_PLUGIN_NAME,
@@ -0,0 +1,21 @@
1
+ /**
2
+ * The deepest `{`/`[` nesting a JSON document may use. This matches the limit
3
+ * `@amritk/yaml` enforces while parsing, so both parsers refuse the same
4
+ * documents and report it the same way.
5
+ */
6
+ export declare const MAX_NESTING_DEPTH = 1000;
7
+ /**
8
+ * Finds the offset of the bracket that first pushes `source` past `limit` levels
9
+ * of nesting, or `-1` when the document stays within it.
10
+ *
11
+ * We need this *before* handing the text to a parser: `'['.repeat(20000)` is a
12
+ * 40 KB file, and a recursive-descent JSON parser (jsonc-parser, and then
13
+ * `getNodeValue` after it) blows the call stack on it — a `RangeError` that
14
+ * escapes as a crash instead of arriving as a diagnostic like every other
15
+ * malformed document does. Counting brackets is a single linear scan, so the
16
+ * check costs nothing on real files.
17
+ *
18
+ * Only string literals need to be skipped; JSON has no comments, and a `[` inside
19
+ * a string must not count toward the depth.
20
+ */
21
+ export declare const findExcessiveNesting: (source: string, limit?: number) => number;
@@ -0,0 +1,28 @@
1
+ const MAX_NESTING_DEPTH = 1e3;
2
+ const findExcessiveNesting = (source, limit = MAX_NESTING_DEPTH) => {
3
+ let depth = 0;
4
+ let inString = false;
5
+ for (let i = 0; i < source.length; i++) {
6
+ const ch = source[i];
7
+ if (inString) {
8
+ if (ch === "\\")
9
+ i++;
10
+ else if (ch === '"')
11
+ inString = false;
12
+ continue;
13
+ }
14
+ if (ch === '"')
15
+ inString = true;
16
+ else if (ch === "{" || ch === "[") {
17
+ depth++;
18
+ if (depth > limit)
19
+ return i;
20
+ } else if (ch === "}" || ch === "]")
21
+ depth--;
22
+ }
23
+ return -1;
24
+ };
25
+ export {
26
+ MAX_NESTING_DEPTH,
27
+ findExcessiveNesting
28
+ };
@@ -1,3 +1,4 @@
1
+ export { findExcessiveNesting, MAX_NESTING_DEPTH } from './depth.js';
1
2
  export { type ApplyEditOpsResult, applyEditOps, applyEditOpsWithChanges, type EditOp } from './edit-model.js';
2
3
  export { parseJson } from './json.js';
3
4
  export { createLineMap, type LineMap } from './lines.js';
@@ -1,3 +1,4 @@
1
+ import { findExcessiveNesting, MAX_NESTING_DEPTH } from "./depth.js";
1
2
  import { applyEditOps, applyEditOpsWithChanges } from "./edit-model.js";
2
3
  import { parseJson } from "./json.js";
3
4
  import { createLineMap } from "./lines.js";
@@ -15,10 +16,12 @@ const parseWithPointers = (source, options = {}) => {
15
16
  };
16
17
  export {
17
18
  DiagnosticSeverity,
19
+ MAX_NESTING_DEPTH,
18
20
  applyEditOps,
19
21
  applyEditOpsWithChanges,
20
22
  createLineMap,
21
23
  detectFormat,
24
+ findExcessiveNesting,
22
25
  parseJson,
23
26
  parseWithPointers,
24
27
  parseYaml
@@ -1,8 +1,24 @@
1
1
  import { findNodeAtLocation, getNodeValue, parseTree, printParseErrorCode } from "jsonc-parser";
2
+ import { findExcessiveNesting, MAX_NESTING_DEPTH } from "./depth.js";
2
3
  import { createLineMap } from "./lines.js";
3
4
  import { DiagnosticSeverity } from "./types.js";
4
5
  const parseJson = (source) => {
5
6
  const lineMap = createLineMap(source);
7
+ const excessive = findExcessiveNesting(source);
8
+ if (excessive !== -1) {
9
+ const position = lineMap.positionAt(excessive);
10
+ return {
11
+ data: void 0,
12
+ diagnostics: [
13
+ {
14
+ message: `Exceeded maximum nesting depth of ${MAX_NESTING_DEPTH}`,
15
+ severity: DiagnosticSeverity.Error,
16
+ range: { start: position, end: position }
17
+ }
18
+ ],
19
+ getLocationForJsonPath: () => void 0
20
+ };
21
+ }
6
22
  const errors = [];
7
23
  const root = parseTree(source, errors, { allowTrailingComma: false, disallowComments: true });
8
24
  const data = root ? getNodeValue(root) : void 0;
@@ -3,23 +3,31 @@ import { createLineMap } from "./lines.js";
3
3
  import { DiagnosticSeverity } from "./types.js";
4
4
  const pathKey = (path) => path.map((segment) => typeof segment === "number" ? `[${segment}]` : `.${segment}`).join("");
5
5
  const serializeComplexKey = (node) => {
6
- if (isSeq(node))
7
- return `[${node.items.map(serializeComplexKey).join(",")}]`;
6
+ if (isSeq(node)) {
7
+ return node.items.length === 0 ? "[]" : `[ ${node.items.map(flowText).join(", ")} ]`;
8
+ }
8
9
  if (isMap(node)) {
9
- return `{${node.items.filter(isPair).map((pair) => `${serializeComplexKey(pair.key)}:${pair.value ? serializeComplexKey(pair.value) : "null"}`).join(",")}}`;
10
+ const pairs = node.items.filter(isPair).map((pair) => `${flowText(pair.key)}: ${pair.value ? flowText(pair.value) : "null"}`);
11
+ return pairs.length === 0 ? "{}" : `{ ${pairs.join(", ")} }`;
12
+ }
13
+ return flowText(node);
14
+ };
15
+ const flowText = (node) => {
16
+ if (isScalar(node)) {
17
+ const v = node.value;
18
+ return typeof v === "string" ? v : v === null ? "null" : String(v);
10
19
  }
11
20
  if (isAlias(node))
12
- return `*${node.source}`;
13
- const v = node.value;
14
- return typeof v === "string" ? JSON.stringify(v) : v === null ? "null" : String(v);
21
+ return node.target ? flowText(node.target) : `*${node.source}`;
22
+ return serializeComplexKey(node);
15
23
  };
16
24
  const keyToString = (key) => {
17
25
  if (isScalar(key)) {
18
26
  const v = key.value;
19
- return typeof v === "string" ? v : v === null ? "null" : String(v);
27
+ return typeof v === "string" ? v : v === null ? "" : String(v);
20
28
  }
21
29
  if (isAlias(key))
22
- return `*${key.source}`;
30
+ return key.target ? keyToString(key.target) : `*${key.source}`;
23
31
  return serializeComplexKey(key);
24
32
  };
25
33
  const parseYaml = (source, options = {}) => {
@@ -6,10 +6,10 @@ export type IOasSchemaOptions = {
6
6
  };
7
7
  /**
8
8
  * Validates a whole OpenAPI document against the official structural meta-schema
9
- * for a given `version`, loading that version's schema lazily on first use. The
9
+ * for a given `version`, parsing that version's schema on first use. The
10
10
  * `*-schema` rules are format-gated to a single version, so linting a document
11
- * only ever reads its own version's schema file — the other versions' schemas
12
- * are never loaded. Delegates the actual validation to the built-in `schema`
11
+ * only ever parses its own version's schema — the other versions stay as
12
+ * unparsed text. Delegates the actual validation to the built-in `schema`
13
13
  * function (which caches the prepared validator by schema identity).
14
14
  */
15
15
  export declare const oasSchema: RulesetFunction<unknown, IOasSchemaOptions>;
@@ -1,8 +1,8 @@
1
1
  /** The OpenAPI versions with a bundled structural meta-schema. */
2
2
  export type OasVersion = '2.0' | '3.0' | '3.1' | '3.2';
3
3
  /**
4
- * Lazily loads (and memoizes) the official structural meta-schema for one
5
- * OpenAPI version. The returned object is stable across calls, so downstream
6
- * validator caches (keyed by schema identity) stay warm.
4
+ * Parses (and memoizes) the official structural meta-schema for one OpenAPI
5
+ * version. The returned object is stable across calls, so downstream validator
6
+ * caches (keyed by schema identity) stay warm.
7
7
  */
8
8
  export declare const loadOasSchema: (version: OasVersion) => object;
@@ -1,16 +1,18 @@
1
- import { createRequire } from "node:module";
2
- const require2 = createRequire(import.meta.url);
3
- const SCHEMA_FILES = {
4
- "2.0": "./oas20.json",
5
- "3.0": "./oas30.json",
6
- "3.1": "./oas31.json",
7
- "3.2": "./oas32.json"
1
+ import { oas20Json } from "./oas20.js";
2
+ import { oas30Json } from "./oas30.js";
3
+ import { oas31Json } from "./oas31.js";
4
+ import { oas32Json } from "./oas32.js";
5
+ const SCHEMA_TEXT = {
6
+ "2.0": oas20Json,
7
+ "3.0": oas30Json,
8
+ "3.1": oas31Json,
9
+ "3.2": oas32Json
8
10
  };
9
11
  const cache = /* @__PURE__ */ new Map();
10
12
  const loadOasSchema = (version) => {
11
13
  let schema = cache.get(version);
12
14
  if (!schema) {
13
- schema = require2(SCHEMA_FILES[version]);
15
+ schema = JSON.parse(SCHEMA_TEXT[version]);
14
16
  cache.set(version, schema);
15
17
  }
16
18
  return schema;
@@ -0,0 +1,2 @@
1
+ /** The vendored OpenAPI meta-schema from `oas20.json`, as JSON text. Parsed on first use. */
2
+ export declare const oas20Json = "{\"title\":\"A JSON Schema for Swagger 2.0 API.\",\"type\":\"object\",\"required\":[\"swagger\",\"info\",\"paths\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"swagger\":{\"type\":\"string\",\"enum\":[\"2.0\"]},\"info\":{\"$ref\":\"#/definitions/info\"},\"host\":{\"type\":\"string\",\"pattern\":\"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$\"},\"basePath\":{\"type\":\"string\",\"pattern\":\"^/\"},\"schemes\":{\"$ref\":\"#/definitions/schemesList\"},\"consumes\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"produces\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"paths\":{\"$ref\":\"#/definitions/paths\"},\"definitions\":{\"$ref\":\"#/definitions/definitions\"},\"parameters\":{\"$ref\":\"#/definitions/parameterDefinitions\"},\"responses\":{\"$ref\":\"#/definitions/responseDefinitions\"},\"security\":{\"$ref\":\"#/definitions/security\"},\"securityDefinitions\":{\"$ref\":\"#/definitions/securityDefinitions\"},\"tags\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/tag\"},\"uniqueItems\":true},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"}},\"definitions\":{\"_positiveInteger\":{\"type\":\"integer\",\"minimum\":0},\"_positiveIntegerDefault0\":{\"type\":\"integer\",\"minimum\":0,\"default\":0},\"_stringArray\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1,\"uniqueItems\":true},\"_typeEnum\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"minItems\":1,\"uniqueItems\":true}]},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"multipleOf\":{\"type\":\"number\",\"exclusiveMinimum\":0},\"maximum\":{\"type\":\"number\"},\"exclusiveMaximum\":{\"type\":\"boolean\",\"default\":false},\"minimum\":{\"type\":\"number\"},\"exclusiveMinimum\":{\"type\":\"boolean\",\"default\":false},\"maxLength\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minLength\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"pattern\":{\"type\":\"string\",\"format\":\"regex\"},\"maxItems\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minItems\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"uniqueItems\":{\"type\":\"boolean\",\"default\":false},\"enum\":{\"type\":\"array\",\"items\":{},\"minItems\":1,\"uniqueItems\":true},\"info\":{\"type\":\"object\",\"required\":[\"version\",\"title\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"title\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"termsOfService\":{\"type\":\"string\"},\"contact\":{\"$ref\":\"#/definitions/contact\"},\"license\":{\"$ref\":\"#/definitions/license\"}}},\"contact\":{\"type\":\"object\",\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"},\"email\":{\"type\":\"string\",\"format\":\"email\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"license\":{\"type\":\"object\",\"required\":[\"name\"],\"additionalProperties\":false,\"properties\":{\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"paths\":{\"type\":\"object\",\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"},\"^/\":{\"$ref\":\"#/definitions/pathItem\"}},\"additionalProperties\":false},\"definitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/schema\"}},\"parameterDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/parameter\"}},\"responseDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/response\"}},\"externalDocs\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"url\"],\"properties\":{\"description\":{\"type\":\"string\"},\"url\":{\"type\":\"string\",\"format\":\"uri\"}},\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}},\"examples\":{\"type\":\"object\",\"additionalProperties\":true},\"mimeType\":{\"type\":\"string\"},\"operation\":{\"type\":\"object\",\"required\":[\"responses\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"tags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"uniqueItems\":true},\"summary\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"operationId\":{\"type\":\"string\"},\"produces\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"consumes\":{\"allOf\":[{\"$ref\":\"#/definitions/mediaTypeList\"}]},\"parameters\":{\"$ref\":\"#/definitions/parametersList\"},\"responses\":{\"$ref\":\"#/definitions/responses\"},\"schemes\":{\"$ref\":\"#/definitions/schemesList\"},\"deprecated\":{\"type\":\"boolean\",\"default\":false},\"security\":{\"$ref\":\"#/definitions/security\"}}},\"pathItem\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"$ref\":{\"type\":\"string\"},\"get\":{\"$ref\":\"#/definitions/operation\"},\"put\":{\"$ref\":\"#/definitions/operation\"},\"post\":{\"$ref\":\"#/definitions/operation\"},\"delete\":{\"$ref\":\"#/definitions/operation\"},\"options\":{\"$ref\":\"#/definitions/operation\"},\"head\":{\"$ref\":\"#/definitions/operation\"},\"patch\":{\"$ref\":\"#/definitions/operation\"},\"parameters\":{\"$ref\":\"#/definitions/parametersList\"}}},\"responses\":{\"type\":\"object\",\"minProperties\":1,\"additionalProperties\":false,\"patternProperties\":{\"^([0-9]{3})$|^(default)$\":{\"$ref\":\"#/definitions/responseValue\"},\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"not\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}}}},\"responseValue\":{\"oneOf\":[{\"$ref\":\"#/definitions/response\"},{\"$ref\":\"#/definitions/jsonReference\"}]},\"response\":{\"type\":\"object\",\"required\":[\"description\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"description\":{\"type\":\"string\"},\"schema\":{\"oneOf\":[{\"$ref\":\"#/definitions/schema\"},{\"$ref\":\"#/definitions/fileSchema\"}]},\"headers\":{\"$ref\":\"#/definitions/headers\"},\"examples\":{\"$ref\":\"#/definitions/examples\"}}},\"headers\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/header\"}},\"header\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"integer\",\"boolean\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"},\"description\":{\"type\":\"string\"}}},\"vendorExtension\":{\"additionalProperties\":true,\"additionalItems\":true},\"bodyParameter\":{\"type\":\"object\",\"required\":[\"name\",\"in\",\"schema\"],\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"in\":{\"type\":\"string\",\"enum\":[\"body\"]},\"required\":{\"type\":\"boolean\",\"default\":false},\"schema\":{\"$ref\":\"#/definitions/schema\"}}},\"headerParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"header\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"queryParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"query\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"allowEmptyValue\":{\"type\":\"boolean\",\"default\":false},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormatWithMulti\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"formDataParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"required\":{\"type\":\"boolean\",\"default\":false},\"in\":{\"type\":\"string\",\"enum\":[\"formData\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"allowEmptyValue\":{\"type\":\"boolean\",\"default\":false},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\",\"file\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormatWithMulti\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"pathParameterSubSchema\":{\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"required\":[\"required\"],\"properties\":{\"required\":{\"type\":\"boolean\",\"enum\":[true]},\"in\":{\"type\":\"string\",\"enum\":[\"path\"]},\"description\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"boolean\",\"integer\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"nonBodyParameter\":{\"type\":\"object\",\"required\":[\"name\",\"in\",\"type\"],\"oneOf\":[{\"$ref\":\"#/definitions/headerParameterSubSchema\"},{\"$ref\":\"#/definitions/formDataParameterSubSchema\"},{\"$ref\":\"#/definitions/queryParameterSubSchema\"},{\"$ref\":\"#/definitions/pathParameterSubSchema\"}]},\"parameter\":{\"oneOf\":[{\"$ref\":\"#/definitions/bodyParameter\"},{\"$ref\":\"#/definitions/nonBodyParameter\"}]},\"schema\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"$ref\":{\"type\":\"string\"},\"format\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"multipleOf\":{\"type\":\"number\",\"exclusiveMinimum\":0},\"maximum\":{\"type\":\"number\"},\"exclusiveMaximum\":{\"type\":\"boolean\",\"default\":false},\"minimum\":{\"type\":\"number\"},\"exclusiveMinimum\":{\"type\":\"boolean\",\"default\":false},\"maxLength\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minLength\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"pattern\":{\"type\":\"string\",\"format\":\"regex\"},\"maxItems\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minItems\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"uniqueItems\":{\"type\":\"boolean\",\"default\":false},\"maxProperties\":{\"$ref\":\"#/definitions/_positiveInteger\"},\"minProperties\":{\"$ref\":\"#/definitions/_positiveIntegerDefault0\"},\"required\":{\"$ref\":\"#/definitions/_stringArray\"},\"enum\":{\"type\":\"array\",\"items\":{},\"minItems\":1,\"uniqueItems\":false},\"additionalProperties\":{\"anyOf\":[{\"$ref\":\"#/definitions/schema\"},{\"type\":\"boolean\"}],\"default\":{}},\"type\":{\"$ref\":\"#/definitions/_typeEnum\"},\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/schema\"},{\"type\":\"array\",\"minItems\":1,\"items\":{\"$ref\":\"#/definitions/schema\"}}],\"default\":{}},\"allOf\":{\"type\":\"array\",\"minItems\":1,\"items\":{\"$ref\":\"#/definitions/schema\"}},\"properties\":{\"type\":\"object\",\"additionalProperties\":{\"$ref\":\"#/definitions/schema\"},\"default\":{}},\"discriminator\":{\"type\":\"string\"},\"readOnly\":{\"type\":\"boolean\",\"default\":false},\"xml\":{\"$ref\":\"#/definitions/xml\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"example\":{}}},\"fileSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"format\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"default\":{},\"required\":{\"$ref\":\"#/definitions/_stringArray\"},\"type\":{\"type\":\"string\",\"enum\":[\"file\"]},\"readOnly\":{\"type\":\"boolean\",\"default\":false},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"},\"example\":{}}},\"primitivesItems\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"string\",\"number\",\"integer\",\"boolean\",\"array\"]},\"format\":{\"type\":\"string\"},\"items\":{\"$ref\":\"#/definitions/primitivesItems\"},\"collectionFormat\":{\"$ref\":\"#/definitions/collectionFormat\"},\"default\":{\"$ref\":\"#/definitions/default\"},\"maximum\":{\"$ref\":\"#/definitions/maximum\"},\"exclusiveMaximum\":{\"$ref\":\"#/definitions/exclusiveMaximum\"},\"minimum\":{\"$ref\":\"#/definitions/minimum\"},\"exclusiveMinimum\":{\"$ref\":\"#/definitions/exclusiveMinimum\"},\"maxLength\":{\"$ref\":\"#/definitions/maxLength\"},\"minLength\":{\"$ref\":\"#/definitions/minLength\"},\"pattern\":{\"$ref\":\"#/definitions/pattern\"},\"maxItems\":{\"$ref\":\"#/definitions/maxItems\"},\"minItems\":{\"$ref\":\"#/definitions/minItems\"},\"uniqueItems\":{\"$ref\":\"#/definitions/uniqueItems\"},\"enum\":{\"$ref\":\"#/definitions/enum\"},\"multipleOf\":{\"$ref\":\"#/definitions/multipleOf\"}}},\"security\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/securityRequirement\"},\"uniqueItems\":true},\"securityRequirement\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"uniqueItems\":true}},\"xml\":{\"type\":\"object\",\"additionalProperties\":false,\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"name\":{\"type\":\"string\"},\"namespace\":{\"type\":\"string\"},\"prefix\":{\"type\":\"string\"},\"attribute\":{\"type\":\"boolean\",\"default\":false},\"wrapped\":{\"type\":\"boolean\",\"default\":false}}},\"tag\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"name\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"name\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"externalDocs\":{\"$ref\":\"#/definitions/externalDocs\"}}},\"securityDefinitions\":{\"type\":\"object\",\"additionalProperties\":{\"oneOf\":[{\"$ref\":\"#/definitions/basicAuthenticationSecurity\"},{\"$ref\":\"#/definitions/apiKeySecurity\"},{\"$ref\":\"#/definitions/oauth2ImplicitSecurity\"},{\"$ref\":\"#/definitions/oauth2PasswordSecurity\"},{\"$ref\":\"#/definitions/oauth2ApplicationSecurity\"},{\"$ref\":\"#/definitions/oauth2AccessCodeSecurity\"}]}},\"basicAuthenticationSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"basic\"]},\"description\":{\"type\":\"string\"}}},\"apiKeySecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"name\",\"in\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"apiKey\"]},\"name\":{\"type\":\"string\"},\"in\":{\"type\":\"string\",\"enum\":[\"header\",\"query\"]},\"description\":{\"type\":\"string\"}}},\"oauth2ImplicitSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"authorizationUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"implicit\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"authorizationUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2PasswordSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"password\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2ApplicationSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"application\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2AccessCodeSecurity\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"type\",\"flow\",\"authorizationUrl\",\"tokenUrl\"],\"patternProperties\":{\"^x-\":{\"$ref\":\"#/definitions/vendorExtension\"}},\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"oauth2\"]},\"flow\":{\"type\":\"string\",\"enum\":[\"accessCode\"]},\"scopes\":{\"$ref\":\"#/definitions/oauth2Scopes\"},\"authorizationUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"tokenUrl\":{\"type\":\"string\",\"format\":\"uri\"},\"description\":{\"type\":\"string\"}}},\"oauth2Scopes\":{\"type\":\"object\",\"additionalProperties\":{\"type\":\"string\"}},\"mediaTypeList\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/mimeType\"},\"uniqueItems\":true},\"parametersList\":{\"type\":\"array\",\"additionalItems\":false,\"items\":{\"oneOf\":[{\"$ref\":\"#/definitions/parameter\"},{\"$ref\":\"#/definitions/jsonReference\"}]},\"uniqueItems\":true},\"schemesList\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"enum\":[\"http\",\"https\",\"ws\",\"wss\"]},\"uniqueItems\":true},\"collectionFormat\":{\"type\":\"string\",\"enum\":[\"csv\",\"ssv\",\"tsv\",\"pipes\"],\"default\":\"csv\"},\"collectionFormatWithMulti\":{\"type\":\"string\",\"enum\":[\"csv\",\"ssv\",\"tsv\",\"pipes\",\"multi\"],\"default\":\"csv\"},\"jsonReference\":{\"type\":\"object\",\"required\":[\"$ref\"],\"additionalProperties\":false,\"properties\":{\"$ref\":{\"type\":\"string\"}}}}}";
@@ -0,0 +1,4 @@
1
+ const oas20Json = '{"title":"A JSON Schema for Swagger 2.0 API.","type":"object","required":["swagger","info","paths"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"swagger":{"type":"string","enum":["2.0"]},"info":{"$ref":"#/definitions/info"},"host":{"type":"string","pattern":"^[^{}/ :\\\\\\\\]+(?::\\\\d+)?$"},"basePath":{"type":"string","pattern":"^/"},"schemes":{"$ref":"#/definitions/schemesList"},"consumes":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"produces":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"paths":{"$ref":"#/definitions/paths"},"definitions":{"$ref":"#/definitions/definitions"},"parameters":{"$ref":"#/definitions/parameterDefinitions"},"responses":{"$ref":"#/definitions/responseDefinitions"},"security":{"$ref":"#/definitions/security"},"securityDefinitions":{"$ref":"#/definitions/securityDefinitions"},"tags":{"type":"array","items":{"$ref":"#/definitions/tag"},"uniqueItems":true},"externalDocs":{"$ref":"#/definitions/externalDocs"}},"definitions":{"_positiveInteger":{"type":"integer","minimum":0},"_positiveIntegerDefault0":{"type":"integer","minimum":0,"default":0},"_stringArray":{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true},"_typeEnum":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"},"minItems":1,"uniqueItems":true}]},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/_positiveInteger"},"minLength":{"$ref":"#/definitions/_positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"maxItems":{"$ref":"#/definitions/_positiveInteger"},"minItems":{"$ref":"#/definitions/_positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"enum":{"type":"array","items":{},"minItems":1,"uniqueItems":true},"info":{"type":"object","required":["version","title"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"title":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"termsOfService":{"type":"string"},"contact":{"$ref":"#/definitions/contact"},"license":{"$ref":"#/definitions/license"}}},"contact":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"email":{"type":"string","format":"email"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"license":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"paths":{"type":"object","patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"},"^/":{"$ref":"#/definitions/pathItem"}},"additionalProperties":false},"definitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/schema"}},"parameterDefinitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/parameter"}},"responseDefinitions":{"type":"object","additionalProperties":{"$ref":"#/definitions/response"}},"externalDocs":{"type":"object","additionalProperties":false,"required":["url"],"properties":{"description":{"type":"string"},"url":{"type":"string","format":"uri"}},"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}},"examples":{"type":"object","additionalProperties":true},"mimeType":{"type":"string"},"operation":{"type":"object","required":["responses"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"tags":{"type":"array","items":{"type":"string"},"uniqueItems":true},"summary":{"type":"string"},"description":{"type":"string"},"externalDocs":{"$ref":"#/definitions/externalDocs"},"operationId":{"type":"string"},"produces":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"consumes":{"allOf":[{"$ref":"#/definitions/mediaTypeList"}]},"parameters":{"$ref":"#/definitions/parametersList"},"responses":{"$ref":"#/definitions/responses"},"schemes":{"$ref":"#/definitions/schemesList"},"deprecated":{"type":"boolean","default":false},"security":{"$ref":"#/definitions/security"}}},"pathItem":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"$ref":{"type":"string"},"get":{"$ref":"#/definitions/operation"},"put":{"$ref":"#/definitions/operation"},"post":{"$ref":"#/definitions/operation"},"delete":{"$ref":"#/definitions/operation"},"options":{"$ref":"#/definitions/operation"},"head":{"$ref":"#/definitions/operation"},"patch":{"$ref":"#/definitions/operation"},"parameters":{"$ref":"#/definitions/parametersList"}}},"responses":{"type":"object","minProperties":1,"additionalProperties":false,"patternProperties":{"^([0-9]{3})$|^(default)$":{"$ref":"#/definitions/responseValue"},"^x-":{"$ref":"#/definitions/vendorExtension"}},"not":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}}}},"responseValue":{"oneOf":[{"$ref":"#/definitions/response"},{"$ref":"#/definitions/jsonReference"}]},"response":{"type":"object","required":["description"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"description":{"type":"string"},"schema":{"oneOf":[{"$ref":"#/definitions/schema"},{"$ref":"#/definitions/fileSchema"}]},"headers":{"$ref":"#/definitions/headers"},"examples":{"$ref":"#/definitions/examples"}}},"headers":{"type":"object","additionalProperties":{"$ref":"#/definitions/header"}},"header":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["string","number","integer","boolean","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"},"description":{"type":"string"}}},"vendorExtension":{"additionalProperties":true,"additionalItems":true},"bodyParameter":{"type":"object","required":["name","in","schema"],"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"description":{"type":"string"},"name":{"type":"string"},"in":{"type":"string","enum":["body"]},"required":{"type":"boolean","default":false},"schema":{"$ref":"#/definitions/schema"}}},"headerParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["header"]},"description":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"queryParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["query"]},"description":{"type":"string"},"name":{"type":"string"},"allowEmptyValue":{"type":"boolean","default":false},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormatWithMulti"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"formDataParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"required":{"type":"boolean","default":false},"in":{"type":"string","enum":["formData"]},"description":{"type":"string"},"name":{"type":"string"},"allowEmptyValue":{"type":"boolean","default":false},"type":{"type":"string","enum":["string","number","boolean","integer","array","file"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormatWithMulti"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"pathParameterSubSchema":{"additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"required":["required"],"properties":{"required":{"type":"boolean","enum":[true]},"in":{"type":"string","enum":["path"]},"description":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["string","number","boolean","integer","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"nonBodyParameter":{"type":"object","required":["name","in","type"],"oneOf":[{"$ref":"#/definitions/headerParameterSubSchema"},{"$ref":"#/definitions/formDataParameterSubSchema"},{"$ref":"#/definitions/queryParameterSubSchema"},{"$ref":"#/definitions/pathParameterSubSchema"}]},"parameter":{"oneOf":[{"$ref":"#/definitions/bodyParameter"},{"$ref":"#/definitions/nonBodyParameter"}]},"schema":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"$ref":{"type":"string"},"format":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"boolean","default":false},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"boolean","default":false},"maxLength":{"$ref":"#/definitions/_positiveInteger"},"minLength":{"$ref":"#/definitions/_positiveIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"maxItems":{"$ref":"#/definitions/_positiveInteger"},"minItems":{"$ref":"#/definitions/_positiveIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"maxProperties":{"$ref":"#/definitions/_positiveInteger"},"minProperties":{"$ref":"#/definitions/_positiveIntegerDefault0"},"required":{"$ref":"#/definitions/_stringArray"},"enum":{"type":"array","items":{},"minItems":1,"uniqueItems":false},"additionalProperties":{"anyOf":[{"$ref":"#/definitions/schema"},{"type":"boolean"}],"default":{}},"type":{"$ref":"#/definitions/_typeEnum"},"items":{"anyOf":[{"$ref":"#/definitions/schema"},{"type":"array","minItems":1,"items":{"$ref":"#/definitions/schema"}}],"default":{}},"allOf":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/schema"}},"properties":{"type":"object","additionalProperties":{"$ref":"#/definitions/schema"},"default":{}},"discriminator":{"type":"string"},"readOnly":{"type":"boolean","default":false},"xml":{"$ref":"#/definitions/xml"},"externalDocs":{"$ref":"#/definitions/externalDocs"},"example":{}}},"fileSchema":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"format":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":{},"required":{"$ref":"#/definitions/_stringArray"},"type":{"type":"string","enum":["file"]},"readOnly":{"type":"boolean","default":false},"externalDocs":{"$ref":"#/definitions/externalDocs"},"example":{}}},"primitivesItems":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["string","number","integer","boolean","array"]},"format":{"type":"string"},"items":{"$ref":"#/definitions/primitivesItems"},"collectionFormat":{"$ref":"#/definitions/collectionFormat"},"default":{"$ref":"#/definitions/default"},"maximum":{"$ref":"#/definitions/maximum"},"exclusiveMaximum":{"$ref":"#/definitions/exclusiveMaximum"},"minimum":{"$ref":"#/definitions/minimum"},"exclusiveMinimum":{"$ref":"#/definitions/exclusiveMinimum"},"maxLength":{"$ref":"#/definitions/maxLength"},"minLength":{"$ref":"#/definitions/minLength"},"pattern":{"$ref":"#/definitions/pattern"},"maxItems":{"$ref":"#/definitions/maxItems"},"minItems":{"$ref":"#/definitions/minItems"},"uniqueItems":{"$ref":"#/definitions/uniqueItems"},"enum":{"$ref":"#/definitions/enum"},"multipleOf":{"$ref":"#/definitions/multipleOf"}}},"security":{"type":"array","items":{"$ref":"#/definitions/securityRequirement"},"uniqueItems":true},"securityRequirement":{"type":"object","additionalProperties":{"type":"array","items":{"type":"string"},"uniqueItems":true}},"xml":{"type":"object","additionalProperties":false,"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"name":{"type":"string"},"namespace":{"type":"string"},"prefix":{"type":"string"},"attribute":{"type":"boolean","default":false},"wrapped":{"type":"boolean","default":false}}},"tag":{"type":"object","additionalProperties":false,"required":["name"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"name":{"type":"string"},"description":{"type":"string"},"externalDocs":{"$ref":"#/definitions/externalDocs"}}},"securityDefinitions":{"type":"object","additionalProperties":{"oneOf":[{"$ref":"#/definitions/basicAuthenticationSecurity"},{"$ref":"#/definitions/apiKeySecurity"},{"$ref":"#/definitions/oauth2ImplicitSecurity"},{"$ref":"#/definitions/oauth2PasswordSecurity"},{"$ref":"#/definitions/oauth2ApplicationSecurity"},{"$ref":"#/definitions/oauth2AccessCodeSecurity"}]}},"basicAuthenticationSecurity":{"type":"object","additionalProperties":false,"required":["type"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["basic"]},"description":{"type":"string"}}},"apiKeySecurity":{"type":"object","additionalProperties":false,"required":["type","name","in"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["apiKey"]},"name":{"type":"string"},"in":{"type":"string","enum":["header","query"]},"description":{"type":"string"}}},"oauth2ImplicitSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","authorizationUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["implicit"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"authorizationUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2PasswordSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["password"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2ApplicationSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["application"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2AccessCodeSecurity":{"type":"object","additionalProperties":false,"required":["type","flow","authorizationUrl","tokenUrl"],"patternProperties":{"^x-":{"$ref":"#/definitions/vendorExtension"}},"properties":{"type":{"type":"string","enum":["oauth2"]},"flow":{"type":"string","enum":["accessCode"]},"scopes":{"$ref":"#/definitions/oauth2Scopes"},"authorizationUrl":{"type":"string","format":"uri"},"tokenUrl":{"type":"string","format":"uri"},"description":{"type":"string"}}},"oauth2Scopes":{"type":"object","additionalProperties":{"type":"string"}},"mediaTypeList":{"type":"array","items":{"$ref":"#/definitions/mimeType"},"uniqueItems":true},"parametersList":{"type":"array","additionalItems":false,"items":{"oneOf":[{"$ref":"#/definitions/parameter"},{"$ref":"#/definitions/jsonReference"}]},"uniqueItems":true},"schemesList":{"type":"array","items":{"type":"string","enum":["http","https","ws","wss"]},"uniqueItems":true},"collectionFormat":{"type":"string","enum":["csv","ssv","tsv","pipes"],"default":"csv"},"collectionFormatWithMulti":{"type":"string","enum":["csv","ssv","tsv","pipes","multi"],"default":"csv"},"jsonReference":{"type":"object","required":["$ref"],"additionalProperties":false,"properties":{"$ref":{"type":"string"}}}}}';
2
+ export {
3
+ oas20Json
4
+ };