Issues
import { Aside } from ‘@astrojs/starlight/components’;
List issues (organization)
Section titled “List issues (organization)”GET /v1/organizations/:orgId/issuesRequired role: Member.
Returns a paginated list of issues across all products in the organization.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
page |
integer |
Page number (default: 1). |
pageSize |
integer |
Results per page (default: 25, max: 100). |
state |
"open" | "closed" |
Filter by state. |
severity |
"high" | "medium" | "low" |
Filter by severity. |
impact |
"high" | "medium" | "low" |
Filter by impact. |
effort |
"high" | "medium" | "low" |
Filter by effort. |
priority |
"critical" | "high" | "medium" | "low" |
Filter by priority. |
source |
"ablebase" | "github" |
Filter by source. |
productId |
string |
Filter to a specific product. |
sortField |
string |
Field to sort by (e.g. "createdAt", "severity", "priority"). |
sortDirection |
"asc" | "desc" |
Sort direction (default: "desc"). |
Response:
{ "issues": [...], "total": 142, "page": 1, "pageSize": 25}Each issue includes an areas array of associated area objects.
Issue insights (organization)
Section titled “Issue insights (organization)”GET /v1/organizations/:orgId/issues/insightsRequired role: Member.
Returns aggregated breakdowns of all issues in the organization:
- By severity, priority, impact, effort, state
- By conformance level
- Top 10 requirements by issue count
- By product
List issues (product)
Section titled “List issues (product)”GET /v1/organizations/:orgId/products/:productSlug/issuesRequired role: Member.
Accepts the same query parameters as the organization-level list, excluding productId.
Create an issue
Section titled “Create an issue”POST /v1/organizations/:orgId/products/:productSlug/issuesRequired role: Member.
Cannot create an issue in an archived product — returns 409 Conflict.
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
title |
string |
Yes | Issue title (max 200 characters). |
description |
string | null |
No | Full description (max 2000 characters). |
severity |
"high" | "medium" | "low" | null |
No | Severity level. |
impact |
"high" | "medium" | "low" | null |
No | User impact. |
effort |
"high" | "medium" | "low" | null |
No | Remediation effort estimate. |
priority |
"critical" | "high" | "medium" | "low" | null |
No | Priority. |
source |
"ablebase" | "github" |
No | Source system (default: "ablebase"). |
sourceUrl |
string | null |
No | URL of the external issue (e.g. GitHub issue URL). |
sourceId |
string | null |
No | External issue ID. |
auditId |
string | null |
No | ID of the audit this issue was found in. |
areaIds |
string[] |
No | IDs of areas to tag. |
Issue numbers are sequential per product, assigned atomically. Returns 201 Created with a Location header.
Get an issue
Section titled “Get an issue”GET /v1/organizations/:orgId/products/:productSlug/issues/:issueNumberRequired role: Member.
:issueNumber is the sequential integer issue number. The response includes an areas array and a functionalNeeds array.
Update an issue
Section titled “Update an issue”PATCH /v1/organizations/:orgId/products/:productSlug/issues/:issueNumberRequired role: Member.
Request body (all fields optional):
| Field | Type | Description |
|---|---|---|
title |
string |
|
description |
string | null |
|
state |
"open" | "closed" |
|
severity |
"high" | "medium" | "low" | null |
|
impact |
"high" | "medium" | "low" | null |
|
effort |
"high" | "medium" | "low" | null |
|
priority |
"critical" | "high" | "medium" | "low" | null |
|
sourceUrl |
string | null |
|
sourceId |
string | null |
|
auditId |
string | null |
|
areaIds |
string[] |
Replaces the full set of area associations. |
Delete an issue
Section titled “Delete an issue”DELETE /v1/organizations/:orgId/products/:productSlug/issues/:issueNumberRequired role: Admin or owner.
Returns 204 No Content.
List requirements for an issue
Section titled “List requirements for an issue”GET /v1/organizations/:orgId/products/:productSlug/issues/:issueNumber/requirementsRequired role: Member.
Returns all standard requirements linked to the issue.
Replace requirements for an issue
Section titled “Replace requirements for an issue”PUT /v1/organizations/:orgId/products/:productSlug/issues/:issueNumber/requirementsRequired role: Member.
Replaces the full set of requirement links for the issue. Send an empty array to remove all links.
Request body:
| Field | Type | Description |
|---|---|---|
requirementIds |
string[] |
IDs of requirements to link. |
List functional needs for an issue
Section titled “List functional needs for an issue”GET /v1/organizations/:orgId/products/:productSlug/issues/:issueNumber/functional-needsRequired role: Member.
Returns the functional needs linked to the issue.
Response:
{ "functionalNeeds": [ { "id": "...", "slug": "without-vision", "name": "Without vision", "url": "..." } ]}Replace functional needs for an issue
Section titled “Replace functional needs for an issue”PUT /v1/organizations/:orgId/products/:productSlug/issues/:issueNumber/functional-needsRequired role: Member.
Replaces the full set of functional need links for the issue. Send an empty array to remove all links. Returns the updated functionalNeeds array.
Request body:
| Field | Type | Description |
|---|---|---|
functionalNeedIds |
string[] |
IDs of functional needs to link (max 50). Unknown IDs return 400 Bad Request. |
Bulk update issues
Section titled “Bulk update issues”PATCH /v1/organizations/:orgId/issues/bulkRequired role: Member.
Updates up to 100 issues at once.
Request body:
| Field | Type | Description |
|---|---|---|
ids |
string[] |
Issue IDs to update (max 100). |
data.state |
"open" | "closed" |
Optional. |
data.severity |
"high" | "medium" | "low" | null |
Optional. |
data.impact |
"high" | "medium" | "low" | null |
Optional. |
data.effort |
"high" | "medium" | "low" | null |
Optional. |
data.priority |
"critical" | "high" | "medium" | "low" | null |
Optional. |
Bulk delete issues
Section titled “Bulk delete issues”DELETE /v1/organizations/:orgId/issues/bulkRequired role: Admin or owner.
Request body:
| Field | Type | Description |
|---|---|---|
ids |
string[] |
Issue IDs to delete (max 100). |