Repository navigation
Expand file tree
/
Copy pathschema.json
More file actions
760 lines (760 loc) · 28.6 KB
/
Copy pathschema.json
File metadata and controls
760 lines (760 loc) · 28.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Config",
"description": "The main configuration for lychee\n\nThis mirrors the structure of the `lychee.toml` configuration file. It is\nalso used to derive a JSON schema (see `lychee --generate config-schema`),\nwhich editors can use for autocompletion and validation of the config file.",
"type": "object",
"properties": {
"accept": {
"description": "A List of accepted status codes for valid links\n\nThe following accept range syntax is supported: `[start]..[[=]end]|code`.\nSome valid examples are:\n\n- 200 (accepts the 200 status code only)\n- ..204 (accepts any status code < 204)\n- ..=204 (accepts any status code <= 204)\n- 200..=204 (accepts any status code from 200 to 204 inclusive)\n- 200..205 (accepts any status code from 200 to 205 excluding 205, same as 200..=204)\n\nUse `lychee --accept '200..=204, 429, 500' <inputs>...` to provide a comma-\nseparated list of accepted status codes. This example will accept 200, 201,\n202, 203, 204, 429, and 500 as valid status codes.\n\n[default: 100..=103,200..=299]",
"anyOf": [
{
"$ref": "#/definitions/StatusCodeSelector"
},
{
"type": "null"
}
]
},
"accept_timeouts": {
"description": "Accept timed out requests and return exit code 0\nwhen encountering timeouts but not any other errors.",
"type": [
"boolean",
"null"
],
"default": null
},
"archive": {
"description": "Web archive to use to provide suggestions for `--suggest`.\n\n[default: wayback]",
"anyOf": [
{
"$ref": "#/definitions/Archive"
},
{
"type": "null"
}
]
},
"base_url": {
"description": "Base URL to use when resolving relative URLs in local files. If specified,\nrelative links in local files are interpreted as being relative to the given\nbase URL.\n\nFor example, given a base URL of `https://example.com/dir/page`, the link `a`\nwould resolve to `https://example.com/dir/a` and the link `/b` would resolve\nto `https://example.com/b`. This behavior is not affected by the filesystem\npath of the file containing these links.\n\nNote that relative URLs without a leading slash become siblings of the base\nURL. If, instead, the base URL ended in a slash, the link would become a child\nof the base URL. For example, a base URL of `https://example.com/dir/page/` and\na link of `a` would resolve to `https://example.com/dir/page/a`.\n\nBasically, the base URL option resolves links as if the local files were hosted\nat the given base URL address.\n\nThe provided base URL value must either be a URL (with scheme) or an absolute path.\nNote that certain URL schemes cannot be used as a base, e.g., `data` and `mailto`.",
"type": [
"string",
"null"
]
},
"basic_auth": {
"description": "Basic authentication support. E.g. `http://example.com username:password`",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/BasicAuthSelector"
}
},
"cache": {
"type": [
"boolean",
"null"
],
"default": null
},
"cache_exclude_status": {
"description": "A list of status codes that will be ignored from the cache\n\nThe following exclude range syntax is supported: `[start]..[[=]end]|code`. Some valid\nexamples are:\n\n- 429 (excludes the 429 status code only)\n- 500.. (excludes any status code >= 500)\n- ..100 (excludes any status code < 100)\n- 500..=599 (excludes any status code from 500 to 599 inclusive)\n- 500..600 (excludes any status code from 500 to 600 excluding 600, same as 500..=599)\n\nUse `lychee --cache-exclude-status '429, 500..502' <inputs>...` to provide a\ncomma-separated list of excluded status codes. This example will not cache results\nwith a status code of 429, 500 and 501.",
"anyOf": [
{
"$ref": "#/definitions/StatusCodeSelector"
},
{
"type": "null"
}
]
},
"cache_location": {
"description": "Filesystem path used to store the on-disk request cache\n\n[default: .lycheecache]",
"type": [
"string",
"null"
]
},
"cookie_jar": {
"description": "Read and write cookies using the given file. Cookies will be stored in the\ncookie jar and sent with requests. New cookies will be stored in the cookie jar\nand existing cookies will be updated.",
"type": [
"string",
"null"
]
},
"default_extension": {
"description": "Parse input sources without a recognised file type by using the given\nfile extension.\n\nThis affects how links are extracted from certain input sources. This\nis useful for stdin inputs, files without extensions, and files with\nunknown extensions.\n\nExamples:\n --default-extension md\n --default-extension html\n\nTo automatically append file extensions when locating files, see\n`--fallback-extensions`.",
"type": [
"string",
"null"
]
},
"dump": {
"description": "Don't perform any link checking.\nInstead, dump all the links extracted from inputs that would be checked\n\nWith `--format json`, each link is printed as a JSON object on its own line",
"type": [
"boolean",
"null"
],
"default": null
},
"dump_inputs": {
"description": "Don't perform any link extraction and checking.\nInstead, dump all input sources from which links would be collected",
"type": [
"boolean",
"null"
],
"default": null
},
"exclude": {
"description": "Exclude URLs and mail addresses from checking.\nThe values are treated as regular expressions.",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"exclude_all_private": {
"description": "Exclude all private IPs from checking.\nEquivalent to `--exclude-private --exclude-link-local --exclude-loopback`",
"type": [
"boolean",
"null"
],
"default": null
},
"exclude_link_local": {
"description": "Exclude link-local IP address range from checking",
"type": [
"boolean",
"null"
],
"default": null
},
"exclude_loopback": {
"description": "Exclude loopback IP address range and localhost from checking",
"type": [
"boolean",
"null"
],
"default": null
},
"exclude_path": {
"description": "Exclude paths from getting checked.\nThe values are treated as regular expressions.",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"exclude_private": {
"description": "Exclude private IP address ranges from checking",
"type": [
"boolean",
"null"
],
"default": null
},
"extensions": {
"description": "A list of file extensions. Files not matching the specified extensions are skipped.\n\nMultiple extensions can be separated by commas. Note that if you want to check filetypes,\nwhich have multiple extensions, e.g. HTML files with both .html and .htm extensions, you need to\nspecify both extensions explicitly.\nAn example is: `--extensions html,htm,php,asp,aspx,jsp,cgi`.\n\nThis is useful when the default extensions are not enough and you don't\nwant to provide a long list of inputs (e.g. file1.html, file2.md, etc.)\n\n[default: md,markdown,mdx,qmd,rmd,mkd,mkdn,mdwn,mdown,mkdown,html,htm,css,txt,xml]",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"fallback_extensions": {
"description": "When checking locally, attempts to locate missing files by trying the given\nfallback extensions. Multiple extensions can be separated by commas. Extensions\nwill be checked in order of appearance.\n\nThe path itself is tried first, then every extension appended to the full\nfile name, then every extension replacing an existing one. So `a.b` with\n`html,htm` is looked up as `a.b`, `a.b.html`, `a.b.htm`, `a.html`,\n`a.htm`. An existing extension containing ASCII whitespace is never\nreplaced, since replacing it could discard part of the file name.\n\nExample: --fallback-extensions html,htm,php,asp,aspx,jsp,cgi\n\nNote: This option takes effect on `file://` URIs which do not exist and on\n `file://` URIs pointing to directories which resolve to themself (by the\n --index-files logic).",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"files_from": {
"description": "Read input filenames from the given file or stdin (if path is '-').\n\nThis is useful when you have a large number of inputs that would be\ncumbersome to specify on the command line directly.\n\nExamples:\n\n```text\nlychee --files-from list.txt\nfind . -name '*.md' | lychee --files-from -\necho 'README.md' | lychee --files-from -\n```\n\nFile Format:\n- Each line should contain one input (file path, URL, or glob pattern).\n- Lines starting with '#' are treated as comments and ignored.\n- Empty lines are also ignored.",
"type": [
"string",
"null"
]
},
"format": {
"description": "Output format of final status report\n\n[default: compact]",
"anyOf": [
{
"$ref": "#/definitions/StatsFormat"
},
{
"type": "null"
}
]
},
"generate": {
"description": "Generate special output (e.g. the man page) instead of performing link checking",
"anyOf": [
{
"$ref": "#/definitions/GenerateMode"
},
{
"type": "null"
}
]
},
"github_token": {
"description": "GitHub API token to use when checking github.com links, to avoid rate limiting",
"type": [
"string",
"null"
]
},
"glob_ignore_case": {
"description": "Ignore case when expanding filesystem path glob inputs",
"type": [
"boolean",
"null"
],
"default": null
},
"header": {
"description": "Set custom header for requests.\n\nSome websites require custom headers to be passed in order to return valid responses.\nYou can specify custom headers in the format 'Name: Value'. For example, 'Accept: text/html'.\nThis is the same format that other tools like curl or wget use.\nMultiple headers can be specified by using the flag multiple times.\nThe specified headers are used for ALL requests.\nUse the `hosts` option to configure headers on a per-host basis.",
"type": "object",
"additionalProperties": {
"type": "string"
},
"default": {}
},
"hidden": {
"description": "Do not skip hidden directories and files.",
"type": [
"boolean",
"null"
],
"default": null
},
"host_concurrency": {
"description": "Default maximum concurrent requests per host (default: 10)\n\nThis limits the maximum amount of requests that are sent simultaneously\nto the same host. This helps to prevent overwhelming servers and\nrunning into rate-limits. Use the `hosts` option to configure this\non a per-host basis.\n\nExamples:\n --host-concurrency 2 # Conservative for slow APIs\n --host-concurrency 20 # Aggressive for fast APIs",
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 0
},
"host_request_interval": {
"description": "Minimum interval between requests to the same host (default: 50ms)\n\nSets a baseline delay between consecutive requests to prevent\noverloading servers. The adaptive algorithm may increase this based\non server responses (rate limits, errors). Use the `hosts` option\nto configure this on a per-host basis.\n\nExamples:\n --host-request-interval 50ms # Fast for robust APIs\n --host-request-interval 1s # Conservative for rate-limited APIs",
"type": [
"string",
"null"
],
"default": null
},
"host_stats": {
"description": "Show per-host statistics at the end of the run",
"type": [
"boolean",
"null"
],
"default": null
},
"hosts": {
"description": "Host-specific configurations from config file",
"type": "object",
"additionalProperties": {
"$ref": "#/definitions/HostConfig"
}
},
"include": {
"description": "URLs to check (supports regex). Has preference over all excludes.",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"include_fragments": {
"description": "Enable the checking of fragments in links.\n\nUse `none` to disable fragment checks, `anchor-only` for anchor fragments\nlike `#section`, `text-only` for text fragments like `#:~:text=example`,\nor `full` to check both.\n\nIf provided without a value, defaults to `anchor-only`.\n\nFragment checking does not work for every URL. In general, the target\ncontent needs to be Markdown or HTML and follow common conventions.\nAnchors that only appear after JavaScript execution may be missed, since\nlychee does not run a browser engine.",
"anyOf": [
{
"$ref": "#/definitions/FragmentMode"
},
{
"type": "null"
}
]
},
"include_mail": {
"description": "Also check email addresses",
"type": [
"boolean",
"null"
],
"default": null
},
"include_verbatim": {
"description": "Find links in verbatim sections like `pre`- and `code` blocks",
"type": [
"boolean",
"null"
],
"default": null
},
"include_wikilinks": {
"description": "Check WikiLinks in Markdown files, this requires specifying --base-url",
"type": [
"boolean",
"null"
],
"default": null
},
"index_files": {
"description": "When checking locally, resolves directory links to a separate index file.\nThe argument is a comma-separated list of index file names to search for. Index\nnames are relative to the link's directory and attempted in the order given.\n\nIf `--index-files` is specified, then at least one index file must exist in\norder for a directory link to be considered valid. Additionally, the special\nname `.` can be used in the list to refer to the directory itself.\n\nIf unspecified (the default behavior), index files are disabled and directory\nlinks are considered valid as long as the directory exists on disk.\n\nExample 1: `--index-files index.html,readme.md` looks for index.html or readme.md\n and requires that at least one exists.\n\nExample 2: `--index-files index.html,.` will use index.html if it exists, but\n still accept the directory link regardless.\n\nExample 3: `--index-files ''` will reject all directory links because there are\n no valid index files. This will require every link to explicitly name\n a file.\n\nNote: This option only takes effect on `file://` URIs which exist and point to a directory.",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"insecure": {
"description": "Proceed for server connections considered insecure (invalid TLS)",
"type": [
"boolean",
"null"
],
"default": null
},
"max_cache_age": {
"description": "Discard all cached requests older than this duration\n\n[default: 1d]",
"type": [
"string",
"null"
],
"default": null
},
"max_concurrency": {
"description": "Maximum number of concurrent network requests\n\n[default: 128]",
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 1
},
"max_redirects": {
"description": "Maximum number of allowed redirects\n\n[default: 10]",
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 0
},
"max_retries": {
"description": "Maximum number of retries per request\n\n[default: 3]",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"method": {
"description": "Request method(s)\n\nAccepts a single method or a comma-separated list. When multiple methods\nare given, lychee tries each one in order and returns the first success.\nThis is useful for servers that reject `HEAD` requests: `--method head,get`\nfalls back to `GET` when `HEAD` fails.\n\nNote: checking URL fragments requires the response body, which is only\nfetched for `GET` requests. When a link succeeds with a non-`GET` method\n(e.g. `HEAD`), its fragment is not checked.\n\n[default: get]",
"anyOf": [
{
"$ref": "#/definitions/Methods"
},
{
"type": "null"
}
]
},
"min_tls": {
"description": "Minimum accepted TLS Version",
"anyOf": [
{
"$ref": "#/definitions/TlsVersion"
},
{
"type": "null"
}
]
},
"mode": {
"description": "Set the output display mode. Determines how results are presented in the terminal\n\n[default: color]",
"anyOf": [
{
"$ref": "#/definitions/OutputMode"
},
{
"type": "null"
}
]
},
"no_ignore": {
"description": "Do not skip files that would otherwise be ignored by\n'.gitignore', '.ignore', or the global ignore file.",
"type": [
"boolean",
"null"
],
"default": null
},
"no_progress": {
"description": "Do not show progress bar.\nThis is recommended for non-interactive shells (e.g. for continuous integration)",
"type": [
"boolean",
"null"
],
"default": null
},
"offline": {
"description": "Only check local files and block network requests.",
"type": [
"boolean",
"null"
],
"default": null
},
"output": {
"description": "Output file of status report",
"type": [
"string",
"null"
]
},
"preprocess": {
"description": "Preprocess input files with the given command.\n\nFor each file input, this flag causes lychee to execute `COMMAND PATH` and process\nits standard output instead of the original contents of PATH. This allows you to\nconvert files that would otherwise not be understood by lychee. The preprocessor\nCOMMAND is only run on input files, not on standard input or URLs.\n\nTo invoke programs with custom arguments or to use multiple preprocessors, use a\nwrapper program such as a shell script. An example script looks like this:\n\n```bash\n#!/usr/bin/env bash\ncase \"$1\" in\n*.pdf)\n exec pdftohtml -i -s -stdout \"$1\"\n ;;\n*.odt|*.docx|*.epub|*.ipynb)\n exec pandoc \"$1\" --to=html --wrap=none\n ;;\n*)\n # identity function, output input without changes\n exec cat\n ;;\nesac\n```",
"anyOf": [
{
"$ref": "#/definitions/Preprocessor"
},
{
"type": "null"
}
]
},
"remap": {
"description": "Remap URI matching pattern to different URI",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"require_https": {
"description": "When HTTPS is available, treat HTTP links as errors",
"type": [
"boolean",
"null"
],
"default": null
},
"retry_wait_time": {
"description": "Minimum wait time in seconds between retries of failed requests\n\n[default: 1]",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"root_dir": {
"description": "Root directory to use when checking absolute links in local files. This option is\nrequired if absolute links appear in local files, otherwise those links will be\nflagged as errors. This must be an absolute path (i.e., one beginning with `/`).\n\nIf specified, absolute links in local files are resolved by prefixing the given\nroot directory to the requested absolute link. For example, with a root-dir of\n`/root/dir`, a link to `/page.html` would be resolved to `/root/dir/page.html`.\n\nThis option can be specified alongside `--base-url`. If both are given, an\nabsolute link is resolved by constructing a URL from three parts: the domain\nname specified in `--base-url`, followed by the `--root-dir` directory path,\nfollowed by the absolute link's own path.",
"type": [
"string",
"null"
]
},
"scheme": {
"description": "Only test links with the given schemes (e.g. https).\nOmit to check links with any other scheme.\nAt the moment, we support http, https, file, and mailto.",
"type": "array",
"default": [],
"items": {
"type": "string"
}
},
"skip_missing": {
"description": "Skip missing input files (default is to error if they don't exist)",
"type": [
"boolean",
"null"
],
"default": null
},
"suggest": {
"description": "Suggest link replacements for broken links, using a web archive.\nThe web archive can be specified with `--archive`",
"type": [
"boolean",
"null"
],
"default": null
},
"threads": {
"description": "Number of threads to utilize.\nDefaults to number of cores available to the system",
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 1
},
"timeout": {
"description": "Website timeout in seconds from connect to response finished\n\n[default: 20]",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"user_agent": {
"description": "User agent\n\n[default: lychee/x.y.z]",
"type": [
"string",
"null"
]
},
"verbose": {
"description": "Verbose program output",
"anyOf": [
{
"$ref": "#/definitions/Verbosity"
},
{
"type": "null"
}
]
}
},
"additionalProperties": false,
"definitions": {
"Archive": {
"description": "Archives supported in configuration files.",
"type": "string",
"enum": [
"wayback"
]
},
"BasicAuthSelector": {
"description": "Basic-auth selectors use `<uri-regex> <username>:<password>` syntax.",
"type": "string",
"pattern": "^\\s*\\S+ [^:\\s]+:[^:\\s]+\\s*$"
},
"FragmentMode": {
"description": "Values for `--include-fragments` option, which controls how URL fragments are checked.",
"type": "string",
"enum": [
"none",
"anchor-only",
"text-only",
"full"
]
},
"GenerateMode": {
"description": "What to generate when providing the --generate flag",
"oneOf": [
{
"description": "Generate roff used for the man page",
"type": "string",
"const": "man"
},
{
"description": "Generate a JSON schema for the configuration file",
"type": "string",
"const": "config-schema"
},
{
"description": "Generate shell completion for Bash",
"type": "string",
"const": "complete-bash"
},
{
"description": "Generate shell completion for Elvish",
"type": "string",
"const": "complete-elvish"
},
{
"description": "Generate shell completion for Fish",
"type": "string",
"const": "complete-fish"
},
{
"description": "Generate shell completion for PowerShell",
"type": "string",
"const": "complete-powershell"
},
{
"description": "Generate shell completion for Zsh",
"type": "string",
"const": "complete-zsh"
}
]
},
"HostConfig": {
"description": "Per-host request settings accepted below the `hosts` table.",
"type": "object",
"properties": {
"accept": {
"anyOf": [
{
"$ref": "#/definitions/StatusCodeSelector"
},
{
"type": "null"
}
]
},
"concurrency": {
"type": [
"integer",
"null"
],
"format": "uint",
"minimum": 0
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"default": {}
},
"request_interval": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
},
"HttpMethod": {
"type": "string",
"pattern": "^[!#$%&'*+.^_`|~0-9A-Za-z-]+$"
},
"HttpMethodsString": {
"type": "string",
"pattern": "^\\s*[!#$%&'*+.^_`|~0-9A-Za-z-]+(\\s*,\\s*[!#$%&'*+.^_`|~0-9A-Za-z-]+)*\\s*$"
},
"Methods": {
"description": "Request methods accept either a comma-separated string or a non-empty list.",
"anyOf": [
{
"$ref": "#/definitions/HttpMethodsString"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/HttpMethod"
},
"minItems": 1
}
]
},
"OutputMode": {
"description": "The different formatter modes\n\nThis decides over whether to use color,\nemojis, or plain text for the output.",
"oneOf": [
{
"description": "Plain text output.\n\nThis is the most basic output mode for terminals that do not support\ncolor or emojis. It can also be helpful for scripting or when you want\nto pipe the output to another program.",
"type": "string",
"const": "plain"
},
{
"description": "Colorful output.\n\nThis mode uses colors to highlight the status of the requests.\nIt is useful for terminals that support colors and you want to\nprovide a more visually appealing output.\n\nThis is the default output mode.",
"type": "string",
"const": "color"
},
{
"description": "Emoji output.\n\nThis mode uses emojis to represent the status of the requests.\nSome people may find this mode more intuitive and fun to use.",
"type": "string",
"const": "emoji"
},
{
"description": "Task output.\n\nThis mode uses Markdown-styled checkboxes to represent the status of the requests.\nSome people may find this mode more intuitive and useful for task tracking.",
"type": "string",
"const": "task"
}
]
},
"Preprocessor": {
"description": "File-based preprocessor configuration.",
"type": "object",
"properties": {
"command": {
"type": "string"
}
},
"required": [
"command"
]
},
"StatsFormat": {
"description": "The format to use for the final status report",
"type": "string",
"enum": [
"compact",
"detailed",
"json",
"junit",
"markdown"
]
},
"StatusCode": {
"type": "integer",
"format": "uint16",
"maximum": 999,
"minimum": 100
},
"StatusCodeSelector": {
"description": "A status-code selector accepts a single integer, a selector string, or a\nmixed list of integers and selector strings.",
"anyOf": [
{
"$ref": "#/definitions/StatusCode"
},
{
"$ref": "#/definitions/StatusCodeSelectorString"
},
{
"type": "array",
"items": {
"$ref": "#/definitions/StatusCodeSelectorValue"
}
}
]
},
"StatusCodeSelectorString": {
"type": "string",
"pattern": "^\\s*((0*[1-9][0-9]{2}|(0*[1-9][0-9]{2})?\\.\\.(=?0*[1-9][0-9]{2}|0*1000)?)(\\s*,\\s*(0*[1-9][0-9]{2}|(0*[1-9][0-9]{2})?\\.\\.(=?0*[1-9][0-9]{2}|0*1000)?))*)?\\s*$"
},
"StatusCodeSelectorValue": {
"anyOf": [
{
"$ref": "#/definitions/StatusCode"
},
{
"$ref": "#/definitions/StatusRangeString"
}
]
},
"StatusRangeString": {
"type": "string",
"pattern": "^(0*[1-9][0-9]{2}|(0*[1-9][0-9]{2})?\\.\\.(=?0*[1-9][0-9]{2}|0*1000)?)$"
},
"TlsVersion": {
"type": "string",
"enum": [
"TLSv1_0",
"TLSv1_1",
"TLSv1_2",
"TLSv1_3"
]
},
"Verbosity": {
"description": "Log levels accepted by the case-insensitive verbosity deserializer.",
"type": "string",
"pattern": "^([eE][rR][rR][oO][rR]|[wW][aA][rR][nN]|[wW][aA][rR][nN][iI][nN][gG]|[iI][nN][fF][oO]|[dD][eE][bB][uU][gG]|[tT][rR][aA][cC][eE])$"
}
}
}