List a project's roadmap tasks
GET /iso/projects/{projectId}/roadmap
Scope iso:read Plan Growth+
Requires the iso:read scope. Needs the iso27001 plan feature.
Example
curl "https://api.autociso.io/api/v1/iso/projects/<projectId>/roadmap" \
-H "Authorization: Bearer <your-api-token>"import requests
response = requests.get(
"https://api.autociso.io/api/v1/iso/projects/<projectId>/roadmap",
headers={"Authorization": "Bearer <your-api-token>"},
)
print(response.json())const response = await fetch("https://api.autociso.io/api/v1/iso/projects/<projectId>/roadmap", {
method: "GET",
headers: { "Authorization": "Bearer <your-api-token>" },
});
console.log(await response.json());Response 200
{
"data": [
{
"assignedToId": "empl_1hgyun41rx48",
"completedAt": null,
"controlId": "A.8.13",
"createdAt": "2026-09-20T10:00:00Z",
"dueAt": "2026-10-31T00:00:00Z",
"id": "task_1hk0p3c8v2xs",
"priority": "BLOCKING",
"status": "IN_PROGRESS",
"updatedAt": "2026-10-10T13:45:00Z"
},
{
"completedAt": "2026-09-26T16:20:00Z",
"controlId": "A.5.1",
"createdAt": "2026-09-20T10:00:00Z",
"dueAt": "2026-09-30T00:00:00Z",
"id": "task_1hk0p4f1n7qz",
"priority": "MEDIUM",
"status": "DONE",
"updatedAt": "2026-09-26T16:20:00Z"
}
],
"error": null,
"meta": {
"limit": 25,
"offset": 0,
"total": 27
}
}Path parameters
projectIdstring required
Query parameters
limitintegerPage size.offsetintegerRows to skip (offset mode). Cannot be combined with cursor.cursorstringAn opaque cursor taken from meta.nextCursor of the previous page (cursor mode). Valid for 24 hours and bound to the token and the query; do not parse or construct it.sort[id]stringSort direction for id."asc" | "desc"sort[updatedAt]stringSort direction for updatedAt."asc" | "desc"filter[controlId][eq]stringFilter controlId (eq).filter[controlId][in]stringFilter controlId (in). Comma-separated, at most 50 values.filter[id][eq]stringFilter id (eq).filter[id][in]stringFilter id (in). Comma-separated, at most 50 values.filter[priority][eq]stringFilter priority (eq).filter[priority][in]stringFilter priority (in). Comma-separated, at most 50 values.filter[status][eq]stringFilter status (eq).filter[status][in]stringFilter status (in). Comma-separated, at most 50 values.filter[updatedAt][gte]string (date-time)Filter updatedAt (gte).filter[updatedAt][lt]string (date-time)Filter updatedAt (lt).
Returns
The data field of the standard { data, error, meta } envelope:
An array of object:
assignedToIdstringAssignee id (empl_ or usr_), only when the assignee is an id.completedAtstring (date-time) or nullCompletion time (UTC), when done.controlIdstring requiredAnnex A control id.createdAtstring (date-time) requiredCreation time (UTC).dueAtstring (date-time) or nullDue date (UTC), when set.idstring requiredRoadmap task id (task_).prioritystring requiredBLOCKING, HIGH, MEDIUM, LOW or UNKNOWN.statusstring requiredOPEN, IN_PROGRESS, DONE, WONT_FIX or UNKNOWN.updatedAtstring (date-time) requiredLast update time (UTC).
Errors
| Status | Code | Retry | Meaning |
|---|---|---|---|
| 400 | - | no | The request is invalid. |
| 401 | - | no | The token is missing, malformed, expired or revoked. |
| 402 | - | no | The organisation’s plan does not include the feature this route needs. |
| 403 | - | no | The token may not use this route. |
| 404 | - | no | The resource does not exist in this organisation. |
| 429 | - | yes | Rate limit or row budget exceeded; retry after the time in Retry-After. |
| 500 | - | no | Unexpected server error. |
| 503 | - | yes | A dependency is temporarily unavailable; retry later. |
Last reviewed: 2026-10-13
Was this page helpful?