Skip to main content
The BuildingSwell app calls this People. The API calls it worker. This page uses the API name so it matches the requests you write.
The roster of everyone who does work. Use it to resolve the workerId values that show up on timesheets, assignments, and QC entries, and to create, edit, archive, and restore people. Search columns: name, customerIdentifier Standard CRUD applies, with one exception: people are never hard-deleted. See standard endpoints.
Permissions. read on worker covers the GET endpoints, and create/update cover the writes. Admins have full access. In the role editor, the People composite grants create and update, while Build, Planning, Attendance, Timesheets, and Teams each grant read.

Fields

Every property the API returns for a person.
People carry no identifier. They use the free-form customerIdentifier instead, which is yours to set: an employee number, a badge id, whatever you key on in your own system.

What you can write

Everything else in the table above is set by BuildingSwell.

Archive and restore

There is no separate archive endpoint. Flip isArchived with a PATCH, and BuildingSwell handles the rest.
When you archive:
  • name and customerIdentifier both get an - (archived <n>) suffix, teamId is cleared, and the person’s open work sessions and daily-plan assignments are ended.
When you restore, the suffix comes off, and a name an active person has since taken is given the next free variant, for example Jane Doe (1).
An archived person is read-only. Any PATCH other than the restore itself comes back as 400.
Archived people drop out of reads, the same as every other archivable resource. GET /worker returns active people only, so ask for archived ones explicitly:
Repeat the parameter when you want both at once:
GET /worker/{id} on an archived person returns 404, and no query parameter overrides that on the by-id route. Since a workerId on an old timesheet may well belong to an archived person, resolve ids through the list endpoint: GET /worker?id=<uuid>&isArchived=true&isArchived=false.

Deleting

People are never deleted. Both DELETE /worker/{id} and DELETE /worker/bulk return 403, so a historical workerId on a timesheet or QC entry never dangles. It still has to be read the way the warning above describes once the person is archived.Archive instead: PATCH /worker/{id} with { "isArchived": true }.
See archiving and deleting for how this compares with the rest of the API.

Common requests