Objects
List member fields
GET /v1/orgs/{orgId}/objects/member_fields
beta since 2026-09-28
Group: Lists
Custom access scope: reports:read
Member fields on the projects this caller can read. Filter, choose fields, expand linked records, page with next_cursor, or sync changes with delta. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
delta | query | string | no | start, or the next_delta from the last call. Changes appear about 30 seconds after they are made. |
expand | query | string | no | Comma-separated: project, worker. |
fields | query | string | no | Comma-separated: id, project_id, worker_id, joined_at, verified_at, updated_at, apprentice, trainee, gender, date_of_birth, post_code, year_of_commencement, atsi, language_group, beakon_id, other_fields. id is always included. |
filter[project_id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
filter[worker_id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
limit | query | integer | no | Rows per page, 1 to 5000. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].apprentice | string, nullable | no | |
200.data[].atsi | string, nullable | no | Needs personal:diversity. |
200.data[].beakon_id | string, nullable | no | |
200.data[].date_of_birth | string (date), nullable | no | Needs personal:diversity. |
200.data[].gender | string, nullable | no | Needs personal:diversity. |
200.data[].id | string (uuid) | yes | |
200.data[].joined_at | string (date-time) | no | |
200.data[].language_group | string, nullable | no | Needs personal:diversity. |
200.data[].other_fields | object, nullable | no | Needs personal:diversity. |
200.data[].post_code | string, nullable | no | Needs personal:contact. |
200.data[].project | object, nullable | no | Present when expanded. |
200.data[].project.award_date | string (date), nullable | no | |
200.data[].project.client | string, nullable | no | |
200.data[].project.completion_date | string (date), nullable | no | |
200.data[].project.core_id | string | no | |
200.data[].project.created_at | string (date-time) | no | |
200.data[].project.id | string (uuid) | yes | |
200.data[].project.name | string | no | |
200.data[].project.status | string | no | |
200.data[].project.timezone | string | no | |
200.data[].project.updated_at | string (date-time) | no | |
200.data[].project_id | string (uuid) | no | |
200.data[].trainee | string, nullable | no | |
200.data[].updated_at | string (date-time) | no | |
200.data[].verified_at | string (date-time), nullable | no | |
200.data[].worker | object, nullable | no | Present when expanded. |
200.data[].worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data[].worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data[].worker.created_at | string (date-time) | no | |
200.data[].worker.email | string | no | Needs personal:contact. |
200.data[].worker.home_org_id | string (uuid) | no | |
200.data[].worker.id | string (uuid) | yes | |
200.data[].worker.name | string | no | |
200.data[].worker.phone | string, nullable | no | Needs personal:contact. |
200.data[].worker.status | string | no | |
200.data[].worker.supplier_name | string, nullable | no | |
200.data[].worker.supplier_org_id | string (uuid), nullable | no | |
200.data[].worker.updated_at | string (date-time) | no | |
200.data[].worker.worker_type | string, nullable | no | |
200.data[].worker_id | string (uuid) | no | |
200.data[].year_of_commencement | string, nullable | no | |
200.deleted | array | no | Records deleted since the last call. Only on a delta call. |
200.deleted[].deleted_at | string (date-time) | yes | |
200.deleted[].id | string (uuid) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no | Pass as cursor for the next page. Absent on the last page. |
200.next_delta | string | no | Pass as delta on the next call. Only on a delta call. |
What it is
One person’s place on a project’s roster — the record that says this person is on this job. It is presence, not permission: it decides whose name is offered in pickers and who can open the project at all, while what they may do there comes from their RBAC role.
Get one member fields
GET /v1/orgs/{orgId}/objects/member_fields/{id}
beta since 2026-09-28
Group: Lists
Custom access scope: reports:read
One member fields by id. A record this caller cannot see is not found. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
expand | query | string | no | Comma-separated: project, worker. |
fields | query | string | no | Comma-separated: id, project_id, worker_id, joined_at, verified_at, updated_at, apprentice, trainee, gender, date_of_birth, post_code, year_of_commencement, atsi, language_group, beakon_id, other_fields. id is always included. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | object | yes | |
200.data.apprentice | string, nullable | no | |
200.data.atsi | string, nullable | no | Needs personal:diversity. |
200.data.beakon_id | string, nullable | no | |
200.data.date_of_birth | string (date), nullable | no | Needs personal:diversity. |
200.data.gender | string, nullable | no | Needs personal:diversity. |
200.data.id | string (uuid) | yes | |
200.data.joined_at | string (date-time) | no | |
200.data.language_group | string, nullable | no | Needs personal:diversity. |
200.data.other_fields | object, nullable | no | Needs personal:diversity. |
200.data.post_code | string, nullable | no | Needs personal:contact. |
200.data.project | object, nullable | no | Present when expanded. |
200.data.project.award_date | string (date), nullable | no | |
200.data.project.client | string, nullable | no | |
200.data.project.completion_date | string (date), nullable | no | |
200.data.project.core_id | string | no | |
200.data.project.created_at | string (date-time) | no | |
200.data.project.id | string (uuid) | yes | |
200.data.project.name | string | no | |
200.data.project.status | string | no | |
200.data.project.timezone | string | no | |
200.data.project.updated_at | string (date-time) | no | |
200.data.project_id | string (uuid) | no | |
200.data.trainee | string, nullable | no | |
200.data.updated_at | string (date-time) | no | |
200.data.verified_at | string (date-time), nullable | no | |
200.data.worker | object, nullable | no | Present when expanded. |
200.data.worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data.worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data.worker.created_at | string (date-time) | no | |
200.data.worker.email | string | no | Needs personal:contact. |
200.data.worker.home_org_id | string (uuid) | no | |
200.data.worker.id | string (uuid) | yes | |
200.data.worker.name | string | no | |
200.data.worker.phone | string, nullable | no | Needs personal:contact. |
200.data.worker.status | string | no | |
200.data.worker.supplier_name | string, nullable | no | |
200.data.worker.supplier_org_id | string (uuid), nullable | no | |
200.data.worker.updated_at | string (date-time) | no | |
200.data.worker.worker_type | string, nullable | no | |
200.data.worker_id | string (uuid) | no | |
200.data.year_of_commencement | string, nullable | no |
What it is
One person’s place on a project’s roster — the record that says this person is on this job. It is presence, not permission: it decides whose name is offered in pickers and who can open the project at all, while what they may do there comes from their RBAC role.
List the changes to one member fields
GET /v1/orgs/{orgId}/objects/member_fields/{id}/history
beta since 2026-09-28
Group: Lists
Custom access scope: reports:read
Changes made to one member fields through bulk edit and undo, newest first. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
limit | query | integer | no | Rows per page, 1 to 500. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].action | string | yes | |
200.data[].actor | object, nullable | no | |
200.data[].actor.kind | string | yes | |
200.data[].actor.user_id | string (uuid), nullable | no | |
200.data[].actor.via | string | yes | |
200.data[].after | object, nullable | no | |
200.data[].after.id | string (uuid), nullable | no | |
200.data[].after.joined_at | string (date-time), nullable | no | |
200.data[].after.project_id | string (uuid), nullable | no | |
200.data[].after.updated_at | string (date-time), nullable | no | |
200.data[].after.verified_at | string (date-time), nullable | no | |
200.data[].after.worker_id | string (uuid), nullable | no | |
200.data[].before | object, nullable | no | |
200.data[].before.id | string (uuid), nullable | no | |
200.data[].before.joined_at | string (date-time), nullable | no | |
200.data[].before.project_id | string (uuid), nullable | no | |
200.data[].before.updated_at | string (date-time), nullable | no | |
200.data[].before.verified_at | string (date-time), nullable | no | |
200.data[].before.worker_id | string (uuid), nullable | no | |
200.data[].changed | array | yes | |
200.data[].id | string | yes | |
200.data[].occurred_at | string (date-time) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no |
What it is
One person’s place on a project’s roster — the record that says this person is on this job. It is presence, not permission: it decides whose name is offered in pickers and who can open the project at all, while what they may do there comes from their RBAC role.
List projects
GET /v1/orgs/{orgId}/objects/projects
beta since 2026-09-28
Group: Lists
Custom access scope: projects:read
The projects this caller can read. Filter, choose fields, page with next_cursor, or sync changes with delta.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
delta | query | string | no | start, or the next_delta from the last call. Changes appear about 30 seconds after they are made. |
fields | query | string | no | Comma-separated: id, name, status, client, timezone, award_date, completion_date, core_id, created_at, updated_at. id is always included. |
filter[id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
filter[status][eq] | query | string | no | Comma-separated, up to 100. |
limit | query | integer | no | Rows per page, 1 to 5000. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].award_date | string (date), nullable | no | |
200.data[].client | string, nullable | no | |
200.data[].completion_date | string (date), nullable | no | |
200.data[].core_id | string | no | |
200.data[].created_at | string (date-time) | no | |
200.data[].id | string (uuid) | yes | |
200.data[].name | string | no | |
200.data[].status | string | no | |
200.data[].timezone | string | no | |
200.data[].updated_at | string (date-time) | no | |
200.deleted | array | no | Records deleted since the last call. Only on a delta call. |
200.deleted[].deleted_at | string (date-time) | yes | |
200.deleted[].id | string (uuid) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no | Pass as cursor for the next page. Absent on the last page. |
200.next_delta | string | no | Pass as delta on the next call. Only on a delta call. |
What it is
A job an organisation is running — the site everything on the platform is scoped to. Prestarts, diaries, dockets, photos, plant and claims all belong to exactly one project.
Get one project
GET /v1/orgs/{orgId}/objects/projects/{id}
beta since 2026-09-28
Group: Lists
Custom access scope: projects:read
One project by id. A record this caller cannot see is not found.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
fields | query | string | no | Comma-separated: id, name, status, client, timezone, award_date, completion_date, core_id, created_at, updated_at. id is always included. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | object | yes | |
200.data.award_date | string (date), nullable | no | |
200.data.client | string, nullable | no | |
200.data.completion_date | string (date), nullable | no | |
200.data.core_id | string | no | |
200.data.created_at | string (date-time) | no | |
200.data.id | string (uuid) | yes | |
200.data.name | string | no | |
200.data.status | string | no | |
200.data.timezone | string | no | |
200.data.updated_at | string (date-time) | no |
What it is
A job an organisation is running — the site everything on the platform is scoped to. Prestarts, diaries, dockets, photos, plant and claims all belong to exactly one project.
List the changes to one project
GET /v1/orgs/{orgId}/objects/projects/{id}/history
beta since 2026-09-28
Group: Lists
Custom access scope: projects:read
Changes made to one project through bulk edit and undo, newest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
limit | query | integer | no | Rows per page, 1 to 500. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].action | string | yes | |
200.data[].actor | object, nullable | no | |
200.data[].actor.kind | string | yes | |
200.data[].actor.user_id | string (uuid), nullable | no | |
200.data[].actor.via | string | yes | |
200.data[].after | object, nullable | no | |
200.data[].after.award_date | string (date), nullable | no | |
200.data[].after.client | string, nullable | no | |
200.data[].after.completion_date | string (date), nullable | no | |
200.data[].after.created_at | string (date-time), nullable | no | |
200.data[].after.id | string (uuid), nullable | no | |
200.data[].after.name | string, nullable | no | |
200.data[].after.status | string, nullable | no | |
200.data[].after.updated_at | string (date-time), nullable | no | |
200.data[].before | object, nullable | no | |
200.data[].before.award_date | string (date), nullable | no | |
200.data[].before.client | string, nullable | no | |
200.data[].before.completion_date | string (date), nullable | no | |
200.data[].before.created_at | string (date-time), nullable | no | |
200.data[].before.id | string (uuid), nullable | no | |
200.data[].before.name | string, nullable | no | |
200.data[].before.status | string, nullable | no | |
200.data[].before.updated_at | string (date-time), nullable | no | |
200.data[].changed | array | yes | |
200.data[].id | string | yes | |
200.data[].occurred_at | string (date-time) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no |
What it is
A job an organisation is running — the site everything on the platform is scoped to. Prestarts, diaries, dockets, photos, plant and claims all belong to exactly one project.
List sign-ons
GET /v1/orgs/{orgId}/objects/sign_ons
beta since 2026-09-28
Group: Lists
Custom access scope: signons:read
Sign-ons on the projects this caller can read. Filter, choose fields, expand linked records, page with next_cursor, or sync changes with delta. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
delta | query | string | no | start, or the next_delta from the last call. Changes appear about 30 seconds after they are made. |
expand | query | string | no | Comma-separated: member_fields, member_fields.project, member_fields.worker, project, supervisor, worker. |
fields | query | string | no | Comma-separated: id, project_id, worker_id, prestart_id, signed_at, shift_date, shift_type, supervisor_id, location_id, role_key, role_name, core_id, created_at, updated_at. id is always included. |
filter[project_id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
filter[shift_date][eq] | query | string (date) | no | Comma-separated, up to 100. |
filter[shift_date][gt] | query | string (date) | no | Greater than. |
filter[shift_date][gte] | query | string (date) | no | Greater than or equal to. |
filter[shift_date][lt] | query | string (date) | no | Less than. |
filter[shift_date][lte] | query | string (date) | no | Less than or equal to. |
filter[signed_at][gt] | query | string (date-time) | no | Greater than. |
filter[signed_at][gte] | query | string (date-time) | no | Greater than or equal to. |
filter[signed_at][lt] | query | string (date-time) | no | Less than. |
filter[signed_at][lte] | query | string (date-time) | no | Less than or equal to. |
filter[worker_id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
limit | query | integer | no | Rows per page, 1 to 5000. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].core_id | string | no | The Core sign-on id for records moved from Core, else the Lacroo id. |
200.data[].created_at | string (date-time) | no | |
200.data[].id | string (uuid) | yes | |
200.data[].location_id | string (uuid), nullable | no | |
200.data[].member_fields | object, nullable | no | Present when expanded. |
200.data[].member_fields.apprentice | string, nullable | no | |
200.data[].member_fields.atsi | string, nullable | no | Needs personal:diversity. |
200.data[].member_fields.beakon_id | string, nullable | no | |
200.data[].member_fields.date_of_birth | string (date), nullable | no | Needs personal:diversity. |
200.data[].member_fields.gender | string, nullable | no | Needs personal:diversity. |
200.data[].member_fields.id | string (uuid) | yes | |
200.data[].member_fields.joined_at | string (date-time) | no | |
200.data[].member_fields.language_group | string, nullable | no | Needs personal:diversity. |
200.data[].member_fields.other_fields | object, nullable | no | Needs personal:diversity. |
200.data[].member_fields.post_code | string, nullable | no | Needs personal:contact. |
200.data[].member_fields.project | object, nullable | no | Present when expanded. |
200.data[].member_fields.project.award_date | string (date), nullable | no | |
200.data[].member_fields.project.client | string, nullable | no | |
200.data[].member_fields.project.completion_date | string (date), nullable | no | |
200.data[].member_fields.project.core_id | string | no | |
200.data[].member_fields.project.created_at | string (date-time) | no | |
200.data[].member_fields.project.id | string (uuid) | yes | |
200.data[].member_fields.project.name | string | no | |
200.data[].member_fields.project.status | string | no | |
200.data[].member_fields.project.timezone | string | no | |
200.data[].member_fields.project.updated_at | string (date-time) | no | |
200.data[].member_fields.project_id | string (uuid) | no | |
200.data[].member_fields.trainee | string, nullable | no | |
200.data[].member_fields.updated_at | string (date-time) | no | |
200.data[].member_fields.verified_at | string (date-time), nullable | no | |
200.data[].member_fields.worker | object, nullable | no | Present when expanded. |
200.data[].member_fields.worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data[].member_fields.worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data[].member_fields.worker.created_at | string (date-time) | no | |
200.data[].member_fields.worker.email | string | no | Needs personal:contact. |
200.data[].member_fields.worker.home_org_id | string (uuid) | no | |
200.data[].member_fields.worker.id | string (uuid) | yes | |
200.data[].member_fields.worker.name | string | no | |
200.data[].member_fields.worker.phone | string, nullable | no | Needs personal:contact. |
200.data[].member_fields.worker.status | string | no | |
200.data[].member_fields.worker.supplier_name | string, nullable | no | |
200.data[].member_fields.worker.supplier_org_id | string (uuid), nullable | no | |
200.data[].member_fields.worker.updated_at | string (date-time) | no | |
200.data[].member_fields.worker.worker_type | string, nullable | no | |
200.data[].member_fields.worker_id | string (uuid) | no | |
200.data[].member_fields.year_of_commencement | string, nullable | no | |
200.data[].prestart_id | string (uuid), nullable | no | |
200.data[].project | object, nullable | no | Present when expanded. |
200.data[].project.award_date | string (date), nullable | no | |
200.data[].project.client | string, nullable | no | |
200.data[].project.completion_date | string (date), nullable | no | |
200.data[].project.core_id | string | no | |
200.data[].project.created_at | string (date-time) | no | |
200.data[].project.id | string (uuid) | yes | |
200.data[].project.name | string | no | |
200.data[].project.status | string | no | |
200.data[].project.timezone | string | no | |
200.data[].project.updated_at | string (date-time) | no | |
200.data[].project_id | string (uuid) | no | |
200.data[].role_key | string, nullable | no | |
200.data[].role_name | string, nullable | no | |
200.data[].shift_date | string (date) | no | The shift day on site, in the project’s time zone. |
200.data[].shift_type | string, nullable | no | |
200.data[].signed_at | string (date-time) | no | |
200.data[].supervisor | object, nullable | no | Present when expanded. |
200.data[].supervisor.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data[].supervisor.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data[].supervisor.created_at | string (date-time) | no | |
200.data[].supervisor.email | string | no | Needs personal:contact. |
200.data[].supervisor.home_org_id | string (uuid) | no | |
200.data[].supervisor.id | string (uuid) | yes | |
200.data[].supervisor.name | string | no | |
200.data[].supervisor.phone | string, nullable | no | Needs personal:contact. |
200.data[].supervisor.status | string | no | |
200.data[].supervisor.supplier_name | string, nullable | no | |
200.data[].supervisor.supplier_org_id | string (uuid), nullable | no | |
200.data[].supervisor.updated_at | string (date-time) | no | |
200.data[].supervisor.worker_type | string, nullable | no | |
200.data[].supervisor_id | string (uuid), nullable | no | |
200.data[].updated_at | string (date-time) | no | |
200.data[].worker | object, nullable | no | Present when expanded. |
200.data[].worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data[].worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data[].worker.created_at | string (date-time) | no | |
200.data[].worker.email | string | no | Needs personal:contact. |
200.data[].worker.home_org_id | string (uuid) | no | |
200.data[].worker.id | string (uuid) | yes | |
200.data[].worker.name | string | no | |
200.data[].worker.phone | string, nullable | no | Needs personal:contact. |
200.data[].worker.status | string | no | |
200.data[].worker.supplier_name | string, nullable | no | |
200.data[].worker.supplier_org_id | string (uuid), nullable | no | |
200.data[].worker.updated_at | string (date-time) | no | |
200.data[].worker.worker_type | string, nullable | no | |
200.data[].worker_id | string (uuid) | no | |
200.deleted | array | no | Records deleted since the last call. Only on a delta call. |
200.deleted[].deleted_at | string (date-time) | yes | |
200.deleted[].id | string (uuid) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no | Pass as cursor for the next page. Absent on the last page. |
200.next_delta | string | no | Pass as delta on the next call. Only on a delta call. |
What it is
One person’s attendance on a project for a shift — the record that says this worker was on site, who supervised them, where they signed on and for which shift-day. It is the project’s single attendance primitive and the trigger that mints the day’s billable docket.
Get one sign-on
GET /v1/orgs/{orgId}/objects/sign_ons/{id}
beta since 2026-09-28
Group: Lists
Custom access scope: signons:read
One sign-on by id. A record this caller cannot see is not found. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
expand | query | string | no | Comma-separated: member_fields, member_fields.project, member_fields.worker, project, supervisor, worker. |
fields | query | string | no | Comma-separated: id, project_id, worker_id, prestart_id, signed_at, shift_date, shift_type, supervisor_id, location_id, role_key, role_name, core_id, created_at, updated_at. id is always included. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | object | yes | |
200.data.core_id | string | no | The Core sign-on id for records moved from Core, else the Lacroo id. |
200.data.created_at | string (date-time) | no | |
200.data.id | string (uuid) | yes | |
200.data.location_id | string (uuid), nullable | no | |
200.data.member_fields | object, nullable | no | Present when expanded. |
200.data.member_fields.apprentice | string, nullable | no | |
200.data.member_fields.atsi | string, nullable | no | Needs personal:diversity. |
200.data.member_fields.beakon_id | string, nullable | no | |
200.data.member_fields.date_of_birth | string (date), nullable | no | Needs personal:diversity. |
200.data.member_fields.gender | string, nullable | no | Needs personal:diversity. |
200.data.member_fields.id | string (uuid) | yes | |
200.data.member_fields.joined_at | string (date-time) | no | |
200.data.member_fields.language_group | string, nullable | no | Needs personal:diversity. |
200.data.member_fields.other_fields | object, nullable | no | Needs personal:diversity. |
200.data.member_fields.post_code | string, nullable | no | Needs personal:contact. |
200.data.member_fields.project | object, nullable | no | Present when expanded. |
200.data.member_fields.project.award_date | string (date), nullable | no | |
200.data.member_fields.project.client | string, nullable | no | |
200.data.member_fields.project.completion_date | string (date), nullable | no | |
200.data.member_fields.project.core_id | string | no | |
200.data.member_fields.project.created_at | string (date-time) | no | |
200.data.member_fields.project.id | string (uuid) | yes | |
200.data.member_fields.project.name | string | no | |
200.data.member_fields.project.status | string | no | |
200.data.member_fields.project.timezone | string | no | |
200.data.member_fields.project.updated_at | string (date-time) | no | |
200.data.member_fields.project_id | string (uuid) | no | |
200.data.member_fields.trainee | string, nullable | no | |
200.data.member_fields.updated_at | string (date-time) | no | |
200.data.member_fields.verified_at | string (date-time), nullable | no | |
200.data.member_fields.worker | object, nullable | no | Present when expanded. |
200.data.member_fields.worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data.member_fields.worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data.member_fields.worker.created_at | string (date-time) | no | |
200.data.member_fields.worker.email | string | no | Needs personal:contact. |
200.data.member_fields.worker.home_org_id | string (uuid) | no | |
200.data.member_fields.worker.id | string (uuid) | yes | |
200.data.member_fields.worker.name | string | no | |
200.data.member_fields.worker.phone | string, nullable | no | Needs personal:contact. |
200.data.member_fields.worker.status | string | no | |
200.data.member_fields.worker.supplier_name | string, nullable | no | |
200.data.member_fields.worker.supplier_org_id | string (uuid), nullable | no | |
200.data.member_fields.worker.updated_at | string (date-time) | no | |
200.data.member_fields.worker.worker_type | string, nullable | no | |
200.data.member_fields.worker_id | string (uuid) | no | |
200.data.member_fields.year_of_commencement | string, nullable | no | |
200.data.prestart_id | string (uuid), nullable | no | |
200.data.project | object, nullable | no | Present when expanded. |
200.data.project.award_date | string (date), nullable | no | |
200.data.project.client | string, nullable | no | |
200.data.project.completion_date | string (date), nullable | no | |
200.data.project.core_id | string | no | |
200.data.project.created_at | string (date-time) | no | |
200.data.project.id | string (uuid) | yes | |
200.data.project.name | string | no | |
200.data.project.status | string | no | |
200.data.project.timezone | string | no | |
200.data.project.updated_at | string (date-time) | no | |
200.data.project_id | string (uuid) | no | |
200.data.role_key | string, nullable | no | |
200.data.role_name | string, nullable | no | |
200.data.shift_date | string (date) | no | The shift day on site, in the project’s time zone. |
200.data.shift_type | string, nullable | no | |
200.data.signed_at | string (date-time) | no | |
200.data.supervisor | object, nullable | no | Present when expanded. |
200.data.supervisor.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data.supervisor.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data.supervisor.created_at | string (date-time) | no | |
200.data.supervisor.email | string | no | Needs personal:contact. |
200.data.supervisor.home_org_id | string (uuid) | no | |
200.data.supervisor.id | string (uuid) | yes | |
200.data.supervisor.name | string | no | |
200.data.supervisor.phone | string, nullable | no | Needs personal:contact. |
200.data.supervisor.status | string | no | |
200.data.supervisor.supplier_name | string, nullable | no | |
200.data.supervisor.supplier_org_id | string (uuid), nullable | no | |
200.data.supervisor.updated_at | string (date-time) | no | |
200.data.supervisor.worker_type | string, nullable | no | |
200.data.supervisor_id | string (uuid), nullable | no | |
200.data.updated_at | string (date-time) | no | |
200.data.worker | object, nullable | no | Present when expanded. |
200.data.worker.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data.worker.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data.worker.created_at | string (date-time) | no | |
200.data.worker.email | string | no | Needs personal:contact. |
200.data.worker.home_org_id | string (uuid) | no | |
200.data.worker.id | string (uuid) | yes | |
200.data.worker.name | string | no | |
200.data.worker.phone | string, nullable | no | Needs personal:contact. |
200.data.worker.status | string | no | |
200.data.worker.supplier_name | string, nullable | no | |
200.data.worker.supplier_org_id | string (uuid), nullable | no | |
200.data.worker.updated_at | string (date-time) | no | |
200.data.worker.worker_type | string, nullable | no | |
200.data.worker_id | string (uuid) | no |
What it is
One person’s attendance on a project for a shift — the record that says this worker was on site, who supervised them, where they signed on and for which shift-day. It is the project’s single attendance primitive and the trigger that mints the day’s billable docket.
List the changes to one sign-on
GET /v1/orgs/{orgId}/objects/sign_ons/{id}/history
beta since 2026-09-28
Group: Lists
Custom access scope: signons:read
Changes made to one sign-on through bulk edit and undo, newest first. Needs the prestarts:read scope as well.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
limit | query | integer | no | Rows per page, 1 to 500. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].action | string | yes | |
200.data[].actor | object, nullable | no | |
200.data[].actor.kind | string | yes | |
200.data[].actor.user_id | string (uuid), nullable | no | |
200.data[].actor.via | string | yes | |
200.data[].after | object, nullable | no | |
200.data[].after.created_at | string (date-time), nullable | no | |
200.data[].after.id | string (uuid), nullable | no | |
200.data[].after.location_id | string (uuid), nullable | no | |
200.data[].after.prestart_id | string (uuid), nullable | no | |
200.data[].after.project_id | string (uuid), nullable | no | |
200.data[].after.role_key | string, nullable | no | |
200.data[].after.role_name | string, nullable | no | |
200.data[].after.shift_type | string, nullable | no | |
200.data[].after.signed_at | string (date-time), nullable | no | |
200.data[].after.updated_at | string (date-time), nullable | no | |
200.data[].after.worker_id | string (uuid), nullable | no | |
200.data[].before | object, nullable | no | |
200.data[].before.created_at | string (date-time), nullable | no | |
200.data[].before.id | string (uuid), nullable | no | |
200.data[].before.location_id | string (uuid), nullable | no | |
200.data[].before.prestart_id | string (uuid), nullable | no | |
200.data[].before.project_id | string (uuid), nullable | no | |
200.data[].before.role_key | string, nullable | no | |
200.data[].before.role_name | string, nullable | no | |
200.data[].before.shift_type | string, nullable | no | |
200.data[].before.signed_at | string (date-time), nullable | no | |
200.data[].before.updated_at | string (date-time), nullable | no | |
200.data[].before.worker_id | string (uuid), nullable | no | |
200.data[].changed | array | yes | |
200.data[].id | string | yes | |
200.data[].occurred_at | string (date-time) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no |
What it is
One person’s attendance on a project for a shift — the record that says this worker was on site, who supervised them, where they signed on and for which shift-day. It is the project’s single attendance primitive and the trigger that mints the day’s billable docket.
List workers
GET /v1/orgs/{orgId}/objects/workers
beta since 2026-09-28
Group: Lists
Custom access scope: fieldusers:read
Workers linked to the projects this caller can read, and the org’s own workers for callers who see the whole org. Filter, choose fields, page with next_cursor, or sync changes with delta.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
delta | query | string | no | start, or the next_delta from the last call. Changes appear about 30 seconds after they are made. |
fields | query | string | no | Comma-separated: id, name, email, phone, home_org_id, supplier_org_id, supplier_name, worker_type, status, beakon_id, beakon_code, created_at, updated_at. id is always included. |
filter[id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
limit | query | integer | no | Rows per page, 1 to 5000. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].beakon_code | string, nullable | no | Beakon’s record ID. |
200.data[].beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data[].created_at | string (date-time) | no | |
200.data[].email | string | no | Needs personal:contact. |
200.data[].home_org_id | string (uuid) | no | |
200.data[].id | string (uuid) | yes | |
200.data[].name | string | no | |
200.data[].phone | string, nullable | no | Needs personal:contact. |
200.data[].status | string | no | |
200.data[].supplier_name | string, nullable | no | |
200.data[].supplier_org_id | string (uuid), nullable | no | |
200.data[].updated_at | string (date-time) | no | |
200.data[].worker_type | string, nullable | no | |
200.deleted | array | no | Records deleted since the last call. Only on a delta call. |
200.deleted[].deleted_at | string (date-time) | yes | |
200.deleted[].id | string (uuid) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no | Pass as cursor for the next page. Absent on the last page. |
200.next_delta | string | no | Pass as delta on the next call. Only on a delta call. |
What it is
One person who can sign in — an office user, a supervisor, or a worker in the field. Every person belongs to exactly one organisation; a supplier’s worker is a user inside the supplier org, not inside the head contractor’s.
Get one worker
GET /v1/orgs/{orgId}/objects/workers/{id}
beta since 2026-09-28
Group: Lists
Custom access scope: fieldusers:read
One worker by id. A record this caller cannot see is not found.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
fields | query | string | no | Comma-separated: id, name, email, phone, home_org_id, supplier_org_id, supplier_name, worker_type, status, beakon_id, beakon_code, created_at, updated_at. id is always included. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | object | yes | |
200.data.beakon_code | string, nullable | no | Beakon’s record ID. |
200.data.beakon_id | string, nullable | no | The worker’s Beakon ID. |
200.data.created_at | string (date-time) | no | |
200.data.email | string | no | Needs personal:contact. |
200.data.home_org_id | string (uuid) | no | |
200.data.id | string (uuid) | yes | |
200.data.name | string | no | |
200.data.phone | string, nullable | no | Needs personal:contact. |
200.data.status | string | no | |
200.data.supplier_name | string, nullable | no | |
200.data.supplier_org_id | string (uuid), nullable | no | |
200.data.updated_at | string (date-time) | no | |
200.data.worker_type | string, nullable | no |
What it is
One person who can sign in — an office user, a supervisor, or a worker in the field. Every person belongs to exactly one organisation; a supplier’s worker is a user inside the supplier org, not inside the head contractor’s.
List the changes to one worker
GET /v1/orgs/{orgId}/objects/workers/{id}/history
beta since 2026-09-28
Group: Lists
Custom access scope: fieldusers:read
Changes made to one worker through bulk edit and undo, newest first.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string (uuid) | yes | |
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
limit | query | integer | no | Rows per page, 1 to 500. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].action | string | yes | |
200.data[].actor | object, nullable | no | |
200.data[].actor.kind | string | yes | |
200.data[].actor.user_id | string (uuid), nullable | no | |
200.data[].actor.via | string | yes | |
200.data[].after | object, nullable | no | |
200.data[].after.beakon_code | string, nullable | no | |
200.data[].after.beakon_id | string, nullable | no | |
200.data[].after.created_at | string (date-time), nullable | no | |
200.data[].after.email | string, nullable | no | Needs personal:contact. |
200.data[].after.home_org_id | string (uuid), nullable | no | |
200.data[].after.id | string (uuid), nullable | no | |
200.data[].after.name | string, nullable | no | |
200.data[].after.phone | string, nullable | no | Needs personal:contact. |
200.data[].after.status | string, nullable | no | |
200.data[].after.supplier_name | string, nullable | no | |
200.data[].after.supplier_org_id | string (uuid), nullable | no | |
200.data[].after.updated_at | string (date-time), nullable | no | |
200.data[].after.worker_type | string, nullable | no | |
200.data[].before | object, nullable | no | |
200.data[].before.beakon_code | string, nullable | no | |
200.data[].before.beakon_id | string, nullable | no | |
200.data[].before.created_at | string (date-time), nullable | no | |
200.data[].before.email | string, nullable | no | Needs personal:contact. |
200.data[].before.home_org_id | string (uuid), nullable | no | |
200.data[].before.id | string (uuid), nullable | no | |
200.data[].before.name | string, nullable | no | |
200.data[].before.phone | string, nullable | no | Needs personal:contact. |
200.data[].before.status | string, nullable | no | |
200.data[].before.supplier_name | string, nullable | no | |
200.data[].before.supplier_org_id | string (uuid), nullable | no | |
200.data[].before.updated_at | string (date-time), nullable | no | |
200.data[].before.worker_type | string, nullable | no | |
200.data[].changed | array | yes | |
200.data[].id | string | yes | |
200.data[].occurred_at | string (date-time) | yes | |
200.has_more | boolean | yes | |
200.next_cursor | string | no |
What it is
One person who can sign in — an office user, a supervisor, or a worker in the field. Every person belongs to exactly one organisation; a supplier’s worker is a user inside the supplier org, not inside the head contractor’s.
List workforce log rows
GET /v1/orgs/{orgId}/views/workforce_log_v1
beta since 2026-09-28
Group: Workforce & sign-ons
Custom access scope: reports:read
Workforce log rows on the projects this caller can read. Filter, choose columns and page with next_cursor. Needs the prestarts:read scope as well. Columns and names match the Core workforce log; see the Workforce log columns page.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
orgId | path | string (uuid) | yes | |
cursor | query | string | no | The next_cursor from the last page. |
fields | query | string | no | Comma-separated column keys: core_log_id, created_date, modified_date, created_by, core_sign_on_id, signee_unique_id, sign_on_name, email, phone_number, sign_on_role, sign_on_date, sign_on_time, core_project_id, project_name, project_contract_no, project_company_id, prestart_date, prestart_time, prestart_location, shift_type, supervisor, supplier, start_time, finish_time, break_start_time, break_duration, shift_hours, linked_docket, apprentice, trainee, gender, date_of_birth, post_code, year_of_commencement, atsi, language_group, beakon_id, lacroo_sign_on_id, lacroo_worker_id, lacroo_project_id, sign_on_time_utc, project_timezone, supervisor_id, sign_on_role_key, shift_type_code, sign_on_location, docket_number, docket_status, gross_hours, break_start_times, record_source. |
filter[lacroo_project_id][eq] | query | string (uuid) | no | Comma-separated, up to 100. |
filter[sign_on_date][eq] | query | string (date) | no | Comma-separated, up to 100. |
filter[sign_on_date][gt] | query | string (date) | no | Greater than. |
filter[sign_on_date][gte] | query | string (date) | no | Greater than or equal to. |
filter[sign_on_date][lt] | query | string (date) | no | Less than. |
filter[sign_on_date][lte] | query | string (date) | no | Less than or equal to. |
limit | query | integer | no | Rows per page, 1 to 5000. |
Response
| Field | Type | Required | Notes |
|---|---|---|---|
200.data | array | yes | |
200.data[].Aboriginal or Torres Strait Islander | string, nullable | no | Needs personal:diversity. |
200.data[].Apprentice | string, nullable | no | The worker’s answer on this project. |
200.data[].Beakon ID | string, nullable | no | The worker’s Beakon id. |
200.data[].Break Duration | integer (int64), nullable | no | Break minutes, paid and unpaid. |
200.data[].Break Start Time | string, nullable | no | When the first break started. |
200.data[].Break Start Times | string, nullable | no | Every break’s start time, in order. |
200.data[].Created By | string, nullable | no | Not recorded. |
200.data[].Created Date | string (date-time) | no | When the sign-on was recorded. |
200.data[].Date Of Birth | string (date), nullable | no | Needs personal:diversity. |
200.data[].Docket Number | string, nullable | no | The linked docket’s number. |
200.data[].Docket Status | string, nullable | no | The linked docket’s status. |
200.data[].Email | string, nullable | no | Needs personal:contact. |
200.data[].Finish Time | string, nullable | no | The docket’s finish time. |
200.data[].Gender | string, nullable | no | Needs personal:diversity. |
200.data[].Gross Hours | number (double), nullable | no | Gross hours on the docket. |
200.data[].Lacroo Project ID | string (uuid) | no | The Lacroo project id. |
200.data[].Lacroo Sign On ID | string (uuid) | no | The Lacroo sign-on id. |
200.data[].Lacroo Worker ID | string (uuid) | no | The Lacroo worker id. |
200.data[].Language Group | string, nullable | no | Needs personal:diversity. |
200.data[].Linked Docket | string, nullable | no | The Core docket id, or the Lacroo docket id. |
200.data[].Modified Date | string (date-time) | no | The last change to the sign-on, its docket, the worker’s answers or the worker. |
200.data[].Phone Number | string, nullable | no | Needs personal:contact. |
200.data[].Post Code | string, nullable | no | Needs personal:contact. |
200.data[].Prestart Date | string (date), nullable | no | The prestart’s date. |
200.data[].Prestart Location | string, nullable | no | Where the prestart was held. |
200.data[].Prestart Time | string, nullable | no | The prestart’s start time. |
200.data[].Project | string | no | The Core project id, or the Lacroo project id. |
200.data[].Project Company ID | string, nullable | no | The company id of the docket’s stage. |
200.data[].Project Contract No. | string, nullable | no | The contract number of the docket’s stage. |
200.data[].Project Name | string | no | The project’s name. |
200.data[].Project Timezone | string | no | The project’s time zone. |
200.data[].Record Source | string | no | Core for records moved from Core, else Lacroo. |
200.data[].Shift Hours | number (double), nullable | no | Net hours on the docket. |
200.data[].Shift Type | string, nullable | no | Day, Afternoon or Night. |
200.data[].Shift Type Code | string, nullable | no | day, afternoon or night. |
200.data[].Sign On | string | no | The Core sign-on id, or the Lacroo sign-on id. |
200.data[].Sign On Date | string (date) | no | The shift day, in the project’s time zone. |
200.data[].Sign On Location | string, nullable | no | The location scanned at sign-on. |
200.data[].Sign On Name | string | no | The worker’s name. |
200.data[].Sign On Role | string, nullable | no | The worker’s role on the project when they signed on. |
200.data[].Sign On Role Key | string, nullable | no | The role’s key. |
200.data[].Sign On Time | string | no | When the worker signed on, in the project’s time zone. |
200.data[].Sign On Time UTC | string (date-time) | no | When the worker signed on, in UTC. |
200.data[].Signee Unique ID | string | no | The worker’s Lacroo id. |
200.data[].Start Time | string, nullable | no | The docket’s start time. |
200.data[].Supervisor | string, nullable | no | The supervisor’s name. |
200.data[].Supervisor ID | string (uuid), nullable | no | The supervisor’s Lacroo id. |
200.data[].Supplier | string, nullable | no | The company the worker came through. |
200.data[].Trainee | string, nullable | no | The worker’s answer on this project. |
200.data[].Year Of Commencement | string, nullable | no | The worker’s answer on this project. |
200.data[]._id | string | no | The Core workforce-log id, or the Lacroo sign-on id. |
200.has_more | boolean | yes | |
200.next_cursor | string | no | Pass as cursor for the next page. Absent on the last page. |
What it is
One person’s attendance on a project for a shift — the record that says this worker was on site, who supervised them, where they signed on and for which shift-day. It is the project’s single attendance primitive and the trigger that mints the day’s billable docket.