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.

Note: The Reports API is currently a beta feature. You should anticipate some changes to the report types and content within them. We will do our best to ensure all tests are backwards-compatible.

We will be increasing the overall number of reports in the relative near term.

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:

  • 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


{
    "status": 200,
    "message": "OK",
    "name": "Summary",
    "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 Issues by Certainty
  28. List Issues by Priority
  29. List Duplicate Issues by Test ID
  30. List Issues by WCAG Success Criterion
  31. List Requests by Response Status Code
  32. Requests by Level
  33. 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=averageDensity
Response

{
    "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

{
    "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

{
    "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

{
    "message": "OK",
    "status": 200,
    "data": [
        {
            "tID": 57,
            "testVioTitle": "This Link Has No Text Inside It.",
            "count": 3608,
            "percent": 0
        },
        {
            "tID": 79,
            "testVioTitle": "This Link Has A `title` Attribute That's The Same As The Text Inside The Link.",
            "count": 3016,
            "percent": 0
        },
        {
            "tID": 31,
            "testVioTitle": "This Link Uses An Invalid Hypertext Reference.",
            "count": 2959,
            "percent": 0
        },
        {
            "tID": 9,
            "testVioTitle": "This Image Is Missing An `alt` Attribute.",
            "count": 2100,
            "percent": 0
        },
        {
            "tID": 34,
            "testVioTitle": "This Table Does Not Have Any Headers.",
            "count": 1492,
            "percent": 0
        },
        {
            "tID": 75,
            "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": "245c0528a459b285c89d258126b51b37",
        "type": "historyByDocID",
        "url": "http://www.example.com",
        "apiKey": "[API_KEY_ECHOED_BACK]",
        "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

{
    "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.


{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "name": "Images",
            "count": 4027,
            "percent": 12.61
        },
        {
            "name": "Tables",
            "count": 2985,
            "percent": 9.35
        },
        {
            "name": "Cascading Stylesheets (CSS)",
            "count": 699,
            "percent": 2.19
        },
        {
            "name": "Forms",
            "count": 2669,
            "percent": 8.36
        },
        {
            "name": "Navigation",
            "count": 11916,
            "percent": 37.31
        },
        {
            "name": "Frames",
            "count": 0,
            "percent": 0
        },
        {
            "name": "Document Structure",
            "count": 3274,
            "percent": 10.25
        },
        {
            "name": "Text Content",
            "count": 1451,
            "percent": 4.54
        },
        {
            "name": "Client-side Scripting",
            "count": 1999,
            "percent": 6.26
        },
        {
            "name": "Embedded Content",
            "count": 16,
            "percent": 0.05
        },
        {
            "name": "Keyboard Accessibility & Focus Control",
            "count": 1996,
            "percent": 6.25
        },
        {
            "name": "Site-Wide Concerns",
            "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

{
    "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

{
    "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

{
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "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

{
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "28d6d9f123568538139be45b48f79b3c",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div class=\"nav-item-mega\" id=\"plansdropdown\" style=\"\">
    <div class=\"container\">
        <div class=\"row\">
            <div class=\"col-md-2\">
                <!-- Nav tabs -->
                <ul id=\"MegaPl",
            "positionColumn": 13,
            "positionLine": 79
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "5493748eafb367d10f4840e876ae02fc",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<ul id=\"Megaplans\" class=\"nav nav-pills\" role=\"tablist\">
                    <li role=\"presentation\" class=\"active\">
                        <a href=\"#PlansFederalNavPanel\" aria-expanded=\"true\" aria-controls=\"home\" role=\"tab\" data-to",
            "positionColumn": 21,
            "positionLine": 84
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "c6ab1ff237e50feefd52617ad446bacd",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane active\" id=\"PlansFederalNavPanel\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-title\">&",
            "positionColumn": 23,
            "positionLine": 110
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "9bb583f9303158940b27f8f11964492f",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"PlansStateNavPanel\" style=\"\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-title\">&",
            "positionColumn": 23,
            "positionLine": 178
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "a815d58d346dee12bf4eeb6b61598b4e",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[3]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"PlansCommercialNavPanel\" style=\"\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-title\"",
            "positionColumn": 23,
            "positionLine": 250
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "ceb82a348a7b5dd83c33df57a71fc28a",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[4]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"PlansMedicareNavPanel\" style=\"\">
                        <!-- Nav tabs -->
                        <ul id=\"Megaplans2\" class=\"nav nav-pills\" role=\"tablist\">
                            <",
            "positionColumn": 23,
            "positionLine": 317
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "b5bc8fbacbb16c94139fa5b4a8b5ca04",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[4]/ul[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<ul id=\"Megaplans2\" class=\"nav nav-pills\" role=\"tablist\">
                            <li role=\"presentation\" class=\"active\">
                                <a href=\"#PlansMedicareGHMNavPanel\" aria-controls=\"home\" aria-expanded=\"tru",
            "positionColumn": 25,
            "positionLine": 319
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "dfc099157b06eecd9d8210c41ab547cb",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[4]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane active\" id=\"PlansMedicareGHMNavPanel\">
                                <div class=\"row\">
                                    <div class=\"col-md-4\">
                                        <h5 clas",
            "positionColumn": 27,
            "positionLine": 333
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "62669837d9094bead6fab976ebf9ea79",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[4]/div[1]/div[2]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"PlansMedicareOKNavPanel\" style=\"\">
                                <div class=\"row\">
                                    <div class=\"col-md-4\">
                                        <h5 cla",
            "positionColumn": 27,
            "positionLine": 403
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "a5d80eacb261c58231ea7d906ad7fb63",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[2]/div[1]/div[1]/div[1]/div[1]/ul[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<ul id=\"MegaMedicare\" class=\"nav nav-pills\" role=\"tablist\">
                    <li role=\"presentation\" class=\"active\">
                        <a href=\"#GlobalMedicareNavPanel\" aria-controls=\"home\" aria-expanded=\"true\" role=\"tab\" da",
            "positionColumn": 21,
            "positionLine": 492
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "0d144b65a1f816056a699a9cf9279879",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane active\" id=\"GlobalMedicareNavPanel\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-tit",
            "positionColumn": 23,
            "positionLine": 508
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "9e5f8254fcbb862e8525120536048a5e",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[2]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"GenerationscareNavPanel\" style=\"\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-",
            "positionColumn": 23,
            "positionLine": 579
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "d3087678401dcc309566b4683fd033cf",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/div[1]/div[1]/input[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<input type=\"text\" class=\"global-header-nav-big-search-input\" id=\"txtHeaderSearch\" aria-label=\"Search For\" placeholder=\"Search...\">",
            "positionColumn": 13,
            "positionLine": 1004
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "85f8428d8744960de629174775d5d39c",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[2]/header[1]/div[2]/div[1]/div[1]/div[2]/div[1]/nav[1]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div class=\"nav-item-mega\" id=\"plansdropdown\" style=\"\">
    <div class=\"container\">
        <div class=\"row\">
            <div class=\"col-md-2\">
                <!-- Nav tabs -->
                <ul id=\"MegaPl",
            "positionColumn": 9,
            "positionLine": 1322
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "14b678a310fe5e04a2c7e73fd3be800f",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[2]/header[1]/div[2]/div[1]/div[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[1]/ul[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<ul id=\"Megaplans\" class=\"nav nav-pills\" role=\"tablist\">
                    <li role=\"presentation\" class=\"active\">
                        <a href=\"#PlansFederalNavPanel\" aria-expanded=\"true\" aria-controls=\"home\" role=\"tab\" data-to",
            "positionColumn": 29,
            "positionLine": 1345
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "89e5ba1529131c50c38d5066255aa487",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[2]/header[1]/div[2]/div[1]/div[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane active\" id=\"PlansFederalNavPanel\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-title\">&",
            "positionColumn": 21,
            "positionLine": 1340
        },
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "32c83e188903d48e1a141c216792adf5",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[2]/header[1]/div[2]/div[1]/div[1]/div[2]/div[1]/nav[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div role=\"tabpanel\" class=\"tab-pane\" id=\"PlansStateNavPanel\" style=\"\">
                        <div class=\"row\">
                            <div class=\"col-md-4\">
                                <h5 class=\"nav-item-mega-title\">&",
            "positionColumn": 37,
            "positionLine": 1378
        }
    ],
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2017-10-15 12:45:27",
            "tID": 75,
            "signature": "28d6d9f123568538139be45b48f79b3c",
            "docID": "F33461E4-91E0-41C9-6E54-F3D2B5C1E67C",
            "responseID": "1ef5a812b43ce914e34d95d28aab0731",
            "url": "http://www.example.com/",
            "xpath": "/html/body/nav[1]/div[2]/div[1]/nav[1]/div[1]/div[1]",
            "certainty": 100,
            "priority": 66,
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "issueID": "0",
            "errorSnippet": "<div class=\"nav-item-mega\" id=\"plansdropdown\" style=\"\">
    <div class=\"container\">
        <div class=\"row\">
            <div class=\"col-md-2\">
                <!-- Nav tabs -->
                <ul>",
            "positionColumn": 13,
            "positionLine": 79
        }
    ],
    "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

{
    "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

{
    "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

{
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "title": "Example Home Page",
            "url": "http://www.example.com",
            "totalIssues": 229,
            "errorDensity": 257,
            "warningDensity": 389,
            "responseTime": "2017-10-15 14:30:15"
        }
    ],
    "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

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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

{
    "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)


{
    "message": "OK",
    "status": 200,
    "data": { },
    "name": "Response by ID",
    "description": "Returns the stored response for the named responseID",
    "time": 0.042
}

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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "statID": "1",
            "dateAdded": "2017-11-19 04:15:17",
            "tID": "13",
            "signature": "60b79abc7064f6992bb38c24266a31bf",
            "docID": "E7FC7F30-8D37-50F9-4975-02D702FA4F69",
            "userID": "1",
            "bpID": "53",
            "responseID": "00fd0298f3bb11ea451ec4b7e85e7c82",
            "url": "http://www.example.com/2014/08/05/announcing-the-viking-the-lumberjack/",
            "xpath": "/html/body/div[2]/main[1]/div[1]/article[1]/div[1]/div[2]/p[2]/iframe[1]",
            "certainty": "100",
            "priority": "91",
            "projectID": "32eeddbb-5b69-4916-8f0c-a2825e5e3495",
            "errorHash": "60b79abc7064f6992bb38c24266a31bf",
            "errorSnippet": "<iframe width=\"560\" height=\"315\" src=\"//www.youtube-nocookie.com/embed/l3eb0DALdnA\" frameborder=\"0\" allowfullscreen=\"\"></iframe>",
            "positionColumn": "4",
            "positionLine": "199",
            "issueID": "0"
        },
        {
            "statID": "22",
            "dateAdded": "2017-11-19 04:15:20",
            "tID": "45",
            "signature": "d0b00da72f8e21a0e2a1ccab8fc92880",
            "docID": "0A251257-9D49-838B-3619-25F1010CF283",
            "userID": "1",
            "bpID": "61",
            "responseID": "2a0c4e77b92143c18577d3ca9817a67b",
            "url": "http://www.example.com/2016/08/15/extreme-accessibility-revisited/",
            "xpath": "/html/body/div[2]/main[1]/div[1]/article[1]/div[1]/div[2]/p[3]/a[1]/img[1]",
            "certainty": "100",
            "priority": "97",
            "projectID": "32eeddbb-5b69-4916-8f0c-a2825e5e3495",
            "errorHash": "d0b00da72f8e21a0e2a1ccab8fc92880",
            "errorSnippet": "<img class=\"aligncenter size-medium wp-image-3494\" src=\"https://i1.wp.com/www.example.com/wp-content/uploads/2016/08/Screen-Shot-2016-08-15-at-6.04.15-PM.png?resize=300%2C187\" alt=\"When bugs are found, tests are written. Programmers have a failed t",
            "positionColumn": "1",
            "positionLine": "201",
            "issueID": "2147483647"
        }
    ],
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "statID": "1",
            "dateAdded": "2017-11-19 04:15:17",
            "tID": "13",
            "signature": "60b79abc7064f6992bb38c24266a31bf",
            "docID": "E7FC7F30-8D37-50F9-4975-02D702FA4F69",
            "userID": "1",
            "bpID": "53",
            "responseID": "00fd0298f3bb11ea451ec4b7e85e7c82",
            "url": "http://www.example.com/2014/08/05/announcing-the-viking-the-lumberjack/",
            "xpath": "/html/body/div[2]/main[1]/div[1]/article[1]/div[1]/div[2]/p[2]/iframe[1]",
            "certainty": "100",
            "priority": "91",
            "projectID": "32eeddbb-5b69-4916-8f0c-a2825e5e3495",
            "errorHash": "60b79abc7064f6992bb38c24266a31bf",
            "errorSnippet": "<iframe width=\"560\" height=\"315\" src=\"//www.youtube-nocookie.com/embed/l3eb0DALdnA\" frameborder=\"0\" allowfullscreen=\"\"></iframe>",
            "positionColumn": "4",
            "positionLine": "199",
            "issueID": "0"
        },
        {
            "statID": "2",
            "dateAdded": "2017-11-19 04:15:17",
            "tID": "104",
            "signature": "9e51521c3ce4db9f57f03a0edfcada73",
            "docID": "E7FC7F30-8D37-50F9-4975-02D702FA4F69",
            "userID": "1",
            "bpID": "61",
            "responseID": "00fd0298f3bb11ea451ec4b7e85e7c82",
            "url": "http://www.example.com/foo/bar/bat/baz",
            "xpath": "/html/body/img[1]",
            "certainty": "80",
            "priority": "97",
            "projectID": "32eeddbb-5b69-4916-8f0c-a2825e5e3495",
            "errorHash": "9e51521c3ce4db9f57f03a0edfcada73",
            "errorSnippet": "<img src=\"http://pixel.wp.com/g.gif?v=ext&amp;j=1%3A5.1&amp;blog=36685661&amp;post=2880&amp;tz=-5&amp;srv=www.example.com&amp;host=www.example.com&amp;ref=&amp;rand=0.6757364051882178\" alt=\":)\" width=\"6\" height=\"5",
            "positionColumn": "1",
            "positionLine": "445",
            "issueID": "0"
        }
    ],
    "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&tID=[TEST_ID_HERE]&projectID=[PROJECT_ID_HERE]
Response

{
    "status": 200,
    "message": "OK",
    "data": {
        "5c697a956de0ddd634b29789815fb05d": [
            {
                "dateAdded": "2017-11-19 19:42:48",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "F41A9A96-AA11-5845-416E-E591B99775D8",
                "responseID": "525f6a53d820e647e9d90957fc4c0df4",
                "url": "http://www.dpg.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "0",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16334
            },
            {
                "dateAdded": "2017-11-19 19:46:42",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "D2E6C132-A79D-2300-DDE5-B572187D4369",
                "responseID": "77a3517b4a310ae853e7a40ab92e3772",
                "url": "http://www.lb.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "35",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16192
            },
            {
                "dateAdded": "2017-11-19 19:49:54",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "C7949D40-474F-7A9A-EEBF-52E64C7E5582",
                "responseID": "965c769d66b97926792df330b4a4a86a",
                "url": "http://www.pom.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "1",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16150
            },
            {
                "dateAdded": "2017-11-19 19:50:58",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "8EB85F9B-B426-45D2-8FD6-9E65E34034C0",
                "responseID": "9f92a2ce02cf9ed38d994375346dab27",
                "url": "http://www.kc.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "5",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16046
            },
            {
                "dateAdded": "2017-11-19 19:58:04",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "F68B0233-2898-4C64-1878-A6E51848541E",
                "responseID": "e02b92bad8094a3b5a04b76a4a40fa06",
                "url": "http://www.crys.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "36",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16064
            },
            {
                "dateAdded": "2017-11-19 19:58:59",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "F7C28B48-F073-D661-2E59-9B0BD11C2F2B",
                "responseID": "ea5bd4b8377f7da328c53a4ecafb5070",
                "url": "http://www.phx.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "1375",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16120
            },
            {
                "dateAdded": "2017-11-19 19:59:41",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "08E80FB6-39C3-D594-F424-CF54C3C43A99",
                "responseID": "eece1305ed06610dad99bcb6b9d50ea7",
                "url": "http://www.chi.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "0",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16336
            },
            {
                "dateAdded": "2017-11-19 20:00:13",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "9042B9E4-EB19-0069-9A7B-E04A63E3E54A",
                "responseID": "f46e39d3174a275f53d847f5769b9bbf",
                "url": "http://www.atl.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "0",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16174
            },
            {
                "dateAdded": "2017-11-19 20:01:28",
                "tID": 9,
                "signature": "5c697a956de0ddd634b29789815fb05d",
                "docID": "0E0085AA-D5F7-EAC1-890B-B2C0E54D3E8D",
                "responseID": "ff48339a675bb44e52c2533c185d6e64",
                "url": "http://www.orl.example.com/",
                "xpath": "/html/body/img[1]",
                "certainty": 100,
                "priority": 97,
                "projectID": "84eabfff-1e3a-4653-8c67-ab62c75731df",
                "issueID": "93672670",
                "errorSnippet": "<img id=\"bt-pixel\">",
                "positionColumn": 3,
                "positionLine": 16065
            }
        ]
    },
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2017-11-21 00:33:50",
            "tID": 9,
            "signature": "8e46844706a3e507eb07e0d3b8433f3e",
            "docID": "FD46A9C1-794A-C8AB-73BA-BEDE23709485",
            "responseID": "825e9306a152b2e8c1153420964984b3",
            "url": "http://www.example.com/",
            "xpath": "/html/body/form[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/a[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "1ffce360-11b9-494b-9e70-76185b7597ee",
            "issueID": "1",
            "errorSnippet": "<img class=\"image\" src=\"http://www.example.com/Slider/bigslider-communityB.jpg?1511224426019\" title=\"\">",
            "positionColumn": 426,
            "positionLine": 409
        },
        {
            "dateAdded": "2017-11-21 00:33:50",
            "tID": 9,
            "signature": "30f612cc8538d689dacaa00e99b618c8",
            "docID": "FD46A9C1-794A-C8AB-73BA-BEDE23709485",
            "responseID": "825e9306a152b2e8c1153420964984b3",
            "url": "http://www.example.com/",
            "xpath": "/html/body/form[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/a[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "1ffce360-11b9-494b-9e70-76185b7597ee",
            "issueID": "2147483647",
            "errorSnippet": "<img class=\"image\" src=\"http://www.example.com/Slider/bigslider-growing.jpg\" title=\"\">",
            "positionColumn": 441,
            "positionLine": 415
        },
        {
            "dateAdded": "2017-11-21 00:33:50",
            "tID": 9,
            "signature": "7c5e763f70dd056d151fa96bf8f3c1d9",
            "docID": "FD46A9C1-794A-C8AB-73BA-BEDE23709485",
            "responseID": "825e9306a152b2e8c1153420964984b3",
            "url": "http://www.example.com/",
            "xpath": "/html/body/form[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[1]/div[2]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "1ffce360-11b9-494b-9e70-76185b7597ee",
            "issueID": "5",
            "errorSnippet": "<img src=\"/Style Library/XSl Style Sheets/Slider/img/arrow.png\">",
            "positionColumn": 75,
            "positionLine": 419
        },
        {
            "dateAdded": "2017-11-21 00:33:50",
            "tID": 9,
            "signature": "56a30fbe240dd1c7f06a0f17d03f81be",
            "docID": "FD46A9C1-794A-C8AB-73BA-BEDE23709485",
            "responseID": "825e9306a152b2e8c1153420964984b3",
            "url": "http://www.example.com/",
            "xpath": "/html/body/form[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/a[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "1ffce360-11b9-494b-9e70-76185b7597ee",
            "issueID": "717",
            "errorSnippet": "<img class=\"image\" src=\"http://www.example.com/Slider/bigslider-innovative.jpg\" title=\"\">",
            "positionColumn": 441,
            "positionLine": 424
        },
        {
            "dateAdded": "2017-11-21 00:33:50",
            "tID": 9,
            "signature": "bbd6396f2b33a7da08b539ca3c25af23",
            "docID": "FD46A9C1-794A-C8AB-73BA-BEDE23709485",
            "responseID": "825e9306a152b2e8c1153420964984b3",
            "url": "http://www.example.com/",
            "xpath": "/html/body/form[1]/div[4]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[3]/div[1]/div[2]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "1ffce360-11b9-494b-9e70-76185b7597ee",
            "issueID": "2147483647",
            "errorSnippet": "<img src=\"/Style Library/XSl Style Sheets/Slider/img/arrow.png\">",
            "positionColumn": 75,
            "positionLine": 428
        }  
    ],
    "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:

  • contentCategory which corresponds to the name or a specific content category (i.e. 'images'). Possible token values can be one of the following:
    • Images
    • Tables
    • Cascading Stylesheets (CSS)
    • Forms
    • Navigation
    • Frames
    • Document Structure
    • Text Content
    • Client-side Scripting
    • Embedded Content
    • Keyboard Accessibility & Focus Control
    • Site-Wide Concerns
  • projectID the project you want results from
https://tenon.io/api/reports/index.php?key=[API_KEY_GOES_HERE]&type=listIssuesByContentCategory&contentCategory=[CATEGORY_NAME_HERE]&projectID=[PROJECT_ID_HERE]
Response

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "dateAdded": "2017-11-23 01:05:14",
            "tID": 9,
            "signature": "794bb08e4c715219399941b239135c3b",
            "docID": "32AE4B9A-0EB2-E46D-2EDC-9D3FB7089875",
            "responseID": "0c65b0879ebc40e045e13c98823c554f",
            "url": "http://www.example.com",
            "xpath": "/html/body/div[1]/footer[1]/div[1]/div[1]/div[1]/div[1]/a[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "3a8a4786-88c9-44c9-bbd2-c4e6d05869d1",
            "issueID": "0",
            "errorSnippet": "<img class=\"fade\" src=\"https://goldwater.scholarsapply.org/wp-content/plugins/social-media-widget/images/default/16/facebook.png\" <=\"\" img=\"\">",
            "positionColumn": 213,
            "positionLine": 1761
        },
        {
            "dateAdded": "2017-11-23 01:05:25",
            "tID": 9,
            "signature": "6a871ba5e1f58fed2dea1702b428aab4",
            "docID": "D9EC9DA4-A2BC-38F0-2DBC-31BF3E19A7D8",
            "responseID": "588d2d020b3955772bca0dae31b519b4",
            "url": "http://www.example.com/",
            "xpath": "/html/body/div[1]/div[1]/div[1]/div[1]/div[8]/div[1]/div[1]/div[2]/div[1]/div[1]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/table[1]/tr[1]/td[1]/div[1]/div[1]/div[1]/div[1]/div[1]/div[2]/div[2]/div[1]/div[2]/div[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "3a8a4786-88c9-44c9-bbd2-c4e6d05869d1",
            "issueID": "0",
            "errorSnippet": "<img class=\"amazingslider-img-elem-1\" data-originalwidth=\"940\" data-originalheight=\"270\" style=\"position:absolute;max-width:100%;width:100%;height:auto;left:0%;top:0%;margin-top:0%;\" src=\"sliderimages/ISO9001.jpg\">",
            "positionColumn": 195,
            "positionLine": 1491
        },
        {
            "dateAdded": "2017-11-23 01:05:35",
            "tID": 9,
            "signature": "1c502f12ea3692f31db90a291549a3a5",
            "docID": "46F6F0DF-198A-4C2A-8D8F-09C5E4E28B57",
            "responseID": "58c718b45dbcc300e64a47bfdaa28fce",
            "url": "http://www.example.com/",
            "xpath": "/html/body/div[3]/table[1]/tr[1]/td[1]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "3a8a4786-88c9-44c9-bbd2-c4e6d05869d1",
            "issueID": "0",
            "errorSnippet": "<img class=\"gc-reset\" style=\"width:1px !important; height:1px !important; max-width: 1px !important; max-height: 1px !important;\" src=\"https://ssl.gstatic.com/s2/oz/images/stars/po/bubblev1/border_3.gif\">",
            "positionColumn": 44,
            "positionLine": 1653
        },
        {
            "dateAdded": "2017-11-23 01:05:35",
            "tID": 9,
            "signature": "908e38013658c21e49b18476cc5c0b70",
            "docID": "46F6F0DF-198A-4C2A-8D8F-09C5E4E28B57",
            "responseID": "58c718b45dbcc300e64a47bfdaa28fce",
            "url": "http://www.example.com/",
            "xpath": "/html/body/div[3]/table[1]/tr[1]/td[2]/img[1]",
            "certainty": 100,
            "priority": 97,
            "projectID": "3a8a4786-88c9-44c9-bbd2-c4e6d05869d1",
            "issueID": "21",
            "errorSnippet": "<img class=\"pls-tailbottom gc-reset\" style=\"width: 15px !important; height: 9px !important; max-width: 15px !important; max-height: 9px !important;\" src=\"https://ssl.gstatic.com/s2/oz/images/stars/po/bubblev1/spacer.gif\">",
            "positionColumn": 0,
            "positionLine": 1654
        },
        {
            "dateAdded": "2017-11-23 01:05:35",
            "tID": 9,
            "signature": "b12df64a4b1abe7b13e40fb4c67c879b",
            "docID": "46F6F0DF-198A-4C2A-8D8F-09C5E4E28B57",
            "responseID": "58c718b45dbcc300e64a47bfdaa28fce",
            "url": "http://www.example.com/",
            "xpath": "/html/body/div[3]/table[1]/tr[1]/td[2]/img[2]",
            "certainty": 100,
            "priority": 97,
            "projectID": "3a8a4786-88c9-44c9-bbd2-c4e6d05869d1",
            "issueID": "0",
            "errorSnippet": "<img class=\"pls-spacerbottom gc-reset\" style=\"width:1px !important; height:1px !important; max-width: 1px !important; max-height: 1px !important;\" src=\"https://ssl.gstatic.com/s2/oz/images/stars/po/bubblev1/spacer.gif\">",
            "positionColumn": 0,
            "positionLine": 1654
        }
    ],
    "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

{
    "status": 200,
    "message": "OK",
    "data": [
        {
            "url": "http://www.example.com",
            "projectID": "237E42A1-F744-D1C7-D22D-BC6877D4CE11",
            "key": [API_KEY_HERE],
            "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

	"status": 200,
	"message": "OK",
	"data": [{
		"dateAdded": "2017-12-02 15:05:37",
		"testVioTitle": "This may be an implicit heading.",
		"tID": 20,
		"signature": "ea6be5ccba0b85bfadd71ec78c762177",
		"docID": "62D3E8A7-0D5D-9FEE-77F7-F044B972F87F",
		"responseID": "1e8914548a71158ec3b1c42d1fe2ff24",
		"url": "https:\/\/www.example.com\/about",
		"xpath": "\/html\/body\/div[3]\/div[1]\/div[7]\/div[1]\/div[3]\/div[1]\/div[2]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[2]\/div[1]\/div[1]\/div[1]\/div[1]\/div[1]\/div[2]\/p[1]\/strong[1]",
		"certainty": 60,
		"priority": 82,
		"projectID": "f36e6cb6-3342-420a-badb-73b04273d213",
		"issueID": "40",
		"errorSnippet": "<strong>200+<\/strong>",
		"positionColumn": 71,
		"positionLine": 1178
	}],
	"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

{
    "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
}