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.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
CalendarException[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
date *
date
is_working
boolean
False = non-working; True = working override
note
string
project
uuid
Responses
201 — Success
Field
Type
Details
date *
date
id *
uuid
is_working
boolean
False = non-working; True = working override
note
string
project
uuid
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
date *
date
id *
uuid
is_working
boolean
False = non-working; True = working override
note
string
project
uuid
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
date
date
is_working
boolean
False = non-working; True = working override
note
string
project
uuid
Responses
200 — Success
Field
Type
Details
date *
date
id *
uuid
is_working
boolean
False = non-working; True = working override
note
string
project
uuid
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
CustomerList[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
Responses
201 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
customer_pk *
path
uuid
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Contact[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
customer_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
is_primary_contact
boolean
name *
string
notes
string
phone_number
string
role
string
Responses
201 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
id *
uuid
is_primary_contact
boolean
linked_user *
LinkedUserAvatar
name *
string
notes
string
phone_number
string
role
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
contact_pk *
path
uuid
customer_pk *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
contact_pk *
path
uuid
customer_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
id *
uuid
is_primary_contact
boolean
linked_user *
LinkedUserAvatar
name *
string
notes
string
phone_number
string
role
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
contact_pk *
path
uuid
customer_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
is_primary_contact
boolean
name
string
notes
string
phone_number
string
role
string
Responses
200 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
id *
uuid
is_primary_contact
boolean
linked_user *
LinkedUserAvatar
name *
string
notes
string
phone_number
string
role
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
Responses
200 — Success
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Activity[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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.
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.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ActivityGroup[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
name *
string
Responses
201 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
name
string
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ActivitySet[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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.
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.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
BudgetGroup[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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.
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.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
CostCode[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
cost_types
CostCodeTypeLinkRequest[]
default_rate
decimal
default_unit
string
external_code
string
is_active
boolean
name *
string
Responses
201 — Success
Field
Type
Details
code
string
cost_types
CostCodeTypeLink[]
default_rate
decimal
default_unit
string
external_code
string
id *
integer
is_active
boolean
is_system *
boolean
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
code
string
cost_types
CostCodeTypeLink[]
default_rate
decimal
default_unit
string
external_code
string
id *
integer
is_active
boolean
is_system *
boolean
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
cost_types
CostCodeTypeLinkRequest[]
default_rate
decimal
default_unit
string
external_code
string
is_active
boolean
name
string
Responses
200 — Success
Field
Type
Details
code
string
cost_types
CostCodeTypeLink[]
default_rate
decimal
default_unit
string
external_code
string
id *
integer
is_active
boolean
is_system *
boolean
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
CostType[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_active
boolean
name *
string
sort_order
integer
Responses
201 — Success
Field
Type
Details
id *
integer
is_active
boolean
is_core *
boolean
key *
string
name *
string
sort_order
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
id *
integer
is_active
boolean
is_core *
boolean
key *
string
name *
string
sort_order
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_active
boolean
name
string
sort_order
integer
Responses
200 — Success
Field
Type
Details
id *
integer
is_active
boolean
is_core *
boolean
key *
string
name *
string
sort_order
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Location[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
description
string
is_active
boolean
name *
string
parent
integer
sort_order
integer
Responses
201 — Success
Field
Type
Details
code
string
created_at *
date-time
description
string
id *
integer
is_active
boolean
name *
string
parent
integer
parent_name
string
sort_order
integer
updated_at *
date-time
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
code
string
created_at *
date-time
description
string
id *
integer
is_active
boolean
name *
string
parent
integer
parent_name
string
sort_order
integer
updated_at *
date-time
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
description
string
is_active
boolean
name
string
parent
integer
sort_order
integer
Responses
200 — Success
Field
Type
Details
code
string
created_at *
date-time
description
string
id *
integer
is_active
boolean
name *
string
parent
integer
parent_name
string
sort_order
integer
updated_at *
date-time
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ResourceGroup[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
name *
string
Responses
201 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
name
string
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ResourceNote[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
author_name
JSON
Computed JSON value; may be null when access is restricted.
body *
string
resource *
integer
Responses
201 — Success
Field
Type
Details
author_name
JSON
Computed JSON value; may be null when access is restricted.
body *
string
created_at *
date-time
id *
integer
resource *
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
author_name
JSON
Computed JSON value; may be null when access is restricted.
body *
string
created_at *
date-time
id *
integer
resource *
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
author_name
JSON
Computed JSON value; may be null when access is restricted.
body
string
resource
integer
Responses
200 — Success
Field
Type
Details
author_name
JSON
Computed JSON value; may be null when access is restricted.
body *
string
created_at *
date-time
id *
integer
resource *
integer
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ResourcePrice[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_default
boolean
Use this supplier price by default when the resource is added to an estimate.
notes
string
partner
uuid
price_type
string
* `general` - General
* `partner` - Partner Options: general, partner
rate *
decimal
resource *
integer
supplier_code
string
supplier_description
string
updated_by_name
JSON
Computed JSON value; may be null when access is restricted.
valid_from
date
valid_to
date
Responses
201 — Success
Field
Type
Details
id *
integer
is_default
boolean
Use this supplier price by default when the resource is added to an estimate.
notes
string
partner
uuid
partner_name
string
price_type
string
* `general` - General
* `partner` - Partner Options: general, partner
rate
decimal
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
supplier_listing *
integer
updated_at *
date-time
updated_by *
uuid
updated_by_name
JSON
Computed JSON value; may be null when access is restricted.
valid_from
date
valid_to
date
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
id *
integer
is_default
boolean
Use this supplier price by default when the resource is added to an estimate.
notes
string
partner
uuid
partner_name
string
price_type
string
* `general` - General
* `partner` - Partner Options: general, partner
rate
decimal
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
supplier_listing *
integer
updated_at *
date-time
updated_by *
uuid
updated_by_name
JSON
Computed JSON value; may be null when access is restricted.
valid_from
date
valid_to
date
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_default
boolean
Use this supplier price by default when the resource is added to an estimate.
notes
string
partner
uuid
price_type
string
* `general` - General
* `partner` - Partner Options: general, partner
rate
decimal
resource
integer
supplier_code
string
supplier_description
string
updated_by_name
JSON
Computed JSON value; may be null when access is restricted.
valid_from
date
valid_to
date
Responses
200 — Success
Field
Type
Details
id *
integer
is_default
boolean
Use this supplier price by default when the resource is added to an estimate.
notes
string
partner
uuid
partner_name
string
price_type
string
* `general` - General
* `partner` - Partner Options: general, partner
rate
decimal
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
supplier_listing *
integer
updated_at *
date-time
updated_by *
uuid
updated_by_name
JSON
Computed JSON value; may be null when access is restricted.
valid_from
date
valid_to
date
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ResourceSupplierListing[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_default
boolean
partner *
uuid
product_url
uri
resource *
integer
supplier_code
string
supplier_description
string
Responses
201 — Success
Field
Type
Details
created_at *
date-time
id *
integer
is_default
boolean
partner *
uuid
partner_name *
string
product_url
uri
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
updated_at *
date-time
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
created_at *
date-time
id *
integer
is_default
boolean
partner *
uuid
partner_name *
string
product_url
uri
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
updated_at *
date-time
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
is_default
boolean
partner
uuid
product_url
uri
resource
integer
supplier_code
string
supplier_description
string
Responses
200 — Success
Field
Type
Details
created_at *
date-time
id *
integer
is_default
boolean
partner *
uuid
partner_name *
string
product_url
uri
resource *
integer
resource_name *
string
supplier_code
string
supplier_description
string
updated_at *
date-time
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Resource[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
base_cost_input
string
budget_group
uuid
Commercial reporting group; falls back to resource group when null.
code
string
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
default_supplier
JSON
Computed JSON value; may be null when access is restricted.
default_supplier_price
JSON
Computed JSON value; may be null when access is restricted.
default_unit
uuid
default_waste_pct
decimal
description
string
external_url
uri
extras_cost_input
string
general_price
JSON
Computed JSON value; may be null when access is restricted.
group *
integer
initial_supplier
uuid
initial_supplier_code
string
initial_supplier_description
string
initial_supplier_name
string
initial_supplier_price
decimal
initial_supplier_price_valid_from
date
initial_supplier_product_url
uri
is_active
boolean
job
uuid
Set for Source B (job resource / BOQ list).
labour_cost_input
string
last_reviewed_at
date
lead_in_days
integer
materials_cost_input
string
name *
string
notes_internal
string
rate_valid_from
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
base_cost
decimal
budget_group
uuid
Commercial reporting group; falls back to resource group when null.
budget_group_name
string
code
string
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
cost_code_code
string
cost_code_name
string
created_at *
date-time
default_supplier
JSON
Computed JSON value; may be null when access is restricted.
default_supplier_price
JSON
Computed JSON value; may be null when access is restricted.
default_unit
uuid
default_waste_pct
decimal
description
string
effective_rate *
object
external_url
uri
extras_cost
decimal
general_price
JSON
Computed JSON value; may be null when access is restricted.
group *
integer
group_name
string
id *
integer
is_active
boolean
job
uuid
Set for Source B (job resource / BOQ list).
labour_cost
decimal
last_reviewed_at
date
lead_in_days
integer
materials_cost
decimal
name *
string
notes_internal
string
owner_user *
uuid
rate_valid_from
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
base_cost_input
string
budget_group
uuid
Commercial reporting group; falls back to resource group when null.
code
string
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
default_supplier
JSON
Computed JSON value; may be null when access is restricted.
default_supplier_price
JSON
Computed JSON value; may be null when access is restricted.
default_unit
uuid
default_waste_pct
decimal
description
string
external_url
uri
extras_cost_input
string
general_price
JSON
Computed JSON value; may be null when access is restricted.
group
integer
initial_supplier
uuid
initial_supplier_code
string
initial_supplier_description
string
initial_supplier_name
string
initial_supplier_price
decimal
initial_supplier_price_valid_from
date
initial_supplier_product_url
uri
is_active
boolean
job
uuid
Set for Source B (job resource / BOQ list).
labour_cost_input
string
last_reviewed_at
date
lead_in_days
integer
materials_cost_input
string
name
string
notes_internal
string
rate_valid_from
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Unit[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
WorkItemGroup[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
name *
string
Responses
201 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
name
string
Responses
200 — Success
Field
Type
Details
id *
integer
name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
LibWorkItemLine[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
WorkItem[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
integer
workspace_id *
path
uuid
JSON request
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
PartnerList[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
address
AddressRequest
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
backup_withholding_required
boolean
US: payer should review backup withholding before payment.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
address
Address
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
backup_withholding_required
boolean
US: payer should review backup withholding before payment.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
address
AddressRequest
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
backup_withholding_required
boolean
US: payer should review backup withholding before payment.
UK: subcontractor is CIS-registered and needs verification on file.
name *
string
The partner's name or company name.
notes
string
phone_number
string
specialties *
PartnerSpecialty[]
tax_id
string
VAT number, EIN, UTR, or other tax identifier.
us_tax_classification
string
US 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
string
US W-9 TIN/EIN last four only.
us_tin_type
string
US W-9 identifier type, stored without the full identifier.
* `` - Not recorded
* `ein` - EIN
* `ssn` - SSN
* `itin` - ITIN Options: , ein, ssn, itin
w9_received_at
date
Date a W-9 was received or confirmed.
workspace *
uuid
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
archived
query
false (default), true, or only.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
search
query
Search project name and number.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Project[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
allow_store_collection
boolean
Override workspace store-collection toggle when set.
archived_at
date-time
Timestamp when the project was archived.
budget
decimal
Current agreed revenue budget visible to the client.
commercial_summary
JSON
Computed JSON value; may be null when access is restricted.
cost_budget
decimal
The internal cost budget, visible only to the builder's team.
custom_status_id
uuid
customer_id
uuid
description
string
Detailed description of the project.
effective_estimating_enabled
JSON
Computed JSON value; may be null when access is restricted.
effective_variation_workflow
JSON
Computed JSON value; may be null when access is restricted.
enable_delivery_sign_off
boolean
Override workspace delivery sign-off when set.
enable_location_tagging
boolean
Allow plot/location codes on purchase order lines.
end_date_actual
date
end_date_planned
date
estimated_value
decimal
Estimated value before a formal quote is issued.
estimating_enabled
boolean
Override workspace estimating_enabled when set.
follow_up_date
date
initial_revenue_budget
decimal
Snapshot of revenue at award (initial position), separate from current agreed budget.
is_archived
boolean
is_location_unoccupied
boolean
Will the work location be unoccupied during the project?
local_restrictions
string
Note any permit parking, delivery constraints, or noise restrictions.
lost_reason
string
Reason recorded when a job is marked lost or a quote is rejected.
mandated_approver
uuid
When set, all POs for this job require this approver.
Core 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_id
uuid
timesheet_identity_check_excluded
boolean
Clock in and out on this job without a biometric or photo check.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
allow_store_collection
boolean
Override workspace store-collection toggle when set.
archived_at
date-time
Timestamp when the project was archived.
brief_snapshot_id *
uuid
budget
decimal
Current agreed revenue budget visible to the client.
commercial
ProjectCommercial
commercial_summary
JSON
Computed JSON value; may be null when access is restricted.
cost_budget
decimal
The internal cost budget, visible only to the builder's team.
created_at *
date-time
custom_status *
CustomProjectStatus
customer *
CustomerSimple
description
string
Detailed description of the project.
effective_estimating_enabled
JSON
Computed JSON value; may be null when access is restricted.
effective_variation_workflow
JSON
Computed JSON value; may be null when access is restricted.
enable_delivery_sign_off
boolean
Override workspace delivery sign-off when set.
enable_location_tagging
boolean
Allow plot/location codes on purchase order lines.
end_date_actual
date
end_date_planned
date
estimated_value
decimal
Estimated value before a formal quote is issued.
estimating_enabled
boolean
Override workspace estimating_enabled when set.
follow_up_date
date
forecast_revenue_budget
decimal
Last persisted final-account forecast total (net, same basis as ledger/variations).
id *
uuid
initial_revenue_budget
decimal
Snapshot of revenue at award (initial position), separate from current agreed budget.
is_archived
boolean
is_location_unoccupied
boolean
Will the work location be unoccupied during the project?
job_cost_snapshot
JSON
local_restrictions
string
Note any permit parking, delivery constraints, or noise restrictions.
lost_reason
string
Reason recorded when a job is marked lost or a quote is rejected.
mandated_approver
uuid
When set, all POs for this job require this approver.
Core 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_id
uuid
timesheet_identity_check_excluded
boolean
Clock in and out on this job without a biometric or photo check.
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
allow_store_collection
boolean
Override workspace store-collection toggle when set.
archived_at
date-time
Timestamp when the project was archived.
budget
decimal
Current agreed revenue budget visible to the client.
commercial_summary
JSON
Computed JSON value; may be null when access is restricted.
cost_budget
decimal
The internal cost budget, visible only to the builder's team.
custom_status_id
uuid
customer_id
uuid
description
string
Detailed description of the project.
effective_estimating_enabled
JSON
Computed JSON value; may be null when access is restricted.
effective_variation_workflow
JSON
Computed JSON value; may be null when access is restricted.
enable_delivery_sign_off
boolean
Override workspace delivery sign-off when set.
enable_location_tagging
boolean
Allow plot/location codes on purchase order lines.
end_date_actual
date
end_date_planned
date
estimated_value
decimal
Estimated value before a formal quote is issued.
estimating_enabled
boolean
Override workspace estimating_enabled when set.
follow_up_date
date
initial_revenue_budget
decimal
Snapshot of revenue at award (initial position), separate from current agreed budget.
is_archived
boolean
is_location_unoccupied
boolean
Will the work location be unoccupied during the project?
local_restrictions
string
Note any permit parking, delivery constraints, or noise restrictions.
lost_reason
string
Reason recorded when a job is marked lost or a quote is rejected.
mandated_approver
uuid
When set, all POs for this job require this approver.
Core 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_id
uuid
timesheet_identity_check_excluded
boolean
Clock in and out on this job without a biometric or photo check.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Entry[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attached_file_ids
uuid[]
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
content *
string
The main text content or a description of the event.
is_private
boolean
If True, this entry is only visible to workspace members.
notify_mode
string
* `everyone` - Everyone
* `none` - No one
* `custom` - Custom Options: everyone, none, custom
parent_entry
uuid
recipient_ids
uuid[]
selected_user_ids
JSON
Responses
201 — Success
Field
Type
Details
attached_files *
FileDetail[]
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
author *
UserPublic
can_manage_entry
JSON
Computed JSON value; may be null when access is restricted.
can_retract_entry
JSON
Computed JSON value; may be null when access is restricted.
can_view_original
JSON
Computed JSON value; may be null when access is restricted.
change_request
JSON
Computed JSON value; may be null when access is restricted.
content_original
JSON
Computed JSON value; may be null when access is restricted.
content_type
integer
content_visible
JSON
Computed JSON value; may be null when access is restricted.
converted_change_request
JSON
Computed JSON value; may be null when access is restricted.
converted_task
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
attached_files *
FileDetail[]
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
author *
UserPublic
can_manage_entry
JSON
Computed JSON value; may be null when access is restricted.
can_retract_entry
JSON
Computed JSON value; may be null when access is restricted.
can_view_original
JSON
Computed JSON value; may be null when access is restricted.
change_request
JSON
Computed JSON value; may be null when access is restricted.
content_original
JSON
Computed JSON value; may be null when access is restricted.
content_type
integer
content_visible
JSON
Computed JSON value; may be null when access is restricted.
converted_change_request
JSON
Computed JSON value; may be null when access is restricted.
converted_task
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
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
can_manage_entry
JSON
Computed JSON value; may be null when access is restricted.
can_retract_entry
JSON
Computed JSON value; may be null when access is restricted.
can_view_original
JSON
Computed JSON value; may be null when access is restricted.
change_request
JSON
Computed JSON value; may be null when access is restricted.
content_original
JSON
Computed JSON value; may be null when access is restricted.
content_type
integer
content_visible
JSON
Computed JSON value; may be null when access is restricted.
converted_change_request
JSON
Computed JSON value; may be null when access is restricted.
converted_task
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Event[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
all_day
boolean
attendees
AttendeeRequest[]
conference_url
uri
description
string
end *
date-time
external_uid
string
is_private
boolean
is_private_read
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
all_day
boolean
attendees
Attendee[]
conference_url
uri
created_at *
date-time
created_by *
uuid
description
string
end *
date-time
external_uid
string
id *
uuid
is_private_read
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
all_day
boolean
attendees
AttendeeRequest[]
conference_url
uri
description
string
end
date-time
external_uid
string
is_private
boolean
is_private_read
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
partner
query
Supplier UUID.
project_id *
path
uuid
search
query
A search term.
status
query
Expense status.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Expense[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
attached_receipts
uuid[]
attached_receipts_detail
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
string or number or object
cis_deduction_rate
decimal
cis_materials_amount
decimal
claimant
uuid
The person who paid out of pocket and needs to be reimbursed.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
attached_receipts
uuid[]
attached_receipts_detail
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
object
cis_deduction_amount
decimal
cis_deduction_rate
decimal
cis_materials_amount
decimal
claimant
uuid
The person who paid out of pocket and needs to be reimbursed.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
attached_receipts
uuid[]
attached_receipts_detail
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
string or number or object
cis_deduction_rate
decimal
cis_materials_amount
decimal
claimant
uuid
The person who paid out of pocket and needs to be reimbursed.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
attached_receipts
uuid[]
attached_receipts_detail
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
object
cis_deduction_amount
decimal
cis_deduction_rate
decimal
cis_materials_amount
decimal
claimant
uuid
The person who paid out of pocket and needs to be reimbursed.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
attached_receipts
uuid[]
attached_receipts_detail
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
object
cis_deduction_amount
decimal
cis_deduction_rate
decimal
cis_materials_amount
decimal
claimant
uuid
The person who paid out of pocket and needs to be reimbursed.
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
Name
Location
Details
exclude_source
query
Comma-separated sources to exclude.
needs_attention
query
true to show files requiring attention; requires files:write.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
search
query
Search filename, text, type, tags, and uploader.
source
query
Filter by file source.
tag
query
Filter by tag name.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
FileDetail[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
accuracy_m
double
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
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
accuracy_m *
double
ai_suggestions
JSON
Stores raw AI suggestions for name, tags, etc.
analysis_error
string
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
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
available_actions
JSON
Computed JSON value; may be null when access is restricted.
captured_at *
date-time
created_at *
date-time
created_by_name
string
description
string
A user-or-AI-generated description of the file's content.
distance_from_site_m
JSON
Computed JSON value; may be null when access is restricted.
exif_latitude *
double
exif_longitude *
double
file *
uri
file_size
integer
Size of the file in bytes.
folder
JSON
Computed JSON value; may be null when access is restricted.
folder_id
uuid
id *
uuid
is_private
boolean
If True, this document is only visible to workspace members.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
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
description
string
A user-or-AI-generated description of the file's content.
file
binary
folder_id
uuid
is_private
boolean
If True, this document is only visible to workspace members.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
url *
uri
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
etag
string
Responses
202 — Success
Field
Type
Details
accuracy_m *
double
ai_suggestions
JSON
Stores raw AI suggestions for name, tags, etc.
analysis_error
string
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
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
available_actions
JSON
Computed JSON value; may be null when access is restricted.
captured_at *
date-time
created_at *
date-time
created_by_name
string
description
string
A user-or-AI-generated description of the file's content.
distance_from_site_m
JSON
Computed JSON value; may be null when access is restricted.
exif_latitude *
double
exif_longitude *
double
file *
uri
file_size
integer
Size of the file in bytes.
folder
JSON
Computed JSON value; may be null when access is restricted.
folder_id
uuid
id *
uuid
is_private
boolean
If True, this document is only visible to workspace members.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
FinalAccountAssumption[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
forecast_revenue_net
decimal
records *
FinalAccountAssumptionRequest[]
Responses
200 — Success
Field
Type
Details
assumption_percent
integer
change_request *
uuid
id *
uuid
included
boolean
project *
uuid
updated_at *
date-time
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
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
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
InvoiceDetail[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
amount_paid
JSON
Computed JSON value; may be null when access is restricted.
apply_cis
boolean
apply_drc
boolean
If True, applies Domestic Reverse Charge (VAT = 0).
apply_retention
boolean
apply_tax
boolean
Whether VAT/tax is applied and shown on this invoice.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
JSON
Computed JSON value; may be null when access is restricted.
bank_details
string
bill_to_address_id
uuid
cis_deduction_amount
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
allocations *
PaymentAllocation[]
amount_paid
JSON
Computed JSON value; may be null when access is restricted.
apply_cis
boolean
apply_drc
boolean
If True, applies Domestic Reverse Charge (VAT = 0).
apply_retention
boolean
apply_tax
boolean
Whether VAT/tax is applied and shown on this invoice.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
JSON
Computed JSON value; may be null when access is restricted.
bank_details
string
bill_to_address *
Address
cis_deduction_amount
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
amount_paid
JSON
Computed JSON value; may be null when access is restricted.
apply_cis
boolean
apply_drc
boolean
If True, applies Domestic Reverse Charge (VAT = 0).
apply_retention
boolean
apply_tax
boolean
Whether VAT/tax is applied and shown on this invoice.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
JSON
Computed JSON value; may be null when access is restricted.
bank_details
string
bill_to_address_id
uuid
cis_deduction_amount
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
copy_to_sender
boolean
email_bcc
email[]
email_body
string
email_cc
email[]
email_subject
string
email_to
email[]
schedule_follow_up
boolean
Responses
200 — Success
Field
Type
Details
doc
object
emailed_to *
email[]
invoice *
InvoiceDetail
Serializer 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
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
allocations *
PaymentAllocation[]
amount_paid
JSON
Computed JSON value; may be null when access is restricted.
apply_cis
boolean
apply_drc
boolean
If True, applies Domestic Reverse Charge (VAT = 0).
apply_retention
boolean
apply_tax
boolean
Whether VAT/tax is applied and shown on this invoice.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
balance_due
JSON
Computed JSON value; may be null when access is restricted.
bank_details
string
bill_to_address *
Address
cis_deduction_amount
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
RequisitionItem[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
batch_summary
JSON
Computed JSON value; may be null when access is restricted.
boq_item
uuid
cost_code
integer
delivery_instructions
string
description *
string
estimate_location
uuid
Optional plot this line is tagged to.
estimated_unit_rate
decimal
is_pending_coding
boolean
lead_in_warning
JSON
Computed JSON value; may be null when access is restricted.
location
uuid
note
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services Options: material, plant, subcontract, professional
priority
string
* `normal` - Normal
* `high` - High Options: normal, high
progress
JSON
Computed JSON value; may be null when access is restricted.
quantity_needed *
decimal
requested_by_name
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
batch *
uuid
batch_summary
JSON
Computed JSON value; may be null when access is restricted.
boq_item
uuid
converted_order *
uuid
converted_order_line *
uuid
cost_code
integer
created_at *
date-time
delivery_instructions
string
description *
string
estimate_location
uuid
Optional plot this line is tagged to.
estimated_unit_rate
decimal
id *
uuid
is_pending_coding
boolean
lead_in_days
integer
lead_in_warning
JSON
Computed JSON value; may be null when access is restricted.
location
uuid
note
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services Options: material, plant, subcontract, professional
priority
string
* `normal` - Normal
* `high` - High Options: normal, high
progress
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
quantity_needed
decimal
rejection_reason *
string
requested_by *
uuid
requested_by_name
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
batch_summary
JSON
Computed JSON value; may be null when access is restricted.
boq_item
uuid
cost_code
integer
delivery_instructions
string
description
string
estimate_location
uuid
Optional plot this line is tagged to.
estimated_unit_rate
decimal
is_pending_coding
boolean
lead_in_warning
JSON
Computed JSON value; may be null when access is restricted.
location
uuid
note
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services Options: material, plant, subcontract, professional
priority
string
* `normal` - Normal
* `high` - High Options: normal, high
progress
JSON
Computed JSON value; may be null when access is restricted.
quantity_needed
decimal
requested_by_name
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
ordering
query
Which field to use when ordering the results.
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
search
query
A search term.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
PurchaseOrder[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
string or number or object
hire_calendar_override
JSON
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItemRequest[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
string or number or object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner_id
uuid
payment_terms
string
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
approved_by *
uuid
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_at *
date-time
created_by *
uuid
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
object
hire_calendar_override
JSON
id *
uuid
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItem[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_number *
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner *
PurchaseOrderPartner
partner_id
uuid
payment_terms
string
pickup_collected *
boolean
Goods physically collected (may still await approval).
pickup_collected_at *
date-time
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
project_number *
string
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
revision_number *
integer
sent_at *
date-time
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
string or number or object
hire_calendar_override
JSON
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItemRequest[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
string or number or object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner_id
uuid
payment_terms
string
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
approved_by *
uuid
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_at *
date-time
created_by *
uuid
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
object
hire_calendar_override
JSON
id *
uuid
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItem[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_number *
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner *
PurchaseOrderPartner
partner_id
uuid
payment_terms
string
pickup_collected *
boolean
Goods physically collected (may still await approval).
pickup_collected_at *
date-time
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
project_number *
string
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
revision_number *
integer
sent_at *
date-time
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
approved_by *
uuid
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_at *
date-time
created_by *
uuid
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
object
hire_calendar_override
JSON
id *
uuid
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItem[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_number *
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner *
PurchaseOrderPartner
partner_id
uuid
payment_terms
string
pickup_collected *
boolean
Goods physically collected (may still await approval).
pickup_collected_at *
date-time
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
project_number *
string
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
revision_number *
integer
sent_at *
date-time
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
approved_by *
uuid
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_at *
date-time
created_by *
uuid
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
object
hire_calendar_override
JSON
id *
uuid
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItem[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_number *
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner *
PurchaseOrderPartner
partner_id
uuid
payment_terms
string
pickup_collected *
boolean
Goods physically collected (may still await approval).
pickup_collected_at *
date-time
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
project_number *
string
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
revision_number *
integer
sent_at *
date-time
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
requested_approver
uuid
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
approved_by *
uuid
approved_by_name
JSON
Computed JSON value; may be null when access is restricted.
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
cis_applies
boolean
cis_deduction_rate
decimal
created_at *
date-time
created_by *
uuid
created_by_name
JSON
Computed JSON value; may be null when access is restricted.
delivery_address
string
Required for material orders using site delivery (the default fulfilment method).
delivery_instructions
string
description
string
fulfillment_method
string
* `site_delivery` - Site delivery
* `store_pickup` - Store pickup Options: site_delivery, store_pickup
gross_amount
object
hire_calendar_override
JSON
id *
uuid
last_return_note
JSON
Computed JSON value; may be null when access is restricted.
lien_waiver_required
boolean
line_items
PurchaseOrderLineItem[]
needs_approval_for_current_user
JSON
Computed JSON value; may be null when access is restricted.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_amount
object
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
off_hire_date
date
off_hire_reference
string
on_hire_date
date
order_number *
string
order_type
string
* `material` - Material
* `plant` - Plant
* `subcontract` - Subcontract
* `professional` - Professional services
* `store_collection` - Store collection Options: material, plant, subcontract, professional, store_collection
parent_order_id
uuid
partner *
PurchaseOrderPartner
partner_id
uuid
payment_terms
string
pickup_collected *
boolean
Goods physically collected (may still await approval).
pickup_collected_at *
date-time
pickup_paid_out_of_pocket
boolean
Whether the store collection was paid personally or by company card.
portal_actions
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
project_name *
string
project_number *
string
requested_approver
uuid
required_by_date
date
Required for material orders using site delivery (the default fulfilment method).
returns
JSON
Computed JSON value; may be null when access is restricted.
revision_number *
integer
sent_at *
date-time
source
string
* `office` - Office
* `material_request` - Material request
* `pickup` - Pick-up order Options: office, material_request, pickup
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Quote[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
actioned_by_ip_address *
string
IP address of the user who approved/rejected the request.
approval_method *
string
How the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *
date-time
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
brief_snapshot_id
uuid
client_action_note *
string
Note added by the client when they approved or rejected.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
confirm_contract_setup
boolean
note
string
Responses
200 — Success
Field
Type
Details
actioned_by_ip_address *
string
IP address of the user who approved/rejected the request.
approval_method *
string
How the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *
date-time
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
brief_snapshot_id
uuid
client_action_note *
string
Note added by the client when they approved or rejected.
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.
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.
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
Name
Location
Details
id *
path
uuid
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
EstimateActivity[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
activity_id
integer
description
string
duration_days
integer
group
integer
group_name
string
labour_total
JSON
Computed JSON value; may be null when access is restricted.
location_mode
boolean
material_total
JSON
Computed JSON value; may be null when access is restricted.
name *
string
other_total
JSON
Computed JSON value; may be null when access is restricted.
parent
uuid
plant_total
JSON
Computed JSON value; may be null when access is restricted.
set_id
integer
sort
integer
subcontract_total
JSON
Computed JSON value; may be null when access is restricted.
Responses
201 — Success
Field
Type
Details
activity_id
integer
description
string
duration_days
integer
estimate *
uuid
group
integer
group_name
string
id *
uuid
labour_total
JSON
Computed JSON value; may be null when access is restricted.
location_mode
boolean
material_total
JSON
Computed JSON value; may be null when access is restricted.
name *
string
other_total
JSON
Computed JSON value; may be null when access is restricted.
parent
uuid
plant_total
JSON
Computed JSON value; may be null when access is restricted.
set_id
integer
sort
integer
subcontract_total
JSON
Computed JSON value; may be null when access is restricted.
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
aid *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
aid *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
activity_id
integer
description
string
duration_days
integer
estimate *
uuid
group
integer
group_name
string
id *
uuid
labour_total
JSON
Computed JSON value; may be null when access is restricted.
location_mode
boolean
material_total
JSON
Computed JSON value; may be null when access is restricted.
name *
string
other_total
JSON
Computed JSON value; may be null when access is restricted.
parent
uuid
plant_total
JSON
Computed JSON value; may be null when access is restricted.
set_id
integer
sort
integer
subcontract_total
JSON
Computed JSON value; may be null when access is restricted.
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
aid *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
activity_id
integer
description
string
duration_days
integer
group
integer
group_name
string
labour_total
JSON
Computed JSON value; may be null when access is restricted.
location_mode
boolean
material_total
JSON
Computed JSON value; may be null when access is restricted.
name
string
other_total
JSON
Computed JSON value; may be null when access is restricted.
parent
uuid
plant_total
JSON
Computed JSON value; may be null when access is restricted.
set_id
integer
sort
integer
subcontract_total
JSON
Computed JSON value; may be null when access is restricted.
Responses
200 — Success
Field
Type
Details
activity_id
integer
description
string
duration_days
integer
estimate *
uuid
group
integer
group_name
string
id *
uuid
labour_total
JSON
Computed JSON value; may be null when access is restricted.
location_mode
boolean
material_total
JSON
Computed JSON value; may be null when access is restricted.
name *
string
other_total
JSON
Computed JSON value; may be null when access is restricted.
parent
uuid
plant_total
JSON
Computed JSON value; may be null when access is restricted.
set_id
integer
sort
integer
subcontract_total
JSON
Computed JSON value; may be null when access is restricted.
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
EstimateLocation[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
description
string
house_type
string
house_type_definition
uuid
house_type_overrides
JSON
Computed JSON value; may be null when access is restricted.
name *
string
parent
uuid
plot_gdv
decimal
plot_gifa_sq_ft
decimal
sort_order
integer
tenure
string
Responses
201 — Success
Field
Type
Details
code
string
description
string
estimate *
uuid
house_type
string
house_type_definition
uuid
house_type_details *
EstimateHouseType
house_type_overrides
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
name *
string
parent
uuid
plot_gdv
decimal
plot_gifa_sq_ft
decimal
sort_order
integer
tenure
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
lid *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
lid *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
code
string
description
string
estimate *
uuid
house_type
string
house_type_definition
uuid
house_type_details *
EstimateHouseType
house_type_overrides
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
name *
string
parent
uuid
plot_gdv
decimal
plot_gifa_sq_ft
decimal
sort_order
integer
tenure
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
lid *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
code
string
description
string
house_type
string
house_type_definition
uuid
house_type_overrides
JSON
Computed JSON value; may be null when access is restricted.
name
string
parent
uuid
plot_gdv
decimal
plot_gifa_sq_ft
decimal
sort_order
integer
tenure
string
Responses
200 — Success
Field
Type
Details
code
string
description
string
estimate *
uuid
house_type
string
house_type_definition
uuid
house_type_details *
EstimateHouseType
house_type_overrides
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
name *
string
parent
uuid
plot_gdv
decimal
plot_gifa_sq_ft
decimal
sort_order
integer
tenure
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
EstimateWorkItem[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
activity
uuid
boq_path
JSON
Computed JSON value; may be null when access is restricted.
description
string
est_line
uuid
group
integer
is_spot_item
boolean
is_unit_price
boolean
line_total
decimal
name *
string
ohp_pct_override
decimal
payment_stage
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
wid *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
wid *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
activity
uuid
base_total
decimal
boq_path
JSON
Computed JSON value; may be null when access is restricted.
description
string
est_line
uuid
estimate *
uuid
group
integer
id *
uuid
is_spot_item
boolean
is_unit_price
boolean
line_total
decimal
name *
string
ohp_pct_override
decimal
payment_stage
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
wid *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
activity
uuid
boq_path
JSON
Computed JSON value; may be null when access is restricted.
description
string
est_line
uuid
group
integer
is_spot_item
boolean
is_unit_price
boolean
line_total
decimal
name
string
ohp_pct_override
decimal
payment_stage
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
actioned_by_ip_address *
string
IP address of the user who approved/rejected the request.
approval_method *
string
How the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *
date-time
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
brief_snapshot_id
uuid
client_action_note *
string
Note added by the client when they approved or rejected.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
actioned_by_ip_address *
string
IP address of the user who approved/rejected the request.
approval_method *
string
How the request was actioned, e.g., 'in_app', 'email_link'.
approved_at *
date-time
assumption_items
JSON
Structured assumption/exclusion items with optional client ack flags.
assumptions
string
Assumptions made for this quote.
attached_files
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
available_actions
JSON
Computed JSON value; may be null when access is restricted.
base_quote
JSON
Computed JSON value; may be null when access is restricted.
brief_snapshot_id
uuid
client_action_note *
string
Note added by the client when they approved or rejected.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
QuoteLineItem[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
description *
string
effective_tax_rate
JSON
Computed JSON value; may be null when access is restricted.
is_provisional
boolean
order
integer
payment_stage_id
uuid
plot
uuid
Optional plot this quoted work is tagged to.
quantity
decimal
resource
integer
If set, description/UoM defaults from Resource; price from current rate.
resource_type
JSON
Computed JSON value; may be null when access is restricted.
resources
JSON
Computed JSON value; may be null when access is restricted.
section
string
show_resource_breakdown
boolean
tax_rate
decimal
Line tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measure
string
unit_price
decimal
Responses
201 — Success
Field
Type
Details
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
description *
string
effective_tax_rate
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
is_provisional
boolean
line_total
decimal
order
integer
payment_stage *
PaymentStage
payment_stage_id
uuid
plot
uuid
Optional plot this quoted work is tagged to.
plot_name
string
quantity
decimal
quote *
uuid
resource
integer
If set, description/UoM defaults from Resource; price from current rate.
resource_type
JSON
Computed JSON value; may be null when access is restricted.
resources
JSON
Computed JSON value; may be null when access is restricted.
section
string
show_resource_breakdown
boolean
tax_rate
decimal
Line tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measure
string
unit_price
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
description *
string
effective_tax_rate
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
is_provisional
boolean
line_total
decimal
order
integer
payment_stage *
PaymentStage
payment_stage_id
uuid
plot
uuid
Optional plot this quoted work is tagged to.
plot_name
string
quantity
decimal
quote *
uuid
resource
integer
If set, description/UoM defaults from Resource; price from current rate.
resource_type
JSON
Computed JSON value; may be null when access is restricted.
resources
JSON
Computed JSON value; may be null when access is restricted.
section
string
show_resource_breakdown
boolean
tax_rate
decimal
Line tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measure
string
unit_price
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
description
string
effective_tax_rate
JSON
Computed JSON value; may be null when access is restricted.
is_provisional
boolean
order
integer
payment_stage_id
uuid
plot
uuid
Optional plot this quoted work is tagged to.
quantity
decimal
resource
integer
If set, description/UoM defaults from Resource; price from current rate.
resource_type
JSON
Computed JSON value; may be null when access is restricted.
resources
JSON
Computed JSON value; may be null when access is restricted.
section
string
show_resource_breakdown
boolean
tax_rate
decimal
Line tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measure
string
unit_price
decimal
Responses
200 — Success
Field
Type
Details
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_category
JSON
Computed JSON value; may be null when access is restricted.
description *
string
effective_tax_rate
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
is_provisional
boolean
line_total
decimal
order
integer
payment_stage *
PaymentStage
payment_stage_id
uuid
plot
uuid
Optional plot this quoted work is tagged to.
plot_name
string
quantity
decimal
quote *
uuid
resource
integer
If set, description/UoM defaults from Resource; price from current rate.
resource_type
JSON
Computed JSON value; may be null when access is restricted.
resources
JSON
Computed JSON value; may be null when access is restricted.
section
string
show_resource_breakdown
boolean
tax_rate
decimal
Line tax rate (e.g. 20.00 for 20%). Null inherits the quote/workspace default; 0 means this line is tax-exempt.
unit_of_measure
string
unit_price
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
PaymentStage[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
name *
string
order
integer
target_percentage
decimal
Responses
201 — Success
Field
Type
Details
generated_by_handoff *
boolean
id *
uuid
name *
string
order
integer
quote *
uuid
source_estimate_activity *
uuid
source_handoff_key *
string
target_percentage
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
generated_by_handoff *
boolean
id *
uuid
name *
string
order
integer
quote *
uuid
source_estimate_activity *
uuid
source_handoff_key *
string
target_percentage
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
name
string
order
integer
target_percentage
decimal
Responses
200 — Success
Field
Type
Details
generated_by_handoff *
boolean
id *
uuid
name *
string
order
integer
quote *
uuid
source_estimate_activity *
uuid
source_handoff_key *
string
target_percentage
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
QuoteSection[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
content
JSON
Block-specific settings and content payload.
custom_logo_url
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
content
JSON
Block-specific settings and content payload.
created_at *
date-time
custom_logo_url
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
quote_pk *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
content
JSON
Block-specific settings and content payload.
custom_logo_url
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
RFI[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachment_ids
uuid[]
completion_policy
string
* `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, ,
description
string
discipline
string
doer
JSON
Computed JSON value; may be null when access is restricted.
doer_email
email
doer_partner_contact_id
uuid
doer_partner_id
uuid
doer_user_id
uuid
drawing_refs
string
Drawing or spec references.
due_date
date
estimate_location_id
uuid
managed_by_id
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
show_on_calendar
boolean
If True, this RFI appears on calendars when it has a due date.
show_on_gantt
boolean
If True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_id
uuid
Optional source timeline entry when this RFI was created from a message.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachments *
FileDetail[]
closed_at *
date-time
completion_policy
string
* `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
description
string
discipline
string
doer
JSON
Computed JSON value; may be null when access is restricted.
drawing_refs
string
Drawing or spec references.
due_date
date
estimate_location_id
uuid
estimate_location_name
string
id *
uuid
managed_by *
UserPublic
number *
string
project *
uuid
The job this RFI belongs to.
project_name *
string
raised_by *
UserPublic
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
responded_at *
date-time
When the RFI first reached Responded status.
show_on_calendar
boolean
If True, this RFI appears on calendars when it has a due date.
show_on_gantt
boolean
If True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_id
uuid
Optional source timeline entry when this RFI was created from a message.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachment_ids
uuid[]
completion_policy
string
* `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, ,
description
string
discipline
string
doer
JSON
Computed JSON value; may be null when access is restricted.
doer_email
email
doer_partner_contact_id
uuid
doer_partner_id
uuid
doer_user_id
uuid
drawing_refs
string
Drawing or spec references.
due_date
date
estimate_location_id
uuid
managed_by_id
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
show_on_calendar
boolean
If True, this RFI appears on calendars when it has a due date.
show_on_gantt
boolean
If True, this RFI appears on the project Gantt chart when it has a due date.
source_timeline_entry_id
uuid
Optional source timeline entry when this RFI was created from a message.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ScheduleDependency[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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).
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).
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
SiteLog[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attached_files
uuid[]
client_summary
string
Short client-facing summary used when preparing client updates.
cost_impact_type
string
* `none` - No cost impact noted
* `estimate` - Estimated cost impact
* `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_days
integer
Estimated delay in days caused by the logged issue.
deliveries_notes
string
equipment_on_site
string
estimated_cost_amount
decimal
Optional estimated cost impact amount.
estimated_cost_currency
string
ISO currency code for the estimated cost amount.
internal_notes
string
Private notes for the project team. Not included in client reports.
issues_notes
string
locks_at
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
amendments *
SiteLogAmendment[]
attached_files
uuid[]
author *
uuid
author_avatar_color
string
author_avatar_mode
string
author_avatar_url
uri
author_name
string
client_summary
string
Short client-facing summary used when preparing client updates.
cost_impact_type
string
* `none` - No cost impact noted
* `estimate` - Estimated cost impact
* `tbd` - Cost impact to be determined Options: none, estimate, tbd
created_at *
date-time
delay_days
integer
Estimated delay in days caused by the logged issue.
deliveries_notes
string
equipment_on_site
string
estimated_cost_amount
decimal
Optional estimated cost impact amount.
estimated_cost_currency
string
ISO currency code for the estimated cost amount.
id *
uuid
internal_notes
string
Private notes for the project team. Not included in client reports.
is_locked *
boolean
issues_notes
string
locks_at
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attached_files
uuid[]
client_summary
string
Short client-facing summary used when preparing client updates.
cost_impact_type
string
* `none` - No cost impact noted
* `estimate` - Estimated cost impact
* `tbd` - Cost impact to be determined Options: none, estimate, tbd
delay_days
integer
Estimated delay in days caused by the logged issue.
deliveries_notes
string
equipment_on_site
string
estimated_cost_amount
decimal
Optional estimated cost impact amount.
estimated_cost_currency
string
ISO currency code for the estimated cost amount.
internal_notes
string
Private notes for the project team. Not included in client reports.
issues_notes
string
locks_at
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Snag[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachment_ids
uuid[]
completion_policy
string
* `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_applicable
string
* `yes` - Yes
* `no` - No
* `tbc` - TBC Options: yes, no, tbc
description
string
doer
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachments *
FileDetail[]
closed_at *
date-time
completion_policy
string
* `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_applicable
string
* `yes` - Yes
* `no` - No
* `tbc` - TBC Options: yes, no, tbc
description
string
doer
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachment_ids
uuid[]
completion_policy
string
* `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_applicable
string
* `yes` - Yes
* `no` - No
* `tbc` - TBC Options: yes, no, tbc
description
string
doer
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
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
Field
Type
Details
attachment_count
JSON
Computed JSON value; may be null when access is restricted.
attachments *
FileDetail[]
closed_at *
date-time
completion_policy
string
* `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_applicable
string
* `yes` - Yes
* `no` - No
* `tbc` - TBC Options: yes, no, tbc
description
string
doer
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
TaskDependency[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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).
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).
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
TaskList[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignee_ids
uuid[]
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_items
JSON
A list of simple checklist sub-items for this task.
completion_policy
string
Leave 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_date
date
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, ,
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
file_ids
uuid[]
Set the attached files for this task
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent_id
uuid
predecessors
PredecessorInputRequest[]
progress
integer
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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_id
uuid
value
decimal
Responses
201 — Success
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignees *
UserPublic[]
attached_files *
FileDetail[]
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_items
JSON
A list of simple checklist sub-items for this task.
completed_at *
date-time
completion_policy
string
Leave 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_date
date
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
created_by *
uuid
deleted_at *
date-time
deleted_by *
uuid
dependency_predecessors *
TaskDependency[]
dependency_successors *
TaskDependency[]
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
estimate_location_name
string
id *
uuid
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *
boolean
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent *
ParentTask
progress
integer
project *
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
schedule_predecessors *
ScheduleDependency[]
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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
sub_tasks *
SubTask[]
task_type *
TaskType
updated_at *
date-time
value
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignees *
UserPublic[]
attached_files *
FileDetail[]
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_items
JSON
A list of simple checklist sub-items for this task.
completed_at *
date-time
completion_policy
string
Leave 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_date
date
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
created_by *
uuid
deleted_at *
date-time
deleted_by *
uuid
dependency_predecessors *
TaskDependency[]
dependency_successors *
TaskDependency[]
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
estimate_location_name
string
id *
uuid
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *
boolean
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent *
ParentTask
progress
integer
project *
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
schedule_predecessors *
ScheduleDependency[]
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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
sub_tasks *
SubTask[]
task_type *
TaskType
updated_at *
date-time
value
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignee_ids
uuid[]
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_items
JSON
A list of simple checklist sub-items for this task.
completion_policy
string
Leave 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_date
date
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, ,
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
file_ids
uuid[]
Set the attached files for this task
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name
string
order
integer
The order of the task in a list view.
parent_id
uuid
predecessors
PredecessorInputRequest[]
progress
integer
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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_id
uuid
value
decimal
Responses
200 — Success
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignees *
UserPublic[]
attached_files *
FileDetail[]
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_items
JSON
A list of simple checklist sub-items for this task.
completed_at *
date-time
completion_policy
string
Leave 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_date
date
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
created_by *
uuid
deleted_at *
date-time
deleted_by *
uuid
dependency_predecessors *
TaskDependency[]
dependency_successors *
TaskDependency[]
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
estimate_location_name
string
id *
uuid
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *
boolean
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent *
ParentTask
progress
integer
project *
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
schedule_predecessors *
ScheduleDependency[]
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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
sub_tasks *
SubTask[]
task_type *
TaskType
updated_at *
date-time
value
decimal
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Timesheet[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
can_edit
JSON
Computed JSON value; may be null when access is restricted.
can_submit
JSON
Computed JSON value; may be null when access is restricted.
can_unsubmit
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
note
string
Responses
200 — Success
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
can_edit
JSON
Computed JSON value; may be null when access is restricted.
can_submit
JSON
Computed JSON value; may be null when access is restricted.
can_unsubmit
JSON
Computed JSON value; may be null when access is restricted.
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ChangeRequest[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_file_ids
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
draft_init
boolean
draft_prefill_instruction_text
string
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
Logical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tier
string
UI workflow tier for this record; upgrade from simple to comprehensive.
* `simple` - Simple
* `comprehensive` - Comprehensive Options: simple, comprehensive
Responses
201 — Success
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_files *
FileDetail[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
created_at *
date-time
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
entered_by *
uuid
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
items *
ChangeItem[]
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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 *
string
Name of the project.
quote_validity_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
reason
string
Why is this change happening?
reason_codes
JSON
Simple CVI/CVR/proposal reason tick keys.
reason_other_text
string
received_by
string
received_by_email
email
received_by_member_id
uuid
register_number *
string
Stable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *
integer
Project-scoped sequence used to build register_number.
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
Name
Location
Details
change_request_pk *
path
uuid
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
ChangeItem[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
change_request_pk *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
add_value
string or number
adjusted_estimate_work_item
uuid
adjusted_quote_line
uuid
adjusts_existing
boolean
Does this specific item adjust existing work?
description *
string
Specific work item description.
is_omission
boolean
is_provisional_sum
boolean
Is this adjusting a Prov Sum?
omit_value
string or number
quantity
decimal
resource
integer
Link to a standard library resource for exact pricing matches.
source_type
string
* `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
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
Name
Location
Details
change_request_pk *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
change_request_pk *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
add_value
object
adjusted_estimate_work_item
uuid
adjusted_quote_line
uuid
adjusts_existing
boolean
Does this specific item adjust existing work?
created_at *
date-time
description *
string
Specific work item description.
id *
uuid
is_omission
boolean
is_provisional_sum
boolean
Is this adjusting a Prov Sum?
omit_value
object
price_agreed *
boolean
pricing_provenance *
JSON
How the current price was derived, including method and markup inputs.
quantity
decimal
resource
integer
Link to a standard library resource for exact pricing matches.
resource_name
string
source_type
string
* `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
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
Name
Location
Details
change_request_pk *
path
uuid
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
add_value
string or number
adjusted_estimate_work_item
uuid
adjusted_quote_line
uuid
adjusts_existing
boolean
Does this specific item adjust existing work?
description
string
Specific work item description.
is_omission
boolean
is_provisional_sum
boolean
Is this adjusting a Prov Sum?
omit_value
string or number
quantity
decimal
resource
integer
Link to a standard library resource for exact pricing matches.
source_type
string
* `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
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_files *
FileDetail[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
created_at *
date-time
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
entered_by *
uuid
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
items *
ChangeItem[]
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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 *
string
Name of the project.
quote_validity_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
reason
string
Why is this change happening?
reason_codes
JSON
Simple CVI/CVR/proposal reason tick keys.
reason_other_text
string
received_by
string
received_by_email
email
received_by_member_id
uuid
register_number *
string
Stable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *
integer
Project-scoped sequence used to build register_number.
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
Name
Location
Details
id *
path
uuid
project_id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_file_ids
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
draft_init
boolean
draft_prefill_instruction_text
string
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
Logical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tier
string
UI workflow tier for this record; upgrade from simple to comprehensive.
* `simple` - Simple
* `comprehensive` - Comprehensive Options: simple, comprehensive
Responses
200 — Success
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_files *
FileDetail[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
created_at *
date-time
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
entered_by *
uuid
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
items *
ChangeItem[]
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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 *
string
Name of the project.
quote_validity_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
reason
string
Why is this change happening?
reason_codes
JSON
Simple CVI/CVR/proposal reason tick keys.
reason_other_text
string
received_by
string
received_by_email
email
received_by_member_id
uuid
register_number *
string
Stable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *
integer
Project-scoped sequence used to build register_number.
Logical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tier
string
UI workflow tier for this record; upgrade from simple to comprehensive.
* `simple` - Simple
* `comprehensive` - Comprehensive Options: simple, comprehensive
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
page
query
A page number within the paginated result set.
page_size
query
Number of results to return per page.
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
count *
integer
next
uri
previous
uri
results *
Property[]
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Field
Type
Details
error *
object
503 — API limits unavailable
Field
Type
Details
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
Name
Location
Details
Idempotency-Key *
header
Unique per service account; retained for 24 hours. Reuse only for an identical retry.
workspace_id *
path
uuid
JSON request
Field
Type
Details
customer_id *
uuid
name
string
notes
string
property_address
AddressRequest
Responses
201 — Success
Field
Type
Details
created_at *
date-time
customer *
uuid
customer_name *
string
id *
uuid
name
string
notes
string
property_address
Address
updated_at *
date-time
workspace *
uuid
workspace_name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
204 — No response body400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
Responses
200 — Success
Field
Type
Details
created_at *
date-time
customer *
uuid
customer_name *
string
id *
uuid
name
string
notes
string
property_address
Address
updated_at *
date-time
workspace *
uuid
workspace_name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
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
Name
Location
Details
id *
path
uuid
workspace_id *
path
uuid
JSON request
Field
Type
Details
customer_id
uuid
name
string
notes
string
property_address
AddressRequest
Responses
200 — Success
Field
Type
Details
created_at *
date-time
customer *
uuid
customer_name *
string
id *
uuid
name
string
notes
string
property_address
Address
updated_at *
date-time
workspace *
uuid
workspace_name *
string
400 — Invalid request
Field
Type
Details
error *
object
401 — Missing, invalid, expired, or revoked key
Field
Type
Details
error *
object
403 — Insufficient permissions or disabled access
Field
Type
Details
error *
object
404 — Resource not found
Field
Type
Details
error *
object
409 — Idempotency conflict or invalid business transition
Field
Type
Details
error *
object
429 — Request quota exceeded
Field
Type
Details
error *
object
500 — Unexpected server error; use the request ID when contacting support
Classification 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_work
boolean
anticipated_form_reference
string
attached_files *
FileDetail[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
created_at *
date-time
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
entered_by *
uuid
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
id *
uuid
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
items *
ChangeItem[]
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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 *
string
Name of the project.
quote_validity_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
reason
string
Why is this change happening?
reason_codes
JSON
Simple CVI/CVR/proposal reason tick keys.
reason_other_text
string
received_by
string
received_by_email
email
received_by_member_id
uuid
register_number *
string
Stable display ref e.g. CHG-001. Terminology labels are separate.
register_sequence *
integer
Project-scoped sequence used to build register_number.
Logical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tier
string
UI workflow tier for this record; upgrade from simple to comprehensive.
* `simple` - Simple
* `comprehensive` - Comprehensive Options: simple, comprehensive
ChangeRequestRequest
Field
Type
Details
addition_pricing_type
string
Classification 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_work
boolean
anticipated_form_reference
string
attached_file_ids
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
draft_init
boolean
draft_prefill_instruction_text
string
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
Logical grouping for filters (warning, instruction, request, confirmation, advisory).
workflow_tier
string
UI workflow tier for this record; upgrade from simple to comprehensive.
* `simple` - Simple
* `comprehensive` - Comprehensive Options: simple, comprehensive
Contact
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
id *
uuid
is_primary_contact
boolean
linked_user *
LinkedUserAvatar
name *
string
notes
string
phone_number
string
role
string
ContactRequest
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
email
email
is_primary_contact
boolean
name *
string
notes
string
phone_number
string
role
string
CostCode
Field
Type
Details
code
string
cost_types
CostCodeTypeLink[]
default_rate
decimal
default_unit
string
external_code
string
id *
integer
is_active
boolean
is_system *
boolean
name *
string
CostCodeRequest
Field
Type
Details
code
string
cost_types
CostCodeTypeLinkRequest[]
default_rate
decimal
default_unit
string
external_code
string
is_active
boolean
name *
string
CostCodeTypeLink
Field
Type
Details
cost_type *
integer
cost_type_key *
string
cost_type_name *
string
id
integer
nominal_code
string
sage_ledger_account_id
string
CostCodeTypeLinkRequest
Field
Type
Details
cost_type *
integer
id
integer
nominal_code
string
sage_ledger_account_id
string
CostType
Field
Type
Details
id *
integer
is_active
boolean
is_core *
boolean
key *
string
name *
string
sort_order
integer
CostTypeRequest
Field
Type
Details
is_active
boolean
name *
string
sort_order
integer
CustomProjectStatus
Field
Type
Details
color
string
Optional hex color.
description
string
Optional tooltip description.
id *
uuid
name *
string
Display name, e.g., 'Quote Submitted'.
order
integer
Display order in dropdowns.
status_set
JSON
Computed JSON value; may be null when access is restricted.
status_set_id
uuid
system_status *
string
Core 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
Field
Type
Details
color
string
Optional hex color.
description
string
Optional tooltip description.
name *
string
Display name, e.g., 'Quote Submitted'.
order
integer
Display order in dropdowns.
status_set
JSON
Computed JSON value; may be null when access is restricted.
status_set_id
uuid
system_status *
string
Core 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
Field
Type
Details
avatar_color
string
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
workspace *
uuid
CustomerList
Field
Type
Details
avatar_color *
string
Hex colour for initials fallback when no image is set.
avatar_url
JSON
Computed JSON value; may be null when access is restricted.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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
Computed JSON value; may be null when access is restricted.
effective_for_name
JSON
Computed JSON value; may be null when access is restricted.
effective_from_address
JSON
Computed JSON value; may be null when access is restricted.
effective_from_name
JSON
Computed JSON value; may be null when access is restricted.
effective_from_tax_id
JSON
Computed JSON value; may be null when access is restricted.
effective_logo_url
JSON
Computed JSON value; may be null when access is restricted.
effective_terms
JSON
Computed JSON value; may be null when access is restricted.
email_message
string
Optional message to include in the email when sending/issuing. Not shown on the invoice PDF.
header_config
JSON
internal_notes
string
is_application
JSON
Computed JSON value; may be null when access is restricted.
issue_date *
date
line_items *
InvoiceLineItemRequest[]
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_payable
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
notes
string
parent_invoice
uuid
previously_certified
JSON
Computed JSON value; may be null when access is restricted.
project *
uuid
reference
string
retention_amount
JSON
Computed JSON value; may be null when access is restricted.
retention_rate
decimal
source_attributions
JSON
Computed JSON value; may be null when access is restricted.
source_quote
uuid
subtotal
JSON
Computed JSON value; may be null when access is restricted.
tax_amount
JSON
Computed JSON value; may be null when access is restricted.
tax_rate
decimal
Override tax rate. If null, uses workspace default.
terms_override
string
Optional invoice-specific terms; if blank uses workspace default_terms_and_conditions.
title
string
total
JSON
Computed JSON value; may be null when access is restricted.
workspace_country_iso2
JSON
Computed JSON value; may be null when access is restricted.
workspace_tax_label
JSON
Computed JSON value; may be null when access is restricted.
InvoiceLineItem
Field
Type
Details
claim_percentage
decimal
For progress claims, what % of the original sum is being billed now.
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_name
JSON
Computed JSON value; may be null when access is restricted.
description
string
id *
uuid
invoice *
uuid
line_total
decimal
order
integer
quantity
decimal
quote_line
uuid
section
uuid
Pay-application section this line belongs to. Null on legacy free-text rows.
unit_of_measure
string
unit_price
decimal
InvoiceLineItemRequest
Field
Type
Details
claim_percentage
decimal
For progress claims, what % of the original sum is being billed now.
cost_category
string
* `labour` - Labour
* `materials` - Materials
* `plant` - Plant
* `subcontract` - Subcontract
* `overhead` - Overhead
* `other` - Other
* `professional` - Professional Options: labour, materials, plant, subcontract, overhead, other, professional
cost_code
integer
cost_code_name
JSON
Computed JSON value; may be null when access is restricted.
description
string
order
integer
quantity
decimal
quote_line
uuid
section
uuid
Pay-application section this line belongs to. Null on legacy free-text rows.
unit_of_measure
string
unit_price *
decimal
InvoiceSection
Field
Type
Details
claim_percentage *
decimal
This application's share of the section's original scheduled value.
heading
JSON
Computed 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_type
string
source_quote *
uuid
source_quote_number
string
source_quote_title
string
source_variation_number
integer
this_period
JSON
Computed JSON value; may be null when access is restricted.
InvoiceSectionRequest
Field
Type
Details
heading
JSON
Computed JSON value; may be null when access is restricted.
this_period
JSON
Computed JSON value; may be null when access is restricted.
InvoiceSendInputRequest
Field
Type
Details
copy_to_sender
boolean
email_bcc
email[]
email_body
string
email_cc
email[]
email_subject
string
email_to
email[]
schedule_follow_up
boolean
InvoiceSendResult
Field
Type
Details
doc
object
emailed_to *
email[]
invoice *
InvoiceDetail
Serializer 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
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
Classification 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_work
boolean
anticipated_form_reference
string
attached_file_ids
uuid[]
attention_reasons
JSON
Computed JSON value; may be null when access is restricted.
Computed JSON value; may be null when access is restricted.
base_quote
uuid
The original approved Quote/Agreement this change applies to.
base_quote_number
JSON
Computed JSON value; may be null when access is restricted.
base_quote_title
JSON
Computed JSON value; may be null when access is restricted.
builder_proceeds
boolean
Does the builder agree to proceed?
builder_reject_reason
string
Required if builder_proceeds is False.
builder_signed_at
date-time
ca_financial_note
string
Optional CA note attached when submitting for client financial approval.
classification_other
boolean
Other classification selected: requires classification_other_text.
classification_other_text
string
Mandatory free text when classification_other is set.
client_countersigned_at
date-time
client_document_reference
string
Client / CA reference number from the source document, if any.
communication_method
string
How the instruction was received (e.g., email, in_person).
current_sla
JSON
Computed JSON value; may be null when access is restricted.
cvr_next_step
string
CVR: 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_causes
JSON
Notice of Delay cause checkbox keys.
delay_narrative
string
Notice of Delay free-text narrative.
document_layout_mode
JSON
Computed JSON value; may be null when access is restricted.
draft_init
boolean
draft_prefill_instruction_text
string
effective_workflow_tier
JSON
Computed JSON value; may be null when access is restricted.
eot_to_be_determined
boolean
True if EOT is acknowledged but will be calculated later.
extension_of_time_days
integer
Requested adjustment to the completion date (EOT).
extension_of_time_hours
decimal
Requested hours of time impact, in addition to extension_of_time_days.
given_by
string
Name of the person who gave the instruction.
given_by_email
email
Email for the given_by contact when selected from the project directory.
given_by_member_id
uuid
has_public_consent
JSON
Computed JSON value; may be null when access is restricted.
impacts_design
boolean
Does this change the design?
impacts_quality
boolean
Does this affect quality standards?
impacts_quantity
boolean
Does this change quantities?
includes_loss_and_expense
boolean
Does this claim include additional costs for delay/disruption?
includes_preparation_costs
boolean
Does this claim include the cost of preparing the quotation?
initiation_route
string
Stable create-route id used to tailor the editable detail view.
instruction_text
string
The core instruction given.
is_addition
boolean
is_omission
boolean
is_proxy
boolean
Whether this record was logged on behalf of another party.
is_substitution
boolean
lead_time_dependent
boolean
Material or specialist lead-time dependency on a simple CVI/CVR/proposal.
needs_attention
JSON
Computed JSON value; may be null when access is restricted.
net_impact
JSON
Computed JSON value; may be null when access is restricted.
next_action
JSON
Computed JSON value; may be null when access is restricted.
payment_timing
string
Consumer/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_type
string
Budget 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_start
boolean
True if price is agreed before work commences, False if proceeding immediately.
pricing_strategy
string
Explicit 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_days
integer
Validity period (days) when builder submits a quotation.
quoted_source_quote
uuid
If this change adds a new quoted item, link the source quote.
Default number of days until an invoice is due for this customer.
phone_number
string
relationship_stage
string
Prospect 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_id
string
Tax ID or VAT Number.
PatchedEntryRequest
Field
Type
Details
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
can_manage_entry
JSON
Computed JSON value; may be null when access is restricted.
can_retract_entry
JSON
Computed JSON value; may be null when access is restricted.
can_view_original
JSON
Computed JSON value; may be null when access is restricted.
change_request
JSON
Computed JSON value; may be null when access is restricted.
content_original
JSON
Computed JSON value; may be null when access is restricted.
content_type
integer
content_visible
JSON
Computed JSON value; may be null when access is restricted.
converted_change_request
JSON
Computed JSON value; may be null when access is restricted.
converted_task
JSON
Computed JSON value; may be null when access is restricted.
* `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_items
JSON
A list of simple checklist sub-items for this task.
completion_policy
string
Leave 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_date
date
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, ,
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
file_ids
uuid[]
Set the attached files for this task
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name
string
order
integer
The order of the task in a list view.
parent_id
uuid
predecessors
PredecessorInputRequest[]
progress
integer
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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_id
uuid
value
decimal
PatchedWorkItemGroupRequest
Field
Type
Details
name
string
PatchedWorkItemRequest
Field
Type
Details
boq_path
JSON
Computed JSON value; may be null when access is restricted.
Core 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_id
uuid
timesheet_identity_check_excluded
boolean
Clock in and out on this job without a biometric or photo check.
B2B 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_document
uuid
Signed contract or governing document for this job.
contract_document_detail
JSON
Computed JSON value; may be null when access is restricted.
contract_setup_confirmed_at
date-time
Set when contract setup is confirmed via wizard or quote approval.
contract_start_date
date
contract_type
string
e.g., JCT Minor Works, AIA A101, CCDC 2
contract_version
string
Contract edition/version or internal reference.
electronic_notices_accepted
boolean
Whether the contract/parties accept SiteHut as a written-notice channel.
electronic_signature_consent
boolean
Whether online approvals/e-signatures are accepted for contract records.
eot_approved_days_total
integer
eot_claimed_days_total
integer
eots
EOTEntry[]
governing_region
string
Governing country, state, or region for contract administration.
initial_contract_sum
decimal
Manual baseline used when no main quote is selected and job basis is Contract.
Whether the LAD amount applies per day or per week.
* `day` - Per day
* `week` - Per week Options: day, week
notice_recipient_member_ids
JSON
Project participant user IDs who should receive formal contract notices.
notice_recipient_roles
string
Optional role labels for parties not on SiteHut, e.g. Client, CA, Architect.
payment_period_days
integer
reopen_reason *
string
reopened_at *
date-time
reopened_by *
uuid
retention_rate
decimal
revised_completion_date
date
stage_payments_enabled
boolean
stages
StagePayment[]
statutory_prompt_payment_applies
boolean
e.g., UK HGCRA, US Prompt Pay Acts
variation_clauses
string
ProjectCommercialRequest
Field
Type
Details
apply_retention
boolean
bespoke_contract_name
string
contract_administrator
uuid
contract_completion_date
date
contract_customer_type
string
B2B 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_document
uuid
Signed contract or governing document for this job.
contract_document_detail
JSON
Computed JSON value; may be null when access is restricted.
contract_setup_confirmed_at
date-time
Set when contract setup is confirmed via wizard or quote approval.
contract_start_date
date
contract_type
string
e.g., JCT Minor Works, AIA A101, CCDC 2
contract_version
string
Contract edition/version or internal reference.
electronic_notices_accepted
boolean
Whether the contract/parties accept SiteHut as a written-notice channel.
electronic_signature_consent
boolean
Whether online approvals/e-signatures are accepted for contract records.
eot_approved_days_total
integer
eot_claimed_days_total
integer
eots
EOTEntryRequest[]
governing_region
string
Governing country, state, or region for contract administration.
initial_contract_sum
decimal
Manual baseline used when no main quote is selected and job basis is Contract.
Computed JSON value; may be null when access is restricted.
show_on_calendar
boolean
If True, this snag appears on calendars when it has a due date.
show_on_gantt
boolean
If True, this snag appears on the project Gantt chart when it has a due date.
source_timeline_entry_id
uuid
Optional source timeline entry id when this snag was created from a message.
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
title *
string
SnagTransitionRequest
Field
Type
Details
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
Field
Type
Details
amount
decimal
id
integer
is_invoiced
boolean
name *
string
notes
string
order *
integer
percentage
decimal
StagePaymentRequest
Field
Type
Details
amount
decimal
id
integer
is_invoiced
boolean
name *
string
notes
string
order *
integer
percentage
decimal
SubTask
Field
Type
Details
assignees *
UserPublic[]
end_date
date
id *
uuid
name *
string
progress
integer
Manual completion percentage (0-100). Null means auto.
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
SubTaskRequest
Field
Type
Details
end_date
date
name *
string
progress
integer
Manual completion percentage (0-100). Null means auto.
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
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignees *
UserPublic[]
attached_files *
FileDetail[]
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_items
JSON
A list of simple checklist sub-items for this task.
completed_at *
date-time
completion_policy
string
Leave 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_date
date
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
created_by *
uuid
deleted_at *
date-time
deleted_by *
uuid
dependency_predecessors *
TaskDependency[]
dependency_successors *
TaskDependency[]
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
estimate_location_name
string
id *
uuid
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *
boolean
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent *
ParentTask
progress
integer
project *
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
schedule_predecessors *
ScheduleDependency[]
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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
* `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_done
JSON
Computed JSON value; may be null when access is restricted.
checklist_total
JSON
Computed JSON value; may be null when access is restricted.
completed_at *
date-time
completion_policy *
string
Leave 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_date
date
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_date
date
end_time *
time
estimate_location_id *
uuid
Optional plot this task is tagged to.
id *
uuid
is_date_locked *
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_deleted *
boolean
is_milestone *
boolean
If True, this task is a major project milestone.
is_private *
boolean
name *
string
order *
integer
The order of the task in a list view.
parent *
ParentTask
progress
integer
project *
uuid
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
schedule_predecessors *
ScheduleDependency[]
selected_user_ids *
JSON
show_on_calendar *
boolean
If True, this task appears on the user and project calendars.
show_on_gantt *
boolean
If True, this task appears on the project Gantt chart.
start_date
date
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
value
decimal
TaskRequest
Field
Type
Details
actual_end_date
date
actual_start_date
date
all_day
boolean
assignee_ids
uuid[]
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_items
JSON
A list of simple checklist sub-items for this task.
completion_policy
string
Leave 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_date
date
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, ,
description
string
due_date
date
duration_days
integer
end_date
date
end_time
time
estimate_location_id
uuid
file_ids
uuid[]
Set the attached files for this task
is_date_locked
boolean
If True, this task's dates will not be automatically adjusted by dependencies.
is_milestone
boolean
If True, this task is a major project milestone.
is_private
boolean
name *
string
order
integer
The order of the task in a list view.
parent_id
uuid
predecessors
PredecessorInputRequest[]
progress
integer
resolved_completion_policy
JSON
Computed JSON value; may be null when access is restricted.
selected_user_ids
JSON
show_on_calendar
boolean
If True, this task appears on the user and project calendars.
show_on_gantt
boolean
If True, this task appears on the project Gantt chart.
source_quote_line_item
uuid
source_quote_number
JSON
Computed JSON value; may be null when access is restricted.
source_timeline_entry_id
uuid
start_date
date
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_id
uuid
value
decimal
TaskSimple
Field
Type
Details
id *
uuid
name *
string
TaskSimpleRequest
Field
Type
Details
name *
string
TaskType
Field
Type
Details
icon_name
string
Optional icon name for the frontend.
id *
uuid
name *
string
parent_id
uuid
workspace *
uuid
TaskTypeRequest
Field
Type
Details
icon_name
string
Optional icon name for the frontend.
name *
string
parent_id
uuid
Timesheet
Field
Type
Details
approval
JSON
Computed JSON value; may be null when access is restricted.
approved_at *
date-time
can_edit
JSON
Computed JSON value; may be null when access is restricted.
can_submit
JSON
Computed JSON value; may be null when access is restricted.
can_unsubmit
JSON
Computed JSON value; may be null when access is restricted.