List assurance projects#

Description#

Return a paginated collection of assurance projects of every type. Filterable fields: status, year, name.

GET /assuranceProjects

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 field <op> value. Comparison operators are eq, in, and contains, composed with the logical connectives and, or, and not (negation is expressed as not (field eq value) — there is no ne). The set of filterable fields and supported operators varies per resource. Example: significance eq 'key'.

$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.

Filter Options#

Available logical operators: and, or, not

Name

Predicates Supported

name

eq, contains

status

eq

|year|eq|

Sorting Options#

Name

Orders Supported

name

asc, desc

status

asc, desc

Code Samples#

curl -X GET https://api.app.wdesk.com/assuranceProjects \
    -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 \
    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" \
    --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', headers = headers)

print(r.json())

Returns#

200 - A paginated collection of assurance projects.#

A collection of assurance projects.

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.

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?$next=b3BhcXVlLWN1cnNvci10b2tlbi05ZjhlN2Q=",
  "data": [
    {
      "budgetedHours": 1200,
      "contributors": [],
      "endDate": "2026-12-31",
      "id": "019f14d1-7c8a-7f81-bd63-0677ee3fa6f8",
      "managers": [
        {
          "id": "u_4cc9f9128a684f45a7a37b08b70b54c1"
        }
      ],
      "name": "FY26 Controls Testing",
      "startDate": "2026-01-01",
      "status": "notStarted",
      "type": "independentControlsTesting",
      "year": 2026
    }
  ]
}
{
  "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": "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."
}