Reports API

Intro to the Reports API

Tenon's Reports API provides quick access to a large number of important pieces of data, allowing you to understand your accessibility progress. The Reports API is the same data that is displayed on your Dashboard.

We have a Postman Collection available for all of our reports.

Making Requests

  • All requests against the Reports API must be made via GET.
  • All requests must include 'key' and 'type' parameters, where 'key' represents your API key and 'type' represents the type of report you want to retrieve
  • Additional parameters may be required depending on the type of report. Those additional parameters are listed in the description of each report
  • There are a handful of optional parameters that can be used for every report type:
    • projectID: Allows you to limit all reports to a specific project
    • start: Allows you to set the earliest date for which you want to retrieve data. It should be formatted as YYYYMMDD
    • end: Allows you to set the earliest date for which you want to retrieve data. It should be formatted as YYYYMMDD

Using filters like projectID and start & end dates go a long way to making many of these reports more useful.

Request Examples

Sending a GET request for the following URL would retrieve the Summary report:

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=summary

Sending a GET request for the following URL would retrieve the Summary report for the specified date range

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=summary&start=20170901&end=20171001

Response Format

All responses from the Reports API adhere to the following format:

  • request: An object containing all query parameters sent with the request.
  • status: Relevant HTTP status code for the request.
  • message: String of text that corresponds to the status
  • name: String to identify the name of this type of report
  • description: String that describes what the report provides
  • data: The actual report data. Note: this may be an object or it may be an array, depending on the type of report
  • time: total time, in seconds, that it took to return the response

Response Format Example


{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "summary",
        "apiKey": [YOUR_API_KEY],
        "start": "2017-09-01 0:00:00",
        "end": "2017-10-01 0:00:00"    
    },
    "status": 200,
    "message": "OK",
    "name": "Summary Between 2017-09-01 0:00:00 and 2017-10-01 0:00:00  ",
    "description": "Returns high-level performance stats on a number of items.",
    "data": {
       
    },
    "time": 0.056
}

Reports

There are two types of reports: Those which present summary data and those which list detailed data. Those which list detailed data all begin with 'list'. For instance: "List Issue Instances by Test ID" would provide full issue details for all issues relating to a specific Test ID

The following list of reports is organized alphabetically.

  1. Average Density
  2. Density Distribution
  3. Document Size
  4. Duplicate Issues
  5. History by docID
  6. Issues by Certainty
  7. Issues by Content Category
  8. Issues by Level
  9. Issues by Priority
  10. Issues by Test ID
  11. Issues by WCAG SC
  12. Issues per Page
  13. List Issue Instances by Test ID
  14. List issues by Signature
  15. Log Time
  16. Logs By Day
  17. Page History
  18. Page performance
  19. Pass vs. Fail
  20. Requests by Certainty
  21. Requests by Priority
  22. Response Codes
  23. Summary
  24. Top Errors
  25. True Response Codes
  26. Response by ID
  27. List All Issues
  28. List Issues by Content Category
  29. List Issues by Certainty
  30. List Issues by Priority
  31. List Duplicate Issues by Test ID
  32. List Issues by WCAG Success Criterion
  33. List Requests by Response Status Code
  34. Requests by Level
  35. List Issues by WCAG Level

Average Density

Returns density information for each date you have run tests.

Issue density is a better indicator of performance than issue counts and provide a glimpse into how good or bad things really are. You goal is to have the lowest density scores that you can.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=avgDensity
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "avgDensity",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "2017-10-15": {
            "avgAllDensity": 110,
            "avgErrorDensity": 101,
            "avgWarningDensity": 9,
            "maxAllDensity": 3657,
            "maxErrorDensity": 3657,
            "minErrorDensity": 0
        }
    },
    "name": "Average Density",
    "description": "Returns density information for each date you have run tests.",
    "time": 0.009
}

Density Distribution

Returns the number and percentage of pages in each of the following density ranges: 0, 1-10, 11-20, 21-30, 31-40, 41-50, 51-60, 61-70, 71-80, 81-90, 91-100, 100+

Like the above, this provides insight into your overall performance. Rather than merely relying on averages, this shows you where you are among a set of distinct ranges. As above, you'll want to focus on ensuring lower issue density.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=densityDistribution
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "densityDistribution",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "0": {
            "count": 41,
            "percent": 5
        },
        "1-10": {
            "count": 146,
            "percent": 19
        },
        "11-20": {
            "count": 94,
            "percent": 12
        },
        "21-30": {
            "count": 72,
            "percent": 10
        },
        "31-40": {
            "count": 59,
            "percent": 8
        },
        "41-50": {
            "count": 46,
            "percent": 6
        },
        "51-60": {
            "count": 25,
            "percent": 3
        },
        "61-70": {
            "count": 31,
            "percent": 4
        },
        "71-80": {
            "count": 28,
            "percent": 4
        },
        "81-90": {
            "count": 11,
            "percent": 1
        },
        "91-100": {
            "count": 17,
            "percent": 2
        },
        "100+": {
            "count": 185,
            "percent": 25
        }
    },
    "name": "Density Distribution",
    "description": "Returns the number and percentage of pages in each of the following density ranges: 0, 1-10, 11-20, 21-30, 31-40, 41-50, 51-60, 61-70, 71-80, 81-90, 91-100, 100+",
    "time": 0.015
}

Document Size

Returns the average document size, in kilobytes, for each date you have run tests.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=documentSize
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "documentSize",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "success",
    "status": 200,
    "data": {
        "2017-10-15": 105906
    },
    "name": "Document Size",
    "description": "Returns the average document size, in kilobytes, for each date you have run tests.",
    "time": 0.008
}

Duplicate Issues

Returns a list of duplicate issues as well as a count & percentage of times they occur.

Use this report to determine patterns in your sites. Identifying duplicates will allow you to prioritize what to fix first.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=duplicateIssues
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "duplicateIssues",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": [
        {
            "tID": 57,
            "signature": "26636d552eb250e84171f463fee3b23b",
            "testVioTitle": "This Link Has No Text Inside It.",
            "count": 3608,
            "percent": 0
        },
        {
            "tID": 79,
            "signature": "b0f656b022c33715c071dd8f6ba6af49",
            "testVioTitle": "This Link Has A `title` Attribute That's The Same As The Text Inside The Link.",
            "count": 3016,
            "percent": 0
        },
        {
            "tID": 31,
            "signature": "0509a7f2da61506c8f356d8b589a5ac5",
            "testVioTitle": "This Link Uses An Invalid Hypertext Reference.",
            "count": 2959,
            "percent": 0
        },
        {
            "tID": 9,
            "signature": "761ae226d7e60696ca9134e909291793",
            "testVioTitle": "This Image Is Missing An `alt` Attribute.",
            "count": 2100,
            "percent": 0
        },
        {
            "tID": 34,
            "signature": "02bd43398b65dcf11bf1db51f6d13474",
            "testVioTitle": "This Table Does Not Have Any Headers.",
            "count": 1492,
            "percent": 0
        },
        {
            "tID": 75,
            "signature": "62b6049b4b6cb4fb76e6a69823ae2554",
            "testVioTitle": "This `id` Is Being Used More Than Once.",
            "count": 1446,
            "percent": 0
        }
    ],
    "name": "Duplicate issues",
    "description": "Returns a list of duplicate issues as well as a count & percentage of times they occur",
    "time": 0.242
}

History by docID

Tenon's Test API lets you set a docID as one of your API request parameters. This value is useful in providing a way to uniquely identify a page - especially during things like functional UI testing or when testing pages that have machine-generated URLs. You can set any arbitrary string as your docID to help identify what page (or component) was tested. Then, you can use this report type to gather performance data on that page.

Every test for that particular docID will be returned in this report. This report is very useful for tracking performance of specific pages.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=historyByDocID&docID=[DOCID_GOES_HERE]
Response

{
    "request": {
        "key": "[YOUR_API_KEY]",
        "type": "historyByDocID",
        "docID": "[YOUR_DOCID]",
        "apiKey": "[YOUR_API_KEY]",
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "responseID": "5ec8df67470b0ae94bf74103e13a40b8",
            "dateAdded": "2018-02-09 02:56:46",
            "status": 200,
            "message": "success",
            "code": "success",
            "reqLevel": "AAA",
            "reqCertainty": 0,
            "reqPriority": 0,
            "reqImportance": 0,
            "docID": "C04B1E64-6C32-4128-C7D8-284733043476",
            "documentSize": 220719,
            "sourceHash": "26c414f8afe176ea6b220d879e34cca9",
            "errorDensity": 9,
            "warningDensity": 2,
            "allDensity": 11,
            "errors": 19,
            "warnings": 4,
            "url": "http://www.google.com",
            "fragment": 0,
            "store": 1,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "viewPortWidth": 1024,
            "viewPortHeight": 768,
            "uaString": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36",
            "ref": "",
            "startTime": "2018-02-09 02:56:44",
            "endTime": "2018-02-09 02:56:46",
            "delay": 0,
            "issuesByLevelA": 22,
            "issuesByLevelAA": 1,
            "issuesByLevelAAA": 9,
            "testsFailing": 10,
            "testsPassing": 64,
            "waitFor": "",
            "trueHttpCode": 302,
            "pageTitle": "Google"
        }
    ],
    "name": "History by docID",
    "description": "Returns a response summary for each test run against a specified URL",
    "time": 0.01
}

Issues by Certainty

Returns a distribution of issues organized by Certainty levels (0, 20, 40, 60, 80, 100)

This report is another good indicator of performance, though we expect the overall percentages provided will be quite predictable. Tenon's tests always have a high level of certainty, anyway.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByCertainty
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByCertainty",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "0": {
            "count": 0,
            "percent": 0
        },
        "20": {
            "count": 0,
            "percent": 0
        },
        "40": {
            "count": 89,
            "percent": 0
        },
        "60": {
            "count": 5585,
            "percent": 17
        },
        "80": {
            "count": 2522,
            "percent": 8
        },
        "100": {
            "count": 23745,
            "percent": 74
        }
    },
    "name": "Issues by Certainty",
    "description": "Returns a distribution of issues organized by Certainty levels (0, 20, 40, 60, 80, 100)",
    "time": 0.214
}

Issues by Content Category

Returns issue counts and percentages organized by content categories

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByContentCategory
Response

Note: We do not recommend statically storing the category names, as these names may change over time.


{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByContentCategory",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "catID": 7,
            "name": "Images and other non-text content",
            "count": 4027,
            "percent": 12.61
        },
        {
            "catID": 8,
            "name": "Tables",
            "count": 2985,
            "percent": 9.35
        },
        {
            "catID": 9,
            "name": "Cascading Stylesheets (CSS)",
            "count": 699,
            "percent": 2.19
        },
        {
            "catID": 10,
            "name": "Forms",
            "count": 2669,
            "percent": 8.36
        },
        {
            "catID": 11,
            "name": "Navigation",
            "count": 11916,
            "percent": 37.31
        },
        {
            "catID": 12,
            "name": "Frames and i-frames",
            "count": 0,
            "percent": 0
        },
        {
            "catID": 13,
            "name": "Document Structure",
            "count": 3274,
            "percent": 10.25
        },
        {
            "catID": 14,
            "name": "Language, typography, and content",
            "count": 1451,
            "percent": 4.54
        },
        {
            "catID": 16,
            "name": "Dynamic Content",
            "count": 1999,
            "percent": 6.26
        },
        {
            "catID": 17,
            "name": "Multimedia",
            "count": 16,
            "percent": 0.05
        },
        {
            "catID": 31,
            "name": "Keyboard Accessibility & Focus Control",
            "count": 1996,
            "percent": 6.25
        },
        {
            "catID": 35,
            "name": "Custom Controls",
            "count": 473,
            "percent": 1.48
        }
    ],
    "name": "Issues by content category",
    "description": "Returns issue counts and percentages organized by content categories",
    "time": 0.447
}

Issues by Level

Returns a distribution of issues organized by WCAG Level (A, AA, AAA)

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByLevel
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByLevel",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "A": {
            "count": 29633,
            "percent": 92.77
        },
        "AA": {
            "count": 1184,
            "percent": 3.71
        },
        "AAA": {
            "count": 12001,
            "percent": 37.57
        }
    },
    "name": "Issues by Level",
    "description": "Returns a distribution of issues organized by WCAG Level (A, AA, AAA)",
    "time": 0.174
}

Issues By Priority

Returns a distribution of issues organized by Priority levels (0, 20, 40, 60, 80, 100)

This report is another good indicator of performance, though we expect the overall percentages provided will be quite predictable. Tenon's tests always have a high level of Priority, anyway.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByPriority
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByPriority",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "0-20": {
            "count": 0,
            "percent": 0
        },
        "21-40": {
            "count": 0,
            "percent": 0
        },
        "41-60": {
            "count": 141,
            "percent": 0
        },
        "61-80": {
            "count": 1929,
            "percent": 6
        },
        "81-100": {
            "count": 29871,
            "percent": 94
        }
    },
    "name": "Issues by Priority",
    "description": "Returns a distribution of issues organized by Priority levels (0, 20, 40, 60, 80, 100)",
    "time": 0.181
}

Issues by Test ID

Returns a list of all tests that have been failed and a count & percentage of how many times it was failed.

Because this report focuses on raw issue counts across all tests, focus on the most frequently occurring issues. Not only does this allow you to focus on what to fix but may also guide internal training programs as well. Frequent issues of a specific type indicate ignorance around accessibility for that type of code.

Note: We do not recommend statically storing the issue titles, as the titles may change over time.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByTid
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByTid",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "tID": 9,
            "testVioTitle": "This Image Is Missing An `alt` Attribute.",
            "count": 2433,
            "percent": 8
        },
        {
            "tID": 13,
            "testVioTitle": "This Frame Does Not Have A `title` Attribute.",
            "count": 305,
            "percent": 1
        },
        {
            "tID": 45,
            "testVioTitle": "This Image's `alt` Attribute Might Not Be Suitable.",
            "count": 185,
            "percent": 1
        },
        {
            "tID": 57,
            "testVioTitle": "This Link Has No Text Inside It.",
            "count": 4148,
            "percent": 13
        },
        {
            "tID": 81,
            "testVioTitle": "This Heading Element Is Blank.",
            "count": 139,
            "percent": 0
        }
    ],
    "name": "Issues by Test ID",
    "description": "Returns a list of all tests that have been failed and a count & percentage of how many times it was failed.",
    "time": 0.476
}

Issues by WCAG Success Criterion

Returns a list of all WCAG Success Criterion and, for each, indicates whether Tenon tests for it and if so how often you have failed tests related to that Success Criterion

This can provide an insight into your overall performance against the individual WCAG Success Criterion. Keep in mind, however, that automated accessibility testing tools are not judges and some things cannot be tested for with an automated tool.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesByWcagSc
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesByWcagSc",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [ CHECK STANDARDS
        {
            "industryStandard": "1.1.1 Non-text Content",
            "tested": true,
            "total": 5435,
            "percent": 17
        },
        {
            "industryStandard": "1.2.1 Audio-only and Video-only (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.2 Captions (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.3 Audio Description or Media Alternative (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.4 Captions (Live)",
            "tested": false
        },
        {
            "industryStandard": "1.2.5 Audio Description (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.6 Sign Language (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.7 Extended Audio Description (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.8 Media Alternative (Prerecorded)",
            "tested": false
        },
        {
            "industryStandard": "1.2.9 Audio-only (Live)",
            "tested": false
        },
        {
            "industryStandard": "1.3.1 Info and Relationships",
            "tested": true,
            "total": 6125,
            "percent": 19
        },
        {
            "industryStandard": "1.3.2 Meaningful Sequence",
            "tested": true,
            "total": 223,
            "percent": 1
        },
        {
            "industryStandard": "1.3.3 Sensory Characteristics",
            "tested": false
        },
        {
            "industryStandard": "1.4.1 Use of Color",
            "tested": false
        },
        {
            "industryStandard": "1.4.2 Audio Control",
            "tested": false
        },
        {
            "industryStandard": "1.4.3 Contrast (Minimum)",
            "tested": false
        },
        {
            "industryStandard": "1.4.4 Resize text",
            "tested": false
        },
        {
            "industryStandard": "1.4.5 Images of Text",
            "tested": true,
            "total": 11,
            "percent": 0
        },
        {
            "industryStandard": "1.4.6 Contrast (Enhanced)",
            "tested": false
        },
        {
            "industryStandard": "1.4.7 Low or No Background Audio",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "1.4.8 Visual Presentation",
            "tested": true,
            "total": 688,
            "percent": 2
        },
        {
            "industryStandard": "1.4.9 Images of Text (No Exception)",
            "tested": false
        },
        {
            "industryStandard": "2.1.1 Keyboard",
            "tested": true,
            "total": 4280,
            "percent": 13
        },
        {
            "industryStandard": "2.1.2 No Keyboard Trap",
            "tested": true,
            "total": 280,
            "percent": 1
        },
        {
            "industryStandard": "2.1.3 Keyboard (No Exception)",
            "tested": true,
            "total": 1996,
            "percent": 6
        },
        {
            "industryStandard": "2.2.1 Timing Adjustable",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "2.2.2 Pause, Stop, Hide",
            "tested": false
        },
        {
            "industryStandard": "2.2.3 No Timing",
            "tested": false
        },
        {
            "industryStandard": "2.2.4 Interruptions",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "2.2.5 Re-authenticating",
            "tested": false
        },
        {
            "industryStandard": "2.3.1 Three Flashes or Below Threshold",
            "tested": true,
            "total": 1,
            "percent": 0
        },
        {
            "industryStandard": "2.3.2 Three Flashes",
            "tested": true,
            "total": 1,
            "percent": 0
        },
        {
            "industryStandard": "2.4.1 Bypass Blocks",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "2.4.10 Section Headings",
            "tested": true,
            "total": 782,
            "percent": 2
        },
        {
            "industryStandard": "2.4.2 Page Titled",
            "tested": true,
            "total": 22,
            "percent": 0
        },
        {
            "industryStandard": "2.4.3 Focus Order",
            "tested": true,
            "total": 343,
            "percent": 1
        },
        {
            "industryStandard": "2.4.4 Link Purpose (In Context)",
            "tested": true,
            "total": 8534,
            "percent": 27
        },
        {
            "industryStandard": "2.4.5 Multiple Ways",
            "tested": false
        },
        {
            "industryStandard": "2.4.6 Headings and Labels",
            "tested": true,
            "total": 1173,
            "percent": 4
        },
        {
            "industryStandard": "2.4.7 Focus Visible",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "2.4.8 Location",
            "tested": false
        },
        {
            "industryStandard": "2.4.9 Link Purpose (Link Only)",
            "tested": true,
            "total": 8534,
            "percent": 27
        },
        {
            "industryStandard": "3.1.1 Language of Page",
            "tested": true,
            "total": 193,
            "percent": 1
        },
        {
            "industryStandard": "3.1.2 Language of Parts",
            "tested": false
        },
        {
            "industryStandard": "3.1.3 Unusual Words",
            "tested": false
        },
        {
            "industryStandard": "3.1.4 Abbreviations",
            "tested": false
        },
        {
            "industryStandard": "3.1.5 Reading Level",
            "tested": false
        },
        {
            "industryStandard": "3.1.6 Pronunciation",
            "tested": false
        },
        {
            "industryStandard": "3.2.1 On Focus",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "3.2.2 On Input:",
            "tested": false
        },
        {
            "industryStandard": "3.2.3 Consistent Navigation",
            "tested": false
        },
        {
            "industryStandard": "3.2.4 Consistent Identification",
            "tested": false
        },
        {
            "industryStandard": "3.2.5 Change on Request",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "3.3.1 Error Identification",
            "tested": false
        },
        {
            "industryStandard": "3.3.2 Labels or Instructions",
            "tested": true,
            "total": 1388,
            "percent": 4
        },
        {
            "industryStandard": "3.3.3 Error Suggestion",
            "tested": false
        },
        {
            "industryStandard": "3.3.4 Error Prevention (Legal, Financial, Data)",
            "tested": false
        },
        {
            "industryStandard": "3.3.5 Help",
            "tested": true,
            "total": 0,
            "percent": 0
        },
        {
            "industryStandard": "3.3.6 Error Prevention (All)",
            "tested": false
        },
        {
            "industryStandard": "4.1.1 Parsing",
            "tested": true,
            "total": 1736,
            "percent": 5
        },
        {
            "industryStandard": "4.1.2 Name, Role, Value",
            "tested": true,
            "total": 8531,
            "percent": 27
        }
    ],
    "name": "Issues by WCAG SC",
    "description": "Returns a list of all WCAG Success Criterion and, for each, indicates whether Tenon tests for it and if so how often you have failed tests related to that Success Criterion",
    "time": 0.35
}

Issues per Page

Returns an average count of issues per page for each date you have run tests.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=issuesPerPage
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "issuesPerPage",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "2017-10-15": 43
    },
    "name": "Issues per page",
    "description": "Returns an average count of issues per page for each date you have run tests.",
    "time": 0.008
}

List Issue Instances by Test ID

Returns a list of issues organized by Test ID

Use this to find a fully detailed list of all issues for the specified Test ID

Example

Request

This report type requires you to supply two additional parameters:

  • tID which is the test you want to get results for
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssueInstances&tID=[tID]&projectID=[PROJECT_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssueInstances",
        "tID": [TEST_ID],
        "projectID": [PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "348300e9a01c16849f9760105018be9a",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[4]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "6081d33c302fe40822ca4b98c4aed6c0",
            "errorSnippet": "<a id=\"officemenu_onenote\" title=\"OneNote Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://www.onenote.com/notebooks?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5028.1\"><div><div class=\"oml_img\" id=\"officemenu_onenote_img\"></div>&",
            "positionColumn": 27,
            "positionLine": 2863,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "348300e9a01c16849f9760105018be9a",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[4]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "6081d33c302fe40822ca4b98c4aed6c0",
            "errorSnippet": "<a id=\"officemenu_onenote\" title=\"OneNote Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://www.onenote.com/notebooks?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5028.1\"><div><div class=\"oml_img\" id=\"officemenu_onenote_img\"></div>&",
            "positionColumn": 27,
            "positionLine": 2863,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "5aa85829ec1610964df615bc3ade61f4",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[2]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "25026e9f59d9defb5c3a0271e93ed7c6",
            "errorSnippet": "<a id=\"officemenu_excel\" title=\"Excel Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/Excel.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5026.1\"><div><div class=\"oml_img\" id=\"officemenu_excel_img\"></div>",
            "positionColumn": 27,
            "positionLine": 2847,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "5aa85829ec1610964df615bc3ade61f4",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[2]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "25026e9f59d9defb5c3a0271e93ed7c6",
            "errorSnippet": "<a id=\"officemenu_excel\" title=\"Excel Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/Excel.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5026.1\"><div><div class=\"oml_img\" id=\"officemenu_excel_img\"></div>",
            "positionColumn": 27,
            "positionLine": 2847,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "5c7d2e3cb5c8fb55160fbda7eccf6e72",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[3]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "71ff65056ce2789e63f221bbb780fe31",
            "errorSnippet": "<a id=\"officemenu_powerpoint\" title=\"PowerPoint Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/PowerPoint.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5027.1\"><div><div class=\"oml_img\" id=\"officemenu_powerpoint_",
            "positionColumn": 27,
            "positionLine": 2855,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "5c7d2e3cb5c8fb55160fbda7eccf6e72",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[3]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "71ff65056ce2789e63f221bbb780fe31",
            "errorSnippet": "<a id=\"officemenu_powerpoint\" title=\"PowerPoint Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/PowerPoint.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5027.1\"><div><div class=\"oml_img\" id=\"officemenu_powerpoint_",
            "positionColumn": 27,
            "positionLine": 2855,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "8c16b80a8e6069e94ec9682e798799ef",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "b444a6958842c749892834b25e5c811e",
            "errorSnippet": "<a id=\"officemenu_onedrive\" title=\"OneDrive\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://onedrive.live.com/?gologin=1&amp;WT.mc_id=O16_BingHP\" h=\"ID=SERP,5030.1\"><div><div class=\"oml_img\" id=\"officemenu_onedrive_img\"></d",
            "positionColumn": 27,
            "positionLine": 28[TEST_ID],
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "8c16b80a8e6069e94ec9682e798799ef",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "b444a6958842c749892834b25e5c811e",
            "errorSnippet": "<a id=\"officemenu_onedrive\" title=\"OneDrive\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://onedrive.live.com/?gologin=1&amp;WT.mc_id=O16_BingHP\" h=\"ID=SERP,5030.1\"><div><div class=\"oml_img\" id=\"officemenu_onedrive_img\"></d",
            "positionColumn": 27,
            "positionLine": 28[TEST_ID],
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "8fa125f6cc9aa1c63ec6395704927d8d",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[1]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "6d6e2998ebcd39e4a3d11540a6cc0b27",
            "errorSnippet": "<a id=\"officemenu_word\" title=\"Word Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/Word.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5025.1\"><div><div class=\"oml_img\" id=\"officemenu_word_img\"></div><",
            "positionColumn": 27,
            "positionLine": 2839,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "8fa125f6cc9aa1c63ec6395704927d8d",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[1]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "6d6e2998ebcd39e4a3d11540a6cc0b27",
            "errorSnippet": "<a id=\"officemenu_word\" title=\"Word Online\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://office.live.com/start/Word.aspx?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5025.1\"><div><div class=\"oml_img\" id=\"officemenu_word_img\"></div><",
            "positionColumn": 27,
            "positionLine": 2839,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "b0f656b022c33715c071dd8f6ba6af49",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[5]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "1a24116891ca6e04232894af5100ea1e",
            "errorSnippet": "<a id=\"officemenu_sway\" title=\"Sway\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://www.sway.com?WT.mc_id=O16_BingHP&amp;utm_source=O16Bing&amp;utm_medium=Nav&amp;utm_campaign=HP\" h=\"ID=SERP,5029.1\"><div><div class=\"oml_i",
            "positionColumn": 27,
            "positionLine": 2871,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "b0f656b022c33715c071dd8f6ba6af49",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[5]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "1a24116891ca6e04232894af5100ea1e",
            "errorSnippet": "<a id=\"officemenu_sway\" title=\"Sway\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://www.sway.com?WT.mc_id=O16_BingHP&amp;utm_source=O16Bing&amp;utm_medium=Nav&amp;utm_campaign=HP\" h=\"ID=SERP,5029.1\"><div><div class=\"oml_i",
            "positionColumn": 27,
            "positionLine": 2871,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "bcdf97a84d40a778d831b3067823537d",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[7]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "b80f530152cdc6ade82bc9aec23c9e4c",
            "errorSnippet": "<a id=\"officemenu_calendar\" title=\"Calendar\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://calendar.live.com/?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5031.1\"><div><div class=\"oml_img\" id=\"officemenu_calendar_img\"></div><div clas",
            "positionColumn": 27,
            "positionLine": 2887,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "bcdf97a84d40a778d831b3067823537d",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[7]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "b80f530152cdc6ade82bc9aec23c9e4c",
            "errorSnippet": "<a id=\"officemenu_calendar\" title=\"Calendar\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://calendar.live.com/?WT.mc_id=O16_BingHP\" h=\"ID=SERP,5031.1\"><div><div class=\"oml_img\" id=\"officemenu_calendar_img\"></div><div clas",
            "positionColumn": 27,
            "positionLine": 2887,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "c2f2bf0fc747c74496ddd67485bd98eb",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[8]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "ed48c659c55d48cb1c27edaa08daad7b",
            "errorSnippet": "<a id=\"officemenu_people\" title=\"People\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://outlook.live.com/owa/?path=/people&amp;WT.mc_id=O16_BingHP\" h=\"ID=SERP,5032.1\"><div><div class=\"oml_img\" id=\"officemenu_people_img\"></d",
            "positionColumn": 27,
            "positionLine": 2895,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "This link has a `title` attribute that is the same as the text inside the link",
            "testVioDescription": "This link is already labeled by its text. The equivalent `title` leads to unnecessary verbosity for assistive technologies, and offers no benefits to users.",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": [TEST_ID],
            "signature": "c2f2bf0fc747c74496ddd67485bd98eb",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[8]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [PROJECT_ID],
            "issueID": "ed48c659c55d48cb1c27edaa08daad7b",
            "errorSnippet": "<a id=\"officemenu_people\" title=\"People\" target=\"_blank\" onclick=\"hpulc4hdr();\" href=\"https://outlook.live.com/owa/?path=/people&amp;WT.mc_id=O16_BingHP\" h=\"ID=SERP,5032.1\"><div><div class=\"oml_img\" id=\"officemenu_people_img\"></d",
            "positionColumn": 27,
            "positionLine": 2895,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issue instances by Test ID",
    "description": "Returns a list of issues organized by Test ID",
    "time": 0.031
}

List issues by Signature

Returns a list of issues based on a specified issue signature.

This report allows you to see

Example

Request

This report type requires you to supply two additional parameters:

  • signature which is the signature for which you want to retrieve instances.
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesBySignature&signature=[SIGNATURE]&projectID=[PROJECT_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssueBySignature",
        "signature": [SIGNATURE],
        "projectID": [PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "Insufficient line height",
            "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
            "bpID": "14",
            "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 144,
            "signature": "[SIGNATURE]",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]/div[1]/div[2]",
            "certainty": 100,
            "priority": 44,
            "projectID": "[PROJECT_ID]",
            "issueID": "b673707e548193145afa4669912fe9bf",
            "errorSnippet": "<div class="itm_desc">OneDrive</div>",
            "positionColumn": 31,
            "positionLine": 2882,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)

    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-18 13:10:34",
            "testVioTitle": "Insufficient line height",
            "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
            "bpID": "14",
            "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 144,
            "signature": "[SIGNATURE]",
            "docID": "280DEA9D-25EE-68E4-1DC0-4041A695DAAE",
            "responseID": "bc4d7b7072cf7ff60af4e1ba424e1f4d",
            "url": "https://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]/div[1]/div[2]",
            "certainty": 100,
            "priority": 44,
            "projectID": "[PROJECT_ID]",
            "issueID": "b673707e548193145afa4669912fe9bf",
            "errorSnippet": "<div class="itm_desc">OneDrive</div>",
            "positionColumn": 31,
            "positionLine": 2882,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by Signature",
    "description": "Returns a list of issues based on a specified issue signature.",
    "time": 0.005
}

Log Time

Returns the average execution time, in seconds, for each date you have run tests.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=logTime
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "logTime",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "2017-10-15": 3.96
    },
    "name": "Log time",
    "description": "Returns the average execution time, in seconds, for each date you have run tests",
    "time": 0.007
}

Logs by Day

Returns the number of test runs for each date you have run tests.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=logsByDay
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "logsByDay",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "2017-10-15": 755
    },
    "name": "Logs by day",
    "description": "Returns the number of test runs for each date you have run tests.",
    "time": 0.009
}

Page History

Returns a response summary for each test run against a specified URL

You can use this report to track the performance of a specific URL. Each time you test the same URL, its result summary will be listed in this report.

Example

Request

This report type requires you to supply an additional parameter - url which is the address of the page you want to retrieve the History for.

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=pageHistory&url=http://www.example.com
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "pageHistory",
        "url": "http://www.example.com"
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "responseID": "144bf463a3d1a13a4feaf1234ab1f632",
            "dateAdded": "2017-10-15 14:14:21",
            "status": 200,
            "message": "success",
            "code": "success",
            "reqLevel": "AAA",
            "reqCertainty": 0,
            "reqPriority": 0,
            "reqImportance": 0,
            "docID": "6A1F64A8-6647-1456-2DE1-FC9B207E6666",
            "documentSize": 27456,
            "sourceHash": "f8eec483284143e752106fc77dc08e95",
            "errorDensity": 34,
            "warningDensity": 0,
            "allDensity": 34,
            "errors": 9,
            "warnings": 0,
            "url": "http://www.example.com",
            "fragment": 0,
            "store": 1,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "viewPortWidth": 1024,
            "viewPortHeight": 768,
            "uaString": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36",
            "ref": "",
            "startTime": "2017-10-15 14:14:19",
            "endTime": "2017-10-15 14:14:21",
            "delay": 0,
            "issuesByLevelA": 9,
            "issuesByLevelAA": 0,
            "issuesByLevelAAA": 7,
            "testsFailing": 4,
            "testsPassing": 70,
            "waitFor": "",
            "trueHttpCode": 200,
            "pageTitle": "Example"
        }
    ],
    "name": "Page History",
    "description": "Returns a response summary for each test run against a specified URL",
    "time": 0.009
}

Page Performance

Returns a list of the 10 worst performing pages

As the description shows, these are the worst performing pages. You'll want to prioritize repairing these pages over others.

Important if this data includes a lot of pages with only 3 or 4 issues and a very high error density (like 2000% or more) this means your server is not returning proper HTTP status code for errors. This may also mean you're trying to test local/ dev environments that Tenon cannot access. The most obvious indication that this is happening is when you see "title": "-NO TITLE-" in the listings that have such high density. Addressing this lack of appropriate HTTP responses will be important, because it will skew average densities and not allow the true poor performing URLs to be listed here.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=pagePerformance
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "pagePerformance",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "responseID": "c059db75c3c7b89ec008bf80f4d8d5f7",
            "title": "Example Home Page",
            "url": "http://www.example.com",
            "totalIssues": 229,
            "errorDensity": 257,
            "warningDensity": 389,
            "responseTime": "2017-10-15 14:30:15"
        },
        {
            "responseID": "f937fa5030bfdbe9b6e108364c027304",
            "title": "Example Home Page 2",
            "url": "http://www.example2.com",
            "totalIssues": 144,
            "errorDensity": 150,
            "warningDensity": 17,
            "responseTime": "2017-11-19 17:12:47"
        }
    ],
    "name": "Page Performance",
    "description": "Returns a list of the 10 worst performing pages",
    "time": 0.006
}

Pass vs. Fail

Returns data on the number & percentage of tests passing vs. tests failing for each date you have run tests.

Use this report to assist in tracking performance over time.

Note: It is very common to have a high percentage of tests passed. This is because Tenon has a lot of tests, many of which might not be relevant based on your site's code.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=passVsFail
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "passVsFail",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "2017-10-15": {
            "testsFailing": 4098,
            "testsFailingPct": 7,
            "testsPassing": 51767,
            "testsPassingPct": 93
        }
    },
    "name": "Pass vs. Fail",
    "description": "Returns data on the number & percentage of tests passing vs. tests failing for each date you have run tests.",
    "time": 0.009
}

Requests by Certainty

Returns a count & percentage listing requests organized by Certainty levels (0, 20, 40, 60, 80, 100)

Tenon's Test API allows you to explicitly set the minimum certainty level you want to see for the issues in your test results. This report type shows you what certainty level(s) you've been using.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=requestsByCertainty
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "requestsByCertainty",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "0": {
            "count": 560,
            "percent": 100
        },
        "20": {
            "count": 0,
            "percent": 0
        },
        "40": {
            "count": 0,
            "percent": 0
        },
        "60": {
            "count": 0,
            "percent": 0
        },
        "80": {
            "count": 0,
            "percent": 0
        },
        "100": {
            "count": 0,
            "percent": 0
        }
    },
    "name": "Requests by Certainty",
    "description": "Returns a count & percentage listing requests organized by Certainty levels (0, 20, 40, 60, 80, 100)",
    "time": 0.01
}

Requests by Priority

Returns a count & percentage listing requests organized by Priority levels (0, 20, 40, 60, 80, 100)

Tenon's Test API allows you to explicitly set the minimum priority level you want to see for the issues in your test results. This report type shows you what priority level(s) you've been using.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=requestsByPriority
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "requestsByPriority",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "0": {
            "count": 560,
            "percent": 100
        },
        "20": {
            "count": 0,
            "percent": 0
        },
        "40": {
            "count": 0,
            "percent": 0
        },
        "60": {
            "count": 0,
            "percent": 0
        },
        "80": {
            "count": 0,
            "percent": 0
        },
        "100": {
            "count": 0,
            "percent": 0
        }
    },
    "name": "Requests by Priority",
    "description": "Returns a count & percentage listing requests organized by Priority levels (0, 20, 40, 60, 80, 100)",
    "time": 0.01
}

Response Codes

Returns a list of each applicable type of Tenon response code and a count & percentage of each

You should aim for 100% '200' responses. Use this type of report to determine if you're frequently submitting invalid requests to the API.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=responseCodes
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "responseCodes",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": {
        "200": {
            "count": 755,
            "percent": 95
        },
        "400": {
            "count": 43,
            "percent": 5
        }
    },
    "name": "Response Codes",
    "description": "Returns a list of each applicable type of Tenon response code and a count & percentage of each",
    "time": 0.012
}

Summary

Returns high-level performance stats on a number of items.

This report provides a useful overview of your performance. Use the start and end parameters to create snapshots to compare performance over time.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=summary
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "summary",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "avgDensity": 110,
        "avgErrorDensity": 101,
        "avgErrorsPerPage": 36,
        "avgIssueCertainty": 91,
        "avgIssuePriority": 91,
        "avgIssuesPerPage": 44,
        "avgWarningDensity": 9,
        "avgWarningsPerPage": 8,
        "maxAllDensity": 3657,
        "maxErrorDensity": 3657,
        "minErrorDensity": 0,
        "pctErrorFree": 4.37,
        "totalErrorFree": 33,
        "totalPages": 755,
        "totalSuccessful": 755,
        "totalTestRuns": 755,
        "totalUnsuccessful": 0
    },
    "name": "Summary",
    "description": "Returns high-level performance stats on a number of items.",
    "time": 0.057
}

Top Errors

Returns a list of the 10 most frequently occurring errors.

This provides a quick glimpse into your most frequent errors. Use this to help prioritize remediation efforts. You should also use this report to help guide internal training for web staff.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=topErrors
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "topErrors",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "tID": 57,
            "count": 4148,
            "percent": 13,
            "testVioTitle": "This Link Has No Text Inside It."
        },
        {
            "tID": 79,
            "count": 3381,
            "percent": 11,
            "testVioTitle": "This Link Has A `title` Attribute That's The Same As The Text Inside The Link."
        },
        {
            "tID": 31,
            "count": 3356,
            "percent": 11,
            "testVioTitle": "This Link Uses An Invalid Hypertext Reference."
        },
        {
            "tID": 9,
            "count": 2433,
            "percent": 8,
            "testVioTitle": "This Image Is Missing An `alt` Attribute."
        },
        {
            "tID": 75,
            "count": 1736,
            "percent": 5,
            "testVioTitle": "This `id` Is Being Used More Than Once."
        },
        {
            "tID": 34,
            "count": 1514,
            "percent": 5,
            "testVioTitle": "This Table Does Not Have Any Headers."
        },
        {
            "tID": 147,
            "count": 1232,
            "percent": 4,
            "testVioTitle": "Implicit Table Header"
        },
        {
            "tID": 122,
            "count": 1006,
            "percent": 3,
            "testVioTitle": "ONMOUSEOVER Handlers Should Have An Equivalent ONFOCUS Handler"
        },
        {
            "tID": 107,
            "count": 1000,
            "percent": 3,
            "testVioTitle": "Event Handler Bound To Non-actionable Element  That Lacks Role"
        },
        {
            "tID": 156,
            "count": 999,
            "percent": 3,
            "testVioTitle": "Event Handlers Bound To Non-actionable Element That Lacks Tabindex"
        }
    ],
    "name": "Top Errors",
    "description": "Returns a list of the 10 most frequently occurring errors.",
    "time": 0.449
}

True Response Codes

Returns a list of HTTP status codes for the pages that were tested and the number of times tested pages returned that status

Use this report to help diagnose possible problems with the pages you're testing. For instance, if this report shows a lot of responses that are 400 and above, you should research why.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=trueResponseCodes
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "trueResponseCodes",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "200": 333,
        "301": 108,
        "302": 35,
        "303": 1,
        "307": 1,
        "400": 8,
        "403": 17,
        "404": 55,
        "500": 1,
        "502": 1
    },
    "name": "True HTTP Response Codes",
    "description": "Returns a list of HTTP status codes for the pages that were tested and the number of times tested pages returned that status",
    "time": 0.015
}

Response by ID

Returns the stored response for a specific Accessibility Test Run from Tenon's Test API

This is mostly a convenience report, allowing you to retrieve a stored response.

Example

Request

This report type requires you to supply an additional parameter - responseID which is the specific Test API response you want to retrieve.

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=responseByID&responseID=[RESPONSE_ID_HERE]
Response

The data object in this report type is a full copy of the Test API response as described in Overview Of The Tenon API Response. (Not shown here due to size)


{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "responseByID",
        "responseID": "[YOUR_RESPONSE_ID]",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "message": "OK",
    "status": 200,
    "data": { },
    "name": "Response by ID",
    "description": "Returns the stored response for the named responseID",
    "time": 0.042
}

List All Issues

Returns a full list of all issues in a specific project.

Example

Request

This report type requires you to supply the projectID which is the specific project you want data from.

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listAllIssues&projectID=[PROJECT_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listAllIssues",
        "projectID": [YOUR_PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "The layout or sizing of this page causes horizontal scrolling.",
            "testVioDescription": "This page is too wide, and it causes horizontal scrolling (at the tested viewport size). This probably means that the page is not responsively designed. Horizontal scrolling will cause difficulties for users with low vision, especially if they have their monitor set to a low resolution.",
            "bpID": "3",
            "bestPracticeName": "Avoid layouts that result in horizontal scroll",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 28,
            "signature": "49f747438b000a3b4fba28554cec28fa",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "https://google.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 81,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "2acb213501139a5da0a8dc78fef613f2",
            "errorSnippet": "<body class="hp vasq" id="gsr" style=""><div class="ctr-p" id="viewport"><div id="doc-info"></div><div id="cst"><style style="">.y,.yp,.yf,.yi,.yl,.ye{}.z1asCe,.qa__svg-icon{display:inline-block;fill:currentColor;heigh",
            "positionColumn": 1,
            "positionLine": 5022,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "Insufficient line height",
            "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
            "bpID": "14",
            "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 144,
            "signature": "22d942409714366ee413c9c7a2069326",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "https://google.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 44,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "b71da779205fa28a27ab91d770a9ef9e",
            "errorSnippet": "<body class="hp vasq" id="gsr" style=""><div class="ctr-p" id="viewport"><div id="doc-info"></div><div id="cst"><style style="">.y,.yp,.yf,.yi,.yl,.ye{}.z1asCe,.qa__svg-icon{display:inline-block;fill:currentColor;heigh",
            "positionColumn": 1,
            "positionLine": 5022,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by Certainty",
    "description": "Returns a list of issues having a specified certainty.",
    "time": 0.007
}

List Issues by Certainty

Returns a full list of all issues in a specific project based on their 'certainty' score.

Example

Request

This report type requires you to supply two additional parameters:

  • projectID which is the specific project you want data from
  • certainty which is the certainty score you want issues for
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByCertainty&projectID=[PROJECT_ID_HERE]&certainty=[DESIRED_CERTAINTY]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssuesByCertainty",
        "projectID": [YOUR_PROJECT_ID],
        "certainty": [YOUR_DESIRED_CERTAINTY],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "The layout or sizing of this page causes horizontal scrolling.",
            "testVioDescription": "This page is too wide, and it causes horizontal scrolling (at the tested viewport size). This probably means that the page is not responsively designed. Horizontal scrolling will cause difficulties for users with low vision, especially if they have their monitor set to a low resolution.",
            "bpID": "3",
            "bestPracticeName": "Avoid layouts that result in horizontal scroll",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 28,
            "signature": "49f747438b000a3b4fba28554cec28fa",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "https://google.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 81,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "2acb213501139a5da0a8dc78fef613f2",
            "errorSnippet": "<body class="hp vasq" id="gsr" style=""><div class="ctr-p" id="viewport"><div id="doc-info"></div><div id="cst"><style style="">.y,.yp,.yf,.yi,.yl,.ye{}.z1asCe,.qa__svg-icon{display:inline-block;fill:currentColor;heigh",
            "positionColumn": 1,
            "positionLine": 5022,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "Insufficient line height",
            "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
            "bpID": "14",
            "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 144,
            "signature": "22d942409714366ee413c9c7a2069326",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "https://google.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 44,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "b71da779205fa28a27ab91d770a9ef9e",
            "errorSnippet": "<body class="hp vasq" id="gsr" style=""><div class="ctr-p" id="viewport"><div id="doc-info"></div><div id="cst"><style style="">.y,.yp,.yf,.yi,.yl,.ye{}.z1asCe,.qa__svg-icon{display:inline-block;fill:currentColor;heigh",
            "positionColumn": 1,
            "positionLine": 5022,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by Certainty",
    "description": "Returns a list of issues having a specified certainty.",
    "time": 0.007
}

List Issues by Priority

Returns a full list of all issues in a specific project based on their 'priority' score.

Using a specified 'priority' score allows you to target accessibility issues to repair in a way that has the highest positive impact.

Example

Request

This report type requires you to supply two additional parameters:

  • projectID which is the specific project you want data from
  • priority which is the priority score you want issues for
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByPriority&projectID=[PROJECT_ID_HERE]&priority=[DESIRED_PRIORITY]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssuesByPriority",
        "projectID": [YOUR_PROJECT_ID],
        "priority": [YOUR_DESIRED_PRIORITY],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "This item has `tabindex` but might not be actionable",
            "testVioDescription": "This element has a `tabindex` attribute on it but the element does not seem to be actionable. ",
            "bpID": "68",
            "bestPracticeName": "Avoid applying focus to items that aren't interactive",
            "categoryName": "Keyboard Accessibility & Focus Control",
            "tID": 55,
            "signature": "ef3fefb32305a70c635af3d2c6664be8",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/div[3]/div[1]/div[2]",
            "certainty": 60,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "4614461be07ed757372432145fc2dbde",
            "errorSnippet": "<div class="gb_zd" aria-label="Затвори" tabindex="0" style="color:#ffffff">×</div>",
            "positionColumn": 7,
            "positionLine": 5593,
            "standards": [
                {
                    "iID": "28",
                    "parentID": "4",
                    "name": "2.1.1 Keyboard",
                    "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user\'s movement and not just the endpoints. (Level A)
Note 1: This exception relates to the underlying function, not the input technique. For example, if using handwriting to enter text, the input technique (handwriting) requires path-dependent input but the underlying function (text input) does not.
Note 2: This does not forbid and should not discourage providing mouse input or other input methods in addition to keyboard operation.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "30",
                    "parentID": "6",
                    "name": "2.1.3 Keyboard (No Exception)",
                    "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes. (Level AAA)",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-19 08:27:44",
            "testVioTitle": "This item has `tabindex` but might not be actionable",
            "testVioDescription": "This element has a `tabindex` attribute on it but the element does not seem to be actionable. ",
            "bpID": "68",
            "bestPracticeName": "Avoid applying focus to items that aren't interactive",
            "categoryName": "Keyboard Accessibility & Focus Control",
            "tID": 55,
            "signature": "f4a22725fe6c601ca71f2a9847de3110",
            "docID": "92F5C26C-BDBC-BF02-6B6F-ED9C180F27FC",
            "responseID": "ece7e704120d0efcaa72c8052aa703d6",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[2]",
            "certainty": 60,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "5739afad2167ff05f428fc53732dbe86",
            "errorSnippet": "<div class="gb_zd" aria-label="Затвори" tabindex="0" style="color:#ffffff">×</div>",
            "positionColumn": 13,
            "positionLine": 5690,
            "standards": [
                {
                    "iID": "28",
                    "parentID": "4",
                    "name": "2.1.1 Keyboard",
                    "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes, except where the underlying function requires input that depends on the path of the user\'s movement and not just the endpoints. (Level A)
Note 1: This exception relates to the underlying function, not the input technique. For example, if using handwriting to enter text, the input technique (handwriting) requires path-dependent input but the underlying function (text input) does not.
Note 2: This does not forbid and should not discourage providing mouse input or other input methods in addition to keyboard operation.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "30",
                    "parentID": "6",
                    "name": "2.1.3 Keyboard (No Exception)",
                    "description": "All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes. (Level AAA)",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by Priority",
    "description": "Returns a list of issues having a specified priority.",
    "time": 0.016
}

List Duplicate Issues by Test ID

Returns a list of duplicate issues organized by Test ID

Use this to find a fully detailed list of all duplicate issues for the specified Test ID

Note: Depending on how much testing you've done this might return a ton of results and take a long time to generate. This report will be more directly actionable if you provide a projectID and/ or start and end dates

Example

Request

This report type requires you to supply two additional parameters:

  • tID which is the test you want to get results for.
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listDuplicateIssuesByTestID&projectID=[PROJECT_ID_HERE]&tID=[TEST_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listDuplicateIssuesByTestID",        
        "projectID": [YOUR_PROJECT_ID],
        "tID": [TEST_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": {
        "d3d7468c6f9933517cf10d824a14e895": [
            {
                "dateAdded": "2018-09-19 22:00:13",
                "testVioTitle": "Insufficient line height",
                "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
                "bpID": "14",
                "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
                "categoryName": "Cascading Stylesheets (CSS)",
                "tID": [TEST_ID],
                "signature": "d3d7468c6f9933517cf10d824a14e895",
                "docID": "37480E38-7CD7-3B1F-A223-0637F00F16AA",
                "responseID": "0ab29b6e0b3ac47cee7fb9967102361c",
                "url": "http://www.example.com",
                "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]/div[1]/div[2]",
                "certainty": 100,
                "priority": 44,
                "projectID": [YOUR_PROJECT_ID],
                "issueID": "ca1bbea5c35572fafd71f44a5492caf2",
                "errorSnippet": "<div class="itm_desc">OneDrive</div>",
                "positionColumn": 31,
                "positionLine": 2882,
                "standards": [
                    {
                        "iID": "26",
                        "parentID": "6",
                        "name": "1.4.8 Visual Presentation",
                        "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                        "referenceURL": "",
                        "sID": ""
                    }
                ]
            },
            {
                "dateAdded": "2018-09-19 22:00:13",
                "testVioTitle": "Insufficient line height",
                "testVioDescription": "This content’s `line-height` is too short. Increasing the `line-height` to 150%, or a space-and-a-half will improve readability for all users, but especially those with dyslexia.",
                "bpID": "14",
                "bestPracticeName": "Set a `line-height` (leading) that is at least one and a half times the current font size.",
                "categoryName": "Cascading Stylesheets (CSS)",
                "tID": [TEST_ID],
                "signature": "d3d7468c6f9933517cf10d824a14e895",
                "docID": "37480E38-7CD7-3B1F-A223-0637F00F16AA",
                "responseID": "0ab29b6e0b3ac47cee7fb9967102361c",
                "url": "http://www.example.com",
                "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[5]/div[1]/ul[1]/li[7]/div[1]/ul[1]/li[6]/a[1]/div[1]/div[2]",
                "certainty": 100,
                "priority": 44,
                "projectID": [YOUR_PROJECT_ID],
                "issueID": "ca1bbea5c35572fafd71f44a5492caf2",
                "errorSnippet": "<div class="itm_desc">OneDrive</div>",
                "positionColumn": 31,
                "positionLine": 2882,
                "standards": [
                    {
                        "iID": "26",
                        "parentID": "6",
                        "name": "1.4.8 Visual Presentation",
                        "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.

    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                        "referenceURL": "",
                        "sID": ""
                    }
                ]
            }
        ]
    },
    "name": "List duplicate issues by Test ID",
    "description": "Returns a list of duplicate issues for a specific Test ID",
    "time": 0.122
}

List Issues by WCAG Success Criterion

Returns a full list of all issues that are mapped against a specific WCAG Success Criterion.

This report allows you to target compliance for specific WCAG Success Criterion.

Example

Request

This report type requires you to supply two additional parameters:

  • sc which corresponds to the numeric number of the WCAG Success Criterion (i.e. '1.1.1', etc.)
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByWcagSc&sc=[WCAG_SC_HERE]&projectID=[PROJECT_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssuesByWcagSc",        
        "sc": [WCAG_SC],
        "projectID": [YOUR_PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null  
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-20 09:05:12",
            "testVioTitle": "This page has no headings",
            "testVioDescription": "This page has no heading elements. Heading elements provide a number of important benefits to users. They can be useful as wayfinding cues for in-page navigation, they can contribute to a summary of the page, and they can provide context to the content below them.",
            "bpID": "28",
            "bestPracticeName": "Structure content appropriately through headings",
            "categoryName": "Document Structure",
            "tID": 97,
            "signature": "3f7370428396f0d4577893f335dfa452",
            "docID": "4FCB7923-8D89-60D2-A3FE-19161E252E34",
            "responseID": "2d9f33aecb0accabd72acb24a40e7b96",
            "url": "http://www.example.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "d6d037142da526005da701b072da3aa8",
            "errorSnippet": "<body class="en en-WW wkit ltr" data-priority="2" onload="_ge('sb_form_q').focus();if(_w.lb)lb();" onfocus="" style=""><script type="text/javascript" style="">//<![CDATA[
_G.AppVer="8_1_2_6208617"; var _H={}; _H.mkt = "en-WW";_H.trueMkt =",
            "positionColumn": 1,
            "positionLine": 2752,
            "standards": [
                {
                    "iID": "17",
                    "parentID": "4",
                    "name": "1.3.1 Info and Relationships",
                    "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "This form field has no label.",
            "testVioDescription": "All form controls must have a label. Without a label, users of assistive technologies will not know what type of input or selection is being requested.",
            "bpID": "49",
            "bestPracticeName": "Provide an explicit label for each form field",
            "categoryName": "Forms",
            "tID": 38,
            "signature": "583ead6911d37acfbfe04768bb81879c",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "https://duckduckgo.com",
            "xpath": "/html/body/div[1]/div[2]/div[1]/div[1]/div[2]/form[1]/input[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "ad8d1bf1201f939a83a9c56dbbe0ab0e",
            "errorSnippet": "<input id="search_form_input_homepage" class="js-search-input search__input--adv" type="text" autocomplete="off" name="q" tabindex="1" value="" autocapitalize="off" autocorrect="off">",
            "positionColumn": 15,
            "positionLine": 139,
            "standards": [
                {
                    "iID": "7",
                    "parentID": "4",
                    "name": "1.1.1 Non-text Content",
                    "description": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below. (Level A)
    Controls, Input: If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Guideline 4.1 for additional requirements for controls and content that accepts user input.)
    Time-Based Media: If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content. (Refer to Guideline 1.2 for additional requirements for media.)
    Test: If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content.
    Sensory: If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content.
    CAPTCHA: If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities.
    Decoration, Formatting, Invisible: If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "17",
                    "parentID": "4",
                    "name": "1.3.1 Info and Relationships",
                    "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "60",
                    "parentID": "4",
                    "name": "3.3.2 Labels or Instructions",
                    "description": "Labels or instructions are provided when content requires user input.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "66",
                    "parentID": "4",
                    "name": "4.1.2 Name, Role, Value",
                    "description": "For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Note: This success criterion is primarily for Web authors who develop or script their own user interface components. For example, standard HTML controls already meet this success criterion when used according to specification.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "This element uses multiple strategies to create labels",
            "testVioDescription": "The manner in which the accessible name is calculated for controls uses an algorithm in which only one of these labelling approaches will "win". This means one of these labels will be ignored by assistive technologies.",
            "bpID": "49",
            "bestPracticeName": "Provide an explicit label for each form field",
            "categoryName": "Forms",
            "tID": 238,
            "signature": "cbce34f982b0a6e497548d81443ef0b9",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "https://duckduckgo.com",
            "xpath": "/html/body/div[1]/div[1]/div[1]/div[1]/span[1]/span[1]",
            "certainty": 100,
            "priority": 84,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "35ef481f8b77acce56d1484c7ca73d67",
            "errorSnippet": "<span class="js-hl-button js-popout-trig" data-popout-target=".js-showcase-popout" aria-haspopup="true" aria-label="Check out the list of things that we've also made." role="button" aria-pressed="false"><span id="wedonttrack">Privacy, simplif",
            "positionColumn": 0,
            "positionLine": 46,
            "standards": [
                {
                    "iID": "7",
                    "parentID": "4",
                    "name": "1.1.1 Non-text Content",
                    "description": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below. (Level A)
    Controls, Input: If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Guideline 4.1 for additional requirements for controls and content that accepts user input.)
    Time-Based Media: If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content. (Refer to Guideline 1.2 for additional requirements for media.)
    Test: If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content.
    Sensory: If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content.
    CAPTCHA: If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities.
    Decoration, Formatting, Invisible: If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "17",
                    "parentID": "4",
                    "name": "1.3.1 Info and Relationships",
                    "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "60",
                    "parentID": "4",
                    "name": "3.3.2 Labels or Instructions",
                    "description": "Labels or instructions are provided when content requires user input.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "66",
                    "parentID": "4",
                    "name": "4.1.2 Name, Role, Value",
                    "description": "For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Note: This success criterion is primarily for Web authors who develop or script their own user interface components. For example, standard HTML controls already meet this success criterion when used according to specification.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "This element uses multiple strategies to create labels",
            "testVioDescription": "The manner in which the accessible name is calculated for controls uses an algorithm in which only one of these labelling approaches will "win". This means one of these labels will be ignored by assistive technologies.",
            "bpID": "49",
            "bestPracticeName": "Provide an explicit label for each form field",
            "categoryName": "Forms",
            "tID": 238,
            "signature": "8e1c05c69512f6a272e92399007207a1",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "https://duckduckgo.com",
            "xpath": "/html/body/div[1]/div[1]/div[1]/div[1]/span[1]/span[2]/div[1]/div[1]/div[1]/nav[1]/section[1]/ul[1]",
            "certainty": 100,
            "priority": 84,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "a36d9ade25a3fc729944fb2f57e72897",
            "errorSnippet": "<ul aria-label="Here are some things that we made that you might like.">                                        <li class="fix showcase__dropdown__list" style=""><a href="/app" class="eighteen js-hl-item" aria-hidden="true" data-type="show"",
            "positionColumn": 21,
            "positionLine": 52,
            "standards": [
                {
                    "iID": "7",
                    "parentID": "4",
                    "name": "1.1.1 Non-text Content",
                    "description": "All non-text content that is presented to the user has a text alternative that serves the equivalent purpose, except for the situations listed below. (Level A)
    Controls, Input: If non-text content is a control or accepts user input, then it has a name that describes its purpose. (Refer to Guideline 4.1 for additional requirements for controls and content that accepts user input.)
    Time-Based Media: If non-text content is time-based media, then text alternatives at least provide descriptive identification of the non-text content. (Refer to Guideline 1.2 for additional requirements for media.)
    Test: If non-text content is a test or exercise that would be invalid if presented in text, then text alternatives at least provide descriptive identification of the non-text content.
    Sensory: If non-text content is primarily intended to create a specific sensory experience, then text alternatives at least provide descriptive identification of the non-text content.
    CAPTCHA: If the purpose of non-text content is to confirm that content is being accessed by a person rather than a computer, then text alternatives that identify and describe the purpose of the non-text content are provided, and alternative forms of CAPTCHA using output modes for different types of sensory perception are provided to accommodate different disabilities.
    Decoration, Formatting, Invisible: If non-text content is pure decoration, is used only for visual formatting, or is not presented to users, then it is implemented in a way that it can be ignored by assistive technology.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "17",
                    "parentID": "4",
                    "name": "1.3.1 Info and Relationships",
                    "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "60",
                    "parentID": "4",
                    "name": "3.3.2 Labels or Instructions",
                    "description": "Labels or instructions are provided when content requires user input.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "66",
                    "parentID": "4",
                    "name": "4.1.2 Name, Role, Value",
                    "description": "For all user interface components (including but not limited to: form elements, links and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.
Note: This success criterion is primarily for Web authors who develop or script their own user interface components. For example, standard HTML controls already meet this success criterion when used according to specification.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by WCAG Success Criterion",
    "description": "Returns a list of issues for a specific WCAG Success Criterion",
    "time": 0.199
}

List Issues by Content Category

Returns a full list of all issues that are mapped against a specific content category.

This report allows you to target compliance for specific content category.

Example

Request

This report type requires you to supply two additional parameters:

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByContentCategory&catID=[CATEGORY_NAME_HERE]&projectID=[PROJECT_ID_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssuesByContentCategory",        
        "catID": [CATEGORY_ID],
        "projectID": [YOUR_PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null  
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-20 09:05:12",
            "testVioTitle": "This page has no headings",
            "testVioDescription": "This page has no heading elements. Heading elements provide a number of important benefits to users. They can be useful as wayfinding cues for in-page navigation, they can contribute to a summary of the page, and they can provide context to the content below them.",
            "bpID": "28",
            "bestPracticeName": "Structure content appropriately through headings",
            "categoryName": "Document Structure",
            "tID": 97,
            "signature": "3f7370428396f0d4577893f335dfa452",
            "docID": "4FCB7923-8D89-60D2-A3FE-19161E252E34",
            "responseID": "2d9f33aecb0accabd72acb24a40e7b96",
            "url": "http://www.example.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "d6d037142da526005da701b072da3aa8",
            "errorSnippet": "<body class="en en-WW wkit ltr" data-priority="2" onload="_ge(’sb_form_q’).focus();if(_w.lb)lb();" onfocus="" style=""><script type="text/javascript" style="">//<![CDATA[
_G.AppVer="8_1_2_6208617"; var _H={}; _H.mkt = "en-WW";_H.trueMkt =",
            "positionColumn": 1,
            "positionLine": 2752,
            "standards": [
                {
                    "iID": "17",
                    "parentID": "4",
                    "name": "1.3.1 Info and Relationships",
                    "description": "Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "Avoid empty `li` elements/ `role=listitem`",
            "testVioDescription": "This list item is empty or has no usable text in it. As a result, assistive technologies will incorrectly announce the number of list items and possibly also announce that this one is blank.",
            "bpID": "212",
            "bestPracticeName": "Avoid empty markup",
            "categoryName": "Document Structure",
            "tID": 199,
            "signature": "37788b361174866c82417c037704d654",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/div[4]/ul[1]/ul[1]/li[2]",
            "certainty": 100,
            "priority": 44,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "9723990bb243c0bf139ddeb10bf143db",
            "errorSnippet": "<li class="nav-menu__item"><ul class="nav-menu__themes"><li class="nav-menu__theme  js-side-menu-theme theme-is-selected"><span class="nav-menu__theme-color"><span class="nav-menu__theme-color-top" style="background-color:#0849",
            "positionColumn": 3,
            "positionLine": 17,
            "standards": false
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "Avoid empty `li` elements/ `role=listitem`",
            "testVioDescription": "This list item is empty or has no usable text in it. As a result, assistive technologies will incorrectly announce the number of list items and possibly also announce that this one is blank.",
            "bpID": "212",
            "bestPracticeName": "Avoid empty markup",
            "categoryName": "Document Structure",
            "tID": 199,
            "signature": "091a60cdeb109cbb6eedaabc0dba68fc",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/div[4]/ul[1]/ul[1]/li[2]/ul[1]/li[1]",
            "certainty": 100,
            "priority": 44,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "3146f86318038109c24a51802a6c4909",
            "errorSnippet": "<li class="nav-menu__theme  js-side-menu-theme theme-is-selected"><span class="nav-menu__theme-color"><span class="nav-menu__theme-color-top" style="background-color:#084999;"></span><span class="nav-menu__theme-color-bot" styl",
            "positionColumn": 3,
            "positionLine": 18,
            "standards": false
        },
        {
            "dateAdded": "2018-09-20 09:05:13",
            "testVioTitle": "Avoid empty `li` elements/ `role=listitem`",
            "testVioDescription": "This list item is empty or has no usable text in it. As a result, assistive technologies will incorrectly announce the number of list items and possibly also announce that this one is blank.",
            "bpID": "212",
            "bestPracticeName": "Avoid empty markup",
            "categoryName": "Document Structure",
            "tID": 199,
            "signature": "aaa94157375beb50174c86a8dcc43166",
            "docID": "8E4F6536-5744-1712-A7C8-269B66391C2F",
            "responseID": "05d98ee2a27afe6429d6ccb34f8d8b35",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/div[4]/ul[1]/ul[1]/li[2]/ul[1]/li[2]",
            "certainty": 100,
            "priority": 44,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "ffd1f13f92500a1bb64d968844de4a42",
            "errorSnippet": "<li class="nav-menu__theme  js-side-menu-theme"><span class="nav-menu__theme-color"><span class="nav-menu__theme-color-top" style="background-color:#333;"></span><span class="nav-menu__theme-color-bot" style="background-color:#",
            "positionColumn": 3,
            "positionLine": 28,
            "standards": false
        },
    ],
    "name": "List issues by Content Category",
    "description": "Returns a list of issues for a specific content category",
    "time": 0.06
}

List Requests by Response Status Code

Returns a full list of API requests made that returned a specific status code.

This report allows you to troubleshoot potential problems with your API requests. For instance, you can look for requests by status code '400' and determine what is causing the problem.

Example

Request

This report type requires you to supply one additional parameter, status which corresponds to the status code

https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listRequestsByResponseStatus&status=[status]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listRequestsByResponseStatus",
        "status": "200",
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "url": "http://www.example.com",
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "delay": "",
            "ref": "1",
            "importance": "1"
        },
        {
            "url": "http://www.example2.com",
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "delay": "",
            "ref": "1",
            "importance": "1"
        }
    ],
    "name": "List requests by response status",
    "description": "Returns a list of requests made that returned a specific status code",
    "time": 0.029
}

List Issues by Level

Returns a full list of all issues mapped to a specific WCAG Level (A, AA, AAA).

This report allows you to focus on issues based on a specific WCAG conformance level.

Example

Request

This report type requires you to supply two additional parameters:

  • level the desired WCAG Level
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByLevel&level=[LEVEL_GOES_HERE]&projectID=[PROJECTID_GOES_HERE]
Response

{
    "request": {
        "key": [YOUR_API_KEY],
        "type": "listIssuesByLevel",
        "status": [LEVEL],
        "projectID": [YOUR_PROJECT_ID],
        "apiKey": [YOUR_API_KEY],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2018-09-20 09:05:12",
            "testVioTitle": "The layout or sizing of this page causes horizontal scrolling.",
            "testVioDescription": "This page is too wide, and it causes horizontal scrolling (at the tested viewport size). This probably means that the page is not responsively designed. Horizontal scrolling will cause difficulties for users with low vision, especially if they have their monitor set to a low resolution.",
            "bpID": "3",
            "bestPracticeName": "Avoid layouts that result in horizontal scroll",
            "categoryName": "Cascading Stylesheets (CSS)",
            "tID": 28,
            "signature": "0179695259ac9a25212771251876ff52",
            "docID": "4FCB7923-8D89-60D2-A3FE-19161E252E34",
            "responseID": "2d9f33aecb0accabd72acb24a40e7b96",
            "url": "http://www.example.com",
            "xpath": "/html/body",
            "certainty": 100,
            "priority": 81,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "1c4bc2befcfc0b9aa61ee25c0b672698",
            "errorSnippet": "<body class="en en-WW wkit ltr" data-priority="2" onload="_ge('sb_form_q').focus();if(_w.lb)lb();" onfocus="" style=""><script type="text/javascript" style="">//<![CDATA[_G.AppVer="8_1_2_6208617"; var _H={}; _H.mkt = "en-WW";_H.trueMkt =",
            "positionColumn": 1,
            "positionLine": 2752,
            "standards": [
                {
                    "iID": "26",
                    "parentID": "6",
                    "name": "1.4.8 Visual Presentation",
                    "description": "For the visual presentation of blocks of text, a mechanism is available to achieve the following: (Level AAA)
    Foreground and background colors can be selected by the user.
    Width is no more than 80 characters or glyphs (40 if CJK).
    Text is not justified (aligned to both the left and the right margins).
    Line spacing (leading) is at least space-and-a-half within paragraphs, and paragraph spacing is at least 1.5 times larger than the line spacing.
    Text can be resized without assistive technology up to 200 percent in a way that does not require the user to scroll horizontally to read a line of text on a full-screen window.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        },
        {
            "dateAdded": "2018-09-20 09:05:12",
            "testVioTitle": "This link has no text inside it.",
            "testVioDescription": "This link has no text in it. Because accessibility APIs use a link's text to determine its accessible name, this link will not have an accessible name, and it will not be announced correctly by assistive technologies. ",
            "bpID": "106",
            "bestPracticeName": "Make sure that link text (and the alternate text for any images that are used as links) describes the destination or purpose of the link.",
            "categoryName": "Navigation",
            "tID": 57,
            "signature": "f6e47b2f304b862e9177e70c7a4c72f3",
            "docID": "4FCB7923-8D89-60D2-A3FE-19161E252E34",
            "responseID": "2d9f33aecb0accabd72acb24a40e7b96",
            "url": "http://www.example.com",
            "xpath": "/html/body/table[1]/tr[1]/td[1]/div[1]/div[2]/div[2]/a[1]",
            "certainty": 100,
            "priority": 100,
            "projectID": [YOUR_PROJECT_ID],
            "issueID": "774ccb01a9489226ca8164f36ceadbac",
            "errorSnippet": "<a id="hpinsthk" aria-hidden="true" tabindex="-1" href="javascript:void(0)" h="ID=SERP,5080.1"><span></span></a>",
            "positionColumn": 44,
            "positionLine": 2808,
            "standards": [
                {
                    "iID": "41",
                    "parentID": "4",
                    "name": "2.4.4 Link Purpose (In Context)",
                    "description": "The purpose of each link can be determined from the link text alone or from the link text together with its programmatically determined link context, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                },
                {
                    "iID": "46",
                    "parentID": "6",
                    "name": "2.4.9 Link Purpose (Link Only)",
                    "description": "A mechanism is available to allow the purpose of each link to be identified from link text alone, except where the purpose of the link would be ambiguous to users in general.",
                    "referenceURL": "",
                    "sID": ""
                }
            ]
        }
    ],
    "name": "List issues by Level",
    "description": "Returns a list of issues for a specified WCAG Level",
    "time": 0.538
}

Requests by Level

Returns a count & percentage listing requests organized by WCAG Level (A, AA, AAA)

Tenon's Test API allows you to explicitly set the minimum WCAG Level you want to see for the issues in your test results. This report type shows you what WCAG Level(s) you've been using.

Example

Request
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=requestsByLevel
Response

{
    "request": {
        "key": [YOUR_PROJECT_ID],
        "type": "requestsByLevel",
        "apiKey": [YOUR_PROJECT_ID],
        "start": null,
        "end": null
    },
    "status": 200,
    "message": "OK",
    "status": 200,
    "data": {
        "A": {
            "count": 0,
            "percent": 0
        },
        "AA": {
            "count": 0,
            "percent": 0
        },
        "AAA": {
            "count": 158,
            "percent": 100
        }
    },
    "name": "Requests by Level",
    "description": "Returns a count & percentage listing requests organized by WCAG Level (A, AA, AAA)",
    "time": 0.032
}