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#
| Field | Type | Notes |
|---|---|---|
name | string | Required. |
customer | string | Appears on the report cover. |
site | string | |
job_number | string | Not unique and not validated, yours to key on. |
description | string |
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.
{
"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.