These docs are a work in progress and may not be fully up to date. Some pages may contain internal notes for our team.
Skip to Content

API — Sets (Categories)

CRUD for Sets — the grouping resource that the product UI calls “Categories.” All endpoints require auth:api, auth_session, and audit middleware. Results are workspace-scoped.

💡 Tip: The database table and model are named sets/Set. The product UI labels them “Categories.” When writing customer-facing copy, use “Categories.” When writing code or internal docs, use “sets.”

Endpoints

GET /sets

List all sets in the active workspace.

Query params: workspace_id

Response 200: Array of set objects { id, name, workspace_id, created_at, updated_at }.

GET /sets/{id}

Get a single set by numeric ID.

Response 200: Set object.

POST /sets

Create a new set (Category).

Body: { name, workspace_id }

Response 201: Created set object.

PUT /sets/{id}

Rename a set.

Body: { name }

Response 200: Updated set object.

DELETE /sets/{id}

Delete a set.

Response 204

⚠️ Warning: Deleting a set does not cascade-delete its associated locations or finders. The association is removed but the resources remain. Verify no active finders depend on the set before deleting.

Admin variants

The admin route group (role:admin) exposes the same operations under /admin/sets:

  • GET /admin/sets — list across all workspaces
  • POST /admin/sets, PUT /admin/sets/{set}, DELETE /admin/sets/{set} — admin CRUD