Database API

Projects

The top of the database tree. Every endpoint in this group requires the Unlimited plan.

Contents
GET/db/projectsUnlimited
POST/db/projects201
GET/db/projects/{pid}
PUT/db/projects/{pid}
DELETE/db/projects/{pid}204
GET/db/projects/{pid}/summary

Request body#

FieldTypeNotes
namestringRequired.
customerstringAppears on the report cover.
sitestring
job_numberstringNot unique and not validated, yours to key on.
descriptionstring

PUT replaces the whole object; a field omitted from the body is cleared, not preserved. Fetch, modify, send back.

Response#

The list endpoint returns an array of these, newest first. The roll-up counts are described under roll-up counts.

Project
{
  "id": 312,
  "name": "Cedar Ridge Substation - ATS",
  "customer": "Cedar Ridge Utilities",
  "site": "Cedar Ridge, SC",
  "job_number": "2026-0418",
  "description": "",
  "created_at": "2026-09-01 09:14:52.008311",

  "assembly_count": 3,      top-level assemblies only
  "equipment_count": 47,    every device beneath, at any depth
  "record_count": 61,

  "pass_count": 38,
  "fail_count": 2,
  "incomplete_count": 1,
  "untested_count": 6
}
DELETE cascades and does not ask

Deleting a project removes its assemblies, their equipment and every test record beneath, including locked ones. There is no soft-delete and no undo. Returns 204 with no body.