Products
List products
Section titled “List products”GET /v1/organizations/:orgId/productsRequired role: Member.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
archived |
"true" | "false" |
Filter by archive state. Defaults to active (non-archived) products. |
owner |
string |
Comma-separated member user IDs to filter by responsible person. The sentinel unassigned matches products with no responsible person. |
Response:
{ "products": [ { "id": "...", "name": "My Product", "slug": "my-product", "description": null, "type": "website", "standardId": "wcag-2-2", "conformanceLevel": "aa", "auditFrequency": 12, "responsiblePersonId": null, "responsiblePersonName": null, "responsiblePersonEmail": null, "responsiblePersonImage": null, "isPinned": false, "archivedAt": null, "organizationId": "...", "createdAt": "2024-01-01T00:00:00.000Z", "updatedAt": "2024-01-01T00:00:00.000Z" } ]}The responsiblePersonName, responsiblePersonEmail, and responsiblePersonImage fields describe the assigned responsible person and are returned by the list endpoint only. They are null when no responsible person is assigned.
Create a product
Section titled “Create a product”POST /v1/organizations/:orgId/productsRequired role: Admin or owner.
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | Product name (max 100 characters). |
type |
"website" | "web-app" | "mobile-app" | "desktop-app" | "design-system" | "document" | "other" |
Yes | The kind of digital product. |
description |
string |
No | Optional description. |
A URL slug is generated automatically from the name. Returns 201 Created with a Location header.
Get a product
Section titled “Get a product”GET /v1/organizations/:orgId/products/:productSlugRequired role: Member.
Update a product
Section titled “Update a product”PATCH /v1/organizations/:orgId/products/:productSlugRequired role: Admin or owner.
Request body (all fields optional):
| Field | Type | Description |
|---|---|---|
name |
string |
New name. Regenerates the slug. |
type |
string |
The kind of digital product (see create body for allowed values). |
description |
string | null |
Description. |
standardId |
string | null |
Override the org’s default standard. |
conformanceLevel |
string | null |
Override the org’s default conformance level. |
auditFrequency |
0 | 3 | 6 | 12 | null |
Months between audits. 0 or null = no schedule. |
responsiblePersonId |
string | null |
Member responsible for the product’s accessibility. Must be a member of the organization. null clears it. |
Delete a product
Section titled “Delete a product”DELETE /v1/organizations/:orgId/products/:productSlugRequired role: Admin or owner.
Permanently deletes the product and all associated areas, audits, issues, and risks. Returns 204 No Content.
Archive a product
Section titled “Archive a product”POST /v1/organizations/:orgId/products/:productSlug/archiveRequired role: Admin or owner.
Marks the product and all its areas as archived. No new audits, issues, or risks can be created while archived. Idempotent — archiving an already-archived product succeeds.
Unarchive a product
Section titled “Unarchive a product”POST /v1/organizations/:orgId/products/:productSlug/unarchiveRequired role: Admin or owner.
Restores the product and all its areas. Idempotent.
Pin a product
Section titled “Pin a product”POST /v1/organizations/:orgId/products/:productSlug/pinRequired role: Member.
Pins the product for the current user. Pin state is personal.
Unpin a product
Section titled “Unpin a product”POST /v1/organizations/:orgId/products/:productSlug/unpinRequired role: Member.