Product map · v1.0.0
Use the same entity names as the crewQI app.
This catalog helps an integration owner map the product quickly. The OpenAPI reference remains authoritative for parameters, schemas, status codes, and required scopes.
Resource catalog
All paths start with https://api-test.crewqi.com/v1/organizations/{organizationId} for TEST. Use api.crewqi.com only with a LIVE key.
| Product area | Public resources and paths | Read / write scopes |
|---|---|---|
| Organization | organization, settings, safe audit, dashboard, activity | organization:read/write, audit:read, dashboard:read, activity:read |
| Employees | employees; individual employees/{employeeId}/bank-account | employees:read, employees:write, optional employees:read_sensitive; financial operations additionally require the matching employees:read_financial or employees:write_financial |
| Locations | searchable locations, nested reusable contacts, tasks, and documents | locations:read/write, contacts:read/write, tasks:read/write, documents:read/write |
| Workforce | read-only raw work-events, visit-confirmations, canonical timesheets, planning/shifts | work_events:read, timesheets:read/write, planning:read/write |
| Materials | materials with article/preferred-ordering fields and q search; location-materials stock links | materials:read, materials:write |
| Customers | customers, customer-access, feedback | customers:read/write, customer_access:read/write, feedback:read/write |
| Communication | messages, messages/{messageId}/attachments | messages:read, messages:write |
| Documents | documents, upload and download sessions | documents:read, documents:write, documents:download |
| Quality | quality/templates, template items, quality/inspections, inspection items | quality:read, quality:write |
| Recruitment | recruitment/candidates, candidate messages | recruitment:read, recruitment:write |
| Commerce | commerce/quotes, quote items, commerce/invoices, invoice items, payments | commerce:read, commerce:write |
| Integrations | integrations, integrations/jobs | integrations:read, integrations:write |
| Reports | reports, report-generation jobs | reports:read, reports:write |
Employee lists, general detail, SCIM, dashboard, activity, and search never contain bank accounts. Use the focused employee bank-account guide; outside it, only a masked presentation such as BE68 •••• •••• 7034 is shown.
Material responses explicitly include nullable article, supplier, website, and order-link fields. q searches name, article number, and supplier without creating a second resource or mixing preferred ordering data with location stock. See the materials guide.
Reusable contacts are organization-owned personal data. Location responses and search include contact values only with contacts:read; writes and relationship changes use contacts:write. See the contacts guide.
Raw work events are immutable and read-only. Integrations add missed work through audited canonical time entries. See time entries and corrections for ETags, reasons, safe audit output, and export supersession.
Collection presentation
Cards and List are interchangeable employer-app presentations of the same resource collections. The selection is a versioned, per-resource browser-local preference containing only cards or list.
There is no card/list preference endpoint or synchronization contract. Integrations continue to use the same stable IDs, cursor pagination, filters, sorting, and resource actions; /v1 and 1.0.0 are unchanged.
Commands
Commands use normal HTTP endpoints. Their side effects and scopes are documented beside each operation in the reference.
POST /locations/{locationId}/qr/rotate— rotate a location QR usinglocations:qr.POST /timesheets— add one complete audited manual entry usingtimesheets:write.PATCH /timesheets/{timeEntryId}— correct effective values with idempotency, a reason, andIf-Match.POST /timesheets/{timeEntryId}/void— create an audited void revision without deleting evidence.POST /materials/stock-adjustments— append a stock adjustment.POST /documents/upload-sessions— create an expiring upload session.POST /reports/generation-jobs— request an asynchronous report.POST /integrations/providers/{provider}/jobs— request an approved integration job.PUT /employees/{employeeId}/bank-account— validate, normalize, set, or clear restricted payroll data using dual scopes, idempotency, andIf-Match.
Conventions
- JSON fields are camelCase; times are RFC 3339 UTC timestamps.
- Collections return
{ items, nextCursor }; cursors are opaque. - Writes are scoped to the organization in the URL and the organization bound to the key.
- Updates require the current
ETaginIf-Match. - Errors use
application/problem+jsonand RFC 9457 fields.
The API does not expose database table names, unrestricted queries, provider credentials, raw QR secrets, internal tokens, or internal database errors.