axe DevTools Mobile API

Link to axe DevTools Mobile API copied to clipboard

The axe DevTools Mobile API (Application Program Interface) is organized around Representational State Transfer, often referred to as REST.

Utilize our API and completely control your team's workflow in accessibility testing.

Jump to:

  1. Authentication
  2. Scan Summaries
  3. Filtered Scan Summaries
  4. Fetch a Scan
  5. Submit a Scan
  6. Update a Scan's Name
  7. Update a Scan's Tag(s)
  8. Delete a Scan
important

References to {{result_userid}}, {{result_package}}, or {{result_id}} can be found within AxeDevToolsResultKey objects of axe DevTools Mobile after a scan is completed.

Authentication

To start, copy or create a new API key at axe.deque.com/settings.

For any request, add your API key to the header:

Key Value
X-Api-Key YOUR_API_KEY

Scan Summaries

Retrieves a summarized list of results from the server.

Request

GET
URL: https://sauron.dequecloud.com/attest/results/summaries
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Response

200 - Success
Returns an array of result summaries.

Example JSON


[
    {
        "key": {
            "userId": "",
            "packageName": "",
            "resultId": ""
        },
        "userName": "",
        "summary": {
            "MeaningfulAccessibleName": {
                "PASS": 10,
                "FAIL": 1
            },
            "A11yElementFocusBox": {
                "PASS": 10
            },
            "ConflictingTraits": {
                "PASS": 10
            }
        },
        "tags": [
            ""
        ],
        "axeDevice": {
            "dpi": 2.0,
            "name": "iPhone 8",
            "os": "iOS",
            "osVersion": "13.7",
            "screenHeight": 1334,
            "screenWidth": 750
        },
        "axeMetaData": {
            "axeVersion": "XCUI: 2.0.1-647-f49682f0",
            "appIdentifier": "",
            "analysisTimestamp": "",
            "screenTitle": ""
        },
        "scanName": ""
    }
]
	

Filtered Scan Summaries

Retrieves a summarized list of results from the server matching the specified criteria.

Request

GET
URL: https://sauron.dequecloud.com/attest/results/summaries
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Query Params:

Key Value
userId String
os String
tags String (Comma Separated)
packageName String

Response

200 - Success
Returns an array of result summaries.

Example JSON


[
    {
        "key": {
            "userId": "",
            "packageName": "",
            "resultId": ""
        },
        "userName": "",
        "summary": {
            "MeaningfulAccessibleName": {
                "PASS": 10,
                "FAIL": 1
            },
            "A11yElementFocusBox": {
                "PASS": 10
            },
            "ConflictingTraits": {
                "PASS": 10
            }
        },
        "tags": [
            ""
        ],
        "axeDevice": {
            "dpi": 2.0,
            "name": "iPhone 8",
            "os": "iOS",
            "osVersion": "13.7",
            "screenHeight": 1334,
            "screenWidth": 750
        },
        "axeMetaData": {
            "axeVersion": "XCUI: 2.0.1-647-f49682f0",
            "appIdentifier": "",
            "analysisTimestamp": "",
            "screenTitle": ""
        },
        "scanName": ""
    }
]
	

Fetch a Scan

Returns a specific scan result from the dashboard.

Request

GET
URL: https://sauron.dequecloud.com/attest/result/axe/{{result_userid}}/{{result_package}}/{{result_id}}
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Response

200 - Success
Returns a scan result.

Example JSON

Note: `axeView` will contain different platform-specific properties for an iOS or Android scan.


{
    "axeConf": {
        "standards": [
            "Best Practice",
            "Platform",
            "WCAG 2.0",
            "WCAG 2.1"
        ],
        "ruleIds": [
            "SwitchName",
            "ActiveViewName"
        ],
        "rules": {
            "SwitchName": {
                "impact": 1,
                "standard": "Best Practice",
                "summary": "Views that have modifiable Values
                 should get their name from a nearby Label.",
                "ignored": false
            },
            "ActiveViewName": {
                "impact": 3,
                "standard": "WCAG 2.0",
                "summary": "Views that users can interact with must
                have a Name.",
                "ignored": false
            }
        },
        "issueFilterConf": {
            "onlyShowResultsVisibleToUser": false
        }
    },
    "axeContext": {
        "axeView": {
            "isComposeView": false,
            "isImportantForAccessibility": true,
            "visibility": 0.0,
            "axeViewId": "",
            "measuredWidth": 1080.0,
            "className": "",
            "textColor": "0",
            "boundsInScreen": {
                "bottom": 2340.0,
                "left": 0.0,
                "right": 1080.0,
                "top": 0.0
            },
            "isVisibleToUser": true,
            "isAccessibilityFocusable": false,
            "overridesAccessibilityDelegate": false,
            "measuredHeight": 2340.0,
            "children": [
                {
                    "axeViewId": "",
                    "boundsInScreen": {
                        "bottom": 0.0,
                        "left": 0.0,
                        "right": 0.0,
                        "top": 0.0
                    },
                    "calculatedProps": {
                        ...
                    },
                    "children": [
                        ...
                    ],
                    "className": "android.widget.LinearLayout",
                    "ignoreRules": [
                        "HiddenInformativeViewFocus",
                        "HiddenActiveViewFocus"
                    ],
                    "isAccessibilityFocusable": false,
                    "isClickable": false,
                    "isComposeView": false,
                    "isEnabled": true,
                    "isImportantForAccessibility": false,
                    "isVisibleToUser": true,
                    "measuredHeight": 0.0,
                    "measuredWidth": 0.0,
                    "overridesAccessibilityDelegate": false,
                    "packageName": "",
                    "textColor": "0",
                    "viewIdResourceName": "",
                    "visibility": 0.0
                },
                ...
            ],
            "isEnabled": true,
            "viewIdResourceName": "",
            "calculatedProps": {
                ...
            },
            "isClickable": false,
            "ignoreRules": [
                ""
            ],
            "packageName": ""
        },
        "axeDevice": {
            "dpi": 3.0,
            "name": "",
            "os": "Android",
            "osVersion": "",
            "screenHeight": 0,
            "screenWidth": 0
        },
        "screenshot": "",
        "axeEventStream": [],
        "axeMetaData": {
            "axeVersion": "",
            "appIdentifier": "",
            "analysisTimestamp": "",
            "screenTitle": ""
        }
    },
    "axeRuleResults": [
        {
            "axeViewId": "",
            "isVisibleToUser": true,
            "props": {
                ...
            },
            "ruleId": "",
            "ruleSummary": "",
            "impact": 4,
            "status": "PASS"
        },
        ...
    ],
    "userName": "",
    "scanName": "",
    "tags": [
        ""
    ]
}
	

Submit a Scan

Uploads a scan result to the dashboard.

Request

POST
URL: https://sauron.dequecloud.com/attest/result/axe
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Body:
JSON from iOS or Android scan.

Response

200 - Success
Returns the result key of the submitted result.

Example JSON


{
    "userId": "",
    "packageName": "",
    "resultId": ""
}
	

Update a Scan's Name

Updates a scan's name as shown within the dashboard.

Request

PUT
URL: https://sauron.dequecloud.com/attest/results/summaries/{{result_userid}}/{{result_package}}/{{result_id}}/name
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Body:

Name of the Scan

Response

200 - Success
Returns the scan result summary.

Example JSON


{
    "key": {
        "userId": "",
        "packageName": "",
        "resultId": ""
    },
    "userName": "",
    "summary": {
        "ActiveControlName": {
            "PASS": 10
        },
        "A11yElementFocusBox": {
            "PASS": 10,
            "FAIL": 1
        }
    },
    "tags": [
        ""
    ],
    "axeDevice": {
        "dpi": 3.0,
        "name": "",
        "os": "",
        "osVersion": "",
        "screenHeight": 0,
        "screenWidth": 0
    },
    "axeMetaData": {
        "axeVersion": "",
        "appIdentifier": "",
        "analysisTimestamp": "",
        "screenTitle": ""
    },
    "scanName": "Name of the Scan"
}
	

Update a Scan's Tag(s)

Updates a scan's tags as shown in the dashboard to the specified tags.

Request

POST
URL: https://sauron.dequecloud.com/attest/result/tag/{{result_userid}}/{{result_package}}/{{result_id}}
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Body:

[
	"Example Tag"
]

Response

200 - Success
Returns the result key of the updated result.

Example JSON


{
    "userId": "",
    "packageName": "",
    "resultId": ""
}
	

Delete a Scan

Removes a scan result from the dashboard.

Request

DELETE
URL: https://sauron.dequecloud.com/attest/result/{{result_userid}}/{{result_package}}/{{result_id}}
Headers:

Key Value
X-Api-Key YOUR_API_KEY
Content-Type application/json

Response

200 - Success
Returns the result key of the deleted result.

Example JSON


{
    "userId": "",
    "packageName": "",
    "resultId": ""
}