Reports
Reports are the bridge between what's on site and what the office, the client, and the auditor want to see. IssuesId ships with a fixed set of report types, each producing PDF or CSV output that's role-filtered and (for PDFs) async-generated.
The report catalogue
PDF reports — formatted, branded, ready to send.
- →Quality Control (QC) — defects grouped by location, then by status. The day-to-day report for project meetings.
- →Sub-Contractor — defects grouped by assigned contractor. Use it for trade reviews and per-contractor burn-down.
- →Executive Summary — high-level project health overview with statistics. Use it for steering committees and client updates.
- →Door Sheet — one page per location. Useful for walk-throughs and per-room handover sign-off.
- →Wall Chart — a location × status grid overview. Print A3, stick on the site office wall.
- →Client Defect Summary — a client-scoped, client-friendly defect pack. Available only to users with the Client role; respects client-visibility filters end-to-end.
- →QR Sheet — Avery-template PDF for printing location QR codes. Admin-only (paired with the QR module).
CSV exports — raw data, for spreadsheets and downstream systems.
- →Defects Export — every defect on the project, full detail.
- →Document Register — current document register, with revision metadata.
- →Drawing Register — current drawing register, with revision metadata.
- →Project Members — the project membership list, optionally filtered to a single role.
CSV exports include cost codes, contractor IDs, and revision metadata so the data round-trips cleanly into downstream systems. Each report has a fixed output format — the PDFs above are PDF-only, the CSV exports are CSV-only.
Role-filtered output
Every report request runs through the same tenant + role scoping as the rest of the API. Two consequences worth being explicit about:
- →A client running the Client Defect Summary sees only the defects they're permitted to see — controlled by an explicit client-visibility filter inside the report endpoint. Cross-tenant or hidden defects return 404, not "no results."
- →Other roles see results bounded by their own scope (their tenant, their projects, their assignments). The same report button is safe to put in front of any role.
This is what lets you give a Client Defect Summary button to a client portal without worrying about data from other projects bleeding in.
Job status and download
PDF reports generate asynchronously through a job queue. The flow:
- 01Request a report — the API returns
202 Acceptedwith ajobId. - 02Poll
GET /reports/jobs/:jobId(or watch the in-app notification) to see when it's done. - 03When done, the response includes a presigned download URL valid for one hour.
CSV exports for document and drawing registers, project members, and per-project defects are synchronous — request them and the CSV streams back directly.
What to read next
- →Defects — the source data behind the QC and Sub-Contractor reports.
- →Work orders — line-item detail you'll typically export to CSV.
- →Documents & drawings — what the register exports cover.