Skip to main content

Endpoint reference

This reference is generated from the same validated OpenAPI artifact used by the backend and Postman collection. Only listed operations are part of the external beta contract. The web application's internal routes are not supported integration endpoints.

All requests require approved workspace beta access and a workspace service-account key. Financial values can be null or absent when the key lacks the corresponding visibility scopes. Directory responses omit embedded project histories; retrieve assigned projects through the project endpoints.

239 operations. Required fields are marked with *. Computed JSON values may vary with permissions; examples do not grant additional access.

GET /api/v1/workspaces/{workspace_id}/calendar-exceptions/

Required scopes and service-account permissions: events:read, schedules:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *CalendarException[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/calendar-exceptions/

Required scopes and service-account permissions: events:write, schedules:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
date *date
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid

Responses

201 — Success
FieldTypeDetails
date *date
id *uuid
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/calendar-exceptions/{id}/

Required scopes and service-account permissions: events:write, schedules:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/calendar-exceptions/{id}/

Required scopes and service-account permissions: events:read, schedules:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
date *date
id *uuid
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/calendar-exceptions/{id}/

Required scopes and service-account permissions: events:write, schedules:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
datedate
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid

Responses

200 — Success
FieldTypeDetails
date *date
id *uuid
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/customers/

Required scopes and service-account permissions: customers:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *CustomerList[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/customers/

Required scopes and service-account permissions: customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddressRequest
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts_payloadContactRequest[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.

Responses

201 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddress
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts *Contact[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/customers/{customer_pk}/contacts/

Required scopes and service-account permissions: customers:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
customer_pk *pathuuid
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Contact[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/customers/{customer_pk}/contacts/

Required scopes and service-account permissions: customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
customer_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
is_primary_contactboolean
name *string
notesstring
phone_numberstring
rolestring

Responses

201 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
id *uuid
is_primary_contactboolean
linked_user *LinkedUserAvatar
name *string
notesstring
phone_numberstring
rolestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/customers/{customer_pk}/contacts/{contact_pk}/

Required scopes and service-account permissions: customers:manage, customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
contact_pk *pathuuid
customer_pk *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/customers/{customer_pk}/contacts/{contact_pk}/

Required scopes and service-account permissions: customers:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
contact_pk *pathuuid
customer_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
id *uuid
is_primary_contactboolean
linked_user *LinkedUserAvatar
name *string
notesstring
phone_numberstring
rolestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/customers/{customer_pk}/contacts/{contact_pk}/

Required scopes and service-account permissions: customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
contact_pk *pathuuid
customer_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
is_primary_contactboolean
namestring
notesstring
phone_numberstring
rolestring

Responses

200 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
id *uuid
is_primary_contactboolean
linked_user *LinkedUserAvatar
name *string
notesstring
phone_numberstring
rolestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/customers/{id}/

Required scopes and service-account permissions: customers:manage, customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/customers/{id}/

Required scopes and service-account permissions: customers:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddress
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts *Contact[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/customers/{id}/

Required scopes and service-account permissions: customers:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddressRequest
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts_payloadContactRequest[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
namestringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.

Responses

200 — Success
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddress
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts *Contact[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activities/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Activity[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/activities/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
sortinteger
work_itemsJSONComputed JSON value; may be null when access is restricted.
work_items_inputActivityWorkItemInlineRequest[]

Responses

201 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
group_namestring
id *integer
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
set_name *string
sortinteger
updated_at *date-time
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/activities/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activities/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
group_namestring
id *integer
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
set_name *string
sortinteger
updated_at *date-time
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/activities/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
last_reviewed_atdate
namestring
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
setinteger
sortinteger
work_itemsJSONComputed JSON value; may be null when access is restricted.
work_items_inputActivityWorkItemInlineRequest[]

Responses

200 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
group_namestring
id *integer
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
set_name *string
sortinteger
updated_at *date-time
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activity-groups/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ActivityGroup[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/activity-groups/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
name *string

Responses

201 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/activity-groups/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activity-groups/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/activity-groups/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
namestring

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activity-sets/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ActivitySet[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/activity-sets/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived

Responses

201 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
id *integer
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/activity-sets/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/activity-sets/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
id *integer
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/activity-sets/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
last_reviewed_atdate
namestring
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived

Responses

200 — Success
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
id *integer
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/budget-groups/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *BudgetGroup[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/budget-groups/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string

Responses

201 — Success
FieldTypeDetails
codestring
id *uuid
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/budget-groups/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/budget-groups/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
id *uuid
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/budget-groups/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
namestring

Responses

200 — Success
FieldTypeDetails
codestring
id *uuid
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/cost-codes/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *CostCode[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/cost-codes/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
cost_typesCostCodeTypeLinkRequest[]
default_ratedecimal
default_unitstring
external_codestring
is_activeboolean
name *string

Responses

201 — Success
FieldTypeDetails
codestring
cost_typesCostCodeTypeLink[]
default_ratedecimal
default_unitstring
external_codestring
id *integer
is_activeboolean
is_system *boolean
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/cost-codes/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/cost-codes/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
cost_typesCostCodeTypeLink[]
default_ratedecimal
default_unitstring
external_codestring
id *integer
is_activeboolean
is_system *boolean
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/cost-codes/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
cost_typesCostCodeTypeLinkRequest[]
default_ratedecimal
default_unitstring
external_codestring
is_activeboolean
namestring

Responses

200 — Success
FieldTypeDetails
codestring
cost_typesCostCodeTypeLink[]
default_ratedecimal
default_unitstring
external_codestring
id *integer
is_activeboolean
is_system *boolean
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/cost-types/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *CostType[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/cost-types/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_activeboolean
name *string
sort_orderinteger

Responses

201 — Success
FieldTypeDetails
id *integer
is_activeboolean
is_core *boolean
key *string
name *string
sort_orderinteger
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/cost-types/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/cost-types/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
id *integer
is_activeboolean
is_core *boolean
key *string
name *string
sort_orderinteger
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/cost-types/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_activeboolean
namestring
sort_orderinteger

Responses

200 — Success
FieldTypeDetails
id *integer
is_activeboolean
is_core *boolean
key *string
name *string
sort_orderinteger
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/locations/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Location[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/locations/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
descriptionstring
is_activeboolean
name *string
parentinteger
sort_orderinteger

Responses

201 — Success
FieldTypeDetails
codestring
created_at *date-time
descriptionstring
id *integer
is_activeboolean
name *string
parentinteger
parent_namestring
sort_orderinteger
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/locations/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/locations/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
created_at *date-time
descriptionstring
id *integer
is_activeboolean
name *string
parentinteger
parent_namestring
sort_orderinteger
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/locations/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
descriptionstring
is_activeboolean
namestring
parentinteger
sort_orderinteger

Responses

200 — Success
FieldTypeDetails
codestring
created_at *date-time
descriptionstring
id *integer
is_activeboolean
name *string
parentinteger
parent_namestring
sort_orderinteger
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-groups/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceGroup[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/resource-groups/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
name *string

Responses

201 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/resource-groups/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-groups/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/resource-groups/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
namestring

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-notes/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceNote[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/resource-notes/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
resource *integer

Responses

201 — Success
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
created_at *date-time
id *integer
resource *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/resource-notes/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-notes/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
created_at *date-time
id *integer
resource *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/resource-notes/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
bodystring
resourceinteger

Responses

200 — Success
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
created_at *date-time
id *integer
resource *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-prices/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourcePrice[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/resource-prices/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
price_typestring* `general` - General * `partner` - Partner Options: general, partner
rate *decimal
resource *integer
supplier_codestring
supplier_descriptionstring
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate

Responses

201 — Success
FieldTypeDetails
id *integer
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
partner_namestring
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
supplier_listing *integer
updated_at *date-time
updated_by *uuid
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/resource-prices/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-prices/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
id *integer
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
partner_namestring
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
supplier_listing *integer
updated_at *date-time
updated_by *uuid
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/resource-prices/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resourceinteger
supplier_codestring
supplier_descriptionstring
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate

Responses

200 — Success
FieldTypeDetails
id *integer
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
partner_namestring
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
supplier_listing *integer
updated_at *date-time
updated_by *uuid
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-supplier-listings/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceSupplierListing[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/resource-supplier-listings/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_defaultboolean
partner *uuid
product_urluri
resource *integer
supplier_codestring
supplier_descriptionstring

Responses

201 — Success
FieldTypeDetails
created_at *date-time
id *integer
is_defaultboolean
partner *uuid
partner_name *string
product_urluri
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
updated_at *date-time
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/resource-supplier-listings/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resource-supplier-listings/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
created_at *date-time
id *integer
is_defaultboolean
partner *uuid
partner_name *string
product_urluri
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
updated_at *date-time
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/resource-supplier-listings/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
is_defaultboolean
partneruuid
product_urluri
resourceinteger
supplier_codestring
supplier_descriptionstring

Responses

200 — Success
FieldTypeDetails
created_at *date-time
id *integer
is_defaultboolean
partner *uuid
partner_name *string
product_urluri
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
updated_at *date-time
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resources/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Resource[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/resources/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
base_cost_inputstring
budget_groupuuidCommercial reporting group; falls back to resource group when null.
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
external_urluri
extras_cost_inputstring
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
initial_supplieruuid
initial_supplier_codestring
initial_supplier_descriptionstring
initial_supplier_namestring
initial_supplier_pricedecimal
initial_supplier_price_valid_fromdate
initial_supplier_product_urluri
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_cost_inputstring
last_reviewed_atdate
lead_in_daysinteger
materials_cost_inputstring
name *string
notes_internalstring
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
waste_percentdecimal

Responses

201 — Success
FieldTypeDetails
base_costdecimal
budget_groupuuidCommercial reporting group; falls back to resource group when null.
budget_group_namestring
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
cost_code_codestring
cost_code_namestring
created_at *date-time
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
effective_rate *object
external_urluri
extras_costdecimal
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
group_namestring
id *integer
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_costdecimal
last_reviewed_atdate
lead_in_daysinteger
materials_costdecimal
name *string
notes_internalstring
owner_user *uuid
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_listings *ResourceSupplierListing[]
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
updated_at *date-time
waste_percentdecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/resources/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/resources/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
base_costdecimal
budget_groupuuidCommercial reporting group; falls back to resource group when null.
budget_group_namestring
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
cost_code_codestring
cost_code_namestring
created_at *date-time
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
effective_rate *object
external_urluri
extras_costdecimal
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
group_namestring
id *integer
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_costdecimal
last_reviewed_atdate
lead_in_daysinteger
materials_costdecimal
name *string
notes_internalstring
owner_user *uuid
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_listings *ResourceSupplierListing[]
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
updated_at *date-time
waste_percentdecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/resources/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
base_cost_inputstring
budget_groupuuidCommercial reporting group; falls back to resource group when null.
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
external_urluri
extras_cost_inputstring
general_priceJSONComputed JSON value; may be null when access is restricted.
groupinteger
initial_supplieruuid
initial_supplier_codestring
initial_supplier_descriptionstring
initial_supplier_namestring
initial_supplier_pricedecimal
initial_supplier_price_valid_fromdate
initial_supplier_product_urluri
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_cost_inputstring
last_reviewed_atdate
lead_in_daysinteger
materials_cost_inputstring
namestring
notes_internalstring
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
waste_percentdecimal

Responses

200 — Success
FieldTypeDetails
base_costdecimal
budget_groupuuidCommercial reporting group; falls back to resource group when null.
budget_group_namestring
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
cost_code_codestring
cost_code_namestring
created_at *date-time
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
effective_rate *object
external_urluri
extras_costdecimal
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
group_namestring
id *integer
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_costdecimal
last_reviewed_atdate
lead_in_daysinteger
materials_costdecimal
name *string
notes_internalstring
owner_user *uuid
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_listings *ResourceSupplierListing[]
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
updated_at *date-time
waste_percentdecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/units/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Active units for this workspace, with ids the order foreign key can store.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Unit[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-item-groups/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *WorkItemGroup[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/work-item-groups/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
name *string

Responses

201 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/work-item-groups/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-item-groups/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/work-item-groups/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
namestring

Responses

200 — Success
FieldTypeDetails
id *integer
name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-item-lines/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *LibWorkItemLine[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/work-item-lines/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
work_itemsJSONComputed JSON value; may be null when access is restricted.

Responses

201 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
hierarchy_level *integer
id *uuid
lft *integer
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
rgt *integer
type_name *string
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/work-item-lines/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-item-lines/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
hierarchy_level *integer
id *uuid
lft *integer
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
rgt *integer
type_name *string
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/work-item-lines/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
line_descstring
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
work_itemsJSONComputed JSON value; may be null when access is restricted.

Responses

200 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
hierarchy_level *integer
id *uuid
lft *integer
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
rgt *integer
type_name *string
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-items/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *WorkItem[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/libraries/work-items/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
default_waste_pctdecimal
descriptionstring
group *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItemRequest[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring

Responses

201 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
created_at *date-time
default_waste_pctdecimal
descriptionstring
group *integer
group_namestring
id *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItem[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/libraries/work-items/{id}/

Required scopes and service-account permissions: libraries:manage, libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/libraries/work-items/{id}/

Required scopes and service-account permissions: libraries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
created_at *date-time
default_waste_pctdecimal
descriptionstring
group *integer
group_namestring
id *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItem[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/libraries/work-items/{id}/

Required scopes and service-account permissions: libraries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Base for all library endpoints. Mixin enforces Auth, Membership, and Billing.

Parameters

NameLocationDetails
id *pathinteger
workspace_id *pathuuid

JSON request

FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
is_unit_priceboolean
itemsWorkItemItemRequest[]
last_reviewed_atdate
lib_lineuuid
namestring
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring

Responses

200 — Success
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
created_at *date-time
default_waste_pctdecimal
descriptionstring
group *integer
group_namestring
id *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItem[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/partners/

Required scopes and service-account permissions: partners:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *PartnerList[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/partners/

Required scopes and service-account permissions: partners:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
addressAddressRequest
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts_payloadPartnerContactRequest[]
emailemail
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialty_namesstring[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.

Responses

201 — Success
FieldTypeDetails
addressAddress
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts *PartnerContact[]
emailemail
id *uuid
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialties *PartnerSpecialty[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/partners/{id}/

Required scopes and service-account permissions: partners:manage, partners:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/partners/{id}/

Required scopes and service-account permissions: partners:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
addressAddress
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts *PartnerContact[]
emailemail
id *uuid
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialties *PartnerSpecialty[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/partners/{id}/

Required scopes and service-account permissions: partners:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
addressAddressRequest
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
categorystring* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts_payloadPartnerContactRequest[]
emailemail
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
namestringThe partner's name or company name.
notesstring
phone_numberstring
specialty_namesstring[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.

Responses

200 — Success
FieldTypeDetails
addressAddress
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts *PartnerContact[]
emailemail
id *uuid
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialties *PartnerSpecialty[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/

Required scopes and service-account permissions: projects:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
archivedqueryfalse (default), true, or only.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
searchquerySearch project name and number.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Project[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/

Required scopes and service-account permissions: projects:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
budgetdecimalCurrent agreed revenue budget visible to the client.
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
custom_status_iduuid
customer_iduuid
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_iduuid
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddressRequest
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_iduuid
zoning_or_planning_refstringApproved planning permission or zoning reference.

Responses

201 — Success
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
brief_snapshot_id *uuid
budgetdecimalCurrent agreed revenue budget visible to the client.
commercialProjectCommercial
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
created_at *date-time
custom_status *CustomProjectStatus
customer *CustomerSimple
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
forecast_revenue_budgetdecimalLast persisted final-account forecast total (net, same basis as ledger/variations).
id *uuid
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
job_cost_snapshotJSON
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_namestring
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddress
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status *stringCore system status of the project, derived from the custom status. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
uk_detailsProjectUKDetails
us_detailsProjectUSDetails
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_namestring
workspace_currency *string
zoning_or_planning_refstringApproved planning permission or zoning reference.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{id}/

Required scopes and service-account permissions: projects:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{id}/

Required scopes and service-account permissions: projects:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
brief_snapshot_id *uuid
budgetdecimalCurrent agreed revenue budget visible to the client.
commercialProjectCommercial
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
created_at *date-time
custom_status *CustomProjectStatus
customer *CustomerSimple
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
forecast_revenue_budgetdecimalLast persisted final-account forecast total (net, same basis as ledger/variations).
id *uuid
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
job_cost_snapshotJSON
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_namestring
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddress
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status *stringCore system status of the project, derived from the custom status. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
uk_detailsProjectUKDetails
us_detailsProjectUSDetails
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_namestring
workspace_currency *string
zoning_or_planning_refstringApproved planning permission or zoning reference.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{id}/

Required scopes and service-account permissions: projects:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
budgetdecimalCurrent agreed revenue budget visible to the client.
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
custom_status_iduuid
customer_iduuid
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
namestringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_iduuid
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddressRequest
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_iduuid
zoning_or_planning_refstringApproved planning permission or zoning reference.

Responses

200 — Success
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
brief_snapshot_id *uuid
budgetdecimalCurrent agreed revenue budget visible to the client.
commercialProjectCommercial
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
created_at *date-time
custom_status *CustomProjectStatus
customer *CustomerSimple
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
forecast_revenue_budgetdecimalLast persisted final-account forecast total (net, same basis as ledger/variations).
id *uuid
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
job_cost_snapshotJSON
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_namestring
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddress
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status *stringCore system status of the project, derived from the custom status. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
uk_detailsProjectUKDetails
us_detailsProjectUSDetails
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_namestring
workspace_currency *string
zoning_or_planning_refstringApproved planning permission or zoning reference.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/entries/

Required scopes and service-account permissions: entries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Entry[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/entries/

Required scopes and service-account permissions: entries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attached_file_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
content *stringThe main text content or a description of the event.
is_privatebooleanIf True, this entry is only visible to workspace members.
notify_modestring* `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
parent_entryuuid
recipient_idsuuid[]
selected_user_idsJSON

Responses

201 — Success
FieldTypeDetails
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
author *UserPublic
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
deliveries *EntryDelivery[]
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
entry_type_display *string
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
id *uuid
is_privatebooleanIf True, this entry is only visible to workspace members.
is_tombstoned *boolean
linked_object_kind *string
linked_object_label *string
linked_object_was_deleted *boolean
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
project_namestring
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
retracted_by *UserPublic
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
status_display *string
tombstone_reason *string
updated_at *date-time
workspace *uuidDirect scope for pre-project enquiry activity and workspace search.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/entries/{id}/

Required scopes and service-account permissions: entries:manage, entries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/entries/{id}/

Required scopes and service-account permissions: entries:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
author *UserPublic
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
deliveries *EntryDelivery[]
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
entry_type_display *string
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
id *uuid
is_privatebooleanIf True, this entry is only visible to workspace members.
is_tombstoned *boolean
linked_object_kind *string
linked_object_label *string
linked_object_was_deleted *boolean
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
project_namestring
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
retracted_by *UserPublic
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
status_display *string
tombstone_reason *string
updated_at *date-time
workspace *uuidDirect scope for pre-project enquiry activity and workspace search.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/entries/{id}/

Required scopes and service-account permissions: entries:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
is_privatebooleanIf True, this entry is only visible to workspace members.
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
workspaceuuidDirect scope for pre-project enquiry activity and workspace search.

Responses

200 — Success
FieldTypeDetails
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
author *UserPublic
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
deliveries *EntryDelivery[]
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
entry_type_display *string
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
id *uuid
is_privatebooleanIf True, this entry is only visible to workspace members.
is_tombstoned *boolean
linked_object_kind *string
linked_object_label *string
linked_object_was_deleted *boolean
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
project_namestring
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
retracted_by *UserPublic
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
status_display *string
tombstone_reason *string
updated_at *date-time
workspace *uuidDirect scope for pre-project enquiry activity and workspace search.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/events/

Required scopes and service-account permissions: events:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Event[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/events/

Required scopes and service-account permissions: events:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
all_dayboolean
attendeesAttendeeRequest[]
conference_urluri
descriptionstring
end *date-time
external_uidstring
is_privateboolean
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace

Responses

201 — Success
FieldTypeDetails
all_dayboolean
attendeesAttendee[]
conference_urluri
created_at *date-time
created_by *uuid
descriptionstring
end *date-time
external_uidstring
id *uuid
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
project *uuid
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
updated_at *date-time
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/events/{id}/

Required scopes and service-account permissions: events:manage, events:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/events/{id}/

Required scopes and service-account permissions: events:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
all_dayboolean
attendeesAttendee[]
conference_urluri
created_at *date-time
created_by *uuid
descriptionstring
end *date-time
external_uidstring
id *uuid
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
project *uuid
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
updated_at *date-time
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/events/{id}/

Required scopes and service-account permissions: events:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
all_dayboolean
attendeesAttendeeRequest[]
conference_urluri
descriptionstring
enddate-time
external_uidstring
is_privateboolean
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
recurrence_rrulestring
reminder_minutesinteger
startdate-time
timezonestring
titlestring
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace

Responses

200 — Success
FieldTypeDetails
all_dayboolean
attendeesAttendee[]
conference_urluri
created_at *date-time
created_by *uuid
descriptionstring
end *date-time
external_uidstring
id *uuid
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
project *uuid
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
updated_at *date-time
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
workspace *uuid
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/

Required scopes and service-account permissions: expenses:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
partnerquerySupplier UUID.
project_id *pathuuid
searchqueryA search term.
statusqueryExpense status.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Expense[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/

Required scopes and service-account permissions: expenses:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_duestring or number or object
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountstring or number or object
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
line_itemsExpenseLineItemRequest[]
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner_iduuid
purchase_order_iduuid
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldstring or number or object
retention_percentagedecimal
retention_releasedstring or number or object
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidstring or number or object
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.

Responses

201 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/{id}/

Required scopes and service-account permissions: expenses:manage, expenses:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/{id}/

Required scopes and service-account permissions: expenses:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/{id}/

Required scopes and service-account permissions: expenses:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_duestring or number or object
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountstring or number or object
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_datedate
line_itemsExpenseLineItemRequest[]
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner_iduuid
purchase_order_iduuid
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldstring or number or object
retention_percentagedecimal
retention_releasedstring or number or object
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidstring or number or object
use_tax_amountdecimal
vendor_namestringVendor/supplier name.

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/{id}/approve/

Required scopes and service-account permissions: expenses:approve, expenses:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/expenses/{id}/reject/

Required scopes and service-account permissions: expenses:approve, expenses:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/

Required scopes and service-account permissions: files:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Upload, list, and manage files for a project.

Parameters

NameLocationDetails
exclude_sourcequeryComma-separated sources to exclude.
needs_attentionquerytrue to show files requiring attention; requires files:write.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
searchquerySearch filename, text, type, tags, and uploader.
sourcequeryFilter by file source.
tagqueryFilter by tag name.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *FileDetail[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/presign/

Required scopes and service-account permissions: files:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Upload, list, and manage files for a project.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
accuracy_mdouble
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
captured_atdate-time
content_type *string
exif_latitudedouble
exif_longitudedouble
filename *string
is_privateboolean
latitudedouble
location_sourcestring* `device_gps` - Device GPS * `exif` - Photo EXIF Options: device_gps, exif,
longitudedouble
selected_user_idsuuid[]
size_bytes *integer
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
tagsuuid[]

Responses

200 — Success
FieldTypeDetails
bucket *string
file_id *uuid
key *string
presigned_post *object
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/{id}/

Required scopes and service-account permissions: files:manage, files:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Upload, list, and manage files for a project.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/{id}/

Required scopes and service-account permissions: files:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Upload, list, and manage files for a project.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
accuracy_m *double
ai_suggestionsJSONStores raw AI suggestions for name, tags, etc.
analysis_errorstring
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
available_actionsJSONComputed JSON value; may be null when access is restricted.
captured_at *date-time
created_at *date-time
created_by_namestring
descriptionstringA user-or-AI-generated description of the file's content.
distance_from_site_mJSONComputed JSON value; may be null when access is restricted.
exif_latitude *double
exif_longitude *double
file *uri
file_sizeintegerSize of the file in bytes.
folderJSONComputed JSON value; may be null when access is restricted.
folder_iduuid
id *uuid
is_privatebooleanIf True, this document is only visible to workspace members.
latitude *double
location_source *string* `device_gps` - Device GPS * `exif` - Photo EXIF Options: device_gps, exif
longitude *double
mime_typestringMIME type of the file.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
projectuuid
selected_user_idsJSON
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
storage_key *string
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tags *FileTag[]
updated_at *date-time
user_defined_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/{id}/

Required scopes and service-account permissions: files:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Upload, list, and manage files for a project.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
descriptionstringA user-or-AI-generated description of the file's content.
filebinary
folder_iduuid
is_privatebooleanIf True, this document is only visible to workspace members.
selected_user_idsJSON
sourcestring
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tagsuuid[]
user_defined_namestring

Responses

200 — Success
FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
created_at *date-time
descriptionstringA user-or-AI-generated description of the file's content.
fileuri
folder_iduuid
id *uuid
is_privatebooleanIf True, this document is only visible to workspace members.
selected_user_idsJSON
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tagsuuid[]
user_defined_namestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/{id}/download-url/

Required scopes and service-account permissions: files:download, files:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Generate a short-lived S3 presigned URL for downloading/viewing a file.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
url *uri
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/files/{id}/finalize/

Required scopes and service-account permissions: files:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Finalisation returns 202 Accepted; read the file detail to monitor processing status. Finalize a presigned upload: - HEAD the object - set file size/mime/status - increment workspace storage used + file count - trigger billing sync so storage buckets auto-increment

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
etagstring

Responses

202 — Success
FieldTypeDetails
accuracy_m *double
ai_suggestionsJSONStores raw AI suggestions for name, tags, etc.
analysis_errorstring
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
available_actionsJSONComputed JSON value; may be null when access is restricted.
captured_at *date-time
created_at *date-time
created_by_namestring
descriptionstringA user-or-AI-generated description of the file's content.
distance_from_site_mJSONComputed JSON value; may be null when access is restricted.
exif_latitude *double
exif_longitude *double
file *uri
file_sizeintegerSize of the file in bytes.
folderJSONComputed JSON value; may be null when access is restricted.
folder_iduuid
id *uuid
is_privatebooleanIf True, this document is only visible to workspace members.
latitude *double
location_source *string* `device_gps` - Device GPS * `exif` - Photo EXIF Options: device_gps, exif
longitude *double
mime_typestringMIME type of the file.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
projectuuid
selected_user_idsJSON
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
storage_key *string
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tags *FileTag[]
updated_at *date-time
user_defined_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/final-account/assumptions/

Required scopes and service-account permissions: final_account:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *FinalAccountAssumption[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/final-account/assumptions/

Required scopes and service-account permissions: final_account:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
forecast_revenue_netdecimal
records *FinalAccountAssumptionRequest[]

Responses

200 — Success
FieldTypeDetails
assumption_percentinteger
change_request *uuid
id *uuid
includedboolean
project *uuid
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/financial-summary/

Required scopes and service-account permissions: project_finance:view_budgets, project_finance:view_cashflow, project_finance:view_commitments, project_finance:view_forecasts, project_finance:view_margins, projects:read, timesheets:view_hours, timesheets:view_labour_costs. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
accrued_cost *double
actual_cost *double
approved_actuals *double
approved_expenses *double
billed_margin *double
budget_message *string
budget_source *string
budget_variance *double
budget_variance_pct *double
cash_in *double
cash_out *double
cash_paid *double
cash_received *double
client_credit_balance *double
committed_cost *double
committed_po_value *double
contract_margin *double
contract_margin_pct *double
contract_sum *double
cost_at_completion *double
cost_movement *object
forecast_cost *double
forecast_margin *double
forecast_margin_pct *double
forecast_variance *double
invoiced *double
owed_by_client *double
owed_to_suppliers *double
pending_bills *double
pending_payables *double
planned_cost *double
projected_profit *double
remaining_commitment *double
supplier_retention_held *double
timesheet_cost *double
timesheet_hours *double
timesheet_labour *JSON
total_exposure *double
unordered_budget_residual *double
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/

Required scopes and service-account permissions: invoices:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *InvoiceDetail[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/

Required scopes and service-account permissions: invoices:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address_iduuid
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_byuuid
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
internal_notesstring
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItemRequest[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_quoteuuid
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.

Responses

201 — Success
FieldTypeDetails
allocations *PaymentAllocation[]
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address *Address
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_at *date-time
created_byuuid
customer_namestring
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
id *uuid
internal_notesstring
invoice_number *stringWorkspace-unique invoice number (e.g., INV-0001).
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItem[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_site_address *Address
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
sections *InvoiceSection[]
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_document_typestring
source_quoteuuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
status *string* `draft` - Draft * `issued` - Issued (Awaiting Payment) * `paid` - Paid * `partially_paid` - Partially Paid * `void` - Void Options: draft, issued, paid, partially_paid, void
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
workspace_bank_account_name *string
workspace_bank_account_number *string
workspace_bank_name *string
workspace_bank_sort_code *string
workspace_business_address *Address
workspace_company_name *string
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_default_payment_terms_days *integer
workspace_default_tax_rate *decimal
workspace_default_terms_and_conditions *string
workspace_include_terms_in_invoices *boolean
workspace_logo *uri
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/{id}/

Required scopes and service-account permissions: invoices:manage, invoices:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/{id}/

Required scopes and service-account permissions: invoices:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
allocations *PaymentAllocation[]
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address *Address
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_at *date-time
created_byuuid
customer_namestring
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
id *uuid
internal_notesstring
invoice_number *stringWorkspace-unique invoice number (e.g., INV-0001).
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItem[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_site_address *Address
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
sections *InvoiceSection[]
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_document_typestring
source_quoteuuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
status *string* `draft` - Draft * `issued` - Issued (Awaiting Payment) * `paid` - Paid * `partially_paid` - Partially Paid * `void` - Void Options: draft, issued, paid, partially_paid, void
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
workspace_bank_account_name *string
workspace_bank_account_number *string
workspace_bank_name *string
workspace_bank_sort_code *string
workspace_business_address *Address
workspace_company_name *string
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_default_payment_terms_days *integer
workspace_default_tax_rate *decimal
workspace_default_terms_and_conditions *string
workspace_include_terms_in_invoices *boolean
workspace_logo *uri
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/{id}/

Required scopes and service-account permissions: invoices:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address_iduuid
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_byuuid
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_datedate
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
internal_notesstring
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_datedate
line_itemsInvoiceLineItemRequest[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
projectuuid
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_quoteuuid
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.

Responses

200 — Success
FieldTypeDetails
allocations *PaymentAllocation[]
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address *Address
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_at *date-time
created_byuuid
customer_namestring
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
id *uuid
internal_notesstring
invoice_number *stringWorkspace-unique invoice number (e.g., INV-0001).
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItem[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_site_address *Address
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
sections *InvoiceSection[]
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_document_typestring
source_quoteuuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
status *string* `draft` - Draft * `issued` - Issued (Awaiting Payment) * `paid` - Paid * `partially_paid` - Partially Paid * `void` - Void Options: draft, issued, paid, partially_paid, void
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
workspace_bank_account_name *string
workspace_bank_account_number *string
workspace_bank_name *string
workspace_bank_sort_code *string
workspace_business_address *Address
workspace_company_name *string
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_default_payment_terms_days *integer
workspace_default_tax_rate *decimal
workspace_default_terms_and_conditions *string
workspace_include_terms_in_invoices *boolean
workspace_logo *uri
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/{id}/send/

Required scopes and service-account permissions: invoices:send, invoices:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
copy_to_senderboolean
email_bccemail[]
email_bodystring
email_ccemail[]
email_subjectstring
email_toemail[]
schedule_follow_upboolean

Responses

200 — Success
FieldTypeDetails
docobject
emailed_to *email[]
invoice *InvoiceDetailSerializer mixin for module-specific sensitive response fields. ``sensitive_fields_by_permission`` maps an independent permission key to the fields omitted when that key is absent. Nested serializers inherit the root request/project context from DRF.
resent *boolean
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/invoices/{id}/void/

Required scopes and service-account permissions: invoices:manage, invoices:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Dedicated action endpoint for voiding an invoice/credit note. Status transitions must never happen through the generic detail PATCH/PUT endpoint (see InvoiceDetailSerializer commercial-lock validation). This is the only supported way to move a document to void.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
allocations *PaymentAllocation[]
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address *Address
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_at *date-time
created_byuuid
customer_namestring
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
id *uuid
internal_notesstring
invoice_number *stringWorkspace-unique invoice number (e.g., INV-0001).
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItem[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_site_address *Address
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
sections *InvoiceSection[]
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_document_typestring
source_quoteuuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
status *string* `draft` - Draft * `issued` - Issued (Awaiting Payment) * `paid` - Paid * `partially_paid` - Partially Paid * `void` - Void Options: draft, issued, paid, partially_paid, void
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
workspace_bank_account_name *string
workspace_bank_account_number *string
workspace_bank_name *string
workspace_bank_sort_code *string
workspace_business_address *Address
workspace_company_name *string
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_default_payment_terms_days *integer
workspace_default_tax_rate *decimal
workspace_default_terms_and_conditions *string
workspace_include_terms_in_invoices *boolean
workspace_logo *uri
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/order-requests/

Required scopes and service-account permissions: material_requests:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *RequisitionItem[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/order-requests/

Required scopes and service-account permissions: material_requests:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
cost_codeinteger
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
is_pending_codingboolean
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
quantity_needed *decimal
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_date *date
resourceinteger
save_to_personal_libraryboolean
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
suggested_partneruuid
unit *uuid
unit_of_measurestring

Responses

201 — Success
FieldTypeDetails
batch *uuid
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
converted_order *uuid
converted_order_line *uuid
cost_codeinteger
created_at *date-time
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
id *uuid
is_pending_codingboolean
lead_in_daysinteger
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
quantity_neededdecimal
rejection_reason *string
requested_by *uuid
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
resource_namestring
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
source_snapshot *JSON
status *string* `needed` - Needed * `requested` - Requested * `converted` - Converted * `rejected` - Rejected Options: needed, requested, converted, rejected
suggested_partneruuid
unituuid
unit_of_measurestring
updated_at *date-time
version *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/order-requests/{id}/

Required scopes and service-account permissions: material_requests:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/order-requests/{id}/

Required scopes and service-account permissions: material_requests:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
batch *uuid
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
converted_order *uuid
converted_order_line *uuid
cost_codeinteger
created_at *date-time
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
id *uuid
is_pending_codingboolean
lead_in_daysinteger
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
quantity_neededdecimal
rejection_reason *string
requested_by *uuid
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
resource_namestring
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
source_snapshot *JSON
status *string* `needed` - Needed * `requested` - Requested * `converted` - Converted * `rejected` - Rejected Options: needed, requested, converted, rejected
suggested_partneruuid
unituuid
unit_of_measurestring
updated_at *date-time
version *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/order-requests/{id}/

Required scopes and service-account permissions: material_requests:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
cost_codeinteger
delivery_instructionsstring
descriptionstring
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
is_pending_codingboolean
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
quantity_neededdecimal
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
save_to_personal_libraryboolean
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
suggested_partneruuid
unituuid
unit_of_measurestring

Responses

200 — Success
FieldTypeDetails
batch *uuid
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
converted_order *uuid
converted_order_line *uuid
cost_codeinteger
created_at *date-time
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
id *uuid
is_pending_codingboolean
lead_in_daysinteger
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
quantity_neededdecimal
rejection_reason *string
requested_by *uuid
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
resource_namestring
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
source_snapshot *JSON
status *string* `needed` - Needed * `requested` - Requested * `converted` - Converted * `rejected` - Rejected Options: needed, requested, converted, rejected
suggested_partneruuid
unituuid
unit_of_measurestring
updated_at *date-time
version *integer
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/

Required scopes and service-account permissions: orders:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
orderingqueryWhich field to use when ordering the results.
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
searchqueryA search term.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *PurchaseOrder[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/

Required scopes and service-account permissions: orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountstring or number or object
hire_calendar_overrideJSON
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItemRequest[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner_iduuid
payment_termsstring
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
supplier_quote_refstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
vendor_name *string

Responses

201 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/

Required scopes and service-account permissions: orders:manage, orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/

Required scopes and service-account permissions: orders:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/

Required scopes and service-account permissions: orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountstring or number or object
hire_calendar_overrideJSON
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItemRequest[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner_iduuid
payment_termsstring
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
supplier_quote_refstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
vendor_namestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/approve/

Required scopes and service-account permissions: orders:approve, orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/cancel/

Required scopes and service-account permissions: orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/reject/

Required scopes and service-account permissions: orders:approve, orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/purchase-orders/{id}/send/

Required scopes and service-account permissions: orders:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block purchase order / procurement API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
requested_approveruuid

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/

Required scopes and service-account permissions: projects:read, quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. GET /projects/<project_pk>/quotes/?document_type=quote|estimate|variation&status=... POST /projects/<project_pk>/quotes/ (create new quote/estimate/variation)

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Quote[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/

Required scopes and service-account permissions: projects:write, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. GET /projects/<project_pk>/quotes/?document_type=quote|estimate|variation&status=... POST /projects/<project_pk>/quotes/ (create new quote/estimate/variation)

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_idJSONComputed JSON value; may be null when access is restricted.
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project_addressJSONComputed JSON value; may be null when access is restricted.
revised_totalJSONComputed JSON value; may be null when access is restricted.
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
template_iduuid
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
variation_countJSONComputed JSON value; may be null when access is restricted.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.

Responses

201 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/

Required scopes and service-account permissions: quotes:manage, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_idJSONComputed JSON value; may be null when access is restricted.
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project_addressJSONComputed JSON value; may be null when access is restricted.
revised_totalJSONComputed JSON value; may be null when access is restricted.
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
template_iduuid
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
variation_countJSONComputed JSON value; may be null when access is restricted.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.

Responses

200 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/approve/

Required scopes and service-account permissions: quotes:approve, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
confirm_contract_setupboolean
notestring

Responses

200 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
adjudication_modestring* `CONTRACTING` - Contracting * `HOUSEBUILDER` - Housebuilder Options: CONTRACTING, HOUSEBUILDER
as_of_datedate
auth_status *string* `DRAFT` - Draft * `PENDING_REVIEW` - Pending review * `AUTHORIZED` - Authorized * `REJECTED` - Rejected Options: DRAFT, PENDING_REVIEW, AUTHORIZED, REJECTED
contingency_amountdecimal
created_at *date-time
id *uuid
is_activeboolean
is_primaryboolean
markup_labour_percentdecimal
markup_material_percentdecimal
markup_other_percentdecimal
markup_plant_percentdecimal
markup_subcontract_percentdecimal
notes_internalstring
ohp_defaultsJSON
partner_iduuid
profit_spread_modestring* `SUMMARY_LUMP_SUM` - Summary lump sum * `SPREAD_IN_RATES` - Spread in rates Options: SUMMARY_LUMP_SUM, SPREAD_IN_RATES
programme_weeksinteger
project *uuid
quote *uuid
requested_approver *uuid
submitted_by *uuid
target_gdvdecimal
total_gifa_sq_ftdecimal
total_gifa_sq_mdecimal
updated_at *date-time
version_namestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
adjudication_modestring* `CONTRACTING` - Contracting * `HOUSEBUILDER` - Housebuilder Options: CONTRACTING, HOUSEBUILDER
as_of_datedate
contingency_amountdecimal
is_activeboolean
is_primaryboolean
markup_labour_percentdecimal
markup_material_percentdecimal
markup_other_percentdecimal
markup_plant_percentdecimal
markup_subcontract_percentdecimal
notes_internalstring
ohp_defaultsJSON
partner_iduuid
profit_spread_modestring* `SUMMARY_LUMP_SUM` - Summary lump sum * `SPREAD_IN_RATES` - Spread in rates Options: SUMMARY_LUMP_SUM, SPREAD_IN_RATES
programme_weeksinteger
target_gdvdecimal
total_gifa_sq_ftdecimal
total_gifa_sq_mdecimal
version_namestring

Responses

200 — Success
FieldTypeDetails
adjudication_modestring* `CONTRACTING` - Contracting * `HOUSEBUILDER` - Housebuilder Options: CONTRACTING, HOUSEBUILDER
as_of_datedate
auth_status *string* `DRAFT` - Draft * `PENDING_REVIEW` - Pending review * `AUTHORIZED` - Authorized * `REJECTED` - Rejected Options: DRAFT, PENDING_REVIEW, AUTHORIZED, REJECTED
contingency_amountdecimal
created_at *date-time
id *uuid
is_activeboolean
is_primaryboolean
markup_labour_percentdecimal
markup_material_percentdecimal
markup_other_percentdecimal
markup_plant_percentdecimal
markup_subcontract_percentdecimal
notes_internalstring
ohp_defaultsJSON
partner_iduuid
profit_spread_modestring* `SUMMARY_LUMP_SUM` - Summary lump sum * `SPREAD_IN_RATES` - Spread in rates Options: SUMMARY_LUMP_SUM, SPREAD_IN_RATES
programme_weeksinteger
project *uuid
quote *uuid
requested_approver *uuid
submitted_by *uuid
target_gdvdecimal
total_gifa_sq_ftdecimal
total_gifa_sq_mdecimal
updated_at *date-time
version_namestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/activities/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateActivity[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/activities/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
groupinteger
group_namestring
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.

Responses

201 — Success
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
estimate *uuid
groupinteger
group_namestring
id *uuid
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/activities/{aid}/

Required scopes and service-account permissions: estimates:manage, estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
aid *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/activities/{aid}/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
aid *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
estimate *uuid
groupinteger
group_namestring
id *uuid
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/activities/{aid}/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
aid *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
groupinteger
group_namestring
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
namestring
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.

Responses

200 — Success
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
estimate *uuid
groupinteger
group_namestring
id *uuid
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/locations/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateLocation[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/locations/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
descriptionstring
house_typestring
house_type_definitionuuid
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring

Responses

201 — Success
FieldTypeDetails
codestring
descriptionstring
estimate *uuid
house_typestring
house_type_definitionuuid
house_type_details *EstimateHouseType
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
id *uuid
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/locations/{lid}/

Required scopes and service-account permissions: estimates:manage, estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
lid *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/locations/{lid}/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
lid *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
codestring
descriptionstring
estimate *uuid
house_typestring
house_type_definitionuuid
house_type_details *EstimateHouseType
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
id *uuid
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/locations/{lid}/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
lid *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
codestring
descriptionstring
house_typestring
house_type_definitionuuid
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
namestring
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring

Responses

200 — Success
FieldTypeDetails
codestring
descriptionstring
estimate *uuid
house_typestring
house_type_definitionuuid
house_type_details *EstimateHouseType
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
id *uuid
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/work-items/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateWorkItem[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/work-items/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
activityuuid
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
groupinteger
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
payment_stage_iduuid
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_lib_lineuuid
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded

Responses

201 — Success
FieldTypeDetails
activityuuid
base_totaldecimal
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
estimate *uuid
groupinteger
id *uuid
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
profit_totaldecimal
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/work-items/{wid}/

Required scopes and service-account permissions: estimates:manage, estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
wid *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/work-items/{wid}/

Required scopes and service-account permissions: estimates:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
wid *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
activityuuid
base_totaldecimal
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
estimate *uuid
groupinteger
id *uuid
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
profit_totaldecimal
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/estimate/work-items/{wid}/

Required scopes and service-account permissions: estimates:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block estimate API when the workspace module is disabled.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
wid *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
activityuuid
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
groupinteger
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
namestring
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
payment_stage_iduuid
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_lib_lineuuid
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded

Responses

200 — Success
FieldTypeDetails
activityuuid
base_totaldecimal
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
estimate *uuid
groupinteger
id *uuid
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
profit_totaldecimal
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/reject/

Required scopes and service-account permissions: quotes:approve, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{id}/send/

Required scopes and service-account permissions: quotes:send, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/items/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *QuoteLineItem[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/items/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
is_provisionalboolean
orderinteger
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
quantitydecimal
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal

Responses

201 — Success
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
id *uuid
is_provisionalboolean
line_totaldecimal
orderinteger
payment_stage *PaymentStage
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
plot_namestring
quantitydecimal
quote *uuid
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/items/{id}/

Required scopes and service-account permissions: quotes:manage, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/items/{id}/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
id *uuid
is_provisionalboolean
line_totaldecimal
orderinteger
payment_stage *PaymentStage
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
plot_namestring
quantitydecimal
quote *uuid
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/items/{id}/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
descriptionstring
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
is_provisionalboolean
orderinteger
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
quantitydecimal
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal

Responses

200 — Success
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
id *uuid
is_provisionalboolean
line_totaldecimal
orderinteger
payment_stage *PaymentStage
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
plot_namestring
quantitydecimal
quote *uuid
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/payment-stages/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *PaymentStage[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/payment-stages/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
name *string
orderinteger
target_percentagedecimal

Responses

201 — Success
FieldTypeDetails
generated_by_handoff *boolean
id *uuid
name *string
orderinteger
quote *uuid
source_estimate_activity *uuid
source_handoff_key *string
target_percentagedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/payment-stages/{id}/

Required scopes and service-account permissions: quotes:manage, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/payment-stages/{id}/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
generated_by_handoff *boolean
id *uuid
name *string
orderinteger
quote *uuid
source_estimate_activity *uuid
source_handoff_key *string
target_percentagedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/payment-stages/{id}/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
namestring
orderinteger
target_percentagedecimal

Responses

200 — Success
FieldTypeDetails
generated_by_handoff *boolean
id *uuid
name *string
orderinteger
quote *uuid
source_estimate_activity *uuid
source_handoff_key *string
target_percentagedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/sections/

Required scopes and service-account permissions: quotes:read, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *QuoteSection[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/sections/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
contentJSONBlock-specific settings and content payload.
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
orderintegerDisplay order within the quote builder.
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule

Responses

201 — Success
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
created_at *date-time
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
id *uuid
orderintegerDisplay order within the quote builder.
quote *uuid
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/sections/{id}/

Required scopes and service-account permissions: quotes:manage, quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/sections/{id}/

Required scopes and service-account permissions: quotes:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
created_at *date-time
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
id *uuid
orderintegerDisplay order within the quote builder.
quote *uuid
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/quotes/{quote_pk}/sections/{id}/

Required scopes and service-account permissions: quotes:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Reusable security logic for any Workspace-scoped resource.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
quote_pk *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
contentJSONBlock-specific settings and content payload.
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
orderintegerDisplay order within the quote builder.
titlestringOptional internal title/label for this section.
typestringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule

Responses

200 — Success
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
created_at *date-time
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
id *uuid
orderintegerDisplay order within the quote builder.
quote *uuid
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/

Required scopes and service-account permissions: rfis:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *RFI[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/

Required scopes and service-account permissions: rfis:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
managed_by_iduuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string

Responses

201 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
managed_by *UserPublic
number *string
project *uuidThe job this RFI belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
responded_at *date-timeWhen the RFI first reached Responded status.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/{id}/

Required scopes and service-account permissions: rfis:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/{id}/

Required scopes and service-account permissions: rfis:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
managed_by *UserPublic
number *string
project *uuidThe job this RFI belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
responded_at *date-timeWhen the RFI first reached Responded status.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/{id}/

Required scopes and service-account permissions: rfis:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
managed_by_iduuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subjectstring

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
managed_by *UserPublic
number *string
project *uuidThe job this RFI belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
responded_at *date-timeWhen the RFI first reached Responded status.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/rfis/{id}/transition/

Required scopes and service-account permissions: rfis:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
status *string* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
managed_by *UserPublic
number *string
project *uuidThe job this RFI belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
responded_at *date-timeWhen the RFI first reached Responded status.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/schedule-dependencies/

Required scopes and service-account permissions: schedules:read, tasks:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ScheduleDependency[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/schedule-dependencies/

Required scopes and service-account permissions: schedules:write, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
rfi_iduuid
successor_iduuid

Responses

201 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
id *uuid
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/schedule-dependencies/{id}/

Required scopes and service-account permissions: schedules:manage, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/schedule-dependencies/{id}/

Required scopes and service-account permissions: schedules:read, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
id *uuid
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/schedule-dependencies/{id}/

Required scopes and service-account permissions: schedules:write, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
rfi_iduuid
successor_iduuid

Responses

200 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
id *uuid
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/site-logs/

Required scopes and service-account permissions: sitediary:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *SiteLog[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/site-logs/

Required scopes and service-account permissions: sitediary:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attached_filesuuid[]
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
internal_notesstringPrivate notes for the project team. Not included in client reports.
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
visitorsstring
weatherstring

Responses

201 — Success
FieldTypeDetails
amendments *SiteLogAmendment[]
attached_filesuuid[]
author *uuid
author_avatar_colorstring
author_avatar_modestring
author_avatar_urluri
author_namestring
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
created_at *date-time
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
id *uuid
internal_notesstringPrivate notes for the project team. Not included in client reports.
is_locked *boolean
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
project *uuid
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
updated_at *date-time
visitorsstring
weatherstring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/site-logs/{id}/

Required scopes and service-account permissions: sitediary:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/site-logs/{id}/

Required scopes and service-account permissions: sitediary:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
amendments *SiteLogAmendment[]
attached_filesuuid[]
author *uuid
author_avatar_colorstring
author_avatar_modestring
author_avatar_urluri
author_namestring
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
created_at *date-time
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
id *uuid
internal_notesstringPrivate notes for the project team. Not included in client reports.
is_locked *boolean
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
project *uuid
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
updated_at *date-time
visitorsstring
weatherstring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/site-logs/{id}/

Required scopes and service-account permissions: sitediary:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attached_filesuuid[]
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
internal_notesstringPrivate notes for the project team. Not included in client reports.
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_datedate
progress_notesstring
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
visitorsstring
weatherstring

Responses

200 — Success
FieldTypeDetails
amendments *SiteLogAmendment[]
attached_filesuuid[]
author *uuid
author_avatar_colorstring
author_avatar_modestring
author_avatar_urluri
author_namestring
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
created_at *date-time
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
id *uuid
internal_notesstringPrivate notes for the project team. Not included in client reports.
is_locked *boolean
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
project *uuid
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
updated_at *date-time
visitorsstring
weatherstring
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/

Required scopes and service-account permissions: snags:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Snag[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/

Required scopes and service-account permissions: snags:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
due_datedate
estimate_location_iduuid
locationstring
managed_by_iduuid
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string

Responses

201 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
locationstring
managed_by *UserPublic
number *string
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
project *uuidThe job this snag belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/{id}/

Required scopes and service-account permissions: snags:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/{id}/

Required scopes and service-account permissions: snags:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
locationstring
managed_by *UserPublic
number *string
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
project *uuidThe job this snag belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/{id}/

Required scopes and service-account permissions: snags:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
due_datedate
estimate_location_iduuid
locationstring
managed_by_iduuid
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
titlestring

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
locationstring
managed_by *UserPublic
number *string
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
project *uuidThe job this snag belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/snags/{id}/transition/

Required scopes and service-account permissions: snags:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
status *string* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed

Responses

200 — Success
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
locationstring
managed_by *UserPublic
number *string
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
project *uuidThe job this snag belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
updated_at *date-time
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/task-dependencies/

Required scopes and service-account permissions: tasks:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *TaskDependency[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/task-dependencies/

Required scopes and service-account permissions: tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
lag_daysinteger
predecessor_iduuid
successor_iduuid

Responses

201 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
predecessor *TaskSimple
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/task-dependencies/{id}/

Required scopes and service-account permissions: tasks:manage, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/task-dependencies/{id}/

Required scopes and service-account permissions: tasks:read, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
predecessor *TaskSimple
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/task-dependencies/{id}/

Required scopes and service-account permissions: tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
lag_daysinteger
predecessor_iduuid
successor_iduuid

Responses

200 — Success
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
predecessor *TaskSimple
successor *TaskSimple
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/tasks/

Required scopes and service-account permissions: tasks:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *TaskList[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/tasks/

Required scopes and service-account permissions: tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignee_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
file_idsuuid[]Set the attached files for this task
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent_iduuid
predecessorsPredecessorInputRequest[]
progressinteger
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
task_type_iduuid
valuedecimal

Responses

201 — Success
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignees *UserPublic[]
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completed_at *date-time
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
created_at *date-time
created_by *uuid
deleted_at *date-time
deleted_by *uuid
dependency_predecessors *TaskDependency[]
dependency_successors *TaskDependency[]
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
estimate_location_namestring
id *uuid
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *boolean
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent *ParentTask
progressinteger
project *uuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
schedule_predecessors *ScheduleDependency[]
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
sub_tasks *SubTask[]
task_type *TaskType
updated_at *date-time
valuedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/tasks/{id}/

Required scopes and service-account permissions: tasks:manage, tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/tasks/{id}/

Required scopes and service-account permissions: tasks:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignees *UserPublic[]
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completed_at *date-time
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
created_at *date-time
created_by *uuid
deleted_at *date-time
deleted_by *uuid
dependency_predecessors *TaskDependency[]
dependency_successors *TaskDependency[]
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
estimate_location_namestring
id *uuid
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *boolean
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent *ParentTask
progressinteger
project *uuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
schedule_predecessors *ScheduleDependency[]
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
sub_tasks *SubTask[]
task_type *TaskType
updated_at *date-time
valuedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/tasks/{id}/

Required scopes and service-account permissions: tasks:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. FLEXIBLE SECURITY: For Project-scoped resources (Tasks, Events, Files). Allows both internal Workspace members AND external Project Guests (Clients).

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignee_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
file_idsuuid[]Set the attached files for this task
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
namestring
orderintegerThe order of the task in a list view.
parent_iduuid
predecessorsPredecessorInputRequest[]
progressinteger
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
task_type_iduuid
valuedecimal

Responses

200 — Success
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignees *UserPublic[]
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completed_at *date-time
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
created_at *date-time
created_by *uuid
deleted_at *date-time
deleted_by *uuid
dependency_predecessors *TaskDependency[]
dependency_successors *TaskDependency[]
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
estimate_location_namestring
id *uuid
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *boolean
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent *ParentTask
progressinteger
project *uuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
schedule_predecessors *ScheduleDependency[]
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
sub_tasks *SubTask[]
task_type *TaskType
updated_at *date-time
valuedecimal
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/timesheets/

Required scopes and service-account permissions: timesheets:approve, timesheets:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Timesheet[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/timesheets/{id}/approve/

Required scopes and service-account permissions: timesheets:approve, timesheets:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block timesheet API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
can_editJSONComputed JSON value; may be null when access is restricted.
can_submitJSONComputed JSON value; may be null when access is restricted.
can_unsubmitJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
entries *TimesheetEntry[]
id *uuid
status *string* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected Options: draft, submitted, approved, rejected
submitted_at *date-time
total_hoursJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
user_id *uuid
user_nameJSONComputed JSON value; may be null when access is restricted.
warningsJSONComputed JSON value; may be null when access is restricted.
week_end *date
week_start *date
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/timesheets/{id}/reject/

Required scopes and service-account permissions: timesheets:approve, timesheets:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Block timesheet API when the workspace module is disabled.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
notestring

Responses

200 — Success
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
can_editJSONComputed JSON value; may be null when access is restricted.
can_submitJSONComputed JSON value; may be null when access is restricted.
can_unsubmitJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
entries *TimesheetEntry[]
id *uuid
status *string* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected Options: draft, submitted, approved, rejected
submitted_at *date-time
total_hoursJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
user_id *uuid
user_nameJSONComputed JSON value; may be null when access is restricted.
warningsJSONComputed JSON value; may be null when access is restricted.
week_end *date
week_start *date
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/

Required scopes and service-account permissions: variations:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ChangeRequest[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/

Required scopes and service-account permissions: variations:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_file_idsuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
draft_initboolean
draft_prefill_instruction_textstring
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
remove_attached_file_idsuuid[]
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive

Responses

201 — Success
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_files *FileDetail[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
created_at *date-time
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
entered_by *uuid
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
id *uuid
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
items *ChangeItem[]
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
project *uuid
project_name *stringName of the project.
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
register_number *stringStable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *integerProject-scoped sequence used to build register_number.
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
restocking_fees_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
resulting_variation *uuidThe formal Variation Quote generated from this request.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
resulting_variation_numberstringWorkspace-unique quote number (e.g., QUO-001).
resulting_variation_sequenceintegerSequential number if this is a variation (e.g., 1, 2, 3).
resulting_variation_statusstring* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
risk_contingency_value_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_id *uuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
type_label *string
updated_at *date-time
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{change_request_pk}/items/

Required scopes and service-account permissions: variations:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
change_request_pk *pathuuid
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *ChangeItem[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{change_request_pk}/items/

Required scopes and service-account permissions: variations:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
change_request_pk *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
add_valuestring or number
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
description *stringSpecific work item description.
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valuestring or number
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
unit_of_measurestring
unit_ratestring or number
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other

Responses

201 — Success
FieldTypeDetails
add_valueobject
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
created_at *date-time
description *stringSpecific work item description.
id *uuid
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valueobject
price_agreed *boolean
pricing_provenance *JSONHow the current price was derived, including method and markup inputs.
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
resource_namestring
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
status *string* `draft` - Draft * `pricing` - Pricing * `submitted` - Submitted to Client * `agreed` - Agreed * `rejected` - Rejected * `withdrawn` - Withdrawn Options: draft, pricing, submitted, agreed, rejected, withdrawn
terms_agreed *boolean
unit_of_measurestring
unit_rateobject
updated_at *date-time
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{change_request_pk}/items/{id}/

Required scopes and service-account permissions: variations:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
change_request_pk *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{change_request_pk}/items/{id}/

Required scopes and service-account permissions: variations:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
change_request_pk *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
add_valueobject
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
created_at *date-time
description *stringSpecific work item description.
id *uuid
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valueobject
price_agreed *boolean
pricing_provenance *JSONHow the current price was derived, including method and markup inputs.
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
resource_namestring
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
status *string* `draft` - Draft * `pricing` - Pricing * `submitted` - Submitted to Client * `agreed` - Agreed * `rejected` - Rejected * `withdrawn` - Withdrawn Options: draft, pricing, submitted, agreed, rejected, withdrawn
terms_agreed *boolean
unit_of_measurestring
unit_rateobject
updated_at *date-time
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{change_request_pk}/items/{id}/

Required scopes and service-account permissions: variations:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Enforce a workspace capability in addition to RBAC.

Parameters

NameLocationDetails
change_request_pk *pathuuid
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
add_valuestring or number
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
descriptionstringSpecific work item description.
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valuestring or number
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
unit_of_measurestring
unit_ratestring or number
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other

Responses

200 — Success
FieldTypeDetails
add_valueobject
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
created_at *date-time
description *stringSpecific work item description.
id *uuid
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valueobject
price_agreed *boolean
pricing_provenance *JSONHow the current price was derived, including method and markup inputs.
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
resource_namestring
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
status *string* `draft` - Draft * `pricing` - Pricing * `submitted` - Submitted to Client * `agreed` - Agreed * `rejected` - Rejected * `withdrawn` - Withdrawn Options: draft, pricing, submitted, agreed, rejected, withdrawn
terms_agreed *boolean
unit_of_measurestring
unit_rateobject
updated_at *date-time
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{id}/

Required scopes and service-account permissions: variations:manage. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Helper for endpoints where the URL does NOT include project_pk, so we must attach request.workspace_id / request.project_id before permissions run.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{id}/

Required scopes and service-account permissions: variations:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Helper for endpoints where the URL does NOT include project_pk, so we must attach request.workspace_id / request.project_id before permissions run.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_files *FileDetail[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
created_at *date-time
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
entered_by *uuid
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
id *uuid
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
items *ChangeItem[]
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
project *uuid
project_name *stringName of the project.
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
register_number *stringStable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *integerProject-scoped sequence used to build register_number.
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
restocking_fees_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
resulting_variation *uuidThe formal Variation Quote generated from this request.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
resulting_variation_numberstringWorkspace-unique quote number (e.g., QUO-001).
resulting_variation_sequenceintegerSequential number if this is a variation (e.g., 1, 2, 3).
resulting_variation_statusstring* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
risk_contingency_value_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_id *uuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
type_label *string
updated_at *date-time
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/projects/{project_id}/variations/{id}/

Required scopes and service-account permissions: variations:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes. Helper for endpoints where the URL does NOT include project_pk, so we must attach request.workspace_id / request.project_id before permissions run.

Parameters

NameLocationDetails
id *pathuuid
project_id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_file_idsuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
draft_initboolean
draft_prefill_instruction_textstring
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
remove_attached_file_idsuuid[]
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
titlestringShort summary of the instruction.
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive

Responses

200 — Success
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_files *FileDetail[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
created_at *date-time
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
entered_by *uuid
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
id *uuid
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
items *ChangeItem[]
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
project *uuid
project_name *stringName of the project.
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
register_number *stringStable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *integerProject-scoped sequence used to build register_number.
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
restocking_fees_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
resulting_variation *uuidThe formal Variation Quote generated from this request.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
resulting_variation_numberstringWorkspace-unique quote number (e.g., QUO-001).
resulting_variation_sequenceintegerSequential number if this is a variation (e.g., 1, 2, 3).
resulting_variation_statusstring* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
risk_contingency_value_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_id *uuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
type_label *string
updated_at *date-time
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/properties/

Required scopes and service-account permissions: properties:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
pagequeryA page number within the paginated result set.
page_sizequeryNumber of results to return per page.
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
count *integer
nexturi
previousuri
results *Property[]
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
POST /api/v1/workspaces/{workspace_id}/properties/

Required scopes and service-account permissions: properties:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
Idempotency-Key *headerUnique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *pathuuid

JSON request

FieldTypeDetails
customer_id *uuid
namestring
notesstring
property_addressAddressRequest

Responses

201 — Success
FieldTypeDetails
created_at *date-time
customer *uuid
customer_name *string
id *uuid
namestring
notesstring
property_addressAddress
updated_at *date-time
workspace *uuid
workspace_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
DELETE /api/v1/workspaces/{workspace_id}/properties/{id}/

Required scopes and service-account permissions: properties:manage, properties:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

204 — No response body
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
GET /api/v1/workspaces/{workspace_id}/properties/{id}/

Required scopes and service-account permissions: properties:read. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

Responses

200 — Success
FieldTypeDetails
created_at *date-time
customer *uuid
customer_name *string
id *uuid
namestring
notesstring
property_addressAddress
updated_at *date-time
workspace *uuid
workspace_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
PATCH /api/v1/workspaces/{workspace_id}/properties/{id}/

Required scopes and service-account permissions: properties:write. Workspace and project access are checked on every request. Financial fields follow their separate visibility scopes.

Parameters

NameLocationDetails
id *pathuuid
workspace_id *pathuuid

JSON request

FieldTypeDetails
customer_iduuid
namestring
notesstring
property_addressAddressRequest

Responses

200 — Success
FieldTypeDetails
created_at *date-time
customer *uuid
customer_name *string
id *uuid
namestring
notesstring
property_addressAddress
updated_at *date-time
workspace *uuid
workspace_name *string
400 — Invalid request
FieldTypeDetails
error *object
401 — Missing, invalid, expired, or revoked key
FieldTypeDetails
error *object
403 — Insufficient permissions or disabled access
FieldTypeDetails
error *object
404 — Resource not found
FieldTypeDetails
error *object
409 — Idempotency conflict or invalid business transition
FieldTypeDetails
error *object
429 — Request quota exceeded
FieldTypeDetails
error *object
500 — Unexpected server error; use the request ID when contacting support
FieldTypeDetails
error *object
503 — API limits unavailable
FieldTypeDetails
error *object
Reusable schemas
APIError
FieldTypeDetails
error *object
ActionInputRequest
FieldTypeDetails
notestring
Activity
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
group_namestring
id *integer
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
set_name *string
sortinteger
updated_at *date-time
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
ActivityGroup
FieldTypeDetails
id *integer
name *string
ActivityGroupRequest
FieldTypeDetails
name *string
ActivityRequest
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
last_reviewed_atdate
name *string
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
set *integer
sortinteger
work_itemsJSONComputed JSON value; may be null when access is restricted.
work_items_inputActivityWorkItemInlineRequest[]
ActivitySet
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
id *integer
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
ActivitySetRequest
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
last_reviewed_atdate
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
ActivityWorkItemInline
FieldTypeDetails
default_quantitydecimal
uom_overridestring
work_item *integer
ActivityWorkItemInlineRequest
FieldTypeDetails
default_quantitydecimal
uom_overridestring
work_item *integer
Address
FieldTypeDetails
countrystring
formatted_addressstring
id *uuid
latitudedouble
localitystring
longitudedouble
postal_codestring
regionstring
street_addressstring
AddressRequest
FieldTypeDetails
countrystring
formatted_addressstring
latitudedouble
localitystring
longitudedouble
postal_codestring
regionstring
street_addressstring
Attendee
FieldTypeDetails
email *email
namestring
response_statusstring* `accepted` - accepted * `declined` - declined * `tentative` - tentative * `needsAction` - needsAction Options: accepted, declined, tentative, needsAction,
AttendeeRequest
FieldTypeDetails
email *email
namestring
response_statusstring* `accepted` - accepted * `declined` - declined * `tentative` - tentative * `needsAction` - needsAction Options: accepted, declined, tentative, needsAction,
BudgetGroup
FieldTypeDetails
codestring
id *uuid
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string
BudgetGroupRequest
FieldTypeDetails
codestring
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
name *string
CDMDutyholder
FieldTypeDetails
contact_namestring
emailemail
idinteger
organisationuuid
phonestring
role *string* `client` - Client * `principal_designer` - Principal Designer * `principal_contractor` - Principal Contractor * `designer` - Designer * `contractor` - Contractor Options: client, principal_designer, principal_contractor, designer, contractor
CDMDutyholderRequest
FieldTypeDetails
contact_namestring
emailemail
idinteger
organisationuuid
phonestring
role *string* `client` - Client * `principal_designer` - Principal Designer * `principal_contractor` - Principal Contractor * `designer` - Designer * `contractor` - Contractor Options: client, principal_designer, principal_contractor, designer, contractor
CalendarException
FieldTypeDetails
date *date
id *uuid
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
workspace *uuid
CalendarExceptionRequest
FieldTypeDetails
date *date
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
ChangeItem
FieldTypeDetails
add_valueobject
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
created_at *date-time
description *stringSpecific work item description.
id *uuid
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valueobject
price_agreed *boolean
pricing_provenance *JSONHow the current price was derived, including method and markup inputs.
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
resource_namestring
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
status *string* `draft` - Draft * `pricing` - Pricing * `submitted` - Submitted to Client * `agreed` - Agreed * `rejected` - Rejected * `withdrawn` - Withdrawn Options: draft, pricing, submitted, agreed, rejected, withdrawn
terms_agreed *boolean
unit_of_measurestring
unit_rateobject
updated_at *date-time
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
ChangeItemRequest
FieldTypeDetails
add_valuestring or number
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
description *stringSpecific work item description.
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valuestring or number
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
unit_of_measurestring
unit_ratestring or number
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
ChangeRequest
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_files *FileDetail[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
created_at *date-time
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
entered_by *uuid
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
id *uuid
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
items *ChangeItem[]
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
project *uuid
project_name *stringName of the project.
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
register_number *stringStable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *integerProject-scoped sequence used to build register_number.
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
restocking_fees_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
resulting_variation *uuidThe formal Variation Quote generated from this request.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
resulting_variation_numberstringWorkspace-unique quote number (e.g., QUO-001).
resulting_variation_sequenceintegerSequential number if this is a variation (e.g., 1, 2, 3).
resulting_variation_statusstring* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
risk_contingency_value_currency *string* `XUA` - ADB Unit of Account * `AFN` - Afghan Afghani * `AFA` - Afghan Afghani (1927–2002) * `ALL` - Albanian Lek * `ALK` - Albanian Lek (1946–1965) * `DZD` - Algerian Dinar * `ADP` - Andorran Peseta * `AOA` - Angolan Kwanza * `AOK` - Angolan Kwanza (1977–1991) * `AON` - Angolan New Kwanza (1990–2000) * `AOR` - Angolan Readjusted Kwanza (1995–1999) * `ARA` - Argentine Austral * `ARS` - Argentine Peso * `ARM` - Argentine Peso (1881–1970) * `ARP` - Argentine Peso (1983–1985) * `ARL` - Argentine Peso Ley (1970–1983) * `AMD` - Armenian Dram * `AWG` - Aruban Florin * `AUD` - Australian Dollar * `ATS` - Austrian Schilling * `AZN` - Azerbaijani Manat * `AZM` - Azerbaijani Manat (1993–2006) * `BSD` - Bahamian Dollar * `BHD` - Bahraini Dinar * `BDT` - Bangladeshi Taka * `BBD` - Barbadian Dollar * `BYN` - Belarusian Ruble * `BYB` - Belarusian Ruble (1994–1999) * `BYR` - Belarusian Ruble (2000–2016) * `BEF` - Belgian Franc * `BEC` - Belgian Franc (convertible) * `BEL` - Belgian Franc (financial) * `BZD` - Belize Dollar * `BMD` - Bermudan Dollar * `BTN` - Bhutanese Ngultrum * `BOB` - Bolivian Boliviano * `BOL` - Bolivian Boliviano (1863–1963) * `BOV` - Bolivian Mvdol * `BOP` - Bolivian Peso * `VED` - Bolívar Soberano * `BAM` - Bosnia-Herzegovina Convertible Mark * `BAD` - Bosnia-Herzegovina Dinar (1992–1994) * `BAN` - Bosnia-Herzegovina New Dinar (1994–1997) * `BWP` - Botswanan Pula * `BRC` - Brazilian Cruzado (1986–1989) * `BRZ` - Brazilian Cruzeiro (1942–1967) * `BRE` - Brazilian Cruzeiro (1990–1993) * `BRR` - Brazilian Cruzeiro (1993–1994) * `BRN` - Brazilian New Cruzado (1989–1990) * `BRB` - Brazilian New Cruzeiro (1967–1986) * `BRL` - Brazilian Real * `GBP` - British Pound * `BND` - Brunei Dollar * `BGL` - Bulgarian Hard Lev * `BGN` - Bulgarian Lev * `BGO` - Bulgarian Lev (1879–1952) * `BGM` - Bulgarian Socialist Lev * `BUK` - Burmese Kyat * `BIF` - Burundian Franc * `XPF` - CFP Franc * `KHR` - Cambodian Riel * `CAD` - Canadian Dollar * `CVE` - Cape Verdean Escudo * `KYD` - Cayman Islands Dollar * `XAF` - Central African CFA Franc * `CLE` - Chilean Escudo * `CLP` - Chilean Peso * `CLF` - Chilean Unit of Account (UF) * `CNX` - Chinese People’s Bank Dollar * `CNY` - Chinese Yuan * `CNH` - Chinese Yuan (offshore) * `COP` - Colombian Peso * `COU` - Colombian Real Value Unit * `KMF` - Comorian Franc * `CDF` - Congolese Franc * `CRC` - Costa Rican Colón * `HRD` - Croatian Dinar * `HRK` - Croatian Kuna * `CUC` - Cuban Convertible Peso * `CUP` - Cuban Peso * `CYP` - Cypriot Pound * `CZK` - Czech Koruna * `CSK` - Czechoslovak Hard Koruna * `DKK` - Danish Krone * `DJF` - Djiboutian Franc * `DOP` - Dominican Peso * `NLG` - Dutch Guilder * `XCD` - East Caribbean Dollar * `DDM` - East German Mark * `ECS` - Ecuadorian Sucre * `ECV` - Ecuadorian Unit of Constant Value * `EGP` - Egyptian Pound * `GQE` - Equatorial Guinean Ekwele * `ERN` - Eritrean Nakfa * `EEK` - Estonian Kroon * `ETB` - Ethiopian Birr * `EUR` - Euro * `XBA` - European Composite Unit * `XEU` - European Currency Unit * `XBB` - European Monetary Unit * `XBC` - European Unit of Account (XBC) * `XBD` - European Unit of Account (XBD) * `FKP` - Falkland Islands Pound * `FJD` - Fijian Dollar * `FIM` - Finnish Markka * `FRF` - French Franc * `XFO` - French Gold Franc * `XFU` - French UIC-Franc * `GMD` - Gambian Dalasi * `GEK` - Georgian Kupon Larit * `GEL` - Georgian Lari * `DEM` - German Mark * `GHS` - Ghanaian Cedi * `GHC` - Ghanaian Cedi (1979–2007) * `GIP` - Gibraltar Pound * `XAU` - Gold * `GRD` - Greek Drachma * `GTQ` - Guatemalan Quetzal * `GWP` - Guinea-Bissau Peso * `GNF` - Guinean Franc * `GNS` - Guinean Syli * `GYD` - Guyanaese Dollar * `HTG` - Haitian Gourde * `HNL` - Honduran Lempira * `HKD` - Hong Kong Dollar * `HUF` - Hungarian Forint * `IMP` - IMP * `ISK` - Icelandic Króna * `ISJ` - Icelandic Króna (1918–1981) * `INR` - Indian Rupee * `IDR` - Indonesian Rupiah * `IRR` - Iranian Rial * `IQD` - Iraqi Dinar * `IEP` - Irish Pound * `ILS` - Israeli New Shekel * `ILP` - Israeli Pound * `ILR` - Israeli Shekel (1980–1985) * `ITL` - Italian Lira * `JMD` - Jamaican Dollar * `JPY` - Japanese Yen * `JOD` - Jordanian Dinar * `KZT` - Kazakhstani Tenge * `KES` - Kenyan Shilling * `KWD` - Kuwaiti Dinar * `KGS` - Kyrgystani Som * `LAK` - Laotian Kip * `LVL` - Latvian Lats * `LVR` - Latvian Ruble * `LBP` - Lebanese Pound * `LSL` - Lesotho Loti * `LRD` - Liberian Dollar * `LYD` - Libyan Dinar * `LTL` - Lithuanian Litas * `LTT` - Lithuanian Talonas * `LUL` - Luxembourg Financial Franc * `LUC` - Luxembourgian Convertible Franc * `LUF` - Luxembourgian Franc * `MOP` - Macanese Pataca * `MKD` - Macedonian Denar * `MKN` - Macedonian Denar (1992–1993) * `MGA` - Malagasy Ariary * `MGF` - Malagasy Franc * `MWK` - Malawian Kwacha * `MYR` - Malaysian Ringgit * `MVR` - Maldivian Rufiyaa * `MVP` - Maldivian Rupee (1947–1981) * `MLF` - Malian Franc * `MTL` - Maltese Lira * `MTP` - Maltese Pound * `MRU` - Mauritanian Ouguiya * `MRO` - Mauritanian Ouguiya (1973–2017) * `MUR` - Mauritian Rupee * `MXV` - Mexican Investment Unit * `MXN` - Mexican Peso * `MXP` - Mexican Silver Peso (1861–1992) * `MDC` - Moldovan Cupon * `MDL` - Moldovan Leu * `MCF` - Monegasque Franc * `MNT` - Mongolian Tugrik * `MAD` - Moroccan Dirham * `MAF` - Moroccan Franc * `MZE` - Mozambican Escudo * `MZN` - Mozambican Metical * `MZM` - Mozambican Metical (1980–2006) * `MMK` - Myanmar Kyat * `NAD` - Namibian Dollar * `NPR` - Nepalese Rupee * `ANG` - Netherlands Antillean Guilder * `TWD` - New Taiwan Dollar * `NZD` - New Zealand Dollar * `NIO` - Nicaraguan Córdoba * `NIC` - Nicaraguan Córdoba (1988–1991) * `NGN` - Nigerian Naira * `KPW` - North Korean Won * `NOK` - Norwegian Krone * `OMR` - Omani Rial * `PKR` - Pakistani Rupee * `XPD` - Palladium * `PAB` - Panamanian Balboa * `PGK` - Papua New Guinean Kina * `PYG` - Paraguayan Guarani * `PEI` - Peruvian Inti * `PEN` - Peruvian Sol * `PES` - Peruvian Sol (1863–1965) * `PHP` - Philippine Peso * `XPT` - Platinum * `PLN` - Polish Zloty * `PLZ` - Polish Zloty (1950–1995) * `PTE` - Portuguese Escudo * `GWE` - Portuguese Guinea Escudo * `QAR` - Qatari Riyal * `XRE` - RINET Funds * `RHD` - Rhodesian Dollar * `RON` - Romanian Leu * `ROL` - Romanian Leu (1952–2006) * `RUB` - Russian Ruble * `RUR` - Russian Ruble (1991–1998) * `RWF` - Rwandan Franc * `SVC` - Salvadoran Colón * `WST` - Samoan Tala * `SAR` - Saudi Riyal * `RSD` - Serbian Dinar * `CSD` - Serbian Dinar (2002–2006) * `SCR` - Seychellois Rupee * `SLE` - Sierra Leonean Leone * `SLL` - Sierra Leonean Leone (1964—2022) * `XAG` - Silver * `SGD` - Singapore Dollar * `SKK` - Slovak Koruna * `SIT` - Slovenian Tolar * `SBD` - Solomon Islands Dollar * `SOS` - Somali Shilling * `ZAR` - South African Rand * `ZAL` - South African Rand (financial) * `KRH` - South Korean Hwan (1953–1962) * `KRW` - South Korean Won * `KRO` - South Korean Won (1945–1953) * `SSP` - South Sudanese Pound * `SUR` - Soviet Rouble * `ESP` - Spanish Peseta * `ESA` - Spanish Peseta (A account) * `ESB` - Spanish Peseta (convertible account) * `XDR` - Special Drawing Rights * `LKR` - Sri Lankan Rupee * `SHP` - St. Helena Pound * `XSU` - Sucre * `SDD` - Sudanese Dinar (1992–2007) * `SDG` - Sudanese Pound * `SDP` - Sudanese Pound (1957–1998) * `SRD` - Surinamese Dollar * `SRG` - Surinamese Guilder * `SZL` - Swazi Lilangeni * `SEK` - Swedish Krona * `CHF` - Swiss Franc * `SYP` - Syrian Pound * `STN` - São Tomé & Príncipe Dobra * `STD` - São Tomé & Príncipe Dobra (1977–2017) * `TVD` - TVD * `TJR` - Tajikistani Ruble * `TJS` - Tajikistani Somoni * `TZS` - Tanzanian Shilling * `XTS` - Testing Currency Code * `THB` - Thai Baht * `TPE` - Timorese Escudo * `TOP` - Tongan Paʻanga * `TTD` - Trinidad & Tobago Dollar * `TND` - Tunisian Dinar * `TRY` - Turkish Lira * `TRL` - Turkish Lira (1922–2005) * `TMT` - Turkmenistani Manat * `TMM` - Turkmenistani Manat (1993–2009) * `USD` - US Dollar * `USN` - US Dollar (Next day) * `USS` - US Dollar (Same day) * `UGX` - Ugandan Shilling * `UGS` - Ugandan Shilling (1966–1987) * `UAH` - Ukrainian Hryvnia * `UAK` - Ukrainian Karbovanets * `AED` - United Arab Emirates Dirham * `UYW` - Uruguayan Nominal Wage Index Unit * `UYU` - Uruguayan Peso * `UYP` - Uruguayan Peso (1975–1993) * `UYI` - Uruguayan Peso (Indexed Units) * `UZS` - Uzbekistani Som * `VUV` - Vanuatu Vatu * `VES` - Venezuelan Bolívar * `VEB` - Venezuelan Bolívar (1871–2008) * `VEF` - Venezuelan Bolívar (2008–2018) * `VND` - Vietnamese Dong * `VNN` - Vietnamese Dong (1978–1985) * `CHE` - WIR Euro * `CHW` - WIR Franc * `XOF` - West African CFA Franc * `YDD` - Yemeni Dinar * `YER` - Yemeni Rial * `YUN` - Yugoslavian Convertible Dinar (1990–1992) * `YUD` - Yugoslavian Hard Dinar (1966–1990) * `YUM` - Yugoslavian New Dinar (1994–2002) * `YUR` - Yugoslavian Reformed Dinar (1992–1993) * `ZWN` - ZWN * `ZRN` - Zairean New Zaire (1993–1998) * `ZRZ` - Zairean Zaire (1971–1993) * `ZMW` - Zambian Kwacha * `ZMK` - Zambian Kwacha (1968–2012) * `ZWD` - Zimbabwean Dollar (1980–2008) * `ZWR` - Zimbabwean Dollar (2008) * `ZWL` - Zimbabwean Dollar (2009–2024) Options: XUA, AFN, AFA, ALL, ALK, DZD, ADP, AOA, AOK, AON, AOR, ARA, ARS, ARM, ARP, ARL, AMD, AWG, AUD, ATS, AZN, AZM, BSD, BHD, BDT, BBD, BYN, BYB, BYR, BEF, BEC, BEL, BZD, BMD, BTN, BOB, BOL, BOV, BOP, VED, BAM, BAD, BAN, BWP, BRC, BRZ, BRE, BRR, BRN, BRB, BRL, GBP, BND, BGL, BGN, BGO, BGM, BUK, BIF, XPF, KHR, CAD, CVE, KYD, XAF, CLE, CLP, CLF, CNX, CNY, CNH, COP, COU, KMF, CDF, CRC, HRD, HRK, CUC, CUP, CYP, CZK, CSK, DKK, DJF, DOP, NLG, XCD, DDM, ECS, ECV, EGP, GQE, ERN, EEK, ETB, EUR, XBA, XEU, XBB, XBC, XBD, FKP, FJD, FIM, FRF, XFO, XFU, GMD, GEK, GEL, DEM, GHS, GHC, GIP, XAU, GRD, GTQ, GWP, GNF, GNS, GYD, HTG, HNL, HKD, HUF, IMP, ISK, ISJ, INR, IDR, IRR, IQD, IEP, ILS, ILP, ILR, ITL, JMD, JPY, JOD, KZT, KES, KWD, KGS, LAK, LVL, LVR, LBP, LSL, LRD, LYD, LTL, LTT, LUL, LUC, LUF, MOP, MKD, MKN, MGA, MGF, MWK, MYR, MVR, MVP, MLF, MTL, MTP, MRU, MRO, MUR, MXV, MXN, MXP, MDC, MDL, MCF, MNT, MAD, MAF, MZE, MZN, MZM, MMK, NAD, NPR, ANG, TWD, NZD, NIO, NIC, NGN, KPW, NOK, OMR, PKR, XPD, PAB, PGK, PYG, PEI, PEN, PES, PHP, XPT, PLN, PLZ, PTE, GWE, QAR, XRE, RHD, RON, ROL, RUB, RUR, RWF, SVC, WST, SAR, RSD, CSD, SCR, SLE, SLL, XAG, SGD, SKK, SIT, SBD, SOS, ZAR, ZAL, KRH, KRW, KRO, SSP, SUR, ESP, ESA, ESB, XDR, LKR, SHP, XSU, SDD, SDG, SDP, SRD, SRG, SZL, SEK, CHF, SYP, STN, STD, TVD, TJR, TJS, TZS, XTS, THB, TPE, TOP, TTD, TND, TRY, TRL, TMT, TMM, USD, USN, USS, UGX, UGS, UAH, UAK, AED, UYW, UYU, UYP, UYI, UZS, VUV, VES, VEB, VEF, VND, VNN, CHE, CHW, XOF, YDD, YER, YUN, YUD, YUM, YUR, ZWN, ZRN, ZRZ, ZMW, ZMK, ZWD, ZWR, ZWL,
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_id *uuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
type_label *string
updated_at *date-time
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
ChangeRequestRequest
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_file_idsuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
draft_initboolean
draft_prefill_instruction_textstring
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
remove_attached_file_idsuuid[]
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
title *stringShort summary of the instruction.
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
Contact
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
id *uuid
is_primary_contactboolean
linked_user *LinkedUserAvatar
name *string
notesstring
phone_numberstring
rolestring
ContactRequest
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
is_primary_contactboolean
name *string
notesstring
phone_numberstring
rolestring
CostCode
FieldTypeDetails
codestring
cost_typesCostCodeTypeLink[]
default_ratedecimal
default_unitstring
external_codestring
id *integer
is_activeboolean
is_system *boolean
name *string
CostCodeRequest
FieldTypeDetails
codestring
cost_typesCostCodeTypeLinkRequest[]
default_ratedecimal
default_unitstring
external_codestring
is_activeboolean
name *string
CostCodeTypeLink
FieldTypeDetails
cost_type *integer
cost_type_key *string
cost_type_name *string
idinteger
nominal_codestring
sage_ledger_account_idstring
CostCodeTypeLinkRequest
FieldTypeDetails
cost_type *integer
idinteger
nominal_codestring
sage_ledger_account_idstring
CostType
FieldTypeDetails
id *integer
is_activeboolean
is_core *boolean
key *string
name *string
sort_orderinteger
CostTypeRequest
FieldTypeDetails
is_activeboolean
name *string
sort_orderinteger
CustomProjectStatus
FieldTypeDetails
colorstringOptional hex color.
descriptionstringOptional tooltip description.
id *uuid
name *stringDisplay name, e.g., 'Quote Submitted'.
orderintegerDisplay order in dropdowns.
status_setJSONComputed JSON value; may be null when access is restricted.
status_set_iduuid
system_status *stringCore system status this maps to. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
CustomProjectStatusRequest
FieldTypeDetails
colorstringOptional hex color.
descriptionstringOptional tooltip description.
name *stringDisplay name, e.g., 'Quote Submitted'.
orderintegerDisplay order in dropdowns.
status_setJSONComputed JSON value; may be null when access is restricted.
status_set_iduuid
system_status *stringCore system status this maps to. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
Customer
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddress
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts *Contact[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
workspace *uuid
CustomerList
FieldTypeDetails
avatar_color *stringHex colour for initials fallback when no image is set.
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_address *Address
company *stringOptional company name for the customer.
contact_email *emailPrimary contact email for this customer entity.
customer_type *string* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
notes *string
payment_terms_days *integerDefault number of days until an invoice is due for this customer.
phone_number *string
tax_id *stringTax ID or VAT Number.
CustomerRequest
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddressRequest
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts_payloadContactRequest[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
name *stringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
CustomerSimple
FieldTypeDetails
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
id *uuid
name *stringName of the customer (individual or company).
CustomerSimpleRequest
FieldTypeDetails
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
name *stringName of the customer (individual or company).
DownloadResponse
FieldTypeDetails
url *uri
EOTEntry
FieldTypeDetails
approved_daysinteger
claimed_at *date
claimed_days *integer
decision_datedate
idinteger
notesstring
reasonstring
EOTEntryRequest
FieldTypeDetails
approved_daysinteger
claimed_days *integer
decision_datedate
idinteger
notesstring
reasonstring
Entry
FieldTypeDetails
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
author *UserPublic
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
deliveries *EntryDelivery[]
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
entry_type_display *string
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
id *uuid
is_privatebooleanIf True, this entry is only visible to workspace members.
is_tombstoned *boolean
linked_object_kind *string
linked_object_label *string
linked_object_was_deleted *boolean
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
project_namestring
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
retracted_by *UserPublic
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
status_display *string
tombstone_reason *string
updated_at *date-time
workspace *uuidDirect scope for pre-project enquiry activity and workspace search.
EntryCreateRequest
FieldTypeDetails
attached_file_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
content *stringThe main text content or a description of the event.
is_privatebooleanIf True, this entry is only visible to workspace members.
notify_modestring* `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
parent_entryuuid
recipient_idsuuid[]
selected_user_idsJSON
EntryDelivery
FieldTypeDetails
channelstring* `email` - Email * `portal` - Portal Options: email, portal
id *uuid
last_errorstring
opened_atdate-time
queued_at *date-time
recipient_email *email
recipient_namestring
replied_atdate-time
sent_atdate-time
statestring* `queued` - Queued * `sent` - Sent * `failed` - Failed * `opened` - Opened * `replied` - Replied Options: queued, sent, failed, opened, replied
EntryDeliveryRequest
FieldTypeDetails
channelstring* `email` - Email * `portal` - Portal Options: email, portal
last_errorstring
opened_atdate-time
recipient_email *email
recipient_namestring
replied_atdate-time
sent_atdate-time
statestring* `queued` - Queued * `sent` - Sent * `failed` - Failed * `opened` - Opened * `replied` - Replied Options: queued, sent, failed, opened, replied
Estimate
FieldTypeDetails
adjudication_modestring* `CONTRACTING` - Contracting * `HOUSEBUILDER` - Housebuilder Options: CONTRACTING, HOUSEBUILDER
as_of_datedate
auth_status *string* `DRAFT` - Draft * `PENDING_REVIEW` - Pending review * `AUTHORIZED` - Authorized * `REJECTED` - Rejected Options: DRAFT, PENDING_REVIEW, AUTHORIZED, REJECTED
contingency_amountdecimal
created_at *date-time
id *uuid
is_activeboolean
is_primaryboolean
markup_labour_percentdecimal
markup_material_percentdecimal
markup_other_percentdecimal
markup_plant_percentdecimal
markup_subcontract_percentdecimal
notes_internalstring
ohp_defaultsJSON
partner_iduuid
profit_spread_modestring* `SUMMARY_LUMP_SUM` - Summary lump sum * `SPREAD_IN_RATES` - Spread in rates Options: SUMMARY_LUMP_SUM, SPREAD_IN_RATES
programme_weeksinteger
project *uuid
quote *uuid
requested_approver *uuid
submitted_by *uuid
target_gdvdecimal
total_gifa_sq_ftdecimal
total_gifa_sq_mdecimal
updated_at *date-time
version_namestring
EstimateActivity
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
estimate *uuid
groupinteger
group_namestring
id *uuid
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
EstimateActivityRequest
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
groupinteger
group_namestring
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
name *string
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
EstimateHouseType
FieldTypeDetails
bedroomsinteger
codestring
created_at *date-time
default_gdvdecimal
default_gifa_sq_ftdecimal
default_tenurestring
descriptionstring
estimate *uuid
id *uuid
is_activeboolean
name *string
plot_count *integer
revision *integer
updated_at *date-time
EstimateHouseTypeRequest
FieldTypeDetails
bedroomsinteger
codestring
default_gdvdecimal
default_gifa_sq_ftdecimal
default_tenurestring
descriptionstring
is_activeboolean
name *string
EstimateLocation
FieldTypeDetails
codestring
descriptionstring
estimate *uuid
house_typestring
house_type_definitionuuid
house_type_details *EstimateHouseType
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
id *uuid
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
EstimateLocationRequest
FieldTypeDetails
codestring
descriptionstring
house_typestring
house_type_definitionuuid
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
name *string
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
EstimateWorkItem
FieldTypeDetails
activityuuid
base_totaldecimal
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
estimate *uuid
groupinteger
id *uuid
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
profit_totaldecimal
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
EstimateWorkItemRequest
FieldTypeDetails
activityuuid
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
groupinteger
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
name *string
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
payment_stage_iduuid
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_lib_lineuuid
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
Event
FieldTypeDetails
all_dayboolean
attendeesAttendee[]
conference_urluri
created_at *date-time
created_by *uuid
descriptionstring
end *date-time
external_uidstring
id *uuid
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
project *uuid
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
updated_at *date-time
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
workspace *uuid
EventRequest
FieldTypeDetails
all_dayboolean
attendeesAttendeeRequest[]
conference_urluri
descriptionstring
end *date-time
external_uidstring
is_privateboolean
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
recurrence_rrulestring
reminder_minutesinteger
start *date-time
timezonestring
title *string
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
Expense
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueobject
cis_deduction_amountdecimal
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
created_by *uuid
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountobject
id *uuid
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
latest_return_note *string
lien_waiver_action_at *date-time
lien_waiver_action_by *uuid
lien_waiver_action_note *string
lien_waiver_status *string* `not_required` - Not required * `required` - Required * `received` - Received * `waived` - Requirement waived Options: not_required, required, received, waived
lien_waivers *ExpenseLienWaiver[]
line_itemsExpenseLineItem[]
match_exception_approved_at *date-time
match_exception_approved_by *uuid
match_notes *string
match_status *string* `unmatched` - Unmatched * `matched` - Matched * `exception` - Match exception * `exception_approved` - Exception approved Options: unmatched, matched, exception, exception_approved
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner *ExpensePartner
partner_iduuid
paymentsExpensePayment[]
project *uuid
purchase_order_iduuid
purchase_order_numberstring
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldobject
retention_percentagedecimal
retention_releasedobject
retention_releases *ExpenseRetentionRelease[]
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidobject
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
ExpenseLienWaiver
FieldTypeDetails
amountobject
created_at *date-time
expense *uuid
id *uuid
notesstring
paymentuuid
received_at *date-time
received_by *uuid
received_by_namestring
requested_at *date-time
requested_by *uuid
requested_by_namestring
statusstring* `not_required` - Not required * `required` - Required * `requested` - Requested * `received` - Received * `waived` - Requirement waived Options: not_required, required, requested, received, waived
updated_at *date-time
uploaded_file *uuid
uploaded_file_namestring
waived_at *date-time
waived_by *uuid
waived_by_namestring
waiver_kindstring* `conditional` - Conditional * `unconditional` - Unconditional Options: conditional, unconditional
waiver_reasonstring
waiver_scopestring* `partial` - Partial * `final` - Final Options: partial, final
ExpenseLienWaiverRequest
FieldTypeDetails
amountstring or number or object
notesstring
paymentuuid
statusstring* `not_required` - Not required * `required` - Required * `requested` - Requested * `received` - Received * `waived` - Requirement waived Options: not_required, required, requested, received, waived
waiver_kindstring* `conditional` - Conditional * `unconditional` - Unconditional Options: conditional, unconditional
waiver_reasonstring
waiver_scopestring* `partial` - Partial * `final` - Final Options: partial, final
ExpenseLineItem
FieldTypeDetails
categorystring* `materials` - Materials * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other Options: materials, labour, plant, subcontract, overhead, other
cost_codeinteger
description *string
iduuid
line_grossobject
line_netobject
line_taxobject
purchase_order_line_iduuid
quantitydecimal
tax_ratedecimal
unit_of_measurestring
unit_priceobject
ExpenseLineItemRequest
FieldTypeDetails
categorystring* `materials` - Materials * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other Options: materials, labour, plant, subcontract, overhead, other
cost_codeinteger
description *string
iduuid
line_grossstring or number or object
line_netstring or number or object
line_taxstring or number or object
purchase_order_line_iduuid
quantitydecimal
tax_ratedecimal
unit_of_measurestring
unit_price *string or number or object
ExpensePartner
FieldTypeDetails
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
id *uuid
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
ExpensePartnerRequest
FieldTypeDetails
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
ExpensePayment
FieldTypeDetails
amountobject
cis_snapshotJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
datedate
id *uuid
methodstringe.g. 'Company Card', 'Bank Transfer', 'Petty Cash'
notestring
referencestring
ExpensePaymentRequest
FieldTypeDetails
amount *string or number or object
cis_gross_amountdecimal
cis_materials_amountdecimal
cis_snapshotJSONComputed JSON value; may be null when access is restricted.
datedate
methodstringe.g. 'Company Card', 'Bank Transfer', 'Petty Cash'
notestring
referencestring
ExpenseRequest
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_duestring or number or object
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountstring or number or object
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_date *date
line_itemsExpenseLineItemRequest[]
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner_iduuid
purchase_order_iduuid
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldstring or number or object
retention_percentagedecimal
retention_releasedstring or number or object
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidstring or number or object
use_tax_amountdecimal
vendor_name *stringVendor/supplier name.
ExpenseRetentionRelease
FieldTypeDetails
amountobject
id *uuid
note *string
released_at *date-time
released_by *uuid
released_by_nameJSONComputed JSON value; may be null when access is restricted.
ExpenseRetentionReleaseRequest
FieldTypeDetails
amountstring or number or object
released_by_nameJSONComputed JSON value; may be null when access is restricted.
File
FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
created_at *date-time
descriptionstringA user-or-AI-generated description of the file's content.
fileuri
folder_iduuid
id *uuid
is_privatebooleanIf True, this document is only visible to workspace members.
selected_user_idsJSON
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tagsuuid[]
user_defined_namestring
FileDetail
FieldTypeDetails
accuracy_m *double
ai_suggestionsJSONStores raw AI suggestions for name, tags, etc.
analysis_errorstring
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
available_actionsJSONComputed JSON value; may be null when access is restricted.
captured_at *date-time
created_at *date-time
created_by_namestring
descriptionstringA user-or-AI-generated description of the file's content.
distance_from_site_mJSONComputed JSON value; may be null when access is restricted.
exif_latitude *double
exif_longitude *double
file *uri
file_sizeintegerSize of the file in bytes.
folderJSONComputed JSON value; may be null when access is restricted.
folder_iduuid
id *uuid
is_privatebooleanIf True, this document is only visible to workspace members.
latitude *double
location_source *string* `device_gps` - Device GPS * `exif` - Photo EXIF Options: device_gps, exif
longitude *double
mime_typestringMIME type of the file.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
projectuuid
selected_user_idsJSON
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
storage_key *string
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tags *FileTag[]
updated_at *date-time
user_defined_name *string
FileDetailRequest
FieldTypeDetails
ai_suggestionsJSONStores raw AI suggestions for name, tags, etc.
analysis_errorstring
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
available_actionsJSONComputed JSON value; may be null when access is restricted.
descriptionstringA user-or-AI-generated description of the file's content.
distance_from_site_mJSONComputed JSON value; may be null when access is restricted.
file *binary
file_sizeintegerSize of the file in bytes.
folderJSONComputed JSON value; may be null when access is restricted.
folder_iduuid
is_privatebooleanIf True, this document is only visible to workspace members.
mime_typestringMIME type of the file.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
projectuuid
selected_user_idsJSON
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
user_defined_name *string
FileFinalizeRequestRequest
FieldTypeDetails
etagstring
FilePresignRequestRequest
FieldTypeDetails
accuracy_mdouble
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
captured_atdate-time
content_type *string
exif_latitudedouble
exif_longitudedouble
filename *string
is_privateboolean
latitudedouble
location_sourcestring* `device_gps` - Device GPS * `exif` - Photo EXIF Options: device_gps, exif,
longitudedouble
selected_user_idsuuid[]
size_bytes *integer
sourcestring* `general` - General Upload * `timeline` - Timeline Message * `site_diary` - Site Diary * `task` - Task Attachment * `expense` - Expense Receipt * `pickup` - Store Pickup Ticket * `delivery_ticket` - Delivery Docket * `quote` - Quote / Document Assets * `invoice` - Invoice / Document Assets * `partner_compliance` - Partner Compliance * `brief` - Builder Brief Options: general, timeline, site_diary, task, expense, pickup, delivery_ticket, quote, invoice, partner_compliance, brief
tagsuuid[]
FileTag
FieldTypeDetails
categorystring* `photos` - Photos * `documents` - Documents * `financial` - Financial * `plans` - Plans * `phases` - Project Phases Options: photos, documents, financial, plans, phases, ,
descriptionstring
id *uuid
name *string
FileTagRequest
FieldTypeDetails
categorystring* `photos` - Photos * `documents` - Documents * `financial` - Financial * `plans` - Plans * `phases` - Project Phases Options: photos, documents, financial, plans, phases, ,
descriptionstring
name *string
FinalAccountAssumption
FieldTypeDetails
assumption_percentinteger
change_request *uuid
id *uuid
includedboolean
project *uuid
updated_at *date-time
FinalAccountAssumptionRequest
FieldTypeDetails
assumption_percentinteger
change_request *uuid
includedboolean
FinalAccountInputRequest
FieldTypeDetails
forecast_revenue_netdecimal
records *FinalAccountAssumptionRequest[]
FinancialSummary
FieldTypeDetails
accrued_cost *double
actual_cost *double
approved_actuals *double
approved_expenses *double
billed_margin *double
budget_message *string
budget_source *string
budget_variance *double
budget_variance_pct *double
cash_in *double
cash_out *double
cash_paid *double
cash_received *double
client_credit_balance *double
committed_cost *double
committed_po_value *double
contract_margin *double
contract_margin_pct *double
contract_sum *double
cost_at_completion *double
cost_movement *object
forecast_cost *double
forecast_margin *double
forecast_margin_pct *double
forecast_variance *double
invoiced *double
owed_by_client *double
owed_to_suppliers *double
pending_bills *double
pending_payables *double
planned_cost *double
projected_profit *double
remaining_commitment *double
supplier_retention_held *double
timesheet_cost *double
timesheet_hours *double
timesheet_labour *JSON
total_exposure *double
unordered_budget_residual *double
InvoiceDetail
FieldTypeDetails
allocations *PaymentAllocation[]
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address *Address
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_at *date-time
created_byuuid
customer_namestring
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
id *uuid
internal_notesstring
invoice_number *stringWorkspace-unique invoice number (e.g., INV-0001).
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItem[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_site_address *Address
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
sections *InvoiceSection[]
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_document_typestring
source_quoteuuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
status *string* `draft` - Draft * `issued` - Issued (Awaiting Payment) * `paid` - Paid * `partially_paid` - Partially Paid * `void` - Void Options: draft, issued, paid, partially_paid, void
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
workspace_bank_account_name *string
workspace_bank_account_number *string
workspace_bank_name *string
workspace_bank_sort_code *string
workspace_business_address *Address
workspace_company_name *string
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_default_payment_terms_days *integer
workspace_default_tax_rate *decimal
workspace_default_terms_and_conditions *string
workspace_include_terms_in_invoices *boolean
workspace_logo *uri
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
InvoiceDetailRequest
FieldTypeDetails
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address_iduuid
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_byuuid
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_date *date
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
internal_notesstring
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_date *date
line_items *InvoiceLineItemRequest[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
project *uuid
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_quoteuuid
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
InvoiceLineItem
FieldTypeDetails
claim_percentagedecimalFor progress claims, what % of the original sum is being billed now.
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_nameJSONComputed JSON value; may be null when access is restricted.
descriptionstring
id *uuid
invoice *uuid
line_totaldecimal
orderinteger
quantitydecimal
quote_lineuuid
sectionuuidPay-application section this line belongs to. Null on legacy free-text rows.
unit_of_measurestring
unit_pricedecimal
InvoiceLineItemRequest
FieldTypeDetails
claim_percentagedecimalFor progress claims, what % of the original sum is being billed now.
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_nameJSONComputed JSON value; may be null when access is restricted.
descriptionstring
orderinteger
quantitydecimal
quote_lineuuid
sectionuuidPay-application section this line belongs to. Null on legacy free-text rows.
unit_of_measurestring
unit_price *decimal
InvoiceSection
FieldTypeDetails
claim_percentage *decimalThis application's share of the section's original scheduled value.
headingJSONComputed JSON value; may be null when access is restricted.
id *uuid
kind *string* `original_works` - Original works * `variation` - Variation Options: original_works, variation
order *integer
source_document_typestring
source_quote *uuid
source_quote_numberstring
source_quote_titlestring
source_variation_numberinteger
this_periodJSONComputed JSON value; may be null when access is restricted.
InvoiceSectionRequest
FieldTypeDetails
headingJSONComputed JSON value; may be null when access is restricted.
this_periodJSONComputed JSON value; may be null when access is restricted.
InvoiceSendInputRequest
FieldTypeDetails
copy_to_senderboolean
email_bccemail[]
email_bodystring
email_ccemail[]
email_subjectstring
email_toemail[]
schedule_follow_upboolean
InvoiceSendResult
FieldTypeDetails
docobject
emailed_to *email[]
invoice *InvoiceDetailSerializer mixin for module-specific sensitive response fields. ``sensitive_fields_by_permission`` maps an independent permission key to the fields omitted when that key is absent. Nested serializers inherit the root request/project context from DRF.
resent *boolean
LibWorkItemLine
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
hierarchy_level *integer
id *uuid
lft *integer
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
rgt *integer
type_name *string
work_item_count *integer
work_itemsJSONComputed JSON value; may be null when access is restricted.
LibWorkItemLineRequest
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
line_desc *string
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
work_itemsJSONComputed JSON value; may be null when access is restricted.
LinkedUserAvatar
FieldTypeDetails
avatar_color *stringHex color code for avatar fallback, generated from name.
avatar_mode *stringAvatar rendering mode: auto, color, or image. * `auto` - Auto * `color` - Custom colour * `image` - Image Options: auto, color, image
avatar_url *uriURL for the user's profile picture.
email *email
first_name *string
id *uuid
last_name *string
Location
FieldTypeDetails
codestring
created_at *date-time
descriptionstring
id *integer
is_activeboolean
name *string
parentinteger
parent_namestring
sort_orderinteger
updated_at *date-time
LocationRequest
FieldTypeDetails
codestring
descriptionstring
is_activeboolean
name *string
parentinteger
sort_orderinteger
PaginatedActivityGroupList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ActivityGroup[]
PaginatedActivityList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Activity[]
PaginatedActivitySetList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ActivitySet[]
PaginatedBudgetGroupList
FieldTypeDetails
count *integer
nexturi
previousuri
results *BudgetGroup[]
PaginatedCalendarExceptionList
FieldTypeDetails
count *integer
nexturi
previousuri
results *CalendarException[]
PaginatedChangeItemList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ChangeItem[]
PaginatedChangeRequestList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ChangeRequest[]
PaginatedContactList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Contact[]
PaginatedCostCodeList
FieldTypeDetails
count *integer
nexturi
previousuri
results *CostCode[]
PaginatedCostTypeList
FieldTypeDetails
count *integer
nexturi
previousuri
results *CostType[]
PaginatedCustomerListList
FieldTypeDetails
count *integer
nexturi
previousuri
results *CustomerList[]
PaginatedEntryList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Entry[]
PaginatedEstimateActivityList
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateActivity[]
PaginatedEstimateLocationList
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateLocation[]
PaginatedEstimateWorkItemList
FieldTypeDetails
count *integer
nexturi
previousuri
results *EstimateWorkItem[]
PaginatedEventList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Event[]
PaginatedExpenseList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Expense[]
PaginatedFileDetailList
FieldTypeDetails
count *integer
nexturi
previousuri
results *FileDetail[]
PaginatedFinalAccountAssumptionList
FieldTypeDetails
count *integer
nexturi
previousuri
results *FinalAccountAssumption[]
PaginatedInvoiceDetailList
FieldTypeDetails
count *integer
nexturi
previousuri
results *InvoiceDetail[]
PaginatedLibWorkItemLineList
FieldTypeDetails
count *integer
nexturi
previousuri
results *LibWorkItemLine[]
PaginatedLocationList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Location[]
PaginatedPartnerListList
FieldTypeDetails
count *integer
nexturi
previousuri
results *PartnerList[]
PaginatedPaymentStageList
FieldTypeDetails
count *integer
nexturi
previousuri
results *PaymentStage[]
PaginatedProjectList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Project[]
PaginatedPropertyList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Property[]
PaginatedPurchaseOrderList
FieldTypeDetails
count *integer
nexturi
previousuri
results *PurchaseOrder[]
PaginatedQuoteLineItemList
FieldTypeDetails
count *integer
nexturi
previousuri
results *QuoteLineItem[]
PaginatedQuoteList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Quote[]
PaginatedQuoteSectionList
FieldTypeDetails
count *integer
nexturi
previousuri
results *QuoteSection[]
PaginatedRFIList
FieldTypeDetails
count *integer
nexturi
previousuri
results *RFI[]
PaginatedRequisitionItemList
FieldTypeDetails
count *integer
nexturi
previousuri
results *RequisitionItem[]
PaginatedResourceGroupList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceGroup[]
PaginatedResourceList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Resource[]
PaginatedResourceNoteList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceNote[]
PaginatedResourcePriceList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourcePrice[]
PaginatedResourceSupplierListingList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ResourceSupplierListing[]
PaginatedScheduleDependencyList
FieldTypeDetails
count *integer
nexturi
previousuri
results *ScheduleDependency[]
PaginatedSiteLogList
FieldTypeDetails
count *integer
nexturi
previousuri
results *SiteLog[]
PaginatedSnagList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Snag[]
PaginatedTaskDependencyList
FieldTypeDetails
count *integer
nexturi
previousuri
results *TaskDependency[]
PaginatedTaskListList
FieldTypeDetails
count *integer
nexturi
previousuri
results *TaskList[]
PaginatedTimesheetList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Timesheet[]
PaginatedUnitList
FieldTypeDetails
count *integer
nexturi
previousuri
results *Unit[]
PaginatedWorkItemGroupList
FieldTypeDetails
count *integer
nexturi
previousuri
results *WorkItemGroup[]
PaginatedWorkItemList
FieldTypeDetails
count *integer
nexturi
previousuri
results *WorkItem[]
ParentTask
FieldTypeDetails
id *uuid
name *string
ParentTaskRequest
FieldTypeDetails
name *string
Partner
FieldTypeDetails
addressAddress
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts *PartnerContact[]
emailemail
id *uuid
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialties *PartnerSpecialty[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
workspace *uuid
PartnerContact
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
id *uuid
is_primary_contactboolean
linked_user *LinkedUserAvatar
name *string
notesstring
phone_numberstring
rolestring
PartnerContactRequest
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
is_primary_contactboolean
name *string
notesstring
phone_numberstring
rolestring
PartnerList
FieldTypeDetails
address *Address
avatar_color *string
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_required *booleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
email *email
id *uuid
is_1099_eligible *booleanUS: vendor may require 1099 reporting.
is_cis_registered *booleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notes *string
phone_number *string
specialties *PartnerSpecialty[]
tax_id *stringVAT number, EIN, UTR, or other tax identifier.
us_tax_classification *stringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_four *stringUS W-9 TIN/EIN last four only.
us_tin_type *stringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_at *dateDate a W-9 was received or confirmed.
PartnerRequest
FieldTypeDetails
addressAddressRequest
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
category *string* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts_payloadPartnerContactRequest[]
emailemail
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
name *stringThe partner's name or company name.
notesstring
phone_numberstring
specialty_namesstring[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
PartnerSpecialty
FieldTypeDetails
id *uuid
name *string
PartnerSpecialtyRequest
FieldTypeDetails
name *string
PatchedActivityGroupRequest
FieldTypeDetails
namestring
PatchedActivityRequest
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
last_reviewed_atdate
namestring
notes_internalstring
parentinteger
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
setinteger
sortinteger
work_itemsJSONComputed JSON value; may be null when access is restricted.
work_items_inputActivityWorkItemInlineRequest[]
PatchedActivitySetRequest
FieldTypeDetails
codestring
default_waste_pctdecimal
descriptionstring
last_reviewed_atdate
namestring
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
PatchedBudgetGroupRequest
FieldTypeDetails
codestring
is_activeboolean
jobuuidOptional job-specific group; null = workspace-global.
namestring
PatchedCalendarExceptionRequest
FieldTypeDetails
datedate
is_workingbooleanFalse = non-working; True = working override
notestring
projectuuid
PatchedChangeItemRequest
FieldTypeDetails
add_valuestring or number
adjusted_estimate_work_itemuuid
adjusted_quote_lineuuid
adjusts_existingbooleanDoes this specific item adjust existing work?
descriptionstringSpecific work item description.
is_omissionboolean
is_provisional_sumbooleanIs this adjusting a Prov Sum?
omit_valuestring or number
quantitydecimal
resourceintegerLink to a standard library resource for exact pricing matches.
source_typestring* `manual` - New priced line * `contract_line` - Original contract line * `resource` - Library resource * `legacy_cost_matrix` - Migrated legacy pricing Options: manual, contract_line, resource, legacy_cost_matrix
unit_of_measurestring
unit_ratestring or number
work_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead_profit` - Overheads & profit * `other` - Other Options: labour, materials, plant, subcontract, overhead_profit, other
PatchedChangeRequestRequest
FieldTypeDetails
addition_pricing_typestringClassification for newly added work in instructed value flows. * `none` - Not specified * `quoted` - This adds a new, quoted item * `unquoted` - This adds a new, unquoted item Options: none, quoted, unquoted
adjusts_existing_workboolean
anticipated_form_referencestring
attached_file_idsuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
authority_certaintystringBucket 1: definitive vs provisional instruction certainty. * `definitive` - Definitive * `provisional` - Provisional Options: definitive, provisional,
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteuuidThe original approved Quote/Agreement this change applies to.
base_quote_numberJSONComputed JSON value; may be null when access is restricted.
base_quote_titleJSONComputed JSON value; may be null when access is restricted.
builder_proceedsbooleanDoes the builder agree to proceed?
builder_reject_reasonstringRequired if builder_proceeds is False.
builder_signed_atdate-time
ca_financial_notestringOptional CA note attached when submitting for client financial approval.
classification_otherbooleanOther classification selected: requires classification_other_text.
classification_other_textstringMandatory free text when classification_other is set.
client_countersigned_atdate-time
client_document_referencestringClient / CA reference number from the source document, if any.
communication_methodstringHow the instruction was received (e.g., email, in_person).
current_slaJSONComputed JSON value; may be null when access is restricted.
cvr_next_stepstringCVR: request formal instruction or formal quote. * `request_instruction` - Request client to officially instruct * `request_quote` - Request client to ask for a formal quote Options: request_instruction, request_quote,
delay_causesJSONNotice of Delay cause checkbox keys.
delay_narrativestringNotice of Delay free-text narrative.
document_layout_modeJSONComputed JSON value; may be null when access is restricted.
draft_initboolean
draft_prefill_instruction_textstring
effective_workflow_tierJSONComputed JSON value; may be null when access is restricted.
eot_to_be_determinedbooleanTrue if EOT is acknowledged but will be calculated later.
extension_of_time_daysintegerRequested adjustment to the completion date (EOT).
extension_of_time_hoursdecimalRequested hours of time impact, in addition to extension_of_time_days.
given_bystringName of the person who gave the instruction.
given_by_emailemailEmail for the given_by contact when selected from the project directory.
given_by_member_iduuid
has_public_consentJSONComputed JSON value; may be null when access is restricted.
impacts_designbooleanDoes this change the design?
impacts_qualitybooleanDoes this affect quality standards?
impacts_quantitybooleanDoes this change quantities?
includes_loss_and_expensebooleanDoes this claim include additional costs for delay/disruption?
includes_preparation_costsbooleanDoes this claim include the cost of preparing the quotation?
initiation_routestringStable create-route id used to tailor the editable detail view.
instruction_textstringThe core instruction given.
is_additionboolean
is_omissionboolean
is_proxybooleanWhether this record was logged on behalf of another party.
is_substitutionboolean
lead_time_dependentbooleanMaterial or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_impactJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
payment_timingstringConsumer/unadministered: how the variation will be paid. * `invoice_now` - Invoice immediately as a standalone item * `next_stage` - Add to the next stage payment * `final_invoice` - Add to the final project invoice Options: invoice_now, next_stage, final_invoice,
pci_typestringBudget PCI purpose when estimating is on. Empty = paper-only change. * `CLIENT_VARIATION` - Client variation * `INTERNAL_SPEC` - Internal specification change * `PROV_SUM_EXPEND` - Provisional sum expend * `RISK_RELEASE` - Risk / contingency release Options: CLIENT_VARIATION, INTERNAL_SPEC, PROV_SUM_EXPEND, RISK_RELEASE,
price_agreed_before_startbooleanTrue if price is agreed before work commences, False if proceeding immediately.
pricing_strategystringExplicit pricing pathway; synced with price_agreed_before_start. * `price_upfront` - Price upfront before work starts * `valuation_method` - Agree a method of valuation * `price_later` - Proceed immediately, price later Options: price_upfront, valuation_method, price_later,
quote_validity_daysintegerValidity period (days) when builder submits a quotation.
quoted_source_quoteuuidIf this change adds a new quoted item, link the source quote.
reasonstringWhy is this change happening?
reason_codesJSONSimple CVI/CVR/proposal reason tick keys.
reason_other_textstring
received_bystring
received_by_emailemail
received_by_member_iduuid
remove_attached_file_idsuuid[]
request_datedate
request_timetimeTime the verbal instruction/request was given.
request_typestring* `request` - Variation Request * `instruction` - Variation Instruction * `early_warning` - Early Warning * `notice_of_delay` - Notice of Delay * `quote_request` - Quote Request * `confirmation` - CVI * `cvi` - Confirmation of Verbal Instruction (CVI) * `cvr` - Confirmation of Verbal Request (CVR) * `change_order` - Change Order * `potential_change_order` - Potential Change Order * `field_directive` - Field Directive Options: request, instruction, early_warning, notice_of_delay, quote_request, confirmation, cvi, cvr, change_order, potential_change_order, field_directive
response_deadlinedate-timeThe deadline for the client/builder to respond before default acceptance/rejection.
restocking_feesdecimalConsumer contracts: restocking / non-refundable deposits.
resulting_variation_invoice_countJSONComputed JSON value; may be null when access is restricted.
revised_completion_datedateRequested revised completion / working-period end date.
risk_contingency_valuedecimalEarly warning approximate risk / contingency value.
signature_loop_stagestring* `none` - Not required * `awaiting_builder` - Awaiting builder signature * `awaiting_client` - Awaiting client countersignature * `complete` - Fully signed Options: none, awaiting_builder, awaiting_client, complete,
simple_issuer_contactstring
simple_issuer_contact_emailemail
simple_issuer_contact_member_iduuid
simple_paper_kindJSONComputed JSON value; may be null when access is restricted.
simple_price_certaintystringSimple workflow: fixed, estimated/indicative, quote requested, no price change, or not assessed. * `fixed` - Fixed price * `estimated` - Estimated / Indicative * `quote_requested` - Quote Requested * `no_price_change` - No price change * `not_assessed` - Not assessed Options: fixed, estimated, quote_requested, no_price_change, not_assessed,
simple_recipientstring
simple_recipient_emailemail
simple_recipient_member_iduuid
simple_time_certaintystringSimple workflow: estimated, definitive / fixed, post-completion, or no time impact. * `estimated` - Estimated / Indicative * `definitive` - Definitive / Fixed * `post_completion` - Assessed / agreed post-completion * `not_assessed` - No time impact Options: estimated, definitive, post_completion, not_assessed,
sla_deadlinesJSONComputed JSON value; may be null when access is restricted.
source_document_typestringClient-issued instruction: type of source document received. * `architect_instruction` - Architect's Instruction (AI/CAI) * `signed_change_agreement` - Signed Change / Variation Agreement * `quote_request` - Quote Request * `site_direction_minutes` - Site Direction / Meeting Minutes * `email_confirmation` - Email Confirmation Options: architect_instruction, signed_change_agreement, quote_request, site_direction_minutes, email_confirmation,
source_site_loguuid
source_site_log_cost_impact_typeJSONComputed JSON value; may be null when access is restricted.
source_site_log_dateJSONComputed JSON value; may be null when access is restricted.
source_site_log_delay_daysJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_amountJSONComputed JSON value; may be null when access is restricted.
source_site_log_estimated_cost_currencyJSONComputed JSON value; may be null when access is restricted.
source_site_log_recommendationJSONComputed JSON value; may be null when access is restricted.
source_site_log_responsible_partyJSONComputed JSON value; may be null when access is restricted.
source_site_log_risk_levelJSONComputed JSON value; may be null when access is restricted.
source_timeline_entryuuid
source_timeline_entry_previewJSONComputed JSON value; may be null when access is restricted.
statusstring* `registered` - Draft / Registered * `issued` - Issued / Submitted * `issued_validated` - Instruction Validated * `issued_not_valid` - Instruction Invalid * `rejected_by_builder` - Rejected by Builder * `being_priced` - Pricing in Progress * `pricing_submitted` - Pricing Submitted * `price_agreed` - Price Agreed * `price_rejected` - Price Rejected * `terms_agreed` - Variation Approved * `terms_rejected` - Variation Rejected * `being_repriced` - Repricing in Progress * `priced_by_client` - To be Priced by Client * `terms_renegotiated` - Terms being Renegotiated * `cancelled` - Cancelled * `claimed` - Claimed * `paid` - Paid * `pending_client_financial` - Pending Client Financial Approval * `awaiting_external_ca_auth` - Awaiting External CA Authorization * `pending_ca_triage` - Pending CA Review Options: registered, issued, issued_validated, issued_not_valid, rejected_by_builder, being_priced, pricing_submitted, price_agreed, price_rejected, terms_agreed, terms_rejected, being_repriced, priced_by_client, terms_renegotiated, cancelled, claimed, paid, pending_client_financial, awaiting_external_ca_auth, pending_ca_triage
status_labelJSONComputed JSON value; may be null when access is restricted.
titlestringShort summary of the instruction.
valuation_basisstringLegacy single valuation method. Prefer valuation_methods.
valuation_markup_percentdecimalMarkup percent when valuation_basis is actual cost + markup.
valuation_method_termsstringAgreed valuation method terms (dayworks, schedule of rates, etc.).
valuation_methodsJSONOrdered proposed valuation methods (priority 1, 2, 3).
variation_groupstringLogical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tierstringUI workflow tier for this record; upgrade from simple to comprehensive. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive
PatchedContactRequest
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
emailemail
is_primary_contactboolean
namestring
notesstring
phone_numberstring
rolestring
PatchedCostCodeRequest
FieldTypeDetails
codestring
cost_typesCostCodeTypeLinkRequest[]
default_ratedecimal
default_unitstring
external_codestring
is_activeboolean
namestring
PatchedCostTypeRequest
FieldTypeDetails
is_activeboolean
namestring
sort_orderinteger
PatchedCustomerRequest
FieldTypeDetails
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
billing_addressAddressRequest
companystringOptional company name for the customer.
contact_emailemailPrimary contact email for this customer entity.
contacts_payloadContactRequest[]
customer_typestring* `residential` - Residential * `commercial` - Commercial Options: residential, commercial
namestringName of the customer (individual or company).
notesstring
payment_terms_daysintegerDefault number of days until an invoice is due for this customer.
phone_numberstring
relationship_stagestringProspect until a job is won; active once they have live or completed work. * `prospect` - Prospect * `active` - Active client * `past` - Past client Options: prospect, active, past
tax_idstringTax ID or VAT Number.
PatchedEntryRequest
FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
can_manage_entryJSONComputed JSON value; may be null when access is restricted.
can_retract_entryJSONComputed JSON value; may be null when access is restricted.
can_view_originalJSONComputed JSON value; may be null when access is restricted.
change_requestJSONComputed JSON value; may be null when access is restricted.
content_originalJSONComputed JSON value; may be null when access is restricted.
content_typeinteger
content_visibleJSONComputed JSON value; may be null when access is restricted.
converted_change_requestJSONComputed JSON value; may be null when access is restricted.
converted_taskJSONComputed JSON value; may be null when access is restricted.
email_last_attempt_atdate-time
email_last_errorstring
email_send_statusstring
enquiryuuidPipeline enquiry this activity originated from.
entry_typestring* `message` - User Message * `file_upload` - File Upload * `site_diary` - Site Diary * `actionable_item` - Actionable Item * `system_event` - System Event Options: message, file_upload, site_diary, actionable_item, system_event
event_keystringStable machine key for system-generated activity events.
event_metaJSONStructured, redacted metadata for audit/export details.
external_sender_emailemailEmail of an external recipient when author is null.
external_sender_viastringHow the external sender responded (shared link or email reply). * `` - - * `portal` - Portal * `email` - Email Options: , portal, email
is_privatebooleanIf True, this entry is only visible to workspace members.
made_public_atdate-timeTimestamp for when a private note was made public.
notified_usersJSONComputed JSON value; may be null when access is restricted.
notify_modestringWho should be notified about this entry. * `everyone` - Everyone * `none` - No one * `custom` - Custom Options: everyone, none, custom
object_iduuid
parent_entryuuid
projectuuid
quoteJSONComputed JSON value; may be null when access is restricted.
repliesJSONComputed JSON value; may be null when access is restricted.
retracted_atdate-time
selected_user_idsJSON
site_diaryJSONComputed JSON value; may be null when access is restricted.
statusstring* `active` - Active * `retracted` - Retracted Options: active, retracted
workspaceuuidDirect scope for pre-project enquiry activity and workspace search.
PatchedEstimateActivityRequest
FieldTypeDetails
activity_idinteger
descriptionstring
duration_daysinteger
groupinteger
group_namestring
labour_totalJSONComputed JSON value; may be null when access is restricted.
location_modeboolean
material_totalJSONComputed JSON value; may be null when access is restricted.
namestring
other_totalJSONComputed JSON value; may be null when access is restricted.
parentuuid
plant_totalJSONComputed JSON value; may be null when access is restricted.
set_idinteger
sortinteger
subcontract_totalJSONComputed JSON value; may be null when access is restricted.
PatchedEstimateLocationRequest
FieldTypeDetails
codestring
descriptionstring
house_typestring
house_type_definitionuuid
house_type_overridesJSONComputed JSON value; may be null when access is restricted.
namestring
parentuuid
plot_gdvdecimal
plot_gifa_sq_ftdecimal
sort_orderinteger
tenurestring
PatchedEstimateRequest
FieldTypeDetails
adjudication_modestring* `CONTRACTING` - Contracting * `HOUSEBUILDER` - Housebuilder Options: CONTRACTING, HOUSEBUILDER
as_of_datedate
contingency_amountdecimal
is_activeboolean
is_primaryboolean
markup_labour_percentdecimal
markup_material_percentdecimal
markup_other_percentdecimal
markup_plant_percentdecimal
markup_subcontract_percentdecimal
notes_internalstring
ohp_defaultsJSON
partner_iduuid
profit_spread_modestring* `SUMMARY_LUMP_SUM` - Summary lump sum * `SPREAD_IN_RATES` - Spread in rates Options: SUMMARY_LUMP_SUM, SPREAD_IN_RATES
programme_weeksinteger
target_gdvdecimal
total_gifa_sq_ftdecimal
total_gifa_sq_mdecimal
version_namestring
PatchedEstimateWorkItemRequest
FieldTypeDetails
activityuuid
boq_pathJSONComputed JSON value; may be null when access is restricted.
descriptionstring
est_lineuuid
groupinteger
is_spot_itemboolean
is_unit_priceboolean
line_totaldecimal
namestring
ohp_pct_overridedecimal
payment_stageJSONComputed JSON value; may be null when access is restricted.
payment_stage_iduuid
quantitydecimal
sell_markup_pctdecimal
sell_totaldecimal
sortinteger
source_lib_lineuuid
source_library_idstring
source_library_namestring
source_library_typestring
source_work_item_idinteger
unit_of_measurestring
unit_ratedecimal
visibilitystring* `rollup` - Roll-up * `expanded` - Expanded Options: rollup, expanded
PatchedEventRequest
FieldTypeDetails
all_dayboolean
attendeesAttendeeRequest[]
conference_urluri
descriptionstring
enddate-time
external_uidstring
is_privateboolean
is_private_readJSONComputed JSON value; may be null when access is restricted.
organizer_emailemail
recurrence_rrulestring
reminder_minutesinteger
startdate-time
timezonestring
titlestring
urluri
visibilitystring* `project` - Project * `private` - Private * `workspace` - Workspace Options: project, private, workspace
PatchedExpenseRequest
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
attached_receiptsuuid[]
attached_receipts_detailJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_duestring or number or object
cis_deduction_ratedecimal
cis_materials_amountdecimal
claimantuuidThe person who paid out of pocket and needs to be reimbursed.
claimant_namestring
descriptionstring
document_typestring* `bill` - Bill * `credit_note` - Credit note Options: bill, credit_note
due_datedate
effective_retention_heldJSONComputed JSON value; may be null when access is restricted.
exchange_ratedecimalRate used to convert Original -> Workspace.
gross_amountstring or number or object
is_convertedJSONComputed JSON value; may be null when access is restricted.
is_reimbursablebooleanTrue if paid by employee (needs reimbursement). False if paid by company.
issue_datedate
line_itemsExpenseLineItemRequest[]
match_summaryJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringInternal notes or comments about this expense.
original_currencystringISO code of the original receipt currency.
parent_expense_iduuid
parsing_notesstringContext or warnings from the AI extraction.
partner_iduuid
purchase_order_iduuid
record_typestring* `supplier_bill` - Supplier bill * `expense` - Everyday expense / receipt * `reimbursement` - Employee reimbursement Options: supplier_bill, expense, reimbursement
referencestring
requested_approveruuidThe specific manager requested to approve this spend.
retention_heldstring or number or object
retention_percentagedecimal
retention_releasedstring or number or object
statusstring* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected * `partially_paid` - Partially Paid * `paid` - Paid * `overdue` - Overdue Options: draft, submitted, approved, rejected, partially_paid, paid, overdue
supplier_invoice_numberstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
total_paidstring or number or object
use_tax_amountdecimal
vendor_namestringVendor/supplier name.
PatchedFileRequest
FieldTypeDetails
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
descriptionstringA user-or-AI-generated description of the file's content.
filebinary
folder_iduuid
is_privatebooleanIf True, this document is only visible to workspace members.
selected_user_idsJSON
sourcestring
statusstring* `uploading` - Uploading * `processing` - Processing * `pending_review` - Pending Review * `approved` - Approved * `failed` - Failed Options: uploading, processing, pending_review, approved, failed
superseded_by_idJSONComputed JSON value; may be null when access is restricted.
superseded_by_nameJSONComputed JSON value; may be null when access is restricted.
supersedes_iduuid
tagsuuid[]
user_defined_namestring
PatchedInvoiceDetailRequest
FieldTypeDetails
amount_paidJSONComputed JSON value; may be null when access is restricted.
apply_cisboolean
apply_drcbooleanIf True, applies Domestic Reverse Charge (VAT = 0).
apply_retentionboolean
apply_taxbooleanWhether VAT/tax is applied and shown on this invoice.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
balance_dueJSONComputed JSON value; may be null when access is restricted.
bank_detailsstring
bill_to_address_iduuid
cis_deduction_amountJSONComputed JSON value; may be null when access is restricted.
cis_ratedecimal
created_byuuid
document_typestring* `invoice` - Invoice * `credit_note` - Credit Note * `retention_release` - Retention Release Options: invoice, credit_note, retention_release
due_datedate
effective_for_addressJSONComputed JSON value; may be null when access is restricted.
effective_for_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_addressJSONComputed JSON value; may be null when access is restricted.
effective_from_nameJSONComputed JSON value; may be null when access is restricted.
effective_from_tax_idJSONComputed JSON value; may be null when access is restricted.
effective_logo_urlJSONComputed JSON value; may be null when access is restricted.
effective_termsJSONComputed JSON value; may be null when access is restricted.
email_messagestringOptional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_configJSON
internal_notesstring
is_applicationJSONComputed JSON value; may be null when access is restricted.
issue_datedate
line_itemsInvoiceLineItemRequest[]
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_payableJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
parent_invoiceuuid
previously_certifiedJSONComputed JSON value; may be null when access is restricted.
projectuuid
referencestring
retention_amountJSONComputed JSON value; may be null when access is restricted.
retention_ratedecimal
source_attributionsJSONComputed JSON value; may be null when access is restricted.
source_quoteuuid
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_ratedecimalOverride tax rate. If null, uses workspace default.
terms_overridestringOptional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
titlestring
totalJSONComputed JSON value; may be null when access is restricted.
workspace_country_iso2JSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
PatchedLibWorkItemLineRequest
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
classification_systemstring* `NRM` - NRM * `BCIS` - BCIS * `CUSTOM` - Custom Options: NRM, BCIS, CUSTOM
line_descstring
line_refstring
line_typeuuid
parentuuid
parent_levelJSONComputed JSON value; may be null when access is restricted.
work_itemsJSONComputed JSON value; may be null when access is restricted.
PatchedLocationRequest
FieldTypeDetails
codestring
descriptionstring
is_activeboolean
namestring
parentinteger
sort_orderinteger
PatchedPartnerRequest
FieldTypeDetails
addressAddressRequest
avatar_colorstring
avatar_urlJSONComputed JSON value; may be null when access is restricted.
backup_withholding_requiredbooleanUS: payer should review backup withholding before payment.
categorystring* `professional` - Professional Services * `trade` - Trades * `supplier` - Suppliers Options: professional, trade, supplier
contacts_payloadPartnerContactRequest[]
emailemail
is_1099_eligiblebooleanUS: vendor may require 1099 reporting.
is_cis_registeredbooleanUK: subcontractor is CIS-registered and needs verification on file.
namestringThe partner's name or company name.
notesstring
phone_numberstring
specialty_namesstring[]
tax_idstringVAT number, EIN, UTR, or other tax identifier.
us_tax_classificationstringUS W-9 tax classification. Full tax IDs are not required here. * `` - Not recorded * `individual` - Individual / sole proprietor * `c_corp` - C corporation * `s_corp` - S corporation * `partnership` - Partnership * `trust_estate` - Trust / estate * `llc` - LLC * `other` - Other Options: , individual, c_corp, s_corp, partnership, trust_estate, llc, other
us_tin_last_fourstringUS W-9 TIN/EIN last four only.
us_tin_typestringUS W-9 identifier type, stored without the full identifier. * `` - Not recorded * `ein` - EIN * `ssn` - SSN * `itin` - ITIN Options: , ein, ssn, itin
w9_received_atdateDate a W-9 was received or confirmed.
PatchedPaymentStageRequest
FieldTypeDetails
namestring
orderinteger
target_percentagedecimal
PatchedProjectRequest
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
budgetdecimalCurrent agreed revenue budget visible to the client.
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
custom_status_iduuid
customer_iduuid
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
namestringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_iduuid
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddressRequest
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_iduuid
zoning_or_planning_refstringApproved planning permission or zoning reference.
PatchedPropertyRequest
FieldTypeDetails
customer_iduuid
namestring
notesstring
property_addressAddressRequest
PatchedPurchaseOrderRequest
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountstring or number or object
hire_calendar_overrideJSON
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItemRequest[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner_iduuid
payment_termsstring
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
supplier_quote_refstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
vendor_namestring
PatchedQuoteLineItemRequest
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
descriptionstring
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
is_provisionalboolean
orderinteger
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
quantitydecimal
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
PatchedQuoteRequest
FieldTypeDetails
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_idJSONComputed JSON value; may be null when access is restricted.
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project_addressJSONComputed JSON value; may be null when access is restricted.
revised_totalJSONComputed JSON value; may be null when access is restricted.
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
template_iduuid
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
variation_countJSONComputed JSON value; may be null when access is restricted.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
PatchedQuoteSectionRequest
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
orderintegerDisplay order within the quote builder.
titlestringOptional internal title/label for this section.
typestringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
PatchedRFIRequest
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
managed_by_iduuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subjectstring
PatchedRequisitionItemRequest
FieldTypeDetails
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
cost_codeinteger
delivery_instructionsstring
descriptionstring
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
is_pending_codingboolean
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
quantity_neededdecimal
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
save_to_personal_libraryboolean
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
suggested_partneruuid
unituuid
unit_of_measurestring
PatchedResourceGroupRequest
FieldTypeDetails
namestring
PatchedResourceNoteRequest
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
bodystring
resourceinteger
PatchedResourcePriceRequest
FieldTypeDetails
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resourceinteger
supplier_codestring
supplier_descriptionstring
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
PatchedResourceRequest
FieldTypeDetails
base_cost_inputstring
budget_groupuuidCommercial reporting group; falls back to resource group when null.
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
external_urluri
extras_cost_inputstring
general_priceJSONComputed JSON value; may be null when access is restricted.
groupinteger
initial_supplieruuid
initial_supplier_codestring
initial_supplier_descriptionstring
initial_supplier_namestring
initial_supplier_pricedecimal
initial_supplier_price_valid_fromdate
initial_supplier_product_urluri
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_cost_inputstring
last_reviewed_atdate
lead_in_daysinteger
materials_cost_inputstring
namestring
notes_internalstring
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
waste_percentdecimal
PatchedResourceSupplierListingRequest
FieldTypeDetails
is_defaultboolean
partneruuid
product_urluri
resourceinteger
supplier_codestring
supplier_descriptionstring
PatchedScheduleDependencyRequest
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
rfi_iduuid
successor_iduuid
PatchedSiteLogRequest
FieldTypeDetails
attached_filesuuid[]
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
internal_notesstringPrivate notes for the project team. Not included in client reports.
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_datedate
progress_notesstring
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
visitorsstring
weatherstring
PatchedSnagRequest
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
due_datedate
estimate_location_iduuid
locationstring
managed_by_iduuid
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
titlestring
PatchedTaskDependencyRequest
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
lag_daysinteger
predecessor_iduuid
successor_iduuid
PatchedTaskRequest
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignee_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
file_idsuuid[]Set the attached files for this task
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
namestring
orderintegerThe order of the task in a list view.
parent_iduuid
predecessorsPredecessorInputRequest[]
progressinteger
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
task_type_iduuid
valuedecimal
PatchedWorkItemGroupRequest
FieldTypeDetails
namestring
PatchedWorkItemRequest
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
default_waste_pctdecimal
descriptionstring
groupinteger
is_activeboolean
is_unit_priceboolean
itemsWorkItemItemRequest[]
last_reviewed_atdate
lib_lineuuid
namestring
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring
PaymentAllocation
FieldTypeDetails
amount *decimal
created_at *date-time
id *uuid
method *string
payment_date *date
reference *string
PaymentAllocationRequest
FieldTypeDetails
amount *decimal
PaymentStage
FieldTypeDetails
generated_by_handoff *boolean
id *uuid
name *string
orderinteger
quote *uuid
source_estimate_activity *uuid
source_handoff_key *string
target_percentagedecimal
PaymentStageRequest
FieldTypeDetails
name *string
orderinteger
target_percentagedecimal
PredecessorInput
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
PredecessorInputRequest
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
PresignResponse
FieldTypeDetails
bucket *string
file_id *uuid
key *string
presigned_post *object
Project
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
brief_snapshot_id *uuid
budgetdecimalCurrent agreed revenue budget visible to the client.
commercialProjectCommercial
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
created_at *date-time
custom_status *CustomProjectStatus
customer *CustomerSimple
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
forecast_revenue_budgetdecimalLast persisted final-account forecast total (net, same basis as ledger/variations).
id *uuid
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
job_cost_snapshotJSON
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_namestring
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddress
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status *stringCore system status of the project, derived from the custom status. * `planning` - Planning * `active` - Active * `on_hold` - On Hold * `completed` - Completed * `canceled` - Canceled Options: planning, active, on_hold, completed, canceled
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
uk_detailsProjectUKDetails
us_detailsProjectUSDetails
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_namestring
workspace_currency *string
zoning_or_planning_refstringApproved planning permission or zoning reference.
ProjectCommercial
FieldTypeDetails
apply_retentionboolean
bespoke_contract_namestring
closed_at *date-time
closed_by *uuid
closeout_acknowledgements *JSON
closeout_note *string
commercial_status *string* `open` - Open * `closed` - Closed Options: open, closed
contract_administratoruuid
contract_completion_datedate
contract_customer_typestringB2B vs B2C counterparty under the contract for this job. Must be chosen in contract setup. * `b2b` - Business to business (B2B) * `b2c` - Business to consumer (B2C) Options: b2b, b2c,
contract_documentuuidSigned contract or governing document for this job.
contract_document_detailJSONComputed JSON value; may be null when access is restricted.
contract_setup_confirmed_atdate-timeSet when contract setup is confirmed via wizard or quote approval.
contract_start_datedate
contract_typestringe.g., JCT Minor Works, AIA A101, CCDC 2
contract_versionstringContract edition/version or internal reference.
electronic_notices_acceptedbooleanWhether the contract/parties accept SiteHut as a written-notice channel.
electronic_signature_consentbooleanWhether online approvals/e-signatures are accepted for contract records.
eot_approved_days_totalinteger
eot_claimed_days_totalinteger
eotsEOTEntry[]
governing_regionstringGoverning country, state, or region for contract administration.
initial_contract_sumdecimalManual baseline used when no main quote is selected and job basis is Contract.
invoice_basisstring* `weekly` - Weekly * `fortnightly` - Fortnightly * `monthly` - Monthly * `on_completion` - On completion * `stage` - Stage payments Options: weekly, fortnightly, monthly, on_completion, stage,
job_basisstring* `quote` - Quote / Estimate * `contract` - Contract Options: quote, contract
lad_amount_per_daydecimal
lad_periodstringWhether the LAD amount applies per day or per week. * `day` - Per day * `week` - Per week Options: day, week
notice_recipient_member_idsJSONProject participant user IDs who should receive formal contract notices.
notice_recipient_rolesstringOptional role labels for parties not on SiteHut, e.g. Client, CA, Architect.
payment_period_daysinteger
reopen_reason *string
reopened_at *date-time
reopened_by *uuid
retention_ratedecimal
revised_completion_datedate
stage_payments_enabledboolean
stagesStagePayment[]
statutory_prompt_payment_appliesbooleane.g., UK HGCRA, US Prompt Pay Acts
variation_clausesstring
ProjectCommercialRequest
FieldTypeDetails
apply_retentionboolean
bespoke_contract_namestring
contract_administratoruuid
contract_completion_datedate
contract_customer_typestringB2B vs B2C counterparty under the contract for this job. Must be chosen in contract setup. * `b2b` - Business to business (B2B) * `b2c` - Business to consumer (B2C) Options: b2b, b2c,
contract_documentuuidSigned contract or governing document for this job.
contract_document_detailJSONComputed JSON value; may be null when access is restricted.
contract_setup_confirmed_atdate-timeSet when contract setup is confirmed via wizard or quote approval.
contract_start_datedate
contract_typestringe.g., JCT Minor Works, AIA A101, CCDC 2
contract_versionstringContract edition/version or internal reference.
electronic_notices_acceptedbooleanWhether the contract/parties accept SiteHut as a written-notice channel.
electronic_signature_consentbooleanWhether online approvals/e-signatures are accepted for contract records.
eot_approved_days_totalinteger
eot_claimed_days_totalinteger
eotsEOTEntryRequest[]
governing_regionstringGoverning country, state, or region for contract administration.
initial_contract_sumdecimalManual baseline used when no main quote is selected and job basis is Contract.
invoice_basisstring* `weekly` - Weekly * `fortnightly` - Fortnightly * `monthly` - Monthly * `on_completion` - On completion * `stage` - Stage payments Options: weekly, fortnightly, monthly, on_completion, stage,
job_basisstring* `quote` - Quote / Estimate * `contract` - Contract Options: quote, contract
lad_amount_per_daydecimal
lad_periodstringWhether the LAD amount applies per day or per week. * `day` - Per day * `week` - Per week Options: day, week
notice_recipient_member_idsJSONProject participant user IDs who should receive formal contract notices.
notice_recipient_rolesstringOptional role labels for parties not on SiteHut, e.g. Client, CA, Architect.
payment_period_daysinteger
retention_ratedecimal
revised_completion_datedate
stage_payments_enabledboolean
stagesStagePaymentRequest[]
statutory_prompt_payment_appliesbooleane.g., UK HGCRA, US Prompt Pay Acts
variation_clausesstring
ProjectRequest
FieldTypeDetails
allow_store_collectionbooleanOverride workspace store-collection toggle when set.
archived_atdate-timeTimestamp when the project was archived.
budgetdecimalCurrent agreed revenue budget visible to the client.
commercial_summaryJSONComputed JSON value; may be null when access is restricted.
cost_budgetdecimalThe internal cost budget, visible only to the builder's team.
custom_status_iduuid
customer_iduuid
descriptionstringDetailed description of the project.
effective_estimating_enabledJSONComputed JSON value; may be null when access is restricted.
effective_variation_workflowJSONComputed JSON value; may be null when access is restricted.
enable_delivery_sign_offbooleanOverride workspace delivery sign-off when set.
enable_location_taggingbooleanAllow plot/location codes on purchase order lines.
end_date_actualdate
end_date_planneddate
estimated_valuedecimalEstimated value before a formal quote is issued.
estimating_enabledbooleanOverride workspace estimating_enabled when set.
follow_up_datedate
initial_revenue_budgetdecimalSnapshot of revenue at award (initial position), separate from current agreed budget.
is_archivedboolean
is_location_unoccupiedbooleanWill the work location be unoccupied during the project?
local_restrictionsstringNote any permit parking, delivery constraints, or noise restrictions.
lost_reasonstringReason recorded when a job is marked lost or a quote is rejected.
mandated_approveruuidWhen set, all POs for this job require this approver.
matching_modestringtwo_way | three_way; blank inherits workspace default.
name *stringName of the project.
next_visit_onJSONComputed JSON value; may be null when access is restricted.
notice_to_start_daysintegerThe required notice period in days before work can begin.
open_task_countJSONComputed JSON value; may be null when access is restricted.
permit_authorityuuidLocal building control, city planning, or permit office.
permit_authority_iduuid
pipeline_sourcestringHow this job was sourced (sales pipeline).
plot_countJSONComputed JSON value; may be null when access is restricted.
po_import_allow_boqbooleanOverride workspace PO import-from-BOQ when set.
po_import_allow_estimatebooleanOverride workspace PO import-from-estimate when set.
po_import_allow_importedbooleanOverride workspace PO import-from-imported-resources when set.
po_import_allow_librarybooleanOverride workspace PO import-from-library when set.
po_import_allow_quotebooleanOverride workspace PO import-from-quote when set.
project_numberstringOptional internal project number or code.
project_typestring* `new_build` - New Build * `conversion` - Significant Conversion * `renovation` - Renovation * `extension` - Extension * `maintenance` - Maintenance Options: new_build, conversion, renovation, extension, maintenance,
site_addressAddressRequest
site_working_hoursstringe.g. Mon-Fri 8am-6pm, Sat 8am-1pm
start_date_actualdate
start_date_planneddate
status_set_iduuid
timesheet_identity_check_excludedbooleanClock in and out on this job without a biometric or photo check.
variation_workflowstringOverride workspace default_variation_workflow when set. * `simple` - Simple * `comprehensive` - Comprehensive Options: simple, comprehensive, ,
warranty_provideruuid
warranty_provider_iduuid
zoning_or_planning_refstringApproved planning permission or zoning reference.
ProjectUKDetails
FieldTypeDetails
cdm_notifiableboolean
cdm_rolesCDMDutyholder[]
cis_appliesboolean
cis_deduction_ratedecimal
hse_f10_refstring
jct_referencestring
party_wall_applicableboolean
vat_reverse_charge_appliesboolean
ProjectUKDetailsRequest
FieldTypeDetails
cdm_notifiableboolean
cdm_rolesCDMDutyholderRequest[]
cis_appliesboolean
cis_deduction_ratedecimal
hse_f10_refstring
jct_referencestring
party_wall_applicableboolean
vat_reverse_charge_appliesboolean
ProjectUSDetails
FieldTypeDetails
aia_doc_setstring
contract_formstringe.g. AIA, ConsensusDocs, custom
contractor_license_numberstring
license_statestringUS state code, e.g. CA
lien_waiver_requiredboolean
manual_sales_tax_ratedecimalManual sales tax rate % for this project (v1).
notice_to_proceed_datedate
pay_application_formatstring* `standard` - Standard invoice * `aia_g702` - AIA G702 / G703 Options: standard, aia_g702
prevailing_wage_appliesboolean
sales_tax_applicableboolean
substantial_completion_datedate
tax_exempt_certificate_refstring
wage_determination_refstring
ProjectUSDetailsRequest
FieldTypeDetails
aia_doc_setstring
contract_formstringe.g. AIA, ConsensusDocs, custom
contractor_license_numberstring
license_statestringUS state code, e.g. CA
lien_waiver_requiredboolean
manual_sales_tax_ratedecimalManual sales tax rate % for this project (v1).
notice_to_proceed_datedate
pay_application_formatstring* `standard` - Standard invoice * `aia_g702` - AIA G702 / G703 Options: standard, aia_g702
prevailing_wage_appliesboolean
sales_tax_applicableboolean
substantial_completion_datedate
tax_exempt_certificate_refstring
wage_determination_refstring
Property
FieldTypeDetails
created_at *date-time
customer *uuid
customer_name *string
id *uuid
namestring
notesstring
property_addressAddress
updated_at *date-time
workspace *uuid
workspace_name *string
PropertyRequest
FieldTypeDetails
customer_id *uuid
namestring
notesstring
property_addressAddressRequest
PurchaseOrder
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
approved_by *uuid
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_at *date-time
created_by *uuid
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountobject
hire_calendar_overrideJSON
id *uuid
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItem[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountobject
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_number *string
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner *PurchaseOrderPartner
partner_iduuid
payment_termsstring
pickup_collected *booleanGoods physically collected (may still await approval).
pickup_collected_at *date-time
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
project_number *string
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
revision_number *integer
sent_at *date-time
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
status *string* `draft` - Draft * `pending_approval` - Pending Approval * `approved` - Approved * `sent` - Sent * `amendment_pending` - Amendment Pending * `partially_received` - Partially Received * `received` - Received * `closed` - Closed * `cancelled` - Cancelled Options: draft, pending_approval, approved, sent, amendment_pending, partially_received, received, closed, cancelled
submitted_at *date-time
supplier_quote_refstring
tax_amountobject
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
vendor_name *string
PurchaseOrderLineItem
FieldTypeDetails
boq_itemuuid
calculated_duration *decimal
call_off_ceilingJSONComputed JSON value; may be null when access is restricted.
call_off_enforcedJSONComputed JSON value; may be null when access is restricted.
call_off_remainingJSONComputed JSON value; may be null when access is restricted.
categorystring* `materials` - Materials * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other Options: materials, labour, plant, subcontract, overhead, other
cost_codeinteger
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_quantitydecimalFor rate-only lines: used for committed cost when qty is unknown.
gantt_activity_idstring
hire_summaryJSONComputed JSON value; may be null when access is restricted.
iduuid
includes_driverboolean
line_grossobject
line_netobject
line_taxobject
line_typestring* `standard` - Standard * `rate_only` - Rate only * `lump_sum` - Lump sum * `text_heading` - Text heading * `text_note` - Text note Options: standard, rate_only, lump_sum, text_heading, text_note
locationuuid
needs_codingboolean
on_hire_datedate
planned_off_hire_datedate
quantitydecimal
quantity_invoiceddecimalCumulative quantity invoiced against this PO line.
quantity_receiveddecimal
rate_unituuid
resourceinteger
sort_orderinteger
source_estimate_resource *uuid
source_estimate_work_item *uuid
source_handoff_key *string
source_snapshot *JSON
tax_ratedecimal
unituuid
unit_of_measurestring
unit_price *object
PurchaseOrderLineItemRequest
FieldTypeDetails
boq_itemuuid
call_off_ceilingJSONComputed JSON value; may be null when access is restricted.
call_off_enforcedJSONComputed JSON value; may be null when access is restricted.
call_off_remainingJSONComputed JSON value; may be null when access is restricted.
categorystring* `materials` - Materials * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other Options: materials, labour, plant, subcontract, overhead, other
cost_codeinteger
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_quantitydecimalFor rate-only lines: used for committed cost when qty is unknown.
gantt_activity_idstring
hire_summaryJSONComputed JSON value; may be null when access is restricted.
iduuid
includes_driverboolean
line_grossstring or number or object
line_netstring or number or object
line_taxstring or number or object
line_typestring* `standard` - Standard * `rate_only` - Rate only * `lump_sum` - Lump sum * `text_heading` - Text heading * `text_note` - Text note Options: standard, rate_only, lump_sum, text_heading, text_note
locationuuid
needs_codingboolean
on_hire_datedate
planned_off_hire_datedate
quantitydecimal
quantity_invoiceddecimalCumulative quantity invoiced against this PO line.
quantity_receiveddecimal
rate_unituuid
resourceinteger
sort_orderinteger
tax_ratedecimal
unituuid
unit_of_measurestring
unit_price *string or number or object
PurchaseOrderPartner
FieldTypeDetails
id *uuid
name *stringThe partner's name or company name.
tax_idstringVAT number, EIN, UTR, or other tax identifier.
PurchaseOrderPartnerRequest
FieldTypeDetails
name *stringThe partner's name or company name.
tax_idstringVAT number, EIN, UTR, or other tax identifier.
PurchaseOrderRequest
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_by_nameJSONComputed JSON value; may be null when access is restricted.
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
cis_appliesboolean
cis_deduction_ratedecimal
created_by_nameJSONComputed JSON value; may be null when access is restricted.
delivery_addressstringRequired for material orders using site delivery (the default fulfilment method).
delivery_instructionsstring
descriptionstring
fulfillment_methodstring* `site_delivery` - Site delivery * `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amountstring or number or object
hire_calendar_overrideJSON
last_return_noteJSONComputed JSON value; may be null when access is restricted.
lien_waiver_requiredboolean
line_itemsPurchaseOrderLineItemRequest[]
needs_approval_for_current_userJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
net_amountstring or number or object
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstring
off_hire_datedate
off_hire_referencestring
on_hire_datedate
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services * `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_iduuid
partner_iduuid
payment_termsstring
pickup_paid_out_of_pocketbooleanWhether the store collection was paid personally or by company card.
portal_actionsJSONComputed JSON value; may be null when access is restricted.
requested_approveruuid
required_by_datedateRequired for material orders using site delivery (the default fulfilment method).
returnsJSONComputed JSON value; may be null when access is restricted.
sourcestring* `office` - Office * `material_request` - Material request * `pickup` - Pick-up order Options: office, material_request, pickup
supplier_quote_refstring
tax_amountstring or number or object
tax_exemptboolean
tax_treatmentstring* `standard` - Standard * `reverse_charge` - Domestic reverse charge * `zero` - Zero rated * `reduced` - Reduced rated * `exempt` - Exempt * `use_tax` - Use tax Options: standard, reverse_charge, zero, reduced, exempt, use_tax
ticket_file_idsuuid[]
ticket_filesJSONComputed JSON value; may be null when access is restricted.
vendor_name *string
PurchaseOrderSendInputRequest
FieldTypeDetails
requested_approveruuid
Quote
FieldTypeDetails
actioned_by_ip_address *stringIP address of the user who approved/rejected the request.
approval_method *stringHow the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *date-time
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
client_action_note *stringNote added by the client when they approved or rejected.
created_at *date-time
created_by *uuid
customer_namestring
delivery_status *string
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_approved_at *date-time
estimate_idJSONComputed JSON value; may be null when access is restricted.
estimate_is_approved *boolean
estimate_last_synced_at *date-time
estimate_source_quote_version *integer
id *uuid
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_addressJSONComputed JSON value; may be null when access is restricted.
project_id *uuid
project_name *string
quote_number *stringWorkspace-unique quote number (e.g., QUO-001).
rejected_at *date-time
revised_totalJSONComputed JSON value; may be null when access is restricted.
sent_at *date-time
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
status *string* `draft` - Draft * `sent` - Sent * `approved` - Approved * `rejected` - Rejected * `superseded` - Superseded * `locked` - Locked (linked to quote) * `archived` - Archived Options: draft, sent, approved, rejected, superseded, locked, archived
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
variation_countJSONComputed JSON value; may be null when access is restricted.
version *integerHighest version number in QuoteVersion for this series.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_company_name *string
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_default_tax_rate *decimal
workspace_default_terms *string
workspace_language *string
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_name *string
workspace_tax_id *string
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
QuoteApprovalInputRequest
FieldTypeDetails
confirm_contract_setupboolean
notestring
QuoteLineItem
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
id *uuid
is_provisionalboolean
line_totaldecimal
orderinteger
payment_stage *PaymentStage
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
plot_namestring
quantitydecimal
quote *uuid
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
QuoteLineItemRequest
FieldTypeDetails
cost_categorystring* `labour` - Labour * `materials` - Materials * `plant` - Plant * `subcontract` - Subcontract * `overhead` - Overhead * `other` - Other * `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
description *string
effective_tax_rateJSONComputed JSON value; may be null when access is restricted.
is_provisionalboolean
orderinteger
payment_stage_iduuid
plotuuidOptional plot this quoted work is tagged to.
quantitydecimal
resourceintegerIf set, description/UoM defaults from Resource; price from current rate.
resource_typeJSONComputed JSON value; may be null when access is restricted.
resourcesJSONComputed JSON value; may be null when access is restricted.
sectionstring
show_resource_breakdownboolean
tax_ratedecimalLine tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measurestring
unit_pricedecimal
QuoteRequest
FieldTypeDetails
assumption_itemsJSONStructured assumption/exclusion items with optional client ack flags.
assumptionsstringAssumptions made for this quote.
attached_filesuuid[]
attention_reasonsJSONComputed JSON value; may be null when access is restricted.
available_actionsJSONComputed JSON value; may be null when access is restricted.
base_quoteJSONComputed JSON value; may be null when access is restricted.
brief_snapshot_iduuid
document_typestring* `quote` - Quotation * `estimate` - Estimate * `variation` - Variation Options: quote, estimate, variation
estimate_idJSONComputed JSON value; may be null when access is restricted.
is_main_quotebooleanExactly one quote per project may be marked main; baseline for final account / linked flows.
last_updated_atJSONComputed JSON value; may be null when access is restricted.
latest_variation_idJSONComputed JSON value; may be null when access is restricted.
linked_invoice_countJSONComputed JSON value; may be null when access is restricted.
linked_quoteJSONComputed JSON value; may be null when access is restricted.
needs_attentionJSONComputed JSON value; may be null when access is restricted.
next_actionJSONComputed JSON value; may be null when access is restricted.
notesstringPrivate notes for the builder.
pricing_modestring* `quick` - Quick quote * `estimate` - Linked estimate * `external` - External contract Options: quick, estimate, external
primary_estimateuuid
primary_estimate_quote_idJSONComputed JSON value; may be null when access is restricted.
project_addressJSONComputed JSON value; may be null when access is restricted.
revised_totalJSONComputed JSON value; may be null when access is restricted.
source_change_request_idJSONComputed JSON value; may be null when access is restricted.
source_change_request_register_numberJSONComputed JSON value; may be null when access is restricted.
source_change_request_titleJSONComputed JSON value; may be null when access is restricted.
subtotalJSONComputed JSON value; may be null when access is restricted.
tax_amountJSONComputed JSON value; may be null when access is restricted.
tax_breakdownJSONComputed JSON value; may be null when access is restricted.
tax_namestringThe name of the tax applied (VAT, Sales Tax, ...).
tax_ratedecimalThe tax rate (e.g., 20.00 for 20%). Null means 'not explicitly set' and falls back to the workspace default; 0 means explicitly tax-exempt.
template_iduuid
terms_and_conditionsstringClient-facing terms and conditions.
titlestring'Quotation for Kitchen Renovation'
totalJSONComputed JSON value; may be null when access is restricted.
variation_countJSONComputed JSON value; may be null when access is restricted.
workspace_business_addressJSONComputed JSON value; may be null when access is restricted.
workspace_currencyJSONComputed JSON value; may be null when access is restricted.
workspace_daywork_defaultsJSONComputed JSON value; may be null when access is restricted.
workspace_logo_urlJSONComputed JSON value; may be null when access is restricted.
workspace_market_codeJSONComputed JSON value; may be null when access is restricted.
workspace_tax_labelJSONComputed JSON value; may be null when access is restricted.
QuoteSection
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
created_at *date-time
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
id *uuid
orderintegerDisplay order within the quote builder.
quote *uuid
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
updated_at *date-time
QuoteSectionRequest
FieldTypeDetails
contentJSONBlock-specific settings and content payload.
custom_logo_urlJSONComputed JSON value; may be null when access is restricted.
footer_textstringOptional footer text shown below this section.
header_textstringOptional header text shown above this section.
orderintegerDisplay order within the quote builder.
titlestringOptional internal title/label for this section.
type *stringKind of section/block, e.g. 'cover', 'items_table', 'dayworks'. * `cover` - Cover page * `header` - Page header * `intro` - Introduction * `items_table` - Items table * `summary` - Summary * `totals` - Totals & breakdown * `assumptions` - Assumptions * `terms` - Terms & conditions * `signature` - Signature block * `free_text` - Free text block * `dayworks` - Dayworks * `attendances` - Attendances * `variation_details` - Variation Details * `payment_schedule` - Payment Schedule Options: cover, header, intro, items_table, summary, totals, assumptions, terms, signature, free_text, dayworks, attendances, variation_details, payment_schedule
RFI
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
managed_by *UserPublic
number *string
project *uuidThe job this RFI belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
responded_at *date-timeWhen the RFI first reached Responded status.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
updated_at *date-time
RFIRequest
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
descriptionstring
disciplinestring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
drawing_refsstringDrawing or spec references.
due_datedate
estimate_location_iduuid
managed_by_iduuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this RFI appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry when this RFI was created from a message.
statusstring* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
subject *string
RFITransitionRequest
FieldTypeDetails
status *string* `draft` - Draft * `issued` - Issued * `responded` - Responded * `closed` - Closed Options: draft, issued, responded, closed
RequisitionItem
FieldTypeDetails
batch *uuid
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
converted_order *uuid
converted_order_line *uuid
cost_codeinteger
created_at *date-time
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
id *uuid
is_pending_codingboolean
lead_in_daysinteger
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
project *uuid
project_name *string
quantity_neededdecimal
rejection_reason *string
requested_by *uuid
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_datedate
resourceinteger
resource_namestring
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
source_snapshot *JSON
status *string* `needed` - Needed * `requested` - Requested * `converted` - Converted * `rejected` - Rejected Options: needed, requested, converted, rejected
suggested_partneruuid
unituuid
unit_of_measurestring
updated_at *date-time
version *integer
RequisitionItemRequest
FieldTypeDetails
batch_summaryJSONComputed JSON value; may be null when access is restricted.
boq_itemuuid
cost_codeinteger
delivery_instructionsstring
description *string
estimate_locationuuidOptional plot this line is tagged to.
estimated_unit_ratedecimal
is_pending_codingboolean
lead_in_warningJSONComputed JSON value; may be null when access is restricted.
locationuuid
notestring
order_typestring* `material` - Material * `plant` - Plant * `subcontract` - Subcontract * `professional` - Professional services Options: material, plant, subcontract, professional
prioritystring* `normal` - Normal * `high` - High Options: normal, high
progressJSONComputed JSON value; may be null when access is restricted.
quantity_needed *decimal
requested_by_nameJSONComputed JSON value; may be null when access is restricted.
required_on_site_date *date
resourceinteger
save_to_personal_libraryboolean
sourcestring* `workspace_library` - Workspace library * `personal_library` - Personal library * `job_boq` - Job BOQ * `freehand` - Freehand Options: workspace_library, personal_library, job_boq, freehand
source_estimate_resourceuuid
source_estimate_work_itemuuid
suggested_partneruuid
unit *uuid
unit_of_measurestring
Resource
FieldTypeDetails
base_costdecimal
budget_groupuuidCommercial reporting group; falls back to resource group when null.
budget_group_namestring
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
cost_code_codestring
cost_code_namestring
created_at *date-time
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
effective_rate *object
external_urluri
extras_costdecimal
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
group_namestring
id *integer
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_costdecimal
last_reviewed_atdate
lead_in_daysinteger
materials_costdecimal
name *string
notes_internalstring
owner_user *uuid
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_listings *ResourceSupplierListing[]
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
updated_at *date-time
waste_percentdecimal
ResourceGroup
FieldTypeDetails
id *integer
name *string
ResourceGroupRequest
FieldTypeDetails
name *string
ResourceNote
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
created_at *date-time
id *integer
resource *integer
ResourceNoteRequest
FieldTypeDetails
author_nameJSONComputed JSON value; may be null when access is restricted.
body *string
resource *integer
ResourcePrice
FieldTypeDetails
id *integer
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
partner_namestring
price_typestring* `general` - General * `partner` - Partner Options: general, partner
ratedecimal
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
supplier_listing *integer
updated_at *date-time
updated_by *uuid
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
workspace *uuid
ResourcePriceRequest
FieldTypeDetails
is_defaultbooleanUse this supplier price by default when the resource is added to an estimate.
notesstring
partneruuid
price_typestring* `general` - General * `partner` - Partner Options: general, partner
rate *decimal
resource *integer
supplier_codestring
supplier_descriptionstring
updated_by_nameJSONComputed JSON value; may be null when access is restricted.
valid_fromdate
valid_todate
ResourceRequest
FieldTypeDetails
base_cost_inputstring
budget_groupuuidCommercial reporting group; falls back to resource group when null.
codestring
cost_codeinteger
cost_code_categoryJSONComputed JSON value; may be null when access is restricted.
default_supplierJSONComputed JSON value; may be null when access is restricted.
default_supplier_priceJSONComputed JSON value; may be null when access is restricted.
default_unituuid
default_waste_pctdecimal
descriptionstring
external_urluri
extras_cost_inputstring
general_priceJSONComputed JSON value; may be null when access is restricted.
group *integer
initial_supplieruuid
initial_supplier_codestring
initial_supplier_descriptionstring
initial_supplier_namestring
initial_supplier_pricedecimal
initial_supplier_price_valid_fromdate
initial_supplier_product_urluri
is_activeboolean
jobuuidSet for Source B (job resource / BOQ list).
labour_cost_inputstring
last_reviewed_atdate
lead_in_daysinteger
materials_cost_inputstring
name *string
notes_internalstring
rate_valid_fromJSONComputed JSON value; may be null when access is restricted.
resource_typestring* `material` - Material * `labour` - Labour * `plant` - Plant * `subcontract` - Subcontract Options: material, labour, plant, subcontract
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
safety_urluri
source_typestring* `WORKSPACE_A` - Workspace library * `JOB_B` - Job resource list * `USER_C` - Personal user library Options: WORKSPACE_A, JOB_B, USER_C
supplier_listing_countJSONComputed JSON value; may be null when access is restricted.
supplier_price_countJSONComputed JSON value; may be null when access is restricted.
unit_of_measurestring
waste_percentdecimal
ResourceSupplierListing
FieldTypeDetails
created_at *date-time
id *integer
is_defaultboolean
partner *uuid
partner_name *string
product_urluri
resource *integer
resource_name *string
supplier_codestring
supplier_descriptionstring
updated_at *date-time
workspace *uuid
ResourceSupplierListingRequest
FieldTypeDetails
is_defaultboolean
partner *uuid
product_urluri
resource *integer
supplier_codestring
supplier_descriptionstring
ScheduleDependency
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
id *uuid
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
successor *TaskSimple
ScheduleDependencyRequest
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
gate_statusstringRFI milestone required before the successor can proceed. * `responded` - Responded * `closed` - Closed Options: responded, closed
is_satisfiedJSONComputed JSON value; may be null when access is restricted.
lag_daysinteger
rfiJSONComputed JSON value; may be null when access is restricted.
rfi_iduuid
successor_iduuid
SiteLog
FieldTypeDetails
amendments *SiteLogAmendment[]
attached_filesuuid[]
author *uuid
author_avatar_colorstring
author_avatar_modestring
author_avatar_urluri
author_namestring
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
created_at *date-time
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
id *uuid
internal_notesstringPrivate notes for the project team. Not included in client reports.
is_locked *boolean
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
project *uuid
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
updated_at *date-time
visitorsstring
weatherstring
SiteLogAmendment
FieldTypeDetails
author *uuid
author_namestring
created_at *date-time
id *uuid
notes *string
site_log *uuid
SiteLogAmendmentRequest
FieldTypeDetails
notes *string
site_log *uuid
SiteLogRequest
FieldTypeDetails
attached_filesuuid[]
client_summarystringShort client-facing summary used when preparing client updates.
cost_impact_typestring* `none` - No cost impact noted * `estimate` - Estimated cost impact * `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_daysintegerEstimated delay in days caused by the logged issue.
deliveries_notesstring
equipment_on_sitestring
estimated_cost_amountdecimalOptional estimated cost impact amount.
estimated_cost_currencystringISO currency code for the estimated cost amount.
internal_notesstringPrivate notes for the project team. Not included in client reports.
issues_notesstring
locks_atJSONComputed JSON value; may be null when access is restricted.
log_date *date
progress_notesstring
recommendationstring
responsible_partystring* `client` - Client * `builder` - Builder * `third_party` - Third party * `unknown` - Unknown Options: client, builder, third_party, unknown
risk_levelstring* `low` - Low * `medium` - Medium * `high` - High Options: low, medium, high
safety_observationsstring
staff_on_siteinteger
visitorsstring
weatherstring
Snag
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachments *FileDetail[]
closed_at *date-time
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
created_at *date-time
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
due_datedate
estimate_location_iduuid
estimate_location_namestring
id *uuid
locationstring
managed_by *UserPublic
number *string
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
project *uuidThe job this snag belongs to.
project_name *string
raised_by *UserPublic
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
updated_at *date-time
SnagRequest
FieldTypeDetails
attachment_countJSONComputed JSON value; may be null when access is restricted.
attachment_idsuuid[]
completion_policystring* `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
daywork_applicablestring* `yes` - Yes * `no` - No * `tbc` - TBC Options: yes, no, tbc
descriptionstring
doerJSONComputed JSON value; may be null when access is restricted.
doer_emailemail
doer_partner_contact_iduuid
doer_partner_iduuid
doer_user_iduuid
due_datedate
estimate_location_iduuid
locationstring
managed_by_iduuid
prioritystring* `low` - Low * `medium` - Medium * `high` - High * `urgent` - Urgent Options: low, medium, high, urgent
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
show_on_calendarbooleanIf True, this snag appears on calendars when it has a due date.
show_on_ganttbooleanIf True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_iduuidOptional source timeline entry id when this snag was created from a message.
statusstring* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
title *string
SnagTransitionRequest
FieldTypeDetails
status *string* `open` - Open * `in_progress` - In progress * `ready_for_inspection` - Ready for inspection * `rejected` - Rejected * `closed` - Closed Options: open, in_progress, ready_for_inspection, rejected, closed
StagePayment
FieldTypeDetails
amountdecimal
idinteger
is_invoicedboolean
name *string
notesstring
order *integer
percentagedecimal
StagePaymentRequest
FieldTypeDetails
amountdecimal
idinteger
is_invoicedboolean
name *string
notesstring
order *integer
percentagedecimal
SubTask
FieldTypeDetails
assignees *UserPublic[]
end_datedate
id *uuid
name *string
progressintegerManual completion percentage (0-100). Null means auto.
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
SubTaskRequest
FieldTypeDetails
end_datedate
name *string
progressintegerManual completion percentage (0-100). Null means auto.
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
Task
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignees *UserPublic[]
attached_files *FileDetail[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completed_at *date-time
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
created_at *date-time
created_by *uuid
deleted_at *date-time
deleted_by *uuid
dependency_predecessors *TaskDependency[]
dependency_successors *TaskDependency[]
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
estimate_location_namestring
id *uuid
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *boolean
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent *ParentTask
progressinteger
project *uuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
schedule_predecessors *ScheduleDependency[]
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
sub_tasks *SubTask[]
task_type *TaskType
updated_at *date-time
valuedecimal
TaskDependency
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
id *uuid
lag_daysinteger
predecessor *TaskSimple
successor *TaskSimple
TaskDependencyRequest
FieldTypeDetails
dependency_typestring* `FS` - Finish-to-Start * `SS` - Start-to-Start * `FF` - Finish-to-Finish * `SF` - Start-to-Finish Options: FS, SS, FF, SF
lag_daysinteger
predecessor_iduuid
successor_iduuid
TaskList
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_day *boolean
assignees *UserPublic[]
audience_type *string* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_doneJSONComputed JSON value; may be null when access is restricted.
checklist_totalJSONComputed JSON value; may be null when access is restricted.
completed_at *date-time
completion_policy *stringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file,
constraint_datedate
constraint_type *string* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than,
created_at *date-time
deleted_at *date-time
deleted_by *uuid
dependency_predecessors *TaskDependency[]
due_date *date
duration_days *integer
end_datedate
end_time *time
estimate_location_id *uuidOptional plot this task is tagged to.
id *uuid
is_date_locked *booleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *boolean
is_milestone *booleanIf True, this task is a major project milestone.
is_private *boolean
name *string
order *integerThe order of the task in a list view.
parent *ParentTask
progressinteger
project *uuid
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
schedule_predecessors *ScheduleDependency[]
selected_user_ids *JSON
show_on_calendar *booleanIf True, this task appears on the user and project calendars.
show_on_gantt *booleanIf True, this task appears on the project Gantt chart.
start_datedate
start_time *time
status *string* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
task_type *TaskType
valuedecimal
TaskRequest
FieldTypeDetails
actual_end_datedate
actual_start_datedate
all_dayboolean
assignee_idsuuid[]
audience_typestring* `builder_internal` - Builder staff * `builder_team` - Builder side * `builder_client` - Builder and client teams * `client_team` - Client team * `everyone` - Everyone on this job * `selected_people` - Selected people Options: builder_internal, builder_team, builder_client, client_team, everyone, selected_people
checklist_itemsJSONA list of simple checklist sub-items for this task.
completion_policystringLeave blank to use the workspace default. * `none` - No evidence required * `note` - Note required * `file` - Photo or file required * `note_or_file` - Note or photo/file required * `note_and_file` - Note and photo/file required Options: none, note, file, note_or_file, note_and_file, ,
constraint_datedate
constraint_typestring* `as_soon_as_possible` - As soon as possible * `as_late_as_possible` - As late as possible * `must_start_on` - Must start on * `must_finish_on` - Must finish on * `start_no_earlier_than` - Start no earlier than * `finish_no_later_than` - Finish no later than Options: as_soon_as_possible, as_late_as_possible, must_start_on, must_finish_on, start_no_earlier_than, finish_no_later_than, ,
descriptionstring
due_datedate
duration_daysinteger
end_datedate
end_timetime
estimate_location_iduuid
file_idsuuid[]Set the attached files for this task
is_date_lockedbooleanIf True, this task's dates will not be automatically adjusted by dependencies.
is_milestonebooleanIf True, this task is a major project milestone.
is_privateboolean
name *string
orderintegerThe order of the task in a list view.
parent_iduuid
predecessorsPredecessorInputRequest[]
progressinteger
resolved_completion_policyJSONComputed JSON value; may be null when access is restricted.
selected_user_idsJSON
show_on_calendarbooleanIf True, this task appears on the user and project calendars.
show_on_ganttbooleanIf True, this task appears on the project Gantt chart.
source_quote_line_itemuuid
source_quote_numberJSONComputed JSON value; may be null when access is restricted.
source_timeline_entry_iduuid
start_datedate
start_timetime
statusstring* `todo` - To Do * `in_progress` - In Progress * `done` - Done * `on_hold` - On Hold * `overdue` - Overdue * `blocked` - Blocked Options: todo, in_progress, done, on_hold, overdue, blocked
task_type_iduuid
valuedecimal
TaskSimple
FieldTypeDetails
id *uuid
name *string
TaskSimpleRequest
FieldTypeDetails
name *string
TaskType
FieldTypeDetails
icon_namestringOptional icon name for the frontend.
id *uuid
name *string
parent_iduuid
workspace *uuid
TaskTypeRequest
FieldTypeDetails
icon_namestringOptional icon name for the frontend.
name *string
parent_iduuid
Timesheet
FieldTypeDetails
approvalJSONComputed JSON value; may be null when access is restricted.
approved_at *date-time
can_editJSONComputed JSON value; may be null when access is restricted.
can_submitJSONComputed JSON value; may be null when access is restricted.
can_unsubmitJSONComputed JSON value; may be null when access is restricted.
created_at *date-time
entries *TimesheetEntry[]
id *uuid
status *string* `draft` - Draft * `submitted` - Submitted * `approved` - Approved * `rejected` - Rejected Options: draft, submitted, approved, rejected
submitted_at *date-time
total_hoursJSONComputed JSON value; may be null when access is restricted.
updated_at *date-time
user_id *uuid
user_nameJSONComputed JSON value; may be null when access is restricted.
warningsJSONComputed JSON value; may be null when access is restricted.
week_end *date
week_start *date
TimesheetEntry
FieldTypeDetails
clock_detailsJSONComputed JSON value; may be null when access is restricted.
entry_date *date
hoursdecimal
id *uuid
is_billableboolean
notesstring
project_id *uuid
project_name *string
project_number *string
source_iduuid
source_labelJSONComputed JSON value; may be null when access is restricted.
source_typestring* `manual` - Manual * `task` - Task * `event` - Event * `snag` - Snag * `rfi` - RFI * `clock` - Clocked time Options: manual, task, event, snag, rfi, clock
task_id *uuid
task_is_milestoneJSONComputed JSON value; may be null when access is restricted.
task_is_subtaskJSONComputed JSON value; may be null when access is restricted.
task_nameJSONComputed JSON value; may be null when access is restricted.
task_parent_nameJSONComputed JSON value; may be null when access is restricted.
Unit
FieldTypeDetails
code *string
id *uuid
is_activeboolean
is_time_unitboolean
name *string
symbol *string
time_basisstring* `hour` - Hour * `day` - Day * `week` - Week Options: hour, day, week,
UserPublic
FieldTypeDetails
avatar_colorstringHex color code for avatar fallback, generated from name.
avatar_modestringAvatar rendering mode: auto, color, or image. * `auto` - Auto * `color` - Custom colour * `image` - Image Options: auto, color, image
avatar_urluriURL for the user's profile picture.
email *email
first_namestring
id *uuid
last_namestring
UserPublicRequest
FieldTypeDetails
avatar_colorstringHex color code for avatar fallback, generated from name.
avatar_modestringAvatar rendering mode: auto, color, or image. * `auto` - Auto * `color` - Custom colour * `image` - Image Options: auto, color, image
avatar_urluriURL for the user's profile picture.
email *email
first_namestring
last_namestring
WorkItem
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
created_at *date-time
default_waste_pctdecimal
descriptionstring
group *integer
group_namestring
id *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItem[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring
updated_at *date-time
WorkItemGroup
FieldTypeDetails
id *integer
name *string
WorkItemGroupRequest
FieldTypeDetails
name *string
WorkItemItem
FieldTypeDetails
effective_rateJSONComputed JSON value; may be null when access is restricted.
id *integer
quantitydecimal
resource *integer
resource_name *string
unit *string
unit_rate_overridedecimal
uomstring
WorkItemItemRequest
FieldTypeDetails
effective_rateJSONComputed JSON value; may be null when access is restricted.
quantitydecimal
resource *integer
unit_rate_overridedecimal
uomstring
WorkItemRequest
FieldTypeDetails
boq_pathJSONComputed JSON value; may be null when access is restricted.
codestring
default_waste_pctdecimal
descriptionstring
group *integer
is_activeboolean
is_unit_priceboolean
itemsWorkItemItemRequest[]
last_reviewed_atdate
lib_lineuuid
name *string
notes_internalstring
review_statusstring* `needs_review` - Needs review * `reviewed` - Reviewed * `starter` - Starter data * `archived` - Archived Options: needs_review, reviewed, starter, archived
unit_of_measurestring