@jrpool/kilotest 38.0.0 → 39.0.0

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 (57) hide show
  1. package/.markdownlint-cli2.jsonc +12 -0
  2. package/.vscode/settings.json +3 -0
  3. package/CLAUDE.md +5 -0
  4. package/README.md +6 -4
  5. package/ai0BalanceForm/index.html +1 -1
  6. package/alerts.js +3 -1
  7. package/api/getReport.js +66 -0
  8. package/api/listDiagnoses.js +157 -0
  9. package/api/listIssues.js +225 -0
  10. package/api/listReports.js +87 -0
  11. package/api/listViolators.js +164 -0
  12. package/api/requestFeature.js +56 -0
  13. package/api/requestRetest.js +102 -0
  14. package/api/requestTest.js +106 -0
  15. package/api/routes.js +97 -0
  16. package/api/schemas.js +297 -0
  17. package/api/testSuite.js +294 -0
  18. package/api/util.js +149 -0
  19. package/diagnoses/index.js +2 -2
  20. package/docs/{AI-TOOL.md → AI-TOOLS.md} +54 -26
  21. package/docs/SERVICE.md +4 -1
  22. package/docs/decisions/001-api-design.md +59 -49
  23. package/eslint.config.mjs +13 -3
  24. package/index.html +1 -1
  25. package/index.js +201 -188
  26. package/issues/index.js +13 -21
  27. package/jsconfig.json +8 -0
  28. package/llms-full.txt +2 -2
  29. package/llms.txt +16 -11
  30. package/mcp.js +129 -65
  31. package/openapi.yaml +1234 -572
  32. package/package.json +18 -11
  33. package/reannotate/index.js +26 -15
  34. package/reannotateForm/index.js +15 -13
  35. package/redocly.yaml +4 -0
  36. package/reportHideForm/index.html +1 -1
  37. package/reportHideForm/index.js +24 -38
  38. package/reportIssue/index.js +3 -3
  39. package/reportIssues/index.js +128 -1
  40. package/reportUnhideForm/index.js +36 -44
  41. package/reportsExpungeForm/index.js +22 -16
  42. package/reportsPruneForm/index.js +22 -12
  43. package/reportsRewindForm/index.js +17 -9
  44. package/retestRec/index.js +8 -4
  45. package/retestRecForm/index.js +18 -6
  46. package/scripts/generate-openapi.js +83 -0
  47. package/targets/index.js +18 -13
  48. package/testOrder/index.js +11 -8
  49. package/tutorial/index.html +12 -12
  50. package/util.js +580 -539
  51. package/reportIssue/api.js +0 -183
  52. package/reportIssues/util.js +0 -138
  53. package/reportList/api.js +0 -83
  54. package/reportSummary/api.js +0 -181
  55. package/researchAgent.js +0 -206
  56. package/target/api.js +0 -126
  57. package/testRecForm/api.js +0 -55
package/openapi.yaml CHANGED
@@ -1,400 +1,1269 @@
1
1
  openapi: 3.1.0
2
2
  info:
3
- title: Kilotest Agent API
4
- description: Kilotest tests web pages for front-end quality (i.e. accessibility, usability, and standards conformity) using an ensemble of ten independent rule engines that employ rule-based and machine-learning-based methods. This API enables AI agents to recommend web pages for testing, discover available test reports, and retrieve data from reports. Each report describes results of one job that tested one web page. For background on Kilotest and the advantages of ensemble testing, visit https://kilotest.com.
5
- version: 1.0.0
3
+ title: Kilotest API
4
+ description: 'Kilotest is an ensemble testing and reporting service for front-end web quality. It uses an ensemble of 10 rule engines to test public web pages for front-end quality (accessibility, usability, and standards conformity). Kilotest acts as a web server for human users, an MCP server for AI platforms, and an API for programmatic access. With this API you can request that a page be tested or retested, discover available reports, incrementally retrieve facts from a report: from what reports are available, to what issues were reported in one report, to what elements violated one issue, to what diagnoses rule engines gave for one violation.'
5
+ version: 39.0.0
6
+ license:
7
+ name: MIT
8
+ identifier: MIT
6
9
  contact:
7
10
  name: Kilotest
8
- url: https://kilotest.com
11
+ url: https://github.com/jrpool/kilotest
9
12
  email: info@kilotest.com
10
-
11
13
  servers:
12
14
  - url: https://kilotest.com
13
15
  description: Kilotest production server
14
-
16
+ security: []
15
17
  paths:
16
- /api/target:
17
- post:
18
- operationId: summarizeQualityOfMatchingWebPages
19
- summary: Summarize the quality of matching web pages
20
- description: Get summary data from the available reports about web pages whose descriptions or hostnames match your specifications. Matching is case-insensitive and succeeds if at least 1 specification is included by or includes the corresponding property of a tested page. The data include the name and URL of each tested web page, when the testing was performed, how many front-end quality (i.e. accessibility, usability, and standards conformity) issues were reported, and URLs for retrieving more detailed data from the report.
21
- requestBody:
22
- description: Page specifications
23
- required: true
24
- content:
25
- application/json:
26
- schema:
27
- $ref: '#/components/schemas/Target'
18
+ /api/listReports:
19
+ get:
20
+ operationId: listReports
21
+ summary: List all available reports
28
22
  responses:
29
23
  '200':
30
- description: Summary of the quality of matching web pages
24
+ description: List all available reports
31
25
  content:
32
26
  application/json:
33
27
  schema:
34
- $ref: '#/components/schemas/TargetsResponse'
35
-
36
- /api/reportList:
28
+ type: object
29
+ properties:
30
+ tool collection:
31
+ $ref: '#/components/schemas/ToolsFacts'
32
+ tool name:
33
+ type: string
34
+ this request:
35
+ type: object
36
+ properties:
37
+ description:
38
+ type: string
39
+ method:
40
+ type: string
41
+ const: GET
42
+ URL:
43
+ type: string
44
+ closest ancestor request:
45
+ anyOf:
46
+ - $ref: '#/components/schemas/RequestReference'
47
+ - type: 'null'
48
+ required:
49
+ - description
50
+ - method
51
+ - URL
52
+ - closest ancestor request
53
+ additionalProperties: false
54
+ URLs of similar requests for web users:
55
+ $ref: '#/components/schemas/SimilarWebRequests'
56
+ response metadata:
57
+ $ref: '#/components/schemas/ResponseMetadata'
58
+ response content:
59
+ type: object
60
+ properties:
61
+ basics about all available reports:
62
+ type: array
63
+ items:
64
+ type: object
65
+ properties:
66
+ identifier:
67
+ type: string
68
+ description: timeStamp-jobID identifier of the report.
69
+ completion date and time:
70
+ type: string
71
+ days since the report was completed:
72
+ type: number
73
+ tested web page:
74
+ type: object
75
+ properties:
76
+ description:
77
+ type: string
78
+ URL:
79
+ type: string
80
+ required:
81
+ - description
82
+ - URL
83
+ additionalProperties: false
84
+ whether a later report about the same page exists:
85
+ type: boolean
86
+ how to get details about the report:
87
+ type: object
88
+ properties:
89
+ method:
90
+ type: string
91
+ const: GET
92
+ URL:
93
+ type: string
94
+ required:
95
+ - method
96
+ - URL
97
+ additionalProperties: false
98
+ web users can get details about the report at:
99
+ type: string
100
+ required:
101
+ - identifier
102
+ - completion date and time
103
+ - days since the report was completed
104
+ - tested web page
105
+ - whether a later report about the same page exists
106
+ - how to get details about the report
107
+ - web users can get details about the report at
108
+ additionalProperties: false
109
+ how to request that a page with no report be tested:
110
+ type: object
111
+ properties:
112
+ method:
113
+ type: string
114
+ const: POST
115
+ URL:
116
+ type: string
117
+ request body:
118
+ type: object
119
+ properties:
120
+ description:
121
+ type: string
122
+ URL:
123
+ type: string
124
+ reason:
125
+ type: string
126
+ required:
127
+ - description
128
+ - URL
129
+ - reason
130
+ additionalProperties: false
131
+ how to check whether the request has been fulfilled:
132
+ type: string
133
+ required:
134
+ - method
135
+ - URL
136
+ - request body
137
+ - how to check whether the request has been fulfilled
138
+ additionalProperties: false
139
+ how a web user can request that the page be tested:
140
+ type: object
141
+ properties:
142
+ URL:
143
+ type: string
144
+ required:
145
+ - URL
146
+ additionalProperties: false
147
+ required:
148
+ - basics about all available reports
149
+ - how to request that a page with no report be tested
150
+ - how a web user can request that the page be tested
151
+ additionalProperties: false
152
+ required:
153
+ - tool collection
154
+ - tool name
155
+ - this request
156
+ - URLs of similar requests for web users
157
+ - response metadata
158
+ - response content
159
+ additionalProperties: false
160
+ /api/listIssues/{timeStamp}/{jobID}:
37
161
  get:
38
- operationId: listAllAvailableReports
39
- summary: List all available reports
40
- description: List all available reports. Each report describes the results of a job that tested a web page for front-end quality (i.e. accessibility, usability, and standards conformity). For each report, the list identifies which page was tested and when and provides URLs to begin incremental retrieval of the test results.
162
+ operationId: listIssues
163
+ summary: List basics about the issues in one report
164
+ parameters:
165
+ - in: path
166
+ name: timeStamp
167
+ schema:
168
+ type: string
169
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
170
+ required: true
171
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
172
+ - in: path
173
+ name: jobID
174
+ schema:
175
+ type: string
176
+ description: 'Job identifier of the report (example: x9z)'
177
+ required: true
178
+ description: 'Job identifier of the report (example: x9z)'
41
179
  responses:
42
180
  '200':
43
- description: List of all available reports
181
+ description: List basics about the issues in one report
44
182
  content:
45
183
  application/json:
46
184
  schema:
47
- $ref: '#/components/schemas/ReportListResponse'
48
-
49
- /api/testRecForm:
50
- post:
51
- operationId: recommendQualityTestingOfOneWebPage
52
- summary: Recommend quality testing of one web page
53
- description: Submit a recommendation for Kilotest to test, for the first time, a particular web page for front-end quality (i.e. accessibility, usability, and standards conformity). Recommendations are typically approved and the testing completed within a day, whereupon the results can be found with the listAllAvailableReports operation. Before submitting a recommendation, use the listAllAvailableReports operation to ensure that no report about the page is available, and also to see the stylistic rules for the naming of pages. An attempt to recommend a page for testing will fail if a report about the page is already available.
54
- requestBody:
55
- description: Test recommendation specifications
56
- required: true
57
- content:
58
- application/json:
59
- schema:
60
- $ref: '#/components/schemas/TestRecForm'
185
+ type: object
186
+ properties:
187
+ tool collection:
188
+ $ref: '#/components/schemas/ToolsFacts'
189
+ tool name:
190
+ type: string
191
+ this request:
192
+ type: object
193
+ properties:
194
+ description:
195
+ type: string
196
+ method:
197
+ type: string
198
+ const: GET
199
+ URL:
200
+ type: string
201
+ closest ancestor request:
202
+ anyOf:
203
+ - $ref: '#/components/schemas/RequestReference'
204
+ - type: 'null'
205
+ required:
206
+ - description
207
+ - method
208
+ - URL
209
+ - closest ancestor request
210
+ additionalProperties: false
211
+ URLs of similar requests for web users:
212
+ $ref: '#/components/schemas/SimilarWebRequests'
213
+ response metadata:
214
+ $ref: '#/components/schemas/ResponseMetadata'
215
+ response content:
216
+ type: object
217
+ properties:
218
+ basics about the report:
219
+ $ref: '#/components/schemas/ReportBasicsOrError'
220
+ details about the report:
221
+ anyOf:
222
+ - type: object
223
+ properties:
224
+ job definition:
225
+ type: object
226
+ properties:
227
+ whether the job prohibited redirection:
228
+ description: Copied from the report (strict); type not guaranteed.
229
+ whether the native results of rule engines are reported:
230
+ type: boolean
231
+ whether standardized results are reported:
232
+ type: boolean
233
+ device emulated by the job:
234
+ description: Device object copied verbatim from the report; shape may vary.
235
+ browser type used by the job:
236
+ description: Copied from the report (browserID); type not guaranteed.
237
+ required:
238
+ - whether the job prohibited redirection
239
+ - whether the native results of rule engines are reported
240
+ - whether standardized results are reported
241
+ - device emulated by the job
242
+ - browser type used by the job
243
+ additionalProperties: false
244
+ test results:
245
+ type: object
246
+ properties:
247
+ rule engines that tried to test the page:
248
+ type: array
249
+ items:
250
+ $ref: '#/components/schemas/RuleEngineFacts'
251
+ rule engines that could not test the page:
252
+ type: array
253
+ items:
254
+ type: object
255
+ properties:
256
+ name:
257
+ anyOf:
258
+ - type: string
259
+ - type: 'null'
260
+ reason for failure:
261
+ description: Copied verbatim from the Testaro report; shape may vary.
262
+ required:
263
+ - name
264
+ - reason for failure
265
+ additionalProperties: false
266
+ names of rule engines that reported rule violations:
267
+ type: array
268
+ items:
269
+ anyOf:
270
+ - type: string
271
+ - type: 'null'
272
+ counts of issues by priority:
273
+ type: object
274
+ properties:
275
+ highest:
276
+ type: number
277
+ high:
278
+ type: number
279
+ low:
280
+ type: number
281
+ lowest:
282
+ type: number
283
+ required:
284
+ - highest
285
+ - high
286
+ - low
287
+ - lowest
288
+ additionalProperties: false
289
+ number of elements reported as violators:
290
+ type: number
291
+ required:
292
+ - rule engines that tried to test the page
293
+ - rule engines that could not test the page
294
+ - names of rule engines that reported rule violations
295
+ - counts of issues by priority
296
+ - number of elements reported as violators
297
+ additionalProperties: false
298
+ required:
299
+ - job definition
300
+ - test results
301
+ additionalProperties: false
302
+ - type: 'null'
303
+ how to request that the page be retested:
304
+ anyOf:
305
+ - anyOf:
306
+ - type: object
307
+ properties:
308
+ notice:
309
+ type: string
310
+ required:
311
+ - notice
312
+ additionalProperties: false
313
+ - type: object
314
+ properties:
315
+ method:
316
+ type: string
317
+ const: POST
318
+ URL:
319
+ type: string
320
+ request body:
321
+ type: object
322
+ properties:
323
+ reason:
324
+ type: string
325
+ required:
326
+ - reason
327
+ additionalProperties: false
328
+ how to check whether the request has been fulfilled:
329
+ type: string
330
+ required:
331
+ - method
332
+ - URL
333
+ - request body
334
+ - how to check whether the request has been fulfilled
335
+ additionalProperties: false
336
+ - type: 'null'
337
+ how a web user can request that the page be retested:
338
+ anyOf:
339
+ - type: object
340
+ properties:
341
+ URL:
342
+ type: string
343
+ required:
344
+ - URL
345
+ additionalProperties: false
346
+ - type: 'null'
347
+ how to get the full report in JSON:
348
+ anyOf:
349
+ - type: object
350
+ properties:
351
+ size of the report in bytes:
352
+ type: number
353
+ method:
354
+ type: string
355
+ const: GET
356
+ URL:
357
+ type: string
358
+ required:
359
+ - size of the report in bytes
360
+ - method
361
+ - URL
362
+ additionalProperties: false
363
+ - type: 'null'
364
+ how a web user can get the full report in JSON:
365
+ anyOf:
366
+ - type: object
367
+ properties:
368
+ URL:
369
+ type: string
370
+ required:
371
+ - URL
372
+ additionalProperties: false
373
+ - type: 'null'
374
+ basics about all issues reported in the report:
375
+ type: array
376
+ items:
377
+ type: object
378
+ properties:
379
+ identifier:
380
+ type: string
381
+ summary:
382
+ type: string
383
+ impact on a user:
384
+ type: string
385
+ priority:
386
+ type: string
387
+ enum:
388
+ - lowest
389
+ - low
390
+ - high
391
+ - highest
392
+ rule engines with any violations belonging to the issue:
393
+ type: array
394
+ items:
395
+ type: string
396
+ how to get details about the issue:
397
+ type: object
398
+ properties:
399
+ method:
400
+ type: string
401
+ const: GET
402
+ URL:
403
+ type: string
404
+ required:
405
+ - method
406
+ - URL
407
+ additionalProperties: false
408
+ web users can get details about the issue at:
409
+ type: string
410
+ required:
411
+ - identifier
412
+ - summary
413
+ - impact on a user
414
+ - priority
415
+ - rule engines with any violations belonging to the issue
416
+ - how to get details about the issue
417
+ - web users can get details about the issue at
418
+ additionalProperties: false
419
+ required:
420
+ - basics about the report
421
+ - details about the report
422
+ - how to request that the page be retested
423
+ - how a web user can request that the page be retested
424
+ - how to get the full report in JSON
425
+ - how a web user can get the full report in JSON
426
+ - basics about all issues reported in the report
427
+ additionalProperties: false
428
+ required:
429
+ - tool collection
430
+ - tool name
431
+ - this request
432
+ - URLs of similar requests for web users
433
+ - response metadata
434
+ - response content
435
+ additionalProperties: false
436
+ /api/listViolators/{issueID}/{timeStamp}/{jobID}:
437
+ get:
438
+ operationId: listViolators
439
+ summary: List elements reported as exhibiting one issue
440
+ parameters:
441
+ - in: path
442
+ name: issueID
443
+ schema:
444
+ type: string
445
+ description: 'Issue identifier (example: contrastPoor)'
446
+ required: true
447
+ description: 'Issue identifier (example: contrastPoor)'
448
+ - in: path
449
+ name: timeStamp
450
+ schema:
451
+ type: string
452
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
453
+ required: true
454
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
455
+ - in: path
456
+ name: jobID
457
+ schema:
458
+ type: string
459
+ description: 'Job identifier of the report (example: x9z)'
460
+ required: true
461
+ description: 'Job identifier of the report (example: x9z)'
61
462
  responses:
62
463
  '200':
63
- description: Acknowledgement of test recommendation
464
+ description: List elements reported as exhibiting one issue
64
465
  content:
65
466
  application/json:
66
467
  schema:
67
- $ref: '#/components/schemas/TestRecFormResponse'
68
-
69
- /api/reportSummary/{timeStamp}/{jobID}:
468
+ type: object
469
+ properties:
470
+ tool collection:
471
+ $ref: '#/components/schemas/ToolsFacts'
472
+ tool name:
473
+ type: string
474
+ this request:
475
+ type: object
476
+ properties:
477
+ description:
478
+ type: string
479
+ method:
480
+ type: string
481
+ const: GET
482
+ URL:
483
+ type: string
484
+ closest ancestor request:
485
+ anyOf:
486
+ - $ref: '#/components/schemas/RequestReference'
487
+ - type: 'null'
488
+ required:
489
+ - description
490
+ - method
491
+ - URL
492
+ - closest ancestor request
493
+ additionalProperties: false
494
+ URLs of similar requests for web users:
495
+ $ref: '#/components/schemas/SimilarWebRequests'
496
+ response metadata:
497
+ $ref: '#/components/schemas/ResponseMetadata'
498
+ response content:
499
+ type: object
500
+ properties:
501
+ basics about the report:
502
+ $ref: '#/components/schemas/ReportBasicsOrError'
503
+ basics about the issue:
504
+ $ref: '#/components/schemas/IssueBasicsOrError'
505
+ details about the issue:
506
+ anyOf:
507
+ - type: object
508
+ properties:
509
+ rule engines reporting violations belonging to the issue:
510
+ type: array
511
+ items:
512
+ $ref: '#/components/schemas/RuleEngineFacts'
513
+ required:
514
+ - rule engines reporting violations belonging to the issue
515
+ additionalProperties: false
516
+ - type: 'null'
517
+ basics about all elements reported as exhibiting the issue:
518
+ anyOf:
519
+ - type: array
520
+ items:
521
+ type: object
522
+ properties:
523
+ identifier:
524
+ type: string
525
+ tag name:
526
+ description: Copied from the report catalog entry; type not guaranteed.
527
+ inner text:
528
+ description: Copied from the report catalog entry; type not guaranteed.
529
+ count of rule engines reporting that the element exhibited the issue:
530
+ type: number
531
+ how to get details about the element:
532
+ type: object
533
+ properties:
534
+ URL:
535
+ type: string
536
+ request method:
537
+ type: string
538
+ const: GET
539
+ required:
540
+ - URL
541
+ - request method
542
+ additionalProperties: false
543
+ web users can get details about the element at:
544
+ type: string
545
+ required:
546
+ - identifier
547
+ - tag name
548
+ - inner text
549
+ - count of rule engines reporting that the element exhibited the issue
550
+ - how to get details about the element
551
+ - web users can get details about the element at
552
+ additionalProperties: false
553
+ - type: 'null'
554
+ required:
555
+ - basics about the report
556
+ - basics about the issue
557
+ - details about the issue
558
+ - basics about all elements reported as exhibiting the issue
559
+ additionalProperties: false
560
+ required:
561
+ - tool collection
562
+ - tool name
563
+ - this request
564
+ - URLs of similar requests for web users
565
+ - response metadata
566
+ - response content
567
+ additionalProperties: false
568
+ /api/listDiagnoses/{catalogIndex}/{issueID}/{timeStamp}/{jobID}:
70
569
  get:
71
- operationId: summarizeOneReport
72
- summary: Summarize one report
73
- description: Summarize one report. The summary should briefly describe the testing job and the results, including the rule engines that tested the web page and the issues that were revealed by the reported rule violations, and provide URLs for getting details about issues. The timeStamp and jobID parameters identify the report and were obtained from the response to a listAllAvailableReports operation.
570
+ operationId: listDiagnoses
571
+ summary: List diagnoses of how one element exhibited one issue
74
572
  parameters:
75
- - name: timeStamp
76
- in: path
573
+ - in: path
574
+ name: catalogIndex
575
+ schema:
576
+ type: string
577
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
578
+ required: true
579
+ description: 'Identifier of the issue-exhibiting element in the catalog of elements on the page (example: 372)'
580
+ - in: path
581
+ name: issueID
582
+ schema:
583
+ type: string
584
+ description: 'Issue identifier (example: contrastPoor)'
77
585
  required: true
78
- description: timeStamp component of the report identifier, in the format YYMMDDTHHMM (e.g., 260503T0432).
586
+ description: 'Issue identifier (example: contrastPoor)'
587
+ - in: path
588
+ name: timeStamp
79
589
  schema:
80
590
  type: string
81
- pattern: '^\d{6}T\d{4}$'
82
- examples:
83
- - 260503T0432
84
- - name: jobID
85
- in: path
591
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
86
592
  required: true
87
- description: Job identifier component of the report identifier (e.g., xx0).
593
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
594
+ - in: path
595
+ name: jobID
88
596
  schema:
89
597
  type: string
90
- examples:
91
- - xx0
598
+ description: 'Job identifier of the report (example: x9z)'
599
+ required: true
600
+ description: 'Job identifier of the report (example: x9z)'
92
601
  responses:
93
602
  '200':
94
- description: Summary of the specified report
603
+ description: List diagnoses of how one element exhibited one issue
95
604
  content:
96
605
  application/json:
97
606
  schema:
98
- $ref: '#/components/schemas/ReportSummaryResponse'
99
- '404':
100
- description: No report with the specified identifier is available
101
-
102
- /api/reportIssue/{issueID}/{timeStamp}/{jobID}:
607
+ type: object
608
+ properties:
609
+ tool collection:
610
+ $ref: '#/components/schemas/ToolsFacts'
611
+ tool name:
612
+ type: string
613
+ this request:
614
+ type: object
615
+ properties:
616
+ description:
617
+ type: string
618
+ method:
619
+ type: string
620
+ const: GET
621
+ URL:
622
+ type: string
623
+ closest ancestor request:
624
+ anyOf:
625
+ - $ref: '#/components/schemas/RequestReference'
626
+ - type: 'null'
627
+ required:
628
+ - description
629
+ - method
630
+ - URL
631
+ - closest ancestor request
632
+ additionalProperties: false
633
+ URLs of similar requests for web users:
634
+ $ref: '#/components/schemas/SimilarWebRequests'
635
+ response metadata:
636
+ $ref: '#/components/schemas/ResponseMetadata'
637
+ response content:
638
+ type: object
639
+ properties:
640
+ basics about the report:
641
+ $ref: '#/components/schemas/ReportBasicsOrError'
642
+ basics about the issue:
643
+ $ref: '#/components/schemas/IssueBasicsOrError'
644
+ basics about the element:
645
+ anyOf:
646
+ - anyOf:
647
+ - type: object
648
+ properties:
649
+ identifier:
650
+ type: string
651
+ tag name:
652
+ description: Copied from the report catalog entry; type not guaranteed.
653
+ inner text:
654
+ description: Copied from the report catalog entry; type not guaranteed.
655
+ required:
656
+ - identifier
657
+ - tag name
658
+ - inner text
659
+ additionalProperties: false
660
+ - type: object
661
+ properties:
662
+ error:
663
+ type: string
664
+ required:
665
+ - error
666
+ additionalProperties: false
667
+ - type: 'null'
668
+ details about the element:
669
+ anyOf:
670
+ - type: object
671
+ properties:
672
+ start tag:
673
+ description: Copied from the report catalog entry; type not guaranteed.
674
+ XPath:
675
+ description: Copied from the report catalog entry; type not guaranteed.
676
+ x, y, width, and height of bounding box:
677
+ description: Copied from the report catalog entry; type not guaranteed.
678
+ required:
679
+ - start tag
680
+ - XPath
681
+ - x, y, width, and height of bounding box
682
+ additionalProperties: false
683
+ - type: 'null'
684
+ diagnoses of how the element exhibited the issue:
685
+ anyOf:
686
+ - type: array
687
+ items:
688
+ type: object
689
+ properties:
690
+ identifier of the violated rule:
691
+ description: Copied from the report instance (ruleID); type not guaranteed.
692
+ description of the violation:
693
+ description: Copied from the report instance (what); type not guaranteed.
694
+ severity of the violation on a 0-to-3 scale:
695
+ description: Copied from the report instance (ordinalSeverity); type not guaranteed.
696
+ count of violations of the rule by the element:
697
+ type: number
698
+ required:
699
+ - identifier of the violated rule
700
+ - description of the violation
701
+ - severity of the violation on a 0-to-3 scale
702
+ - count of violations of the rule by the element
703
+ additionalProperties: false
704
+ - type: object
705
+ properties:
706
+ error:
707
+ type: string
708
+ required:
709
+ - error
710
+ additionalProperties: false
711
+ required:
712
+ - basics about the report
713
+ - basics about the issue
714
+ - basics about the element
715
+ - details about the element
716
+ - diagnoses of how the element exhibited the issue
717
+ additionalProperties: false
718
+ required:
719
+ - tool collection
720
+ - tool name
721
+ - this request
722
+ - URLs of similar requests for web users
723
+ - response metadata
724
+ - response content
725
+ additionalProperties: false
726
+ /api/getReport/{timeStamp}/{jobID}:
103
727
  get:
104
- operationId: describeOneIssueFromOneReport
105
- summary: Describe one issue from one report
106
- description: Get issue-specific data from a specified report about the front-end quality (i.e. accessibility, usability, and standards conformity) of a web page. The data describe the issue, all of the HTML elements of the page that have the issue, and, for each such element, URLs for retrieving diagnoses by rule engines of the issue on the element.
728
+ operationId: getReport
729
+ summary: Get one full report in JSON
107
730
  parameters:
108
- - name: issueID
109
- in: path
731
+ - in: path
732
+ name: timeStamp
733
+ schema:
734
+ type: string
735
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
110
736
  required: true
111
- description: Issue identifier (e.g., imageNoText). Available under "response content" > "issues revealed" > [item] > "identifier" in the summarizeOneReport response.
737
+ description: 'Timestamp of the report in YYMMDDTHHmm format (example: 260503T0432)'
738
+ - in: path
739
+ name: jobID
112
740
  schema:
113
741
  type: string
114
- examples:
115
- - imageNoText
116
- - name: timeStamp
117
- in: path
742
+ description: 'Job identifier of the report (example: x9z)'
118
743
  required: true
744
+ description: 'Job identifier of the report (example: x9z)'
745
+ responses:
746
+ '200':
747
+ description: Get one full report in JSON
748
+ content:
749
+ application/json:
750
+ schema:
751
+ type: object
752
+ properties:
753
+ tool collection:
754
+ $ref: '#/components/schemas/ToolsFacts'
755
+ tool name:
756
+ type: string
757
+ this request:
758
+ type: object
759
+ properties:
760
+ description:
761
+ type: string
762
+ method:
763
+ type: string
764
+ const: GET
765
+ URL:
766
+ type: string
767
+ closest ancestor request:
768
+ anyOf:
769
+ - $ref: '#/components/schemas/RequestReference'
770
+ - type: 'null'
771
+ required:
772
+ - description
773
+ - method
774
+ - URL
775
+ - closest ancestor request
776
+ additionalProperties: false
777
+ URLs of similar requests for web users:
778
+ $ref: '#/components/schemas/SimilarWebRequests'
779
+ response metadata:
780
+ $ref: '#/components/schemas/ResponseMetadata'
781
+ response content:
782
+ type: object
783
+ properties:
784
+ size of the report in bytes:
785
+ anyOf:
786
+ - type: number
787
+ - type: string
788
+ full report:
789
+ description: The full raw Testaro/Testilo report JSON, copied verbatim, or an error object if it could not be retrieved.
790
+ required:
791
+ - size of the report in bytes
792
+ - full report
793
+ additionalProperties: false
794
+ required:
795
+ - tool collection
796
+ - tool name
797
+ - this request
798
+ - URLs of similar requests for web users
799
+ - response metadata
800
+ - response content
801
+ additionalProperties: false
802
+ /api/requestTest:
803
+ post:
804
+ operationId: requestTest
805
+ summary: Request that a page be tested
806
+ requestBody:
807
+ content:
808
+ application/json:
809
+ schema:
810
+ type: object
811
+ properties:
812
+ description:
813
+ type: string
814
+ description: 10- to 100-character description of the page conforming to the naming convention used in the listReports output
815
+ URL:
816
+ type: string
817
+ description: 12- to 300-character URL of the page, including the https:// scheme and any query
818
+ reason:
819
+ type: string
820
+ description: 20- to 100-character reason why the page should be tested
821
+ required:
822
+ - description
823
+ - URL
824
+ - reason
825
+ responses:
826
+ '200':
827
+ description: Request that a page be tested
828
+ content:
829
+ application/json:
830
+ schema:
831
+ type: object
832
+ properties:
833
+ tool collection:
834
+ $ref: '#/components/schemas/ToolsFacts'
835
+ tool name:
836
+ type: string
837
+ this request:
838
+ type: object
839
+ properties:
840
+ description:
841
+ type: string
842
+ method:
843
+ type: string
844
+ const: POST
845
+ URL:
846
+ type: string
847
+ body:
848
+ type: object
849
+ properties:
850
+ description:
851
+ type: string
852
+ description: 10- to 100-character description of the page conforming to the naming convention used in the listReports output
853
+ URL:
854
+ type: string
855
+ description: 12- to 300-character URL of the page, including the https:// scheme and any query
856
+ reason:
857
+ type: string
858
+ description: 20- to 100-character reason why the page should be tested
859
+ required:
860
+ - description
861
+ - URL
862
+ - reason
863
+ additionalProperties: false
864
+ closest ancestor request:
865
+ anyOf:
866
+ - $ref: '#/components/schemas/RequestReference'
867
+ - type: 'null'
868
+ required:
869
+ - description
870
+ - method
871
+ - URL
872
+ - body
873
+ - closest ancestor request
874
+ additionalProperties: false
875
+ URLs of similar requests for web users:
876
+ $ref: '#/components/schemas/SimilarWebRequests'
877
+ response metadata:
878
+ $ref: '#/components/schemas/ResponseMetadata'
879
+ response content:
880
+ type: object
881
+ properties:
882
+ details about your request:
883
+ anyOf:
884
+ - type: object
885
+ properties:
886
+ error:
887
+ type: string
888
+ required:
889
+ - error
890
+ additionalProperties: false
891
+ - type: object
892
+ properties:
893
+ date and time received:
894
+ type: string
895
+ page to be tested:
896
+ type: object
897
+ properties:
898
+ description:
899
+ type: string
900
+ URL:
901
+ type: string
902
+ required:
903
+ - description
904
+ - URL
905
+ additionalProperties: false
906
+ reason why the page should be tested:
907
+ type: string
908
+ required:
909
+ - date and time received
910
+ - page to be tested
911
+ - reason why the page should be tested
912
+ additionalProperties: false
913
+ required:
914
+ - details about your request
915
+ additionalProperties: false
916
+ required:
917
+ - tool collection
918
+ - tool name
919
+ - this request
920
+ - URLs of similar requests for web users
921
+ - response metadata
922
+ - response content
923
+ additionalProperties: false
924
+ /api/requestRetest/{timeStamp}/{jobID}:
925
+ post:
926
+ operationId: requestRetest
927
+ summary: Request that a page be retested
928
+ parameters:
929
+ - in: path
930
+ name: timeStamp
119
931
  schema:
120
932
  type: string
121
- examples:
122
- - 20271124T1647
123
- - name: jobID
124
- in: path
933
+ description: 'Timestamp of the latest report about the page in YYMMDDTHHmm format (example: 260503T0432)'
125
934
  required: true
935
+ description: 'Timestamp of the latest report about the page in YYMMDDTHHmm format (example: 260503T0432)'
936
+ - in: path
937
+ name: jobID
126
938
  schema:
127
939
  type: string
128
- examples:
129
- - x58
940
+ description: 'Job identifier of the latest report about the page (example: x9z)'
941
+ required: true
942
+ description: 'Job identifier of the latest report about the page (example: x9z)'
943
+ requestBody:
944
+ content:
945
+ application/json:
946
+ schema:
947
+ type: object
948
+ properties:
949
+ reason:
950
+ type: string
951
+ description: 20- to 100-character reason why the page should be retested
952
+ required:
953
+ - reason
130
954
  responses:
131
955
  '200':
132
- description: Details about the specified issue from the specified report
956
+ description: Request that a page be retested
133
957
  content:
134
958
  application/json:
135
959
  schema:
136
- $ref: '#/components/schemas/ReportIssueResponse'
137
- '404':
138
- description: No report or issue found with the specified identifiers
139
-
960
+ type: object
961
+ properties:
962
+ tool collection:
963
+ $ref: '#/components/schemas/ToolsFacts'
964
+ tool name:
965
+ type: string
966
+ this request:
967
+ type: object
968
+ properties:
969
+ description:
970
+ type: string
971
+ method:
972
+ type: string
973
+ const: POST
974
+ URL:
975
+ type: string
976
+ body:
977
+ type: object
978
+ properties:
979
+ reason:
980
+ type: string
981
+ description: 20- to 100-character reason why the page should be retested
982
+ required:
983
+ - reason
984
+ additionalProperties: false
985
+ closest ancestor request:
986
+ anyOf:
987
+ - $ref: '#/components/schemas/RequestReference'
988
+ - type: 'null'
989
+ required:
990
+ - description
991
+ - method
992
+ - URL
993
+ - body
994
+ - closest ancestor request
995
+ additionalProperties: false
996
+ URLs of similar requests for web users:
997
+ $ref: '#/components/schemas/SimilarWebRequests'
998
+ response metadata:
999
+ $ref: '#/components/schemas/ResponseMetadata'
1000
+ response content:
1001
+ type: object
1002
+ properties:
1003
+ details about your request:
1004
+ anyOf:
1005
+ - type: object
1006
+ properties:
1007
+ error:
1008
+ type: string
1009
+ required:
1010
+ - error
1011
+ additionalProperties: false
1012
+ - type: object
1013
+ properties:
1014
+ date and time received:
1015
+ type: string
1016
+ page to be retested:
1017
+ type: object
1018
+ properties:
1019
+ description:
1020
+ type: string
1021
+ URL:
1022
+ type: string
1023
+ required:
1024
+ - description
1025
+ - URL
1026
+ additionalProperties: false
1027
+ reason why the page should be retested:
1028
+ type: string
1029
+ required:
1030
+ - date and time received
1031
+ - page to be retested
1032
+ - reason why the page should be retested
1033
+ additionalProperties: false
1034
+ required:
1035
+ - details about your request
1036
+ additionalProperties: false
1037
+ required:
1038
+ - tool collection
1039
+ - tool name
1040
+ - this request
1041
+ - URLs of similar requests for web users
1042
+ - response metadata
1043
+ - response content
1044
+ additionalProperties: false
1045
+ /api/requestFeature:
1046
+ post:
1047
+ operationId: requestFeature
1048
+ summary: Request a new feature or feature improvement
1049
+ requestBody:
1050
+ content:
1051
+ application/json:
1052
+ schema:
1053
+ type: object
1054
+ properties:
1055
+ request:
1056
+ type: string
1057
+ description: description of requested new feature or feature improvement
1058
+ required:
1059
+ - request
1060
+ responses:
1061
+ '200':
1062
+ description: Request a new feature or feature improvement
1063
+ content:
1064
+ application/json:
1065
+ schema:
1066
+ type: object
1067
+ properties:
1068
+ tool collection:
1069
+ $ref: '#/components/schemas/ToolsFacts'
1070
+ tool name:
1071
+ type: string
1072
+ this request:
1073
+ type: object
1074
+ properties:
1075
+ description:
1076
+ type: string
1077
+ method:
1078
+ type: string
1079
+ const: POST
1080
+ URL:
1081
+ type: string
1082
+ body:
1083
+ type: object
1084
+ properties:
1085
+ request:
1086
+ type: string
1087
+ description: description of requested new feature or feature improvement
1088
+ required:
1089
+ - request
1090
+ additionalProperties: false
1091
+ closest ancestor request:
1092
+ anyOf:
1093
+ - $ref: '#/components/schemas/RequestReference'
1094
+ - type: 'null'
1095
+ required:
1096
+ - description
1097
+ - method
1098
+ - URL
1099
+ - body
1100
+ - closest ancestor request
1101
+ additionalProperties: false
1102
+ URLs of similar requests for web users:
1103
+ $ref: '#/components/schemas/SimilarWebRequests'
1104
+ response metadata:
1105
+ $ref: '#/components/schemas/ResponseMetadata'
1106
+ response content:
1107
+ type: object
1108
+ properties:
1109
+ details about your request:
1110
+ anyOf:
1111
+ - type: object
1112
+ properties:
1113
+ error:
1114
+ type: string
1115
+ required:
1116
+ - error
1117
+ additionalProperties: false
1118
+ - type: object
1119
+ properties:
1120
+ date and time received:
1121
+ type: string
1122
+ disposition:
1123
+ type: string
1124
+ required:
1125
+ - date and time received
1126
+ - disposition
1127
+ additionalProperties: false
1128
+ required:
1129
+ - details about your request
1130
+ additionalProperties: false
1131
+ required:
1132
+ - tool collection
1133
+ - tool name
1134
+ - this request
1135
+ - URLs of similar requests for web users
1136
+ - response metadata
1137
+ - response content
1138
+ additionalProperties: false
140
1139
  components:
141
1140
  schemas:
142
-
143
- CommonResponseFields:
1141
+ ToolsFacts:
144
1142
  type: object
145
1143
  properties:
146
- summary:
147
- type: string
148
- description: Natural-language description of this response and of Kilotest. Provides context for an agent encountering Kilotest for the first time.
149
- tool collection name:
150
- type: string
151
- examples:
152
- - Kilotest
153
- tool name:
1144
+ name:
154
1145
  type: string
155
- examples:
156
- - listAllAvailableReports
157
- request:
1146
+ description:
158
1147
  type: object
159
1148
  properties:
160
- type of request:
1149
+ what Kilotest does:
1150
+ type: string
1151
+ how to retrieve findings:
161
1152
  type: object
162
1153
  properties:
163
- identifier:
1154
+ level 1:
164
1155
  type: string
165
- examples:
166
- - reportList
167
- description:
1156
+ level 2:
168
1157
  type: string
169
- method:
170
- type: string
171
- enum:
172
- - GET
173
- - POST
174
- payload:
175
- type: object
176
- description: The request payload, if method type is POST, or otherwise omitted.
177
- URLs:
178
- type: object
179
- properties:
180
- 'for you':
1158
+ level 3:
181
1159
  type: string
182
- 'for humans':
1160
+ level 4:
183
1161
  type: string
184
- closest ancestor request:
185
- oneOf:
186
- - type: 'null'
187
- - type: object
188
- properties:
189
- identifier:
190
- type: string
191
- description:
192
- type: string
193
- URLs:
194
- type: object
195
- properties:
196
- 'for you':
197
- type: string
198
- 'for humans':
199
- type: string
200
- response metadata:
201
- type: object
202
- properties:
203
- identifier:
204
- type: string
205
- description: Unique identifier for this response instance.
206
- date and time:
207
- type: string
208
- description: UTC date and time when the response was generated, in ISO 8601 format.
209
- format: date-time
210
-
211
- SharedFacts:
212
- type: object
213
- properties:
214
- summary:
215
- type: string
216
- description: Natural-language facts about the request, the response, and Kilotest.
217
- tool collection name:
218
- type: string
219
- examples:
220
- - Kilotest
221
- tool name:
222
- type: string
223
- examples:
224
- - listAllAvailableReports
225
- request:
226
- type: object
227
- properties:
228
- description:
229
- type: string
230
- method:
231
- type: string
232
- enum:
233
- - GET
234
- - POST
235
- payload:
236
- type: object
237
- description: The request payload, if method is POST, or otherwise omitted.
238
- URLs:
1162
+ required:
1163
+ - level 1
1164
+ - level 2
1165
+ - level 3
1166
+ - level 4
1167
+ additionalProperties: false
1168
+ how to generate more findings:
239
1169
  type: object
240
1170
  properties:
241
- 'for you':
1171
+ new testing:
242
1172
  type: string
243
- 'for humans':
1173
+ retesting:
244
1174
  type: string
245
- closest ancestor request:
246
- oneOf:
247
- - type: 'null'
248
- - type: object
249
- properties:
250
- 'tool name':
251
- type: string
252
- description:
253
- type: string
254
- URLs:
255
- type: object
256
- properties:
257
- 'for you':
258
- type: string
259
- 'for humans':
260
- type: string
261
- response metadata:
262
- type: object
263
- properties:
264
- identifier:
265
- type: string
266
- description: Unique identifier for this response instance.
267
- date and time:
268
- type: string
269
- description: UTC date and time when the response was generated, in ISO 8601 format.
270
- format: date-time
271
-
272
- TestRecForm:
273
- type: object
274
- properties:
275
- description of the web page:
276
- type: string
277
- description: Description of the web page to be tested.
278
- URL of the web page:
1175
+ latency:
1176
+ type: string
1177
+ confirmation:
1178
+ type: string
1179
+ required:
1180
+ - new testing
1181
+ - retesting
1182
+ - latency
1183
+ - confirmation
1184
+ additionalProperties: false
1185
+ required:
1186
+ - what Kilotest does
1187
+ - how to retrieve findings
1188
+ - how to generate more findings
1189
+ additionalProperties: false
1190
+ description: Explanation of what Kilotest does and how to use its tools.
1191
+ URL:
279
1192
  type: string
280
- description: URL of the web page to be tested.
281
- reason for testing the web page:
1193
+ description: URL of the Kilotest MCP server.
1194
+ web users can obtain similar functionalities at:
282
1195
  type: string
283
- description: Reason for testing the page.
284
-
285
- TestRecFormResponse:
286
- $ref: '#/components/schemas/CommonResponseFields'
287
-
288
- RuleEngineInfo:
1196
+ required:
1197
+ - name
1198
+ - description
1199
+ - URL
1200
+ - web users can obtain similar functionalities at
1201
+ additionalProperties: false
1202
+ RequestReference:
289
1203
  type: object
290
- description: A rule engine in the Kilotest ensemble.
291
1204
  properties:
292
- identifier:
1205
+ tool name:
293
1206
  type: string
294
- description: Short programmatic identifier for the rule engine.
295
- examples:
296
- - alfa
297
- name:
1207
+ description:
298
1208
  type: string
299
- description: Display name of the rule engine.
300
- examples:
301
- - Alfa
302
- sponsor:
1209
+ method:
303
1210
  type: string
304
- description: Organization that created, initially sponsored, or now sponsors the rule engine.
305
- examples:
306
- - Siteimprove
307
-
308
- RuleEngineFailure:
309
- type: object
310
- description: A rule engine that was unable to complete testing of the page.
311
- properties:
312
- name:
1211
+ const: GET
1212
+ URL:
313
1213
  type: string
314
- examples:
315
- - WAVE
316
- reason for failure:
317
- type: string
318
- examples:
319
- - Not enough credits.
320
-
321
- RuleEnginesSummary:
1214
+ required:
1215
+ - tool name
1216
+ - description
1217
+ - method
1218
+ - URL
1219
+ additionalProperties: false
1220
+ SimilarWebRequests:
322
1221
  type: object
323
- description: Count and names of a set of rule engines.
324
1222
  properties:
325
- number:
326
- type: integer
327
- names:
328
- type: array
329
- items:
330
- type: string
331
-
332
- NextTierURLs:
333
- type: object
334
- description: URLs for retrieving the next level of detail.
335
- properties:
336
- for you:
337
- type: string
338
- format: uri
339
- description: URL for an LLM to request the next tier of detail.
340
- for humans:
1223
+ this request:
341
1224
  type: string
342
- format: uri
343
- description: URL for a human to view the next tier of detail.
344
-
345
- TargetsItem:
1225
+ description: URL of the equivalent web UI page for this request.
1226
+ closest ancestor request:
1227
+ anyOf:
1228
+ - type: string
1229
+ - type: 'null'
1230
+ required:
1231
+ - this request
1232
+ - closest ancestor request
1233
+ additionalProperties: false
1234
+ ResponseMetadata:
346
1235
  type: object
347
- description: Summary data about a single available report.
348
1236
  properties:
349
1237
  identifier:
350
1238
  type: string
351
- examples:
352
- - 260504T1659-029
353
- creation date:
1239
+ description: Unique identifier of this response (timestamp and random suffix).
1240
+ date and time:
354
1241
  type: string
355
- format: date-time
356
- days since the creation date:
357
- type: integer
358
- tested web page:
359
- type: object
1242
+ description: UTC date and time when the response was generated, in ISO 8601 format.
1243
+ required:
1244
+ - identifier
1245
+ - date and time
1246
+ additionalProperties: false
1247
+ ReportBasicsOrError:
1248
+ anyOf:
1249
+ - $ref: '#/components/schemas/ReportBasics'
1250
+ - type: object
360
1251
  properties:
361
- description:
1252
+ error:
362
1253
  type: string
363
- URL:
364
- type: string
365
- format: uri
366
- whether a later report about the same page exists:
367
- type: boolean
368
- description: If true, a more recent report about this page is available. If you want the latest results, use that report instead.
369
- number of issues reported:
370
- type: integer
371
- number of HTML elements reported as exhibiting issues:
372
- type: integer
373
- rule engines that tried to test the page:
374
- $ref: '#/components/schemas/RuleEnginesSummary'
375
- rule engines that were unable to test the page:
376
- $ref: '#/components/schemas/RuleEnginesSummary'
377
- rule engines that reported issues:
378
- $ref: '#/components/schemas/RuleEnginesSummary'
379
- URLs for getting data about the reported issues:
380
- $ref: '#/components/schemas/NextTierURLs'
381
- URL for getting the full technical report as JSON:
382
- type: string
383
- format: uri
384
-
385
- ReportListItem:
1254
+ required:
1255
+ - error
1256
+ additionalProperties: false
1257
+ ReportBasics:
386
1258
  type: object
387
- description: Summary data about a single available report.
388
1259
  properties:
389
1260
  identifier:
390
1261
  type: string
391
- examples:
392
- - 260504T1659-029
393
- creation date and time:
1262
+ description: timeStamp-jobID identifier of the report.
1263
+ completion date and time:
394
1264
  type: string
395
- format: date-time
396
- days since the creation date:
397
- type: integer
1265
+ days since the report was completed:
1266
+ type: number
398
1267
  tested web page:
399
1268
  type: object
400
1269
  properties:
@@ -402,286 +1271,79 @@ components:
402
1271
  type: string
403
1272
  URL:
404
1273
  type: string
405
- format: uri
1274
+ required:
1275
+ - description
1276
+ - URL
1277
+ additionalProperties: false
406
1278
  whether a later report about the same page exists:
407
1279
  type: boolean
408
- description: If true, a more recent report about this page is available. If you want the latest results, use that report instead.
409
- URLs for more details:
410
- $ref: '#/components/schemas/NextTierURLs'
411
- size of the report in bytes:
412
- type: integer
413
- URL to get the entire report as machine-oriented JSON:
414
- type: string
415
- format: uri
416
-
417
- Target:
1280
+ required:
1281
+ - identifier
1282
+ - completion date and time
1283
+ - days since the report was completed
1284
+ - tested web page
1285
+ - whether a later report about the same page exists
1286
+ additionalProperties: false
1287
+ RuleEngineFacts:
418
1288
  type: object
419
- properties:
420
- description:
421
- type: string
422
- description: All or part of a description of the web page. If the page is the home page of an organization, the description is the name of the organization (e.g., “Earthjustice”). Otherwise, the description appends minimal differentiating words to the name of the organization (e.g., “Earthjustice Donate”), without the word “page”.
423
- hostname:
424
- type: string
425
- description: All or part of the hostname of the web page. The hostname omits the scheme and the path.
426
-
427
- ReportListResponse:
428
- allOf:
429
- - $ref: '#/components/schemas/SharedFacts'
430
- - type: object
431
- properties:
432
- response content:
433
- type: array
434
- description: One entry per available Kilotest report, in alphabetical order by page description and, in case of multiple reports per page, in order of creation date and time. Whether two reports are about the same page is determined by the page descriptions, not page URLs.
435
- items:
436
- $ref: '#/components/schemas/ReportListItem'
437
-
438
- TargetsResponse:
439
- allOf:
440
- - $ref: '#/components/schemas/CommonResponseFields'
441
- - type: object
442
- properties:
443
- matching reports:
444
- type: array
445
- description: One entry per available matching Kilotest report. A report is matching if its page description or hostname contains or is contained by a specified description or hostname fragment, respectively.
446
- items:
447
- $ref: '#/components/schemas/TargetsItem'
448
-
449
- IssueEntry:
450
- type: object
451
- description: Details about a specific front-end quality issue found on a page.
452
1289
  properties:
453
1290
  identifier:
454
1291
  type: string
455
- examples:
456
- - imageNoText
457
- summary:
458
- type: string
459
- description: Brief natural-language label for the issue.
460
- examples:
461
- - image not named
462
- related WCAG 2.2 standard:
463
- type: object
464
- description: The WCAG 2.2 success criterion or guideline most closely related to this issue.
1292
+ name:
1293
+ anyOf:
1294
+ - type: string
1295
+ - type: 'null'
1296
+ sponsor:
1297
+ anyOf:
1298
+ - type: string
1299
+ - type: 'null'
1300
+ required:
1301
+ - identifier
1302
+ - name
1303
+ - sponsor
1304
+ additionalProperties: false
1305
+ IssueBasicsOrError:
1306
+ anyOf:
1307
+ - type: object
465
1308
  properties:
466
- layer:
1309
+ identifier:
467
1310
  type: string
468
- enum:
469
- - guideline
470
- - success criterion
471
- 'numeric identifier':
1311
+ summary:
1312
+ type: string
1313
+ impact on a user:
1314
+ type: string
1315
+ priority:
472
1316
  type: string
473
- pattern: '^\d\.\d(\.\d+)?$'
474
- examples:
475
- - 1.1.1
476
- impact on a user:
477
- type: string
478
- description: How this issue is likely to affect users.
479
- rule engines reporting the issue:
480
- $ref: '#/components/schemas/RuleEnginesSummary'
481
- number of HTML elements reported as exhibiting the issue:
482
- type: integer
483
- URLs for details about the issue on the page:
484
- $ref: '#/components/schemas/NextTierURLs'
485
-
486
- IssuesByPriority:
487
- type: object
488
- properties:
489
- highest priority:
490
- type: array
491
- items:
492
- $ref: '#/components/schemas/IssueEntry'
493
- high priority:
494
- type: array
495
- items:
496
- $ref: '#/components/schemas/IssueEntry'
497
- low priority:
498
- type: array
499
- items:
500
- $ref: '#/components/schemas/IssueEntry'
501
- lowest priority:
502
- type: array
503
- items:
504
- $ref: '#/components/schemas/IssueEntry'
505
-
506
- IssueSummary:
507
- type: object
508
- properties:
509
- identifier:
510
- type: string
511
- summary:
512
- type: string
513
- impact on a user:
514
- type: string
515
- priority:
516
- type: string
517
- enum:
518
- - lowest
519
- - low
520
- - high
521
- - highest
522
- URLs for more details:
523
- $ref: '#/components/schemas/NextTierURLs'
524
-
525
- ReportSummaryResponse:
526
- allOf:
527
- - $ref: '#/components/schemas/SharedFacts'
528
- - type: object
529
- properties:
530
- response content:
531
- type: object
532
- properties:
533
- rule engines that tried to test the page:
534
- type: array
535
- items:
536
- $ref: '#/components/schemas/RuleEngineInfo'
537
- rule engines that could not test the page:
538
- type: array
539
- items:
540
- $ref: '#/components/schemas/RuleEngineFailure'
541
- names of rule engines that reported rule violations:
542
- type: array
543
- items:
544
- type: string
545
- number of elements reported as violators:
546
- type: integer
547
- issues revealed:
548
- type: array
549
- items:
550
- $ref: '#/components/schemas/IssueSummary'
551
-
552
- HTMLElementDetail:
553
- type: object
554
- description: Details about an HTML element reported as exhibiting an issue.
555
- properties:
556
- identifier:
557
- type: string
558
- description: Unique identifier of the element in the catalog of the report.
559
- tag name:
560
- type: string
561
- examples:
562
- - IMG
563
- id attribute:
564
- type: string
565
- description: Value of the element's id attribute, if any.
566
- start tag:
567
- type: string
568
- description: The opening tag of the element, including attributes.
569
- inner text:
570
- type: string
571
- description: First and last lines of the inner text, if any, of the element.
572
- inner text usable as a text fragment for linking:
573
- type: boolean
574
- description: Whether the inner text can be used as a text fragment for URL linking.
575
- x, y, width, height in pixels:
576
- type: array
577
- items:
578
- type: string
579
- description: Bounding box coordinates and dimensions of the element.
580
- XPath:
581
- type: string
582
- description: XPath of the element in the document.
583
-
584
- ReportIssueResponse:
585
- allOf:
586
- - $ref: '#/components/schemas/CommonResponseFields'
587
- - type: object
588
- properties:
589
- report:
590
- type: object
591
- properties:
592
- identifier:
593
- type: string
594
- examples:
595
- - 20280216T1353-4r9
596
- creation date:
597
- type: string
598
- format: date-time
599
- days since the creation date:
600
- type: integer
601
- tested web page:
602
- type: object
603
- properties:
604
- description:
605
- type: string
606
- examples:
607
- - ARQ Space Exploration Corporation
608
- - Edlir Velaj PF
609
- URL:
610
- type: string
611
- format: uri
612
- examples:
613
- - https://tiendalibros.com/
614
- rule engines that tried to test the page:
615
- type: array
616
- items:
617
- $ref: '#/components/schemas/RuleEngineInfo'
618
- rule engines that were unable to test the page:
619
- type: array
620
- items:
621
- $ref: '#/components/schemas/RuleEngineFailure'
622
- rule engines that reported issues:
623
- $ref: '#/components/schemas/RuleEnginesSummary'
624
- number of issues reported:
625
- type: object
626
- properties:
627
- total:
628
- type: integer
629
- by priority:
630
- type: object
631
- properties:
632
- highest priority:
633
- type: integer
634
- high priority:
635
- type: integer
636
- low priority:
637
- type: integer
638
- lowest priority:
639
- type: integer
640
- number of HTML elements reported as exhibiting issues:
641
- type: integer
642
- level of the issue:
643
- type: integer
644
1317
  enum:
645
- - 1
646
- - 2
647
- - 3
648
- - 4
649
- description: Priority level of the issue (4 = highest, 1 = lowest).
650
- facts about the issue:
1318
+ - lowest
1319
+ - low
1320
+ - high
1321
+ - highest
1322
+ related WCAG standard:
651
1323
  type: object
652
- description: Details about the specified issue and the HTML elements exhibiting it.
653
1324
  properties:
654
- identifier:
655
- type: string
656
- examples:
657
- - imageNoText
658
- summary:
1325
+ layer:
659
1326
  type: string
660
- description: Brief natural-language label for the issue.
661
- examples:
662
- - image not named
663
- related WCAG 2.2 standard:
664
- type: object
665
- description: The WCAG 2.2 success criterion or guideline most closely related to the issue.
666
- properties:
667
- layer:
668
- type: string
669
- enum:
670
- - guideline
671
- - success criterion
672
- 'numeric identifier':
673
- type: string
674
- pattern: '^\d\.\d(\.\d+)?$'
675
- examples:
676
- - 1.1.1
677
- impact on a user:
1327
+ enum:
1328
+ - success criterion
1329
+ - guideline
1330
+ identifier:
678
1331
  type: string
679
- description: How this issue is likely to affect users.
680
- rule engines reporting the issue:
681
- $ref: '#/components/schemas/RuleEnginesSummary'
682
- number of HTML elements reported as exhibiting the issue:
683
- type: integer
684
- HTML elements reported as exhibiting the issue:
685
- type: array
686
- items:
687
- $ref: '#/components/schemas/HTMLElementDetail'
1332
+ required:
1333
+ - layer
1334
+ - identifier
1335
+ additionalProperties: false
1336
+ required:
1337
+ - identifier
1338
+ - summary
1339
+ - impact on a user
1340
+ - priority
1341
+ - related WCAG standard
1342
+ additionalProperties: false
1343
+ - type: object
1344
+ properties:
1345
+ error:
1346
+ type: string
1347
+ required:
1348
+ - error
1349
+ additionalProperties: false