| Field | Type | Notes |
|---|---|---|
name | string | Required. |
job_number, client, job_site | string | |
description | string | |
status | string | Defaults to "scheduled". |
scheduled_start, scheduled_end | string | |
assigned_to | string |
PATCH, the database uses PUT
The inconsistency is real and worth knowing rather than discovering. On /jobs/{jid} every field is optional and an omitted field is left alone. On /db/* the update is a replacement and an omitted field is cleared. Check which one you are calling before you send a partial body.
Time entries#
Required: date, job_number, hours_regular. Optional: job_site, hours_overtime, task_desc, clock_in, clock_out.
Expenses#
/expenses/receipt takes a photograph and extracts the fields; /expenses/manual takes them directly: date, vendor, amount, category, and optionally tax, description, job_number.
Organization profile#
The letterhead and company details that every generated document inherits. Upload a header image once and it replaces the platform band on every report page.