schemathesis 3.13.0__py3-none-any.whl → 4.4.2__py3-none-any.whl

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 (245) hide show
  1. schemathesis/__init__.py +53 -25
  2. schemathesis/auths.py +507 -0
  3. schemathesis/checks.py +190 -25
  4. schemathesis/cli/__init__.py +27 -1016
  5. schemathesis/cli/__main__.py +4 -0
  6. schemathesis/cli/commands/__init__.py +133 -0
  7. schemathesis/cli/commands/data.py +10 -0
  8. schemathesis/cli/commands/run/__init__.py +602 -0
  9. schemathesis/cli/commands/run/context.py +228 -0
  10. schemathesis/cli/commands/run/events.py +60 -0
  11. schemathesis/cli/commands/run/executor.py +157 -0
  12. schemathesis/cli/commands/run/filters.py +53 -0
  13. schemathesis/cli/commands/run/handlers/__init__.py +46 -0
  14. schemathesis/cli/commands/run/handlers/base.py +45 -0
  15. schemathesis/cli/commands/run/handlers/cassettes.py +464 -0
  16. schemathesis/cli/commands/run/handlers/junitxml.py +60 -0
  17. schemathesis/cli/commands/run/handlers/output.py +1750 -0
  18. schemathesis/cli/commands/run/loaders.py +118 -0
  19. schemathesis/cli/commands/run/validation.py +256 -0
  20. schemathesis/cli/constants.py +5 -0
  21. schemathesis/cli/core.py +19 -0
  22. schemathesis/cli/ext/fs.py +16 -0
  23. schemathesis/cli/ext/groups.py +203 -0
  24. schemathesis/cli/ext/options.py +81 -0
  25. schemathesis/config/__init__.py +202 -0
  26. schemathesis/config/_auth.py +51 -0
  27. schemathesis/config/_checks.py +268 -0
  28. schemathesis/config/_diff_base.py +101 -0
  29. schemathesis/config/_env.py +21 -0
  30. schemathesis/config/_error.py +163 -0
  31. schemathesis/config/_generation.py +157 -0
  32. schemathesis/config/_health_check.py +24 -0
  33. schemathesis/config/_operations.py +335 -0
  34. schemathesis/config/_output.py +171 -0
  35. schemathesis/config/_parameters.py +19 -0
  36. schemathesis/config/_phases.py +253 -0
  37. schemathesis/config/_projects.py +543 -0
  38. schemathesis/config/_rate_limit.py +17 -0
  39. schemathesis/config/_report.py +120 -0
  40. schemathesis/config/_validator.py +9 -0
  41. schemathesis/config/_warnings.py +89 -0
  42. schemathesis/config/schema.json +975 -0
  43. schemathesis/core/__init__.py +72 -0
  44. schemathesis/core/adapter.py +34 -0
  45. schemathesis/core/compat.py +32 -0
  46. schemathesis/core/control.py +2 -0
  47. schemathesis/core/curl.py +100 -0
  48. schemathesis/core/deserialization.py +210 -0
  49. schemathesis/core/errors.py +588 -0
  50. schemathesis/core/failures.py +316 -0
  51. schemathesis/core/fs.py +19 -0
  52. schemathesis/core/hooks.py +20 -0
  53. schemathesis/core/jsonschema/__init__.py +13 -0
  54. schemathesis/core/jsonschema/bundler.py +183 -0
  55. schemathesis/core/jsonschema/keywords.py +40 -0
  56. schemathesis/core/jsonschema/references.py +222 -0
  57. schemathesis/core/jsonschema/types.py +41 -0
  58. schemathesis/core/lazy_import.py +15 -0
  59. schemathesis/core/loaders.py +107 -0
  60. schemathesis/core/marks.py +66 -0
  61. schemathesis/core/media_types.py +79 -0
  62. schemathesis/core/output/__init__.py +46 -0
  63. schemathesis/core/output/sanitization.py +54 -0
  64. schemathesis/core/parameters.py +45 -0
  65. schemathesis/core/rate_limit.py +60 -0
  66. schemathesis/core/registries.py +34 -0
  67. schemathesis/core/result.py +27 -0
  68. schemathesis/core/schema_analysis.py +17 -0
  69. schemathesis/core/shell.py +203 -0
  70. schemathesis/core/transforms.py +144 -0
  71. schemathesis/core/transport.py +223 -0
  72. schemathesis/core/validation.py +73 -0
  73. schemathesis/core/version.py +7 -0
  74. schemathesis/engine/__init__.py +28 -0
  75. schemathesis/engine/context.py +152 -0
  76. schemathesis/engine/control.py +44 -0
  77. schemathesis/engine/core.py +201 -0
  78. schemathesis/engine/errors.py +446 -0
  79. schemathesis/engine/events.py +284 -0
  80. schemathesis/engine/observations.py +42 -0
  81. schemathesis/engine/phases/__init__.py +108 -0
  82. schemathesis/engine/phases/analysis.py +28 -0
  83. schemathesis/engine/phases/probes.py +172 -0
  84. schemathesis/engine/phases/stateful/__init__.py +68 -0
  85. schemathesis/engine/phases/stateful/_executor.py +364 -0
  86. schemathesis/engine/phases/stateful/context.py +85 -0
  87. schemathesis/engine/phases/unit/__init__.py +220 -0
  88. schemathesis/engine/phases/unit/_executor.py +459 -0
  89. schemathesis/engine/phases/unit/_pool.py +82 -0
  90. schemathesis/engine/recorder.py +254 -0
  91. schemathesis/errors.py +47 -0
  92. schemathesis/filters.py +395 -0
  93. schemathesis/generation/__init__.py +25 -0
  94. schemathesis/generation/case.py +478 -0
  95. schemathesis/generation/coverage.py +1528 -0
  96. schemathesis/generation/hypothesis/__init__.py +121 -0
  97. schemathesis/generation/hypothesis/builder.py +992 -0
  98. schemathesis/generation/hypothesis/examples.py +56 -0
  99. schemathesis/generation/hypothesis/given.py +66 -0
  100. schemathesis/generation/hypothesis/reporting.py +285 -0
  101. schemathesis/generation/meta.py +227 -0
  102. schemathesis/generation/metrics.py +93 -0
  103. schemathesis/generation/modes.py +20 -0
  104. schemathesis/generation/overrides.py +127 -0
  105. schemathesis/generation/stateful/__init__.py +37 -0
  106. schemathesis/generation/stateful/state_machine.py +294 -0
  107. schemathesis/graphql/__init__.py +15 -0
  108. schemathesis/graphql/checks.py +109 -0
  109. schemathesis/graphql/loaders.py +285 -0
  110. schemathesis/hooks.py +270 -91
  111. schemathesis/openapi/__init__.py +13 -0
  112. schemathesis/openapi/checks.py +467 -0
  113. schemathesis/openapi/generation/__init__.py +0 -0
  114. schemathesis/openapi/generation/filters.py +72 -0
  115. schemathesis/openapi/loaders.py +315 -0
  116. schemathesis/pytest/__init__.py +5 -0
  117. schemathesis/pytest/control_flow.py +7 -0
  118. schemathesis/pytest/lazy.py +341 -0
  119. schemathesis/pytest/loaders.py +36 -0
  120. schemathesis/pytest/plugin.py +357 -0
  121. schemathesis/python/__init__.py +0 -0
  122. schemathesis/python/asgi.py +12 -0
  123. schemathesis/python/wsgi.py +12 -0
  124. schemathesis/schemas.py +683 -247
  125. schemathesis/specs/graphql/__init__.py +0 -1
  126. schemathesis/specs/graphql/nodes.py +27 -0
  127. schemathesis/specs/graphql/scalars.py +86 -0
  128. schemathesis/specs/graphql/schemas.py +395 -123
  129. schemathesis/specs/graphql/validation.py +33 -0
  130. schemathesis/specs/openapi/__init__.py +9 -1
  131. schemathesis/specs/openapi/_hypothesis.py +578 -317
  132. schemathesis/specs/openapi/adapter/__init__.py +10 -0
  133. schemathesis/specs/openapi/adapter/parameters.py +729 -0
  134. schemathesis/specs/openapi/adapter/protocol.py +59 -0
  135. schemathesis/specs/openapi/adapter/references.py +19 -0
  136. schemathesis/specs/openapi/adapter/responses.py +368 -0
  137. schemathesis/specs/openapi/adapter/security.py +144 -0
  138. schemathesis/specs/openapi/adapter/v2.py +30 -0
  139. schemathesis/specs/openapi/adapter/v3_0.py +30 -0
  140. schemathesis/specs/openapi/adapter/v3_1.py +30 -0
  141. schemathesis/specs/openapi/analysis.py +96 -0
  142. schemathesis/specs/openapi/checks.py +753 -74
  143. schemathesis/specs/openapi/converter.py +176 -37
  144. schemathesis/specs/openapi/definitions.py +599 -4
  145. schemathesis/specs/openapi/examples.py +581 -165
  146. schemathesis/specs/openapi/expressions/__init__.py +52 -5
  147. schemathesis/specs/openapi/expressions/extractors.py +25 -0
  148. schemathesis/specs/openapi/expressions/lexer.py +34 -31
  149. schemathesis/specs/openapi/expressions/nodes.py +97 -46
  150. schemathesis/specs/openapi/expressions/parser.py +35 -13
  151. schemathesis/specs/openapi/formats.py +122 -0
  152. schemathesis/specs/openapi/media_types.py +75 -0
  153. schemathesis/specs/openapi/negative/__init__.py +117 -68
  154. schemathesis/specs/openapi/negative/mutations.py +294 -104
  155. schemathesis/specs/openapi/negative/utils.py +3 -6
  156. schemathesis/specs/openapi/patterns.py +458 -0
  157. schemathesis/specs/openapi/references.py +60 -81
  158. schemathesis/specs/openapi/schemas.py +648 -650
  159. schemathesis/specs/openapi/serialization.py +53 -30
  160. schemathesis/specs/openapi/stateful/__init__.py +404 -69
  161. schemathesis/specs/openapi/stateful/control.py +87 -0
  162. schemathesis/specs/openapi/stateful/dependencies/__init__.py +232 -0
  163. schemathesis/specs/openapi/stateful/dependencies/inputs.py +428 -0
  164. schemathesis/specs/openapi/stateful/dependencies/models.py +341 -0
  165. schemathesis/specs/openapi/stateful/dependencies/naming.py +491 -0
  166. schemathesis/specs/openapi/stateful/dependencies/outputs.py +34 -0
  167. schemathesis/specs/openapi/stateful/dependencies/resources.py +339 -0
  168. schemathesis/specs/openapi/stateful/dependencies/schemas.py +447 -0
  169. schemathesis/specs/openapi/stateful/inference.py +254 -0
  170. schemathesis/specs/openapi/stateful/links.py +219 -78
  171. schemathesis/specs/openapi/types/__init__.py +3 -0
  172. schemathesis/specs/openapi/types/common.py +23 -0
  173. schemathesis/specs/openapi/types/v2.py +129 -0
  174. schemathesis/specs/openapi/types/v3.py +134 -0
  175. schemathesis/specs/openapi/utils.py +7 -6
  176. schemathesis/specs/openapi/warnings.py +75 -0
  177. schemathesis/transport/__init__.py +224 -0
  178. schemathesis/transport/asgi.py +26 -0
  179. schemathesis/transport/prepare.py +126 -0
  180. schemathesis/transport/requests.py +278 -0
  181. schemathesis/transport/serialization.py +329 -0
  182. schemathesis/transport/wsgi.py +175 -0
  183. schemathesis-4.4.2.dist-info/METADATA +213 -0
  184. schemathesis-4.4.2.dist-info/RECORD +192 -0
  185. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info}/WHEEL +1 -1
  186. schemathesis-4.4.2.dist-info/entry_points.txt +6 -0
  187. {schemathesis-3.13.0.dist-info → schemathesis-4.4.2.dist-info/licenses}/LICENSE +1 -1
  188. schemathesis/_compat.py +0 -41
  189. schemathesis/_hypothesis.py +0 -115
  190. schemathesis/cli/callbacks.py +0 -188
  191. schemathesis/cli/cassettes.py +0 -253
  192. schemathesis/cli/context.py +0 -36
  193. schemathesis/cli/debug.py +0 -21
  194. schemathesis/cli/handlers.py +0 -11
  195. schemathesis/cli/junitxml.py +0 -41
  196. schemathesis/cli/options.py +0 -51
  197. schemathesis/cli/output/__init__.py +0 -1
  198. schemathesis/cli/output/default.py +0 -508
  199. schemathesis/cli/output/short.py +0 -40
  200. schemathesis/constants.py +0 -79
  201. schemathesis/exceptions.py +0 -207
  202. schemathesis/extra/_aiohttp.py +0 -27
  203. schemathesis/extra/_flask.py +0 -10
  204. schemathesis/extra/_server.py +0 -16
  205. schemathesis/extra/pytest_plugin.py +0 -216
  206. schemathesis/failures.py +0 -131
  207. schemathesis/fixups/__init__.py +0 -29
  208. schemathesis/fixups/fast_api.py +0 -30
  209. schemathesis/lazy.py +0 -227
  210. schemathesis/models.py +0 -1041
  211. schemathesis/parameters.py +0 -88
  212. schemathesis/runner/__init__.py +0 -460
  213. schemathesis/runner/events.py +0 -240
  214. schemathesis/runner/impl/__init__.py +0 -3
  215. schemathesis/runner/impl/core.py +0 -755
  216. schemathesis/runner/impl/solo.py +0 -85
  217. schemathesis/runner/impl/threadpool.py +0 -367
  218. schemathesis/runner/serialization.py +0 -189
  219. schemathesis/serializers.py +0 -233
  220. schemathesis/service/__init__.py +0 -3
  221. schemathesis/service/client.py +0 -46
  222. schemathesis/service/constants.py +0 -12
  223. schemathesis/service/events.py +0 -39
  224. schemathesis/service/handler.py +0 -39
  225. schemathesis/service/models.py +0 -7
  226. schemathesis/service/serialization.py +0 -153
  227. schemathesis/service/worker.py +0 -40
  228. schemathesis/specs/graphql/loaders.py +0 -215
  229. schemathesis/specs/openapi/constants.py +0 -7
  230. schemathesis/specs/openapi/expressions/context.py +0 -12
  231. schemathesis/specs/openapi/expressions/pointers.py +0 -29
  232. schemathesis/specs/openapi/filters.py +0 -44
  233. schemathesis/specs/openapi/links.py +0 -302
  234. schemathesis/specs/openapi/loaders.py +0 -453
  235. schemathesis/specs/openapi/parameters.py +0 -413
  236. schemathesis/specs/openapi/security.py +0 -129
  237. schemathesis/specs/openapi/validation.py +0 -24
  238. schemathesis/stateful.py +0 -349
  239. schemathesis/targets.py +0 -32
  240. schemathesis/types.py +0 -38
  241. schemathesis/utils.py +0 -436
  242. schemathesis-3.13.0.dist-info/METADATA +0 -202
  243. schemathesis-3.13.0.dist-info/RECORD +0 -91
  244. schemathesis-3.13.0.dist-info/entry_points.txt +0 -6
  245. /schemathesis/{extra → cli/ext}/__init__.py +0 -0
@@ -0,0 +1,975 @@
1
+ {
2
+ "type": "object",
3
+ "additionalProperties": false,
4
+ "properties": {
5
+ "color": {
6
+ "description": "Controls ANSI color output in the CLI. Schemathesis auto-detects color support by default. Set to true to force color output or false to disable it.",
7
+ "type": "boolean"
8
+ },
9
+ "suppress-health-check": {
10
+ "description": "Specifies a list of health checks to disable during test execution.",
11
+ "type": "array",
12
+ "uniqueItems": true,
13
+ "items": {
14
+ "enum": [
15
+ "data_too_large",
16
+ "filter_too_much",
17
+ "too_slow",
18
+ "large_base_example",
19
+ "all"
20
+ ]
21
+ }
22
+ },
23
+ "seed": {
24
+ "type": "integer"
25
+ },
26
+ "max-failures": {
27
+ "type": "integer",
28
+ "minimum": 1
29
+ },
30
+ "reports": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "properties": {
34
+ "directory": {
35
+ "type": "string"
36
+ },
37
+ "preserve-bytes": {
38
+ "type": "boolean"
39
+ },
40
+ "junit": {
41
+ "$ref": "#/$defs/ReportConfig"
42
+ },
43
+ "har": {
44
+ "$ref": "#/$defs/ReportConfig"
45
+ },
46
+ "vcr": {
47
+ "$ref": "#/$defs/ReportConfig"
48
+ }
49
+ }
50
+ },
51
+ "output": {
52
+ "$ref": "#/$defs/OutputConfig"
53
+ },
54
+ "base-url": {
55
+ "type": "string"
56
+ },
57
+ "parameters": {
58
+ "type": "object"
59
+ },
60
+ "generation": {
61
+ "$ref": "#/$defs/GenerationConfig"
62
+ },
63
+ "checks": {
64
+ "$ref": "#/$defs/ChecksConfig"
65
+ },
66
+ "phases": {
67
+ "$ref": "#/$defs/PhasesConfig"
68
+ },
69
+ "auth": {
70
+ "$ref": "#/$defs/AuthConfig"
71
+ },
72
+ "operations": {
73
+ "type": "array",
74
+ "items": {
75
+ "$ref": "#/$defs/OperationConfig"
76
+ }
77
+ },
78
+ "project": {
79
+ "type": "array",
80
+ "items": {
81
+ "$ref": "#/$defs/ProjectConfig"
82
+ }
83
+ },
84
+ "headers": {
85
+ "additionalProperties": {
86
+ "type": "string"
87
+ },
88
+ "type": "object"
89
+ },
90
+ "hooks": {
91
+ "type": "string"
92
+ },
93
+ "proxy": {
94
+ "type": "string"
95
+ },
96
+ "workers": {
97
+ "anyOf": [
98
+ {
99
+ "type": "integer"
100
+ },
101
+ {
102
+ "const": "auto"
103
+ }
104
+ ]
105
+ },
106
+ "wait-for-schema": {
107
+ "type": "number",
108
+ "minimum": 1
109
+ },
110
+ "continue-on-failure": {
111
+ "type": "boolean"
112
+ },
113
+ "tls-verify": {
114
+ "type": [
115
+ "boolean",
116
+ "string"
117
+ ]
118
+ },
119
+ "rate-limit": {
120
+ "type": "string"
121
+ },
122
+ "max-redirects": {
123
+ "type": "integer",
124
+ "minimum": 0
125
+ },
126
+ "request-timeout": {
127
+ "type": "number",
128
+ "minimum": 0
129
+ },
130
+ "request-cert": {
131
+ "type": "string"
132
+ },
133
+ "request-cert-key": {
134
+ "type": "string"
135
+ },
136
+ "warnings": {
137
+ "$ref": "#/$defs/WarningConfig"
138
+ }
139
+ },
140
+ "$defs": {
141
+ "ReportConfig": {
142
+ "type": "object",
143
+ "additionalProperties": false,
144
+ "properties": {
145
+ "enabled": {
146
+ "type": "boolean"
147
+ },
148
+ "path": {
149
+ "type": "string"
150
+ }
151
+ }
152
+ },
153
+ "AuthConfig": {
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "properties": {
157
+ "basic": {
158
+ "type": "object",
159
+ "properties": {
160
+ "username": {
161
+ "type": "string"
162
+ },
163
+ "password": {
164
+ "type": "string"
165
+ }
166
+ },
167
+ "required": [
168
+ "username",
169
+ "password"
170
+ ],
171
+ "additionalProperties": false
172
+ }
173
+ }
174
+ },
175
+ "ChecksConfig": {
176
+ "type": "object",
177
+ "additionalProperties": false,
178
+ "properties": {
179
+ "enabled": {
180
+ "type": "boolean"
181
+ },
182
+ "not_a_server_error": {
183
+ "$ref": "#/$defs/CheckConfig"
184
+ },
185
+ "status_code_conformance": {
186
+ "$ref": "#/$defs/SimpleCheckConfig"
187
+ },
188
+ "content_type_conformance": {
189
+ "$ref": "#/$defs/SimpleCheckConfig"
190
+ },
191
+ "response_schema_conformance": {
192
+ "$ref": "#/$defs/SimpleCheckConfig"
193
+ },
194
+ "response_headers_conformance": {
195
+ "$ref": "#/$defs/SimpleCheckConfig"
196
+ },
197
+ "positive_data_acceptance": {
198
+ "$ref": "#/$defs/CheckConfig"
199
+ },
200
+ "negative_data_rejection": {
201
+ "$ref": "#/$defs/CheckConfig"
202
+ },
203
+ "use_after_free": {
204
+ "$ref": "#/$defs/SimpleCheckConfig"
205
+ },
206
+ "ensure_resource_availability": {
207
+ "$ref": "#/$defs/SimpleCheckConfig"
208
+ },
209
+ "missing_required_header": {
210
+ "$ref": "#/$defs/CheckConfig"
211
+ },
212
+ "ignored_auth": {
213
+ "$ref": "#/$defs/SimpleCheckConfig"
214
+ },
215
+ "unsupported_method": {
216
+ "$ref": "#/$defs/SimpleCheckConfig"
217
+ },
218
+ "max_response_time": {
219
+ "$ref": "#/$defs/MaxResponseTimeConfig"
220
+ }
221
+ }
222
+ },
223
+ "SimpleCheckConfig": {
224
+ "type": "object",
225
+ "additionalProperties": false,
226
+ "properties": {
227
+ "enabled": {
228
+ "type": "boolean"
229
+ }
230
+ }
231
+ },
232
+ "MaxResponseTimeConfig": {
233
+ "type": "number",
234
+ "minimum": 0
235
+ },
236
+ "CheckConfig": {
237
+ "type": "object",
238
+ "additionalProperties": false,
239
+ "properties": {
240
+ "enabled": {
241
+ "type": "boolean"
242
+ },
243
+ "expected-statuses": {
244
+ "type": "array",
245
+ "items": {
246
+ "type": [
247
+ "integer",
248
+ "string"
249
+ ]
250
+ }
251
+ }
252
+ }
253
+ },
254
+ "PhasesConfig": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "properties": {
258
+ "enabled": {
259
+ "type": "boolean"
260
+ },
261
+ "examples": {
262
+ "$ref": "#/$defs/ExamplesPhaseConfig"
263
+ },
264
+ "coverage": {
265
+ "$ref": "#/$defs/CoveragePhaseConfig"
266
+ },
267
+ "fuzzing": {
268
+ "$ref": "#/$defs/PhaseConfig"
269
+ },
270
+ "stateful": {
271
+ "$ref": "#/$defs/StatefulPhaseConfig"
272
+ }
273
+ }
274
+ },
275
+ "PhaseConfig": {
276
+ "type": "object",
277
+ "additionalProperties": false,
278
+ "properties": {
279
+ "enabled": {
280
+ "type": "boolean"
281
+ },
282
+ "generation": {
283
+ "$ref": "#/$defs/GenerationConfig"
284
+ },
285
+ "checks": {
286
+ "$ref": "#/$defs/ChecksConfig"
287
+ }
288
+ }
289
+ },
290
+ "ExamplesPhaseConfig": {
291
+ "type": "object",
292
+ "additionalProperties": false,
293
+ "properties": {
294
+ "enabled": {
295
+ "type": "boolean"
296
+ },
297
+ "fill-missing": {
298
+ "type": "boolean"
299
+ },
300
+ "generation": {
301
+ "$ref": "#/$defs/GenerationConfig"
302
+ },
303
+ "checks": {
304
+ "$ref": "#/$defs/ChecksConfig"
305
+ }
306
+ }
307
+ },
308
+ "StatefulPhaseConfig": {
309
+ "type": "object",
310
+ "additionalProperties": false,
311
+ "properties": {
312
+ "enabled": {
313
+ "type": "boolean"
314
+ },
315
+ "max-steps": {
316
+ "type": "integer",
317
+ "minimum": 2
318
+ },
319
+ "inference": {
320
+ "type": "object",
321
+ "additionalProperties": false,
322
+ "properties": {
323
+ "algorithms": {
324
+ "type": "array",
325
+ "items": {
326
+ "type": "string",
327
+ "enum": [
328
+ "location-headers",
329
+ "dependency-analysis"
330
+ ]
331
+ },
332
+ "uniqueItems": true
333
+ }
334
+ }
335
+ },
336
+ "generation": {
337
+ "$ref": "#/$defs/GenerationConfig"
338
+ },
339
+ "checks": {
340
+ "$ref": "#/$defs/ChecksConfig"
341
+ }
342
+ }
343
+ },
344
+ "CoveragePhaseConfig": {
345
+ "type": "object",
346
+ "additionalProperties": false,
347
+ "properties": {
348
+ "enabled": {
349
+ "type": "boolean"
350
+ },
351
+ "generate-duplicate-query-parameters": {
352
+ "type": "boolean"
353
+ },
354
+ "unexpected-methods": {
355
+ "type": "array",
356
+ "items": {
357
+ "type": "string",
358
+ "pattern": "(?i)(?:GET|PUT|POST|DELETE|OPTIONS|PATCH|TRACE)"
359
+ },
360
+ "uniqueItems": true
361
+ },
362
+ "generation": {
363
+ "$ref": "#/$defs/GenerationConfig"
364
+ },
365
+ "checks": {
366
+ "$ref": "#/$defs/ChecksConfig"
367
+ }
368
+ }
369
+ },
370
+ "GenerationConfig": {
371
+ "type": "object",
372
+ "additionalProperties": false,
373
+ "properties": {
374
+ "mode": {
375
+ "enum": [
376
+ "positive",
377
+ "negative",
378
+ "all"
379
+ ]
380
+ },
381
+ "max-examples": {
382
+ "type": "integer"
383
+ },
384
+ "no-shrink": {
385
+ "type": "boolean"
386
+ },
387
+ "deterministic": {
388
+ "type": "boolean"
389
+ },
390
+ "allow-x00": {
391
+ "type": "boolean"
392
+ },
393
+ "allow-extra-parameters": {
394
+ "type": "boolean"
395
+ },
396
+ "codec": {
397
+ "type": "string"
398
+ },
399
+ "exclude-header-characters": {
400
+ "type": "string"
401
+ },
402
+ "maximize": {
403
+ "anyOf": [
404
+ {
405
+ "enum": [
406
+ "response_time"
407
+ ]
408
+ },
409
+ {
410
+ "type": "array",
411
+ "items": {
412
+ "enum": [
413
+ "response_time"
414
+ ]
415
+ }
416
+ }
417
+ ]
418
+ },
419
+ "with-security-parameters": {
420
+ "type": "boolean"
421
+ },
422
+ "graphql-allow-null": {
423
+ "type": "boolean"
424
+ },
425
+ "database": {
426
+ "type": "string"
427
+ },
428
+ "unique-inputs": {
429
+ "type": "boolean"
430
+ }
431
+ }
432
+ },
433
+ "OutputConfig": {
434
+ "type": "object",
435
+ "additionalProperties": false,
436
+ "properties": {
437
+ "sanitization": {
438
+ "type": "object",
439
+ "additionalProperties": false,
440
+ "properties": {
441
+ "enabled": {
442
+ "type": "boolean"
443
+ },
444
+ "keys-to-sanitize": {
445
+ "type": "array",
446
+ "items": {
447
+ "type": "string"
448
+ }
449
+ },
450
+ "sensitive-markers": {
451
+ "type": "array",
452
+ "items": {
453
+ "type": "string"
454
+ }
455
+ },
456
+ "replacement": {
457
+ "type": "string"
458
+ }
459
+ }
460
+ },
461
+ "truncation": {
462
+ "type": "object",
463
+ "additionalProperties": false,
464
+ "properties": {
465
+ "enabled": {
466
+ "type": "boolean"
467
+ },
468
+ "max-payload-size": {
469
+ "type": "integer",
470
+ "minimum": 1
471
+ },
472
+ "max-lines": {
473
+ "type": "integer",
474
+ "minimum": 1
475
+ },
476
+ "max-width": {
477
+ "type": "integer",
478
+ "minimum": 1
479
+ }
480
+ }
481
+ }
482
+ }
483
+ },
484
+ "ProjectConfig": {
485
+ "type": "object",
486
+ "additionalProperties": false,
487
+ "properties": {
488
+ "title": {
489
+ "type": "string"
490
+ },
491
+ "base-url": {
492
+ "type": "string"
493
+ },
494
+ "parameters": {
495
+ "type": "object"
496
+ },
497
+ "generation": {
498
+ "$ref": "#/$defs/GenerationConfig"
499
+ },
500
+ "checks": {
501
+ "$ref": "#/$defs/ChecksConfig"
502
+ },
503
+ "phases": {
504
+ "$ref": "#/$defs/PhasesConfig"
505
+ },
506
+ "auth": {
507
+ "$ref": "#/$defs/AuthConfig"
508
+ },
509
+ "operations": {
510
+ "type": "array",
511
+ "items": {
512
+ "$ref": "#/$defs/OperationConfig"
513
+ }
514
+ },
515
+ "headers": {
516
+ "additionalProperties": {
517
+ "type": "string"
518
+ },
519
+ "type": "object"
520
+ },
521
+ "hooks": {
522
+ "type": "string"
523
+ },
524
+ "proxy": {
525
+ "type": "string"
526
+ },
527
+ "workers": {
528
+ "anyOf": [
529
+ {
530
+ "type": "integer"
531
+ },
532
+ {
533
+ "const": "auto"
534
+ }
535
+ ]
536
+ },
537
+ "wait-for-schema": {
538
+ "type": "number",
539
+ "minimum": 1
540
+ },
541
+ "continue-on-failure": {
542
+ "type": "boolean"
543
+ },
544
+ "tls-verify": {
545
+ "type": [
546
+ "boolean",
547
+ "string"
548
+ ]
549
+ },
550
+ "rate-limit": {
551
+ "type": "string"
552
+ },
553
+ "max-redirects": {
554
+ "type": "integer",
555
+ "minimum": 0
556
+ },
557
+ "request-timeout": {
558
+ "type": "number",
559
+ "minimum": 0
560
+ },
561
+ "request-cert": {
562
+ "type": "string"
563
+ },
564
+ "request-cert-key": {
565
+ "type": "string"
566
+ },
567
+ "warnings": {
568
+ "$ref": "#/$defs/WarningConfig"
569
+ }
570
+ },
571
+ "required": [
572
+ "title"
573
+ ]
574
+ },
575
+ "WarningConfig": {
576
+ "anyOf": [
577
+ {
578
+ "type": "boolean"
579
+ },
580
+ {
581
+ "type": "array",
582
+ "uniqueItems": true,
583
+ "items": {
584
+ "enum": [
585
+ "missing_auth",
586
+ "missing_test_data",
587
+ "validation_mismatch",
588
+ "missing_deserializer"
589
+ ]
590
+ }
591
+ },
592
+ {
593
+ "type": "object",
594
+ "additionalProperties": false,
595
+ "properties": {
596
+ "enabled": {
597
+ "type": "boolean"
598
+ },
599
+ "display": {
600
+ "type": "array",
601
+ "uniqueItems": true,
602
+ "items": {
603
+ "enum": [
604
+ "missing_auth",
605
+ "missing_test_data",
606
+ "validation_mismatch",
607
+ "missing_deserializer"
608
+ ]
609
+ }
610
+ },
611
+ "fail-on": {
612
+ "anyOf": [
613
+ {
614
+ "type": "boolean"
615
+ },
616
+ {
617
+ "type": "array",
618
+ "uniqueItems": true,
619
+ "items": {
620
+ "enum": [
621
+ "missing_auth",
622
+ "missing_test_data",
623
+ "validation_mismatch",
624
+ "missing_deserializer"
625
+ ]
626
+ }
627
+ }
628
+ ]
629
+ }
630
+ }
631
+ }
632
+ ]
633
+ },
634
+ "OperationConfig": {
635
+ "type": "object",
636
+ "additionalProperties": false,
637
+ "properties": {
638
+ "enabled": {
639
+ "type": "boolean"
640
+ },
641
+ "auth": {
642
+ "$ref": "#/$defs/AuthConfig"
643
+ },
644
+ "headers": {
645
+ "additionalProperties": {
646
+ "type": "string"
647
+ },
648
+ "type": "object"
649
+ },
650
+ "proxy": {
651
+ "type": "string"
652
+ },
653
+ "continue-on-failure": {
654
+ "type": "boolean"
655
+ },
656
+ "tls-verify": {
657
+ "type": [
658
+ "boolean",
659
+ "string"
660
+ ]
661
+ },
662
+ "rate-limit": {
663
+ "type": "string"
664
+ },
665
+ "max-redirects": {
666
+ "type": "integer",
667
+ "minimum": 0
668
+ },
669
+ "request-timeout": {
670
+ "type": "number",
671
+ "minimum": 0
672
+ },
673
+ "request-cert": {
674
+ "type": "string"
675
+ },
676
+ "request-cert-key": {
677
+ "type": "string"
678
+ },
679
+ "warnings": {
680
+ "$ref": "#/$defs/WarningConfig"
681
+ },
682
+ "checks": {
683
+ "$ref": "#/$defs/ChecksConfig"
684
+ },
685
+ "phases": {
686
+ "$ref": "#/$defs/PhasesConfig"
687
+ },
688
+ "generation": {
689
+ "$ref": "#/$defs/GenerationConfig"
690
+ },
691
+ "include-path": {
692
+ "oneOf": [
693
+ {
694
+ "type": "string"
695
+ },
696
+ {
697
+ "type": "array",
698
+ "items": {
699
+ "type": "string"
700
+ }
701
+ }
702
+ ]
703
+ },
704
+ "include-method": {
705
+ "oneOf": [
706
+ {
707
+ "type": "string"
708
+ },
709
+ {
710
+ "type": "array",
711
+ "items": {
712
+ "type": "string"
713
+ }
714
+ }
715
+ ]
716
+ },
717
+ "include-name": {
718
+ "oneOf": [
719
+ {
720
+ "type": "string"
721
+ },
722
+ {
723
+ "type": "array",
724
+ "items": {
725
+ "type": "string"
726
+ }
727
+ }
728
+ ]
729
+ },
730
+ "include-tag": {
731
+ "oneOf": [
732
+ {
733
+ "type": "string"
734
+ },
735
+ {
736
+ "type": "array",
737
+ "items": {
738
+ "type": "string"
739
+ }
740
+ }
741
+ ]
742
+ },
743
+ "include-operation-id": {
744
+ "oneOf": [
745
+ {
746
+ "type": "string"
747
+ },
748
+ {
749
+ "type": "array",
750
+ "items": {
751
+ "type": "string"
752
+ }
753
+ }
754
+ ]
755
+ },
756
+ "include-by": {
757
+ "type": "string"
758
+ },
759
+ "include-path-regex": {
760
+ "type": "string"
761
+ },
762
+ "include-name-regex": {
763
+ "type": "string"
764
+ },
765
+ "include-method-regex": {
766
+ "type": "string"
767
+ },
768
+ "include-tag-regex": {
769
+ "type": "string"
770
+ },
771
+ "include-operation-id-regex": {
772
+ "type": "string"
773
+ },
774
+ "exclude-path": {
775
+ "oneOf": [
776
+ {
777
+ "type": "string"
778
+ },
779
+ {
780
+ "type": "array",
781
+ "items": {
782
+ "type": "string"
783
+ }
784
+ }
785
+ ]
786
+ },
787
+ "exclude-method": {
788
+ "oneOf": [
789
+ {
790
+ "type": "string"
791
+ },
792
+ {
793
+ "type": "array",
794
+ "items": {
795
+ "type": "string"
796
+ }
797
+ }
798
+ ]
799
+ },
800
+ "exclude-name": {
801
+ "oneOf": [
802
+ {
803
+ "type": "string"
804
+ },
805
+ {
806
+ "type": "array",
807
+ "items": {
808
+ "type": "string"
809
+ }
810
+ }
811
+ ]
812
+ },
813
+ "exclude-tag": {
814
+ "oneOf": [
815
+ {
816
+ "type": "string"
817
+ },
818
+ {
819
+ "type": "array",
820
+ "items": {
821
+ "type": "string"
822
+ }
823
+ }
824
+ ]
825
+ },
826
+ "exclude-operation-id": {
827
+ "oneOf": [
828
+ {
829
+ "type": "string"
830
+ },
831
+ {
832
+ "type": "array",
833
+ "items": {
834
+ "type": "string"
835
+ }
836
+ }
837
+ ]
838
+ },
839
+ "exclude-by": {
840
+ "type": "string"
841
+ },
842
+ "exclude-path-regex": {
843
+ "type": "string"
844
+ },
845
+ "exclude-method-regex": {
846
+ "type": "string"
847
+ },
848
+ "exclude-name-regex": {
849
+ "type": "string"
850
+ },
851
+ "exclude-tag-regex": {
852
+ "type": "string"
853
+ },
854
+ "exclude-operation-id-regex": {
855
+ "type": "string"
856
+ },
857
+ "parameters": {
858
+ "type": "object"
859
+ }
860
+ },
861
+ "anyOf": [
862
+ {
863
+ "required": [
864
+ "include-path"
865
+ ]
866
+ },
867
+ {
868
+ "required": [
869
+ "include-method"
870
+ ]
871
+ },
872
+ {
873
+ "required": [
874
+ "include-name"
875
+ ]
876
+ },
877
+ {
878
+ "required": [
879
+ "include-tag"
880
+ ]
881
+ },
882
+ {
883
+ "required": [
884
+ "include-operation-id"
885
+ ]
886
+ },
887
+ {
888
+ "required": [
889
+ "include-by"
890
+ ]
891
+ },
892
+ {
893
+ "required": [
894
+ "include-path-regex"
895
+ ]
896
+ },
897
+ {
898
+ "required": [
899
+ "include-method-regex"
900
+ ]
901
+ },
902
+ {
903
+ "required": [
904
+ "include-name-regex"
905
+ ]
906
+ },
907
+ {
908
+ "required": [
909
+ "include-tag-regex"
910
+ ]
911
+ },
912
+ {
913
+ "required": [
914
+ "include-operation-id-regex"
915
+ ]
916
+ },
917
+ {
918
+ "required": [
919
+ "exclude-path"
920
+ ]
921
+ },
922
+ {
923
+ "required": [
924
+ "exclude-method"
925
+ ]
926
+ },
927
+ {
928
+ "required": [
929
+ "exclude-name"
930
+ ]
931
+ },
932
+ {
933
+ "required": [
934
+ "exclude-tag"
935
+ ]
936
+ },
937
+ {
938
+ "required": [
939
+ "exclude-operation-id"
940
+ ]
941
+ },
942
+ {
943
+ "required": [
944
+ "exclude-by"
945
+ ]
946
+ },
947
+ {
948
+ "required": [
949
+ "exclude-path-regex"
950
+ ]
951
+ },
952
+ {
953
+ "required": [
954
+ "exclude-method-regex"
955
+ ]
956
+ },
957
+ {
958
+ "required": [
959
+ "exclude-name-regex"
960
+ ]
961
+ },
962
+ {
963
+ "required": [
964
+ "exclude-tag-regex"
965
+ ]
966
+ },
967
+ {
968
+ "required": [
969
+ "exclude-operation-id-regex"
970
+ ]
971
+ }
972
+ ]
973
+ }
974
+ }
975
+ }