List a project’s in-scope controls#
Description#
Return a paginated collection of the controls in a project’s scope. By default only in-scope controls are returned; filter with $filter=scopeStatus eq 'removedFromScope' to see controls that have been removed from scope.
GET /assuranceProjects/{id}/scopedControls
Required OAuth Scopes
grc:read
Parameters#
Parameter |
In |
Type |
Required |
Description |
|---|---|---|---|---|
X-Version |
header |
string |
true |
Version of the API (2026-09-01.grc.preview) |
$maxpagesize |
query |
integer(int32) |
false |
Maximum number of items to return in a single page. The service applies a default and a maximum; requests above the maximum are clamped. |
$next |
query |
string |
false |
Opaque cursor identifying the next page of results, taken from the previous page. Omit on the first request. |
$filter |
query |
string |
false |
Filter expression restricting the collection, of the form |
$orderBy |
query |
string |
false |
Sort criteria of the form `field [asc |
Wk-Workspace |
header |
string |
true |
The id of the Workiva workspace to operate in. Authorization is enforced against the authenticated user’s access within this workspace. |
id |
path |
string |
true |
The unique system identifier of the resource. |
Filter Options#
Available logical operators: and, or, not
Name |
Predicates Supported |
|---|---|
control.controlId |
|
id |
|
scopeStatus |
|
Sorting Options#
Name |
Orders Supported |
|---|---|
scopeStatus |
|
Code Samples#
curl -X GET https://api.app.wdesk.com/assuranceProjects/{id}/scopedControls \
-H 'Accept: application/json' \
-H 'Wk-Workspace: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d' \
-H 'Authorization: Bearer {access-token}' \
-H 'X-Version: 2026-09-01.grc.preview'
http GET https://api.app.wdesk.com/assuranceProjects/{id}/scopedControls \
X-Version:2026-09-01.grc.preview \
Accept:application/json \
Wk-Workspace:1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d \
Authorization:"Bearer {access-token}"
wget --method=GET "https://api.app.wdesk.com/assuranceProjects/{id}/scopedControls" \
--output-document - \
--header 'Accept: application/json' \
--header 'Wk-Workspace: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d' \
--header 'Authorization: Bearer {access-token}' \
--header 'X-Version: 2026-09-01.grc.preview'
import requests
headers = {
'X-Version': '2026-09-01.grc.preview',
'Accept': 'application/json',
'Wk-Workspace': '1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d',
'Authorization': 'Bearer {access-token}'
}
r = requests.get('https://api.app.wdesk.com/assuranceProjects/{id}/scopedControls', headers = headers)
print(r.json())
Returns#
200 - A paginated collection of scoped controls.#
A collection of a project’s scoped controls.
400 - The request was invalid.#
Error response indicating the service could not process the request.
401 - Authentication is missing or invalid.#
Error response indicating the service could not process the request.
403 - The caller is not permitted to access this resource.#
Error response indicating the service could not process the request.
404 - The requested resource was not found.#
Error response indicating the service could not process the request.
429 - The rate limit has been exceeded.#
Error response indicating the service could not process the request.
500 - An unexpected error occurred.#
Error response indicating the service could not process the request.
Example Responses#
{
"@nextLink": "https://api.app.wdesk.com/assuranceProjects/019f14d1-7c8a-7f81-bd63-0677ee3fa6f8/scopedControls?$next=b3BhcXVlLWN1cnNvci10b2tlbi05ZjhlN2Q=",
"data": [
{
"control": {
"controlId": "COSO-C-001",
"id": "019cafc7-4901-7181-a53b-b2263115961d",
"name": "Code of Conduct and Ethics Policy"
},
"id": "019cb0a1-2f3e-7c22-9a10-4d5e6f7a8b90",
"scopeRationale": null,
"scopeStatus": "inScope"
}
]
}
{
"code": "invalidFilter",
"message": "The $filter value could not be parsed.",
"target": "$filter"
}
{
"code": "unauthenticated",
"message": "Authentication credentials were missing or invalid."
}
{
"code": "permissionDenied",
"message": "You do not have permission to access this resource."
}
{
"code": "notFound",
"message": "No resource with this id was found."
}
{
"code": "rateLimitExceeded",
"message": "Rate limit exceeded. Retry after the period indicated in the response headers."
}
{
"code": "internalError",
"message": "An unexpected error occurred. Please try again later."
}