Skip to content

Products

GET /v1/organizations/:orgId/products

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


POST /v1/organizations/:orgId/products

Required 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 /v1/organizations/:orgId/products/:productSlug

Required role: Member.


PATCH /v1/organizations/:orgId/products/:productSlug

Required 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 /v1/organizations/:orgId/products/:productSlug

Required role: Admin or owner.

Permanently deletes the product and all associated areas, audits, issues, and risks. Returns 204 No Content.


POST /v1/organizations/:orgId/products/:productSlug/archive

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


POST /v1/organizations/:orgId/products/:productSlug/unarchive

Required role: Admin or owner.

Restores the product and all its areas. Idempotent.


POST /v1/organizations/:orgId/products/:productSlug/pin

Required role: Member.

Pins the product for the current user. Pin state is personal.


POST /v1/organizations/:orgId/products/:productSlug/unpin

Required role: Member.