API reference / Projects
Projects API
382 endpoints. Scopes: Scalar360.projects.READ, .CREATE, .UPDATE, .DELETE or .ALL. All calls need Authorization: Scalar360-oauthtoken <access_token> — see Authentication.
List
/api/v1/projects
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
status | query | string | No |
archived | query | boolean | No |
sortBy | query | string (default updatedAt) | No |
sortDir | query | string (default desc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
groupId | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create
/api/v1/projects
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
description | string | max length 10000 | |
color | string | max length 32 | |
status | string | ||
priority | string | ||
startDate | string (date) | ||
dueDate | string (date) | ||
ownerMemberId | string (uuid) | ||
access | string | ||
groupId | string (uuid) | ||
strictDates | boolean | ||
methodology | string | ||
workflowPreset | string | ||
seedBlueprint | boolean | ||
key | string | max length 10 |
curl -X POST "https://api.scalar360.com/api/v1/projects" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Get
/api/v1/projects/{projectId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/projects/{projectId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
description | string | max length 10000 | |
color | string | max length 32 | |
status | string | ||
priority | string | ||
startDate | string (date) | ||
dueDate | string (date) | ||
ownerMemberId | string (uuid) | ||
version | integer | Yes | required |
access | string | ||
groupId | string (uuid) | ||
clearGroup | boolean | ||
strictDates | boolean | ||
methodology | string |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","color":"string","status":"string","priority":"string","startDate":"2026-10-12"}'Activity
/api/v1/projects/{projectId}/activity
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | query | string (uuid) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 30) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/activity" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Archive
/api/v1/projects/{projectId}/archive
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/archive" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Backlog
/api/v1/projects/{projectId}/backlog
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
epicId | query | string (uuid) | No |
type | query | string | No |
q | query | string (default ) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/backlog" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Rank
/api/v1/projects/{projectId}/backlog/rank
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskIds | array of string (uuid) | Yes | required, not empty, max length 500 |
afterTaskId | string (uuid) |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/backlog/rank" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"],"afterTaskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Billing
/api/v1/projects/{projectId}/billing
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/billing" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Generate invoice
/api/v1/projects/{projectId}/billing/invoice
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/billing/invoice" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update billing
/api/v1/projects/{projectId}/billing/settings
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
customerId | string (uuid) | ||
defaultHourlyRate | number |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/billing/settings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"customerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","defaultHourlyRate":100}'Budget
/api/v1/projects/{projectId}/budget
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/budget" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/projects/{projectId}/budget
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
budgetType | string | ||
budgetHours | number | ||
budgetAmount | number | ||
budgetAlertPercent | integer | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/budget" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"budgetType":"string","budgetHours":100,"budgetAmount":100,"budgetAlertPercent":1,"version":1}'Calendar
/api/v1/projects/{projectId}/calendar
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
from | query | string (date) | No |
to | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/calendar" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Decisions
/api/v1/projects/{projectId}/client-portal/decisions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/decisions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Links
/api/v1/projects/{projectId}/client-portal/links
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/links" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create link
/api/v1/projects/{projectId}/client-portal/links
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
clientName | string | Yes | required, not blank, max length 120 |
clientEmail | string | max length 254 | |
permissions | array of string | ||
expiresAt | string (date-time) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/links" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientName":"string"}'Update link
/api/v1/projects/{projectId}/client-portal/links/{linkId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
linkId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
clientName | string | Yes | required, not blank, max length 120 |
clientEmail | string | max length 254 | |
permissions | array of string | ||
expiresAt | string (date-time) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/links/{linkId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientName":"string","clientEmail":"string","permissions":["string"],"expiresAt":"2026-10-12T09:30:00Z","version":1}'Revoke link
/api/v1/projects/{projectId}/client-portal/links/{linkId}/revoke
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
linkId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/links/{linkId}/revoke" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Messages
/api/v1/projects/{projectId}/client-portal/messages
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/messages" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reply
/api/v1/projects/{projectId}/client-portal/messages
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 4000 |
website | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/client-portal/messages" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string"}'Billing
/api/v1/projects/{projectId}/commercial/billing
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/billing" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create milestone
/api/v1/projects/{projectId}/commercial/billing-milestones
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
basis | string | ||
percent | number | ||
amount | number | ||
taxPercent | number | ||
milestoneId | string (uuid) | ||
dueDate | string (date) | ||
status | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/billing-milestones" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","basis":"string","percent":100,"amount":100,"taxPercent":100,"milestoneId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Update milestone
/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
basis | string | ||
percent | number | ||
amount | number | ||
taxPercent | number | ||
milestoneId | string (uuid) | ||
dueDate | string (date) | ||
status | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","basis":"string","percent":100,"amount":100,"taxPercent":100,"milestoneId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Delete milestone
/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Invoice milestone
/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}/invoice
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/billing-milestones/{milestoneId}/invoice" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Boq
/api/v1/projects/{projectId}/commercial/boq
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Budget from boq
/api/v1/projects/{projectId}/commercial/boq/budget
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/budget" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Export boq
/api/v1/projects/{projectId}/commercial/boq/export
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/export" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Import boq
/api/v1/projects/{projectId}/commercial/boq/import
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
csv | string | ||
replace | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/import" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"csv":"string","replace":true}'Create item
/api/v1/projects/{projectId}/commercial/boq/items
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
sectionId | string (uuid) | ||
itemCode | string | ||
description | string | ||
unit | string | ||
quantity | number | ||
rate | number | ||
taxPercent | number | ||
inventoryItemId | string (uuid) | ||
notes | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/items" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sectionId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","itemCode":"string","description":"string","unit":"string","quantity":100,"rate":100}'Update item
/api/v1/projects/{projectId}/commercial/boq/items/{itemId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
sectionId | string (uuid) | ||
itemCode | string | ||
description | string | ||
unit | string | ||
quantity | number | ||
rate | number | ||
taxPercent | number | ||
inventoryItemId | string (uuid) | ||
notes | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/items/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sectionId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","itemCode":"string","description":"string","unit":"string","quantity":100,"rate":100}'Delete item
/api/v1/projects/{projectId}/commercial/boq/items/{itemId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/items/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Quotation
/api/v1/projects/{projectId}/commercial/boq/quotation
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/quotation" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reorder
/api/v1/projects/{projectId}/commercial/boq/reorder
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
sections | array of object | ||
sections[].id | string (uuid) | ||
sections[].itemIds | array of string (uuid) |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/reorder" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sections":[{"id":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","itemIds":[null]}]}'Create section
/api/v1/projects/{projectId}/commercial/boq/sections
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
area | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/sections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","area":"string","version":1}'Update section
/api/v1/projects/{projectId}/commercial/boq/sections/{sectionId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | ||
area | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/sections/{sectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","area":"string","version":1}'Delete section
/api/v1/projects/{projectId}/commercial/boq/sections/{sectionId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sectionId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/boq/sections/{sectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Change orders
/api/v1/projects/{projectId}/commercial/change-orders
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create change order
/api/v1/projects/{projectId}/commercial/change-orders
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | ||
reason | string | ||
scope | string | ||
costImpact | number | ||
timeImpactDays | integer | ||
shiftDueDate | boolean | ||
items | array of object | ||
items[].boqItemId | string (uuid) | ||
items[].itemCode | string | ||
items[].description | string | ||
items[].unit | string | ||
items[].quantity | number | ||
items[].rate | number | ||
items[].taxPercent | number | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","reason":"string","scope":"string","costImpact":100,"timeImpactDays":1,"shiftDueDate":true}'Update change order
/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
changeOrderId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | ||
reason | string | ||
scope | string | ||
costImpact | number | ||
timeImpactDays | integer | ||
shiftDueDate | boolean | ||
items | array of object | ||
items[].boqItemId | string (uuid) | ||
items[].itemCode | string | ||
items[].description | string | ||
items[].unit | string | ||
items[].quantity | number | ||
items[].rate | number | ||
items[].taxPercent | number | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","reason":"string","scope":"string","costImpact":100,"timeImpactDays":1,"shiftDueDate":true}'Delete change order
/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
changeOrderId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Approve change order
/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/approve
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
changeOrderId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
clientApproverName | string | ||
shiftDueDate | boolean | ||
note | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/approve" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientApproverName":"string","shiftDueDate":true,"note":"string","version":1}'Reject change order
/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/reject
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
changeOrderId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
clientApproverName | string | ||
shiftDueDate | boolean | ||
note | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/reject" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"clientApproverName":"string","shiftDueDate":true,"note":"string","version":1}'Submit change order
/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/submit
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
changeOrderId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/change-orders/{changeOrderId}/submit" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Log consumption
/api/v1/projects/{projectId}/commercial/consumption
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
consumedOn | string (date) | ||
inventoryItemId | string (uuid) | ||
description | string | ||
quantity | number | ||
unit | string | ||
boqItemId | string (uuid) | ||
warehouseId | string (uuid) | ||
notes | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/consumption" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"consumedOn":"2026-10-12","inventoryItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","quantity":100,"unit":"string","boqItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Delete consumption
/api/v1/projects/{projectId}/commercial/consumption/{consumptionId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
consumptionId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/consumption/{consumptionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Contract
/api/v1/projects/{projectId}/commercial/contract
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/contract" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update contract
/api/v1/projects/{projectId}/commercial/contract
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
contractValue | number | ||
retentionPercent | number | ||
advanceAmount | number | ||
advanceRecoveryPercent | number | ||
defectLiabilityDays | integer | ||
completionDate | string (date) | ||
customerId | string (uuid) | ||
clearCustomer | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/contract" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"contractValue":100,"retentionPercent":100,"advanceAmount":100,"advanceRecoveryPercent":100,"defectLiabilityDays":1,"completionDate":"2026-10-12"}'Lookup
/api/v1/projects/{projectId}/commercial/lookups/{type}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
type | path | string | Yes |
q | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/lookups/{type}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create request
/api/v1/projects/{projectId}/commercial/material-requests
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
neededBy | string (date) | ||
location | string | ||
notes | string | ||
items | array of object | ||
items[].inventoryItemId | string (uuid) | ||
items[].description | string | ||
items[].quantity | number | ||
items[].unit | string | ||
items[].boqItemId | string (uuid) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"neededBy":"2026-10-12","location":"string","notes":"string","items":[{"inventoryItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","quantity":100,"unit":"string","boqItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}],"version":1}'Update request
/api/v1/projects/{projectId}/commercial/material-requests/{requestId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
requestId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
neededBy | string (date) | ||
location | string | ||
notes | string | ||
items | array of object | ||
items[].inventoryItemId | string (uuid) | ||
items[].description | string | ||
items[].quantity | number | ||
items[].unit | string | ||
items[].boqItemId | string (uuid) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests/{requestId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"neededBy":"2026-10-12","location":"string","notes":"string","items":[{"inventoryItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","description":"string","quantity":100,"unit":"string","boqItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}],"version":1}'Delete request
/api/v1/projects/{projectId}/commercial/material-requests/{requestId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
requestId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests/{requestId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Request action
/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/{action}
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
requestId | path | string (uuid) | Yes |
action | path | string | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/{action}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Create purchase order
/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/purchase-order
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
requestId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
vendorId | string (uuid) | ||
orderDate | string (date) | ||
dueDate | string (date) | ||
notes | string | ||
lines | array of object | ||
lines[].requestItemId | string (uuid) | ||
lines[].quantity | number | ||
lines[].rate | number | ||
lines[].taxRate | number |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/purchase-order" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vendorId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","orderDate":"2026-10-12","dueDate":"2026-10-12","notes":"string","lines":[{"requestItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","quantity":100,"rate":100,"taxRate":100}]}'Receive
/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/receive
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
requestId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
lines | array of object | ||
lines[].requestItemId | string (uuid) | ||
lines[].quantity | number | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/material-requests/{requestId}/receive" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"lines":[{"requestItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","quantity":100}],"version":1}'Procurement
/api/v1/projects/{projectId}/commercial/procurement
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/procurement" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create running bill
/api/v1/projects/{projectId}/commercial/running-bills
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
periodFrom | string (date) | ||
periodTo | string (date) | ||
retentionPercent | number | ||
notes | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"periodFrom":"2026-10-12","periodTo":"2026-10-12","retentionPercent":100,"notes":"string"}'Running bill
/api/v1/projects/{projectId}/commercial/running-bills/{billId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills/{billId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update running bill
/api/v1/projects/{projectId}/commercial/running-bills/{billId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
periodFrom | string (date) | ||
periodTo | string (date) | ||
retentionPercent | number | ||
advanceRecoveryAmount | number | ||
notes | string | ||
lines | array of object | ||
lines[].boqItemId | string (uuid) | ||
lines[].currentQty | number | ||
lines[].cumulativeQty | number | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills/{billId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"periodFrom":"2026-10-12","periodTo":"2026-10-12","retentionPercent":100,"advanceRecoveryAmount":100,"notes":"string","lines":[{"boqItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","currentQty":100,"cumulativeQty":100}]}'Delete running bill
/api/v1/projects/{projectId}/commercial/running-bills/{billId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills/{billId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Running bill action
/api/v1/projects/{projectId}/commercial/running-bills/{billId}/{action}
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
action | path | string | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills/{billId}/{action}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Retention release
/api/v1/projects/{projectId}/commercial/running-bills/retention-release
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/running-bills/retention-release" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Subcontracts
/api/v1/projects/{projectId}/commercial/subcontracts
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create subcontract
/api/v1/projects/{projectId}/commercial/subcontracts
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
vendorId | string (uuid) | ||
title | string | ||
scope | string | ||
contractValue | number | ||
retentionPercent | number | ||
startDate | string (date) | ||
endDate | string (date) | ||
status | string | ||
items | array of object | ||
items[].boqItemId | string (uuid) | ||
items[].description | string | ||
items[].unit | string | ||
items[].quantity | number | ||
items[].rate | number | ||
items[].taxPercent | number | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vendorId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","title":"string","scope":"string","contractValue":100,"retentionPercent":100,"startDate":"2026-10-12"}'Update subcontract
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
vendorId | string (uuid) | ||
title | string | ||
scope | string | ||
contractValue | number | ||
retentionPercent | number | ||
startDate | string (date) | ||
endDate | string (date) | ||
status | string | ||
items | array of object | ||
items[].boqItemId | string (uuid) | ||
items[].description | string | ||
items[].unit | string | ||
items[].quantity | number | ||
items[].rate | number | ||
items[].taxPercent | number | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"vendorId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","title":"string","scope":"string","contractValue":100,"retentionPercent":100,"startDate":"2026-10-12"}'Delete subcontract
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create subcontract bill
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
periodFrom | string (date) | ||
periodTo | string (date) | ||
retentionPercent | number | ||
notes | string | ||
lines | array of object | ||
lines[].subcontractItemId | string (uuid) | ||
lines[].currentQty | number | ||
lines[].cumulativeQty | number | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"periodFrom":"2026-10-12","periodTo":"2026-10-12","retentionPercent":100,"notes":"string","lines":[{"subcontractItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","currentQty":100,"cumulativeQty":100}],"version":1}'Update subcontract bill
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
periodFrom | string (date) | ||
periodTo | string (date) | ||
retentionPercent | number | ||
notes | string | ||
lines | array of object | ||
lines[].subcontractItemId | string (uuid) | ||
lines[].currentQty | number | ||
lines[].cumulativeQty | number | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"periodFrom":"2026-10-12","periodTo":"2026-10-12","retentionPercent":100,"notes":"string","lines":[{"subcontractItemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","currentQty":100,"cumulativeQty":100}],"version":1}'Delete subcontract bill
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Subcontract bill action
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}/{action}
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
action | path | string | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}/{action}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Vendor bill
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}/vendor-bill
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
billId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/bills/{billId}/vendor-bill" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Work order
/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/work-order
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
subcontractId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/subcontracts/{subcontractId}/work-order" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Summary
/api/v1/projects/{projectId}/commercial/summary
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/commercial/summary" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Dashboard
/api/v1/projects/{projectId}/dashboard
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/dashboard" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Epics
/api/v1/projects/{projectId}/epics
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/epics" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Feed
/api/v1/projects/{projectId}/feed
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
filter | query | string (default all) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/feed" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Forms
/api/v1/projects/{projectId}/forms
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forms" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create form
/api/v1/projects/{projectId}/forms
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
description | string | max length 2000 | |
template | string | max length 40 | |
targetType | string | ||
targetStageId | string (uuid) | ||
targetIssueStatusId | string (uuid) | ||
fields | array of object | max length 40 | |
fields[].key | string | Yes | required, not blank, max length 60 |
fields[].label | string | Yes | required, not blank, max length 120 |
fields[].type | string | Yes | required, not blank |
fields[].required | boolean | ||
fields[].options | array of string | max length 50 | |
fields[].mapsTo | string | max length 80 | |
fields[].placeholder | string | max length 200 | |
fields[].helpText | string | max length 300 | |
isPublic | boolean | ||
active | boolean | ||
successMessage | string | max length 500 | |
regenerateToken | boolean | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forms" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Form
/api/v1/projects/{projectId}/forms/{formId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
formId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forms/{formId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update form
/api/v1/projects/{projectId}/forms/{formId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
formId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
description | string | max length 2000 | |
template | string | max length 40 | |
targetType | string | ||
targetStageId | string (uuid) | ||
targetIssueStatusId | string (uuid) | ||
fields | array of object | max length 40 | |
fields[].key | string | Yes | required, not blank, max length 60 |
fields[].label | string | Yes | required, not blank, max length 120 |
fields[].type | string | Yes | required, not blank |
fields[].required | boolean | ||
fields[].options | array of string | max length 50 | |
fields[].mapsTo | string | max length 80 | |
fields[].placeholder | string | max length 200 | |
fields[].helpText | string | max length 300 | |
isPublic | boolean | ||
active | boolean | ||
successMessage | string | max length 500 | |
regenerateToken | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forms/{formId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","template":"string","targetType":"string","targetStageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","targetIssueStatusId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Delete form
/api/v1/projects/{projectId}/forms/{formId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
formId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/forms/{formId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Submissions
/api/v1/projects/{projectId}/forms/{formId}/submissions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
formId | path | string (uuid) | Yes |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forms/{formId}/submissions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Submit
/api/v1/projects/{projectId}/forms/{formId}/submit
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
formId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
values | map of any | ||
submitterName | string | max length 120 | |
submitterEmail | string | max length 254 | |
website | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forms/{formId}/submit" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"values":{},"submitterName":"string","submitterEmail":"string","website":"string"}'Categories
/api/v1/projects/{projectId}/forums/categories
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forums/categories" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create category
/api/v1/projects/{projectId}/forums/categories
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
displayOrder | integer | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forums/categories" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update category
/api/v1/projects/{projectId}/forums/categories/{categoryId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
categoryId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
displayOrder | integer | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forums/categories/{categoryId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"version":1}'Delete category
/api/v1/projects/{projectId}/forums/categories/{categoryId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
categoryId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/forums/categories/{categoryId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Posts
/api/v1/projects/{projectId}/forums/posts
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
categoryId | query | string (uuid) | No |
q | query | string | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create post
/api/v1/projects/{projectId}/forums/posts
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
categoryId | string (uuid) | ||
title | string | Yes | required, not blank, max length 200 |
body | string | ||
version | integer | ||
mentionMemberIds | array of string (uuid) | max length 50 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string"}'Post
/api/v1/projects/{projectId}/forums/posts/{postId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update post
/api/v1/projects/{projectId}/forums/posts/{postId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
categoryId | string (uuid) | ||
title | string | Yes | required, not blank, max length 200 |
body | string | ||
version | integer | ||
mentionMemberIds | array of string (uuid) | max length 50 |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"categoryId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","title":"string","body":"string","version":1,"mentionMemberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Delete post
/api/v1/projects/{projectId}/forums/posts/{postId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Follow
/api/v1/projects/{projectId}/forums/posts/{postId}/follow
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/follow" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Unfollow
/api/v1/projects/{projectId}/forums/posts/{postId}/follow
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/follow" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Lock
/api/v1/projects/{projectId}/forums/posts/{postId}/lock
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
value | boolean | Yes | required |
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/lock" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"value":true,"version":1}'Pin
/api/v1/projects/{projectId}/forums/posts/{postId}/pin
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
value | boolean | Yes | required |
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/pin" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"value":true,"version":1}'Create reply
/api/v1/projects/{projectId}/forums/posts/{postId}/replies
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | ||
version | integer | ||
mentionMemberIds | array of string (uuid) | max length 50 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/replies" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string","version":1,"mentionMemberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Update reply
/api/v1/projects/{projectId}/forums/posts/{postId}/replies/{replyId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
replyId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | ||
version | integer | ||
mentionMemberIds | array of string (uuid) | max length 50 |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/replies/{replyId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string","version":1,"mentionMemberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Delete reply
/api/v1/projects/{projectId}/forums/posts/{postId}/replies/{replyId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
postId | path | string (uuid) | Yes |
replyId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/forums/posts/{postId}/replies/{replyId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Gantt
/api/v1/projects/{projectId}/gantt
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/gantt" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update mood
/api/v1/projects/{projectId}/interior/mood/{itemId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
imageUrl | string | max length 2000 | |
note | string | max length 2000 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/interior/mood/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"imageUrl":"string","note":"string","version":1}'Delete mood
/api/v1/projects/{projectId}/interior/mood/{itemId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/interior/mood/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Rooms
/api/v1/projects/{projectId}/interior/rooms
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create room
/api/v1/projects/{projectId}/interior/rooms
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
roomType | string | ||
areaSqft | number | ||
floor | string | max length 40 | |
notes | string | max length 2000 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update room
/api/v1/projects/{projectId}/interior/rooms/{roomId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
roomType | string | ||
areaSqft | number | ||
floor | string | max length 40 | |
notes | string | max length 2000 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","roomType":"string","areaSqft":100,"floor":"string","notes":"string","version":1}'Delete room
/api/v1/projects/{projectId}/interior/rooms/{roomId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Mood
/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Add mood link
/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
imageUrl | string | max length 2000 | |
note | string | max length 2000 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"imageUrl":"string","note":"string","version":1}'Reorder mood
/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood/order
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
ids | array of string (uuid) | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood/order" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ids":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Upload mood
/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood/upload
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
roomId | path | string (uuid) | Yes |
note | query | string | No |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/{roomId}/mood/upload" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Reorder rooms
/api/v1/projects/{projectId}/interior/rooms/order
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
ids | array of string (uuid) | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/interior/rooms/order" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ids":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Selections
/api/v1/projects/{projectId}/interior/selections
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create selection
/api/v1/projects/{projectId}/interior/selections
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
roomId | string (uuid) | ||
category | string | ||
itemName | string | Yes | required, not blank, max length 200 |
brand | string | max length 120 | |
model | string | max length 120 | |
finish | string | max length 120 | |
size | string | max length 120 | |
quantity | number | ||
unitPrice | number | ||
supplier | string | max length 200 | |
leadTimeDays | integer | ||
imageUrl | string | max length 2000 | |
status | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"itemName":"string"}'Update selection
/api/v1/projects/{projectId}/interior/selections/{selectionId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
selectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
roomId | string (uuid) | ||
category | string | ||
itemName | string | Yes | required, not blank, max length 200 |
brand | string | max length 120 | |
model | string | max length 120 | |
finish | string | max length 120 | |
size | string | max length 120 | |
quantity | number | ||
unitPrice | number | ||
supplier | string | max length 200 | |
leadTimeDays | integer | ||
imageUrl | string | max length 2000 | |
status | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections/{selectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"roomId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","category":"string","itemName":"string","brand":"string","model":"string","finish":"string"}'Delete selection
/api/v1/projects/{projectId}/interior/selections/{selectionId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
selectionId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections/{selectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Selection status
/api/v1/projects/{projectId}/interior/selections/{selectionId}/status
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
selectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | Yes | required, not blank |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections/{selectionId}/status" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","version":1}'Send for approval
/api/v1/projects/{projectId}/interior/selections/send-for-approval
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
selectionIds | array of string (uuid) | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/interior/selections/send-for-approval" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"selectionIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Statuses
/api/v1/projects/{projectId}/issue-statuses
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issue-statuses" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update statuses
/api/v1/projects/{projectId}/issue-statuses
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
statuses | array of object | Yes | required, length 2-30 |
statuses[].id | string (uuid) | ||
statuses[].label | string | Yes | required, not blank, max length 60 |
statuses[].color | string | max length 20 | |
statuses[].semanticType | string | ||
statuses[].displayOrder | integer | ||
statuses[].version | integer | ||
replacements | map of string (uuid) |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/issue-statuses" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"statuses":[{"id":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","label":"string","color":"string","semanticType":"string","displayOrder":1,"version":1}],"replacements":{}}'List
/api/v1/projects/{projectId}/issues
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
q | query | string (default ) | No |
statusId | query | string (uuid) | No |
severity | query | string | No |
classification | query | string | No |
assigneeId | query | string | No |
reporter | query | string | No |
milestoneId | query | string (uuid) | No |
dueState | query | string | No |
state | query | string | No |
flag | query | string | No |
deleted | query | boolean (default false) | No |
sortBy | query | string (default updatedAt) | No |
sortDir | query | string (default desc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create
/api/v1/projects/{projectId}/issues
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 240 |
description | string | max length 20000 | |
statusId | string (uuid) | ||
severity | string | ||
classification | string | ||
module | string | max length 120 | |
reproducible | string | ||
flag | string | ||
milestoneId | string (uuid) | ||
taskId | string (uuid) | ||
assigneeId | string (uuid) | ||
dueDate | string (date) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string"}'Get
/api/v1/projects/{projectId}/issues/{issueId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/projects/{projectId}/issues/{issueId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 240 |
description | string | max length 20000 | |
statusId | string (uuid) | ||
severity | string | ||
classification | string | ||
module | string | max length 120 | |
reproducible | string | ||
flag | string | ||
milestoneId | string (uuid) | ||
taskId | string (uuid) | ||
assigneeId | string (uuid) | ||
dueDate | string (date) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","description":"string","statusId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","severity":"string","classification":"string","module":"string"}'Delete
/api/v1/projects/{projectId}/issues/{issueId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Activity
/api/v1/projects/{projectId}/issues/{issueId}/activity
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
page | query | integer (default 1) | No |
pageSize | query | integer (default 30) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/activity" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List for issue
/api/v1/projects/{projectId}/issues/{issueId}/attachments
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/attachments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Upload to issue
/api/v1/projects/{projectId}/issues/{issueId}/attachments
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/attachments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Delete from issue
/api/v1/projects/{projectId}/issues/{issueId}/attachments/{attachmentId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
attachmentId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/attachments/{attachmentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Download from issue
/api/v1/projects/{projectId}/issues/{issueId}/attachments/{attachmentId}/download
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
attachmentId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/attachments/{attachmentId}/download" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Comments
/api/v1/projects/{projectId}/issues/{issueId}/comments
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
deleted | query | boolean (default false) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/comments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create comment
/api/v1/projects/{projectId}/issues/{issueId}/comments
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 10000 |
mentionMemberIds | array of string (uuid) | max length 50 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/comments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string"}'Update comment
/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 10000 |
mentionMemberIds | array of string (uuid) | max length 50 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string","mentionMemberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"],"version":1}'Delete comment
/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore comment
/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/comments/{commentId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Convert to task
/api/v1/projects/{projectId}/issues/{issueId}/convert-to-task
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
stageId | string (uuid) | ||
taskListId | string (uuid) | ||
priority | string | ||
closeIssue | boolean | ||
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/convert-to-task" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Followers
/api/v1/projects/{projectId}/issues/{issueId}/followers
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/followers" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Follow
/api/v1/projects/{projectId}/issues/{issueId}/followers/me
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
watching | boolean | Yes | required |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/followers/me" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"watching":true,"version":1}'Issue links
/api/v1/projects/{projectId}/issues/{issueId}/links
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/links" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore
/api/v1/projects/{projectId}/issues/{issueId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Change status
/api/v1/projects/{projectId}/issues/{issueId}/status
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
issueId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
statusId | string (uuid) | ||
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/issues/{issueId}/status" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"statusId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","version":1}'Modules
/api/v1/projects/{projectId}/issues/modules
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/modules" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Summary
/api/v1/projects/{projectId}/issues/summary
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/issues/summary" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Run macro bulk
/api/v1/projects/{projectId}/macros/{macroId}/run
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
macroId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskIds | array of string (uuid) | Yes | required, length 1-200 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/macros/{macroId}/run" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Members
/api/v1/projects/{projectId}/members
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/members" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Add members
/api/v1/projects/{projectId}/members
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
memberIds | array of string (uuid) | Yes | required, not empty, max length 100 |
role | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/members" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"memberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Update member
/api/v1/projects/{projectId}/members/{memberId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
memberId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
role | string | Yes | required, not blank |
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/members/{memberId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"role":"string","version":1}'Remove member
/api/v1/projects/{projectId}/members/{memberId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
memberId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/members/{memberId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Milestones
/api/v1/projects/{projectId}/milestones
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/milestones" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create milestone
/api/v1/projects/{projectId}/milestones
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
description | string | max length 10000 | |
ownerMemberId | string (uuid) | ||
startDate | string (date) | ||
endDate | string (date) | ||
status | string | ||
flag | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/milestones" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
description | string | max length 10000 | |
ownerMemberId | string (uuid) | ||
startDate | string (date) | ||
endDate | string (date) | ||
status | string | ||
flag | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","ownerMemberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","startDate":"2026-10-12","endDate":"2026-10-12","status":"string"}'Delete milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Complete milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}/complete
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}/complete" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Reopen milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}/reopen
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}/reopen" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Restore milestone
/api/v1/projects/{projectId}/milestones/{milestoneId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
milestoneId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/milestones/{milestoneId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Tree
/api/v1/projects/{projectId}/pages
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/pages" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create
/api/v1/projects/{projectId}/pages
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 200 |
content | string | ||
parentId | string (uuid) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/pages" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string"}'Get
/api/v1/projects/{projectId}/pages/{pageId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/projects/{projectId}/pages/{pageId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 200 |
content | string | ||
parentId | string (uuid) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","content":"string","parentId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","version":1}'Delete
/api/v1/projects/{projectId}/pages/{pageId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Move
/api/v1/projects/{projectId}/pages/{pageId}/move
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
parentId | string (uuid) | ||
displayOrder | integer | ||
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}/move" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"parentId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","displayOrder":1,"version":1}'Versions
/api/v1/projects/{projectId}/pages/{pageId}/versions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}/versions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore
/api/v1/projects/{projectId}/pages/{pageId}/versions/{versionId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
pageId | path | string (uuid) | Yes |
versionId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/pages/{pageId}/versions/{versionId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reopen
/api/v1/projects/{projectId}/reopen
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/reopen" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Burn
/api/v1/projects/{projectId}/reports/burn
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
from | query | string (date) | No |
to | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/reports/burn" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore
/api/v1/projects/{projectId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Save as template
/api/v1/projects/{projectId}/save-as-template
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
description | string | max length 2000 | |
shared | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/save-as-template" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Sections
/api/v1/projects/{projectId}/sections
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
sections | array of string | max length 20 |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/sections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1,"sections":["string"]}'Drawings
/api/v1/projects/{projectId}/site/drawings
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
includeSuperseded | query | boolean (default false) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create drawing
/api/v1/projects/{projectId}/site/drawings
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
number | string | Yes | required, not blank, max length 60 |
title | string | Yes | required, not blank, max length 200 |
discipline | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"number":"string","title":"string"}'Update drawing
/api/v1/projects/{projectId}/site/drawings/{drawingId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
drawingId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
number | string | Yes | required, not blank, max length 60 |
title | string | Yes | required, not blank, max length 200 |
discipline | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings/{drawingId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"number":"string","title":"string","discipline":"string","version":1}'Delete drawing
/api/v1/projects/{projectId}/site/drawings/{drawingId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
drawingId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings/{drawingId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Issue revision
/api/v1/projects/{projectId}/site/drawings/{drawingId}/revisions
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
drawingId | path | string (uuid) | Yes |
revision | query | string | No |
notes | query | string | No |
status | query | string | No |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings/{drawingId}/revisions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Drawing status
/api/v1/projects/{projectId}/site/drawings/{drawingId}/status
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
drawingId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | Yes | required, not blank |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/site/drawings/{drawingId}/status" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","version":1}'Upload
/api/v1/projects/{projectId}/site/files
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
ownerType | query | string (default PROJECT) | No |
ownerId | query | string (uuid) | No |
caption | query | string | No |
area | query | string | No |
tags | query | string | No |
takenAt | query | string (date-time) | No |
latitude | query | number | No |
longitude | query | number | No |
clientVisible | query | boolean | No |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/files" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Update file
/api/v1/projects/{projectId}/site/files/{fileId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
fileId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
caption | string | max length 500 | |
area | string | max length 120 | |
tags | array of string | ||
takenAt | string (date-time) | ||
clientVisible | boolean | ||
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/files/{fileId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"caption":"string","area":"string","tags":["string"],"takenAt":"2026-10-12T09:30:00Z","clientVisible":true,"version":1}'Delete file
/api/v1/projects/{projectId}/site/files/{fileId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
fileId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/files/{fileId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Download
/api/v1/projects/{projectId}/site/files/{fileId}/download
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
fileId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/files/{fileId}/download" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Inspections
/api/v1/projects/{projectId}/site/inspections
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create inspection
/api/v1/projects/{projectId}/site/inspections
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
templateId | string (uuid) | ||
title | string | max length 200 | |
category | string | ||
area | string | max length 120 | |
roomId | string (uuid) | ||
inspectionDate | string (date) | ||
inspectorMemberId | string (uuid) | ||
items | array of object | ||
items[].key | string | ||
items[].label | string | ||
items[].expected | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"templateId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","title":"string","category":"string","area":"string","roomId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","inspectionDate":"2026-10-12"}'Update inspection
/api/v1/projects/{projectId}/site/inspections/{inspectionId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
inspectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | max length 200 | |
area | string | max length 120 | |
roomId | string (uuid) | ||
inspectionDate | string (date) | ||
inspectorMemberId | string (uuid) | ||
items | array of object | ||
items[].key | string | ||
items[].label | string | ||
items[].expected | string | ||
items[].result | string | ||
items[].note | string | ||
items[].photoId | string (uuid) | ||
items[].snagId | string (uuid) | ||
items[].snagReference | string | ||
version | integer | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections/{inspectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","area":"string","roomId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","inspectionDate":"2026-10-12","inspectorMemberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","items":[{"key":"string","label":"string","expected":"string","result":"string","note":"string","photoId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}]}'Delete inspection
/api/v1/projects/{projectId}/site/inspections/{inspectionId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
inspectionId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections/{inspectionId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Complete inspection
/api/v1/projects/{projectId}/site/inspections/{inspectionId}/complete
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
inspectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections/{inspectionId}/complete" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Sign off
/api/v1/projects/{projectId}/site/inspections/{inspectionId}/sign-off
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
inspectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
note | string | max length 2000 | |
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections/{inspectionId}/sign-off" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Snags from inspection
/api/v1/projects/{projectId}/site/inspections/{inspectionId}/snags
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
inspectionId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
itemKeys | array of string | ||
trade | string | ||
priority | string | ||
assigneeMemberId | string (uuid) | ||
assigneeName | string | max length 120 | |
dueDate | string (date) |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/inspections/{inspectionId}/snags" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"itemKeys":["string"],"trade":"string","priority":"string","assigneeMemberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","assigneeName":"string","dueDate":"2026-10-12"}'Previous labour
/api/v1/projects/{projectId}/site/labour/previous
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
before | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/labour/previous" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Labour summary
/api/v1/projects/{projectId}/site/labour/summary
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
from | query | string (date) | No |
to | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/labour/summary" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Logs
/api/v1/projects/{projectId}/site/logs
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
from | query | string (date) | No |
to | query | string (date) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create log
/api/v1/projects/{projectId}/site/logs
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
logDate | string (date) | Yes | |
weather | string | ||
temperatureC | number | ||
location | string | max length 200 | |
workDone | string | ||
labour | array of object | ||
labour[].trade | string | ||
labour[].source | string | ||
labour[].party | string | ||
labour[].count | integer | ||
labour[].hours | number | ||
equipment | array of object | ||
equipment[].name | string | ||
equipment[].hours | number | ||
equipment[].status | string | ||
materialsReceived | string | max length 4000 | |
materialRequestId | string (uuid) | ||
visitors | string | max length 2000 | |
safetyStatus | string | ||
safetyNote | string | max length 4000 | |
hindrances | string | max length 4000 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"logDate":"2026-10-12"}'Log
/api/v1/projects/{projectId}/site/logs/{logId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
logId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/{logId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update log
/api/v1/projects/{projectId}/site/logs/{logId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
logId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
logDate | string (date) | ||
weather | string | ||
temperatureC | number | ||
location | string | max length 200 | |
workDone | string | ||
labour | array of object | ||
labour[].trade | string | ||
labour[].source | string | ||
labour[].party | string | ||
labour[].count | integer | ||
labour[].hours | number | ||
equipment | array of object | ||
equipment[].name | string | ||
equipment[].hours | number | ||
equipment[].status | string | ||
materialsReceived | string | max length 4000 | |
materialRequestId | string (uuid) | ||
visitors | string | max length 2000 | |
safetyStatus | string | ||
safetyNote | string | max length 4000 | |
hindrances | string | max length 4000 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/{logId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"logDate":"2026-10-12","weather":"string","temperatureC":100,"location":"string","workDone":"string","labour":[{"trade":"string","source":"string","party":"string","count":1,"hours":100}]}'Delete log
/api/v1/projects/{projectId}/site/logs/{logId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
logId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/{logId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reopen log
/api/v1/projects/{projectId}/site/logs/{logId}/reopen
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
logId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/{logId}/reopen" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Submit log
/api/v1/projects/{projectId}/site/logs/{logId}/submit
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
logId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/{logId}/submit" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Log by date
/api/v1/projects/{projectId}/site/logs/date/{date}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
date | path | string (date) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/logs/date/{date}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Photos
/api/v1/projects/{projectId}/site/photos
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
area | query | string | No |
from | query | string (date) | No |
to | query | string (date) | No |
tag | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/photos" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Rfis
/api/v1/projects/{projectId}/site/rfis
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create rfi
/api/v1/projects/{projectId}/site/rfis
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
subject | string | Yes | required, not blank, max length 200 |
question | string | max length 20000 | |
discipline | string | ||
drawingId | string (uuid) | ||
assigneeMemberId | string (uuid) | ||
externalName | string | max length 120 | |
externalEmail | string | max length 254 | |
dueDate | string (date) | ||
costImpact | boolean | ||
timeImpact | boolean | ||
changeOrderId | string (uuid) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"subject":"string"}'Update rfi
/api/v1/projects/{projectId}/site/rfis/{rfiId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
rfiId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
subject | string | Yes | required, not blank, max length 200 |
question | string | max length 20000 | |
discipline | string | ||
drawingId | string (uuid) | ||
assigneeMemberId | string (uuid) | ||
externalName | string | max length 120 | |
externalEmail | string | max length 254 | |
dueDate | string (date) | ||
costImpact | boolean | ||
timeImpact | boolean | ||
changeOrderId | string (uuid) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis/{rfiId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"subject":"string","question":"string","discipline":"string","drawingId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","assigneeMemberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","externalName":"string"}'Delete rfi
/api/v1/projects/{projectId}/site/rfis/{rfiId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
rfiId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis/{rfiId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Answer rfi
/api/v1/projects/{projectId}/site/rfis/{rfiId}/answer
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
rfiId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
answer | string | Yes | required, not blank, max length 20000 |
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis/{rfiId}/answer" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"answer":"string","version":1}'Rfi status
/api/v1/projects/{projectId}/site/rfis/{rfiId}/status
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
rfiId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | Yes | required, not blank |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/site/rfis/{rfiId}/status" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","version":1}'Snags
/api/v1/projects/{projectId}/site/snags
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create snag
/api/v1/projects/{projectId}/site/snags
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
area | string | max length 120 | |
roomId | string (uuid) | ||
trade | string | max length 60 | |
description | string | Yes | required, not blank, max length 4000 |
priority | string | ||
assigneeMemberId | string (uuid) | ||
assigneeName | string | max length 120 | |
dueDate | string (date) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"description":"string"}'Update snag
/api/v1/projects/{projectId}/site/snags/{snagId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
snagId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
area | string | max length 120 | |
roomId | string (uuid) | ||
trade | string | max length 60 | |
description | string | Yes | required, not blank, max length 4000 |
priority | string | ||
assigneeMemberId | string (uuid) | ||
assigneeName | string | max length 120 | |
dueDate | string (date) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags/{snagId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"area":"string","roomId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","trade":"string","description":"string","priority":"string","assigneeMemberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Delete snag
/api/v1/projects/{projectId}/site/snags/{snagId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
snagId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags/{snagId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Snag status
/api/v1/projects/{projectId}/site/snags/{snagId}/status
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
snagId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | Yes | required, not blank |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags/{snagId}/status" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","version":1}'Readiness
/api/v1/projects/{projectId}/site/snags/readiness
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/snags/readiness" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Submittals
/api/v1/projects/{projectId}/site/submittals
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create submittal
/api/v1/projects/{projectId}/site/submittals
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
item | string | Yes | required, not blank, max length 200 |
submittalType | string | ||
specRef | string | max length 120 | |
supplier | string | max length 200 | |
submittedDate | string (date) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"item":"string"}'Update submittal
/api/v1/projects/{projectId}/site/submittals/{submittalId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
submittalId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
item | string | Yes | required, not blank, max length 200 |
submittalType | string | ||
specRef | string | max length 120 | |
supplier | string | max length 200 | |
submittedDate | string (date) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals/{submittalId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"item":"string","submittalType":"string","specRef":"string","supplier":"string","submittedDate":"2026-10-12","version":1}'Delete submittal
/api/v1/projects/{projectId}/site/submittals/{submittalId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
submittalId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals/{submittalId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Resubmit
/api/v1/projects/{projectId}/site/submittals/{submittalId}/resubmit
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
submittalId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals/{submittalId}/resubmit" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Review submittal
/api/v1/projects/{projectId}/site/submittals/{submittalId}/review
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
submittalId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
status | string | Yes | required, not blank |
reviewerNotes | string | max length 4000 | |
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/site/submittals/{submittalId}/review" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status":"string","version":1}'Sprints
/api/v1/projects/{projectId}/sprints
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create
/api/v1/projects/{projectId}/sprints
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
goal | string | max length 2000 | |
startDate | string (date) | ||
endDate | string (date) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/sprints" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Sprint
/api/v1/projects/{projectId}/sprints/{sprintId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update
/api/v1/projects/{projectId}/sprints/{sprintId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
goal | string | max length 2000 | |
startDate | string (date) | ||
endDate | string (date) | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","goal":"string","startDate":"2026-10-12","endDate":"2026-10-12","version":1}'Delete
/api/v1/projects/{projectId}/sprints/{sprintId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Burndown
/api/v1/projects/{projectId}/sprints/{sprintId}/burndown
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}/burndown" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Complete
/api/v1/projects/{projectId}/sprints/{sprintId}/complete
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
carryOver | string | ||
targetSprintId | string (uuid) | ||
newSprintName | string | max length 120 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}/complete" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Report
/api/v1/projects/{projectId}/sprints/{sprintId}/report
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}/report" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Start
/api/v1/projects/{projectId}/sprints/{sprintId}/start
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
sprintId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | max length 120 | |
goal | string | max length 2000 | |
startDate | string (date) | Yes | |
endDate | string (date) | Yes | |
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/{sprintId}/start" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startDate":"2026-10-12","endDate":"2026-10-12","version":1}'Active sprint
/api/v1/projects/{projectId}/sprints/active
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/active" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Move items
/api/v1/projects/{projectId}/sprints/items
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskIds | array of string (uuid) | Yes | required, not empty, max length 500 |
sprintId | string (uuid) |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/items" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Velocity
/api/v1/projects/{projectId}/sprints/velocity
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
limit | query | integer (default 6) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/sprints/velocity" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Post status
/api/v1/projects/{projectId}/status-updates
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 20000 |
statusColor | string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/status-updates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string"}'Delete status
/api/v1/projects/{projectId}/status-updates/{updateId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
updateId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/status-updates/{updateId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Summary
/api/v1/projects/{projectId}/summary
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/summary" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Task lists
/api/v1/projects/{projectId}/task-lists
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/task-lists" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create task list
/api/v1/projects/{projectId}/task-lists
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
version | integer | ||
milestoneId | string (uuid) | ||
clearMilestone | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/task-lists" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update task list
/api/v1/projects/{projectId}/task-lists/{taskListId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskListId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
version | integer | ||
milestoneId | string (uuid) | ||
clearMilestone | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/task-lists/{taskListId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","version":1,"milestoneId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","clearMilestone":true}'Delete task list
/api/v1/projects/{projectId}/task-lists/{taskListId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskListId | path | string (uuid) | Yes |
version | query | integer | Yes |
moveToTaskListId | query | string (uuid) | No |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/task-lists/{taskListId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reorder task lists
/api/v1/projects/{projectId}/task-lists/reorder
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskListIds | array of string (uuid) | Yes | required, not empty, max length 200 |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/task-lists/reorder" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskListIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Tasks
/api/v1/projects/{projectId}/tasks
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
q | query | string (default ) | No |
stageId | query | string (uuid) | No |
assigneeId | query | string (uuid) | No |
priority | query | string | No |
dueState | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
sortBy | query | string (default position) | No |
sortDir | query | string (default asc) | No |
deleted | query | boolean (default false) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 50) | No |
taskListId | query | string (uuid) | No |
tagId | query | string (uuid) | No |
parentTaskId | query | string (uuid) | No |
includeSubtasks | query | boolean (default false) | No |
resolution | query | string | No |
team | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create task
/api/v1/projects/{projectId}/tasks
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 240 |
description | string | max length 20000 | |
priority | string | ||
startDate | string (date) | ||
dueDate | string (date) | ||
stageId | string (uuid) | ||
assigneeIds | array of string (uuid) | max length 50 | |
version | integer | ||
taskListId | string (uuid) | ||
parentTaskId | string (uuid) | ||
estimatedMinutes | integer | >= 0, <= 1000000 | |
billingType | string | ||
tagIds | array of string (uuid) | max length 30 | |
itemType | string | ||
epicId | string (uuid) | ||
clearEpic | boolean | ||
storyPoints | number | >= 0, <= 999 | |
clearStoryPoints | boolean | ||
sprintId | string (uuid) | ||
clearSprint | boolean | ||
resolution | string | ||
teamId | string (uuid) | ||
clearTeam | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string"}'Get task
/api/v1/projects/{projectId}/tasks/{taskId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update task
/api/v1/projects/{projectId}/tasks/{taskId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 240 |
description | string | max length 20000 | |
priority | string | ||
startDate | string (date) | ||
dueDate | string (date) | ||
stageId | string (uuid) | ||
assigneeIds | array of string (uuid) | max length 50 | |
version | integer | ||
taskListId | string (uuid) | ||
parentTaskId | string (uuid) | ||
estimatedMinutes | integer | >= 0, <= 1000000 | |
billingType | string | ||
tagIds | array of string (uuid) | max length 30 | |
itemType | string | ||
epicId | string (uuid) | ||
clearEpic | boolean | ||
storyPoints | number | >= 0, <= 999 | |
clearStoryPoints | boolean | ||
sprintId | string (uuid) | ||
clearSprint | boolean | ||
resolution | string | ||
teamId | string (uuid) | ||
clearTeam | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","description":"string","priority":"string","startDate":"2026-10-12","dueDate":"2026-10-12","stageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Delete task
/api/v1/projects/{projectId}/tasks/{taskId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Assign me
/api/v1/projects/{projectId}/tasks/{taskId}/assign-me
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/assign-me" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"List
/api/v1/projects/{projectId}/tasks/{taskId}/attachments
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/attachments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Upload
/api/v1/projects/{projectId}/tasks/{taskId}/attachments
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
Request body: multipart/form-data with a file field.
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/attachments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-F "file=@/path/to/file"Delete
/api/v1/projects/{projectId}/tasks/{taskId}/attachments/{attachmentId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
attachmentId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/attachments/{attachmentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Download
/api/v1/projects/{projectId}/tasks/{taskId}/attachments/{attachmentId}/download
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
attachmentId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/attachments/{attachmentId}/download" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Checklist
/api/v1/projects/{projectId}/tasks/{taskId}/checklist
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/checklist" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create checklist item
/api/v1/projects/{projectId}/tasks/{taskId}/checklist
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 500 |
completed | boolean | ||
displayOrder | integer | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/checklist" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string"}'Update checklist item
/api/v1/projects/{projectId}/tasks/{taskId}/checklist/{itemId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
title | string | Yes | required, not blank, max length 500 |
completed | boolean | ||
displayOrder | integer | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/checklist/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"title":"string","completed":true,"displayOrder":1,"version":1}'Delete checklist item
/api/v1/projects/{projectId}/tasks/{taskId}/checklist/{itemId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
itemId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/checklist/{itemId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Clone task
/api/v1/projects/{projectId}/tasks/{taskId}/clone
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
includeSubtasks | boolean | ||
includeChecklist | boolean | ||
includeLinks | boolean | ||
title | string | max length 240 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/clone" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"includeSubtasks":true,"includeChecklist":true,"includeLinks":true,"title":"string"}'Comments
/api/v1/projects/{projectId}/tasks/{taskId}/comments
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
deleted | query | boolean (default false) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/comments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create comment
/api/v1/projects/{projectId}/tasks/{taskId}/comments
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 10000 |
mentionMemberIds | array of string (uuid) | max length 50 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/comments" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string"}'Update comment
/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
body | string | Yes | required, not blank, max length 10000 |
mentionMemberIds | array of string (uuid) | max length 50 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"body":"string","mentionMemberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"],"version":1}'Delete comment
/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore comment
/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
commentId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/comments/{commentId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Completion
/api/v1/projects/{projectId}/tasks/{taskId}/completion
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
percent | integer | >= 0, <= 100 | |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/completion" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"percent":1,"version":1}'Dependencies
/api/v1/projects/{projectId}/tasks/{taskId}/dependencies
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/dependencies" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Add dependency
/api/v1/projects/{projectId}/tasks/{taskId}/dependencies
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
predecessorTaskId | string (uuid) | ||
successorTaskId | string (uuid) | ||
type | string | ||
lagDays | integer | >= -365, <= 365 |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/dependencies" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"predecessorTaskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","successorTaskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","type":"string","lagDays":1}'Delete dependency
/api/v1/projects/{projectId}/tasks/{taskId}/dependencies/{dependencyId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
dependencyId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/dependencies/{dependencyId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Permalink
/api/v1/projects/{projectId}/tasks/{taskId}/link
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/link" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Links
/api/v1/projects/{projectId}/tasks/{taskId}/links
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/links" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Link
/api/v1/projects/{projectId}/tasks/{taskId}/links
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
linkType | string | Yes | required, not blank |
targetTaskId | string (uuid) | ||
targetIssueId | string (uuid) |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/links" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"linkType":"string"}'Unlink
/api/v1/projects/{projectId}/tasks/{taskId}/links/{linkId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
linkId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/links/{linkId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Run macro
/api/v1/projects/{projectId}/tasks/{taskId}/macros/{macroId}/run
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
macroId | path | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/macros/{macroId}/run" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Move to project
/api/v1/projects/{projectId}/tasks/{taskId}/move
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
targetProjectId | string (uuid) | Yes | |
stageId | string (uuid) | ||
taskListId | string (uuid) | ||
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/move" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"targetProjectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","version":1}'Move task
/api/v1/projects/{projectId}/tasks/{taskId}/move
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
stageId | string (uuid) | ||
position | integer | Yes | required |
version | integer | Yes | required |
resolution | string |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/move" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"stageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","position":1,"version":1,"resolution":"string"}'Recurrence
/api/v1/projects/{projectId}/tasks/{taskId}/recurrence
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/recurrence" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Set recurrence
/api/v1/projects/{projectId}/tasks/{taskId}/recurrence
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
frequency | string | Yes | required, not blank |
intervalN | integer | >= 1, <= 366 | |
byWeekdays | array of string | ||
monthDay | integer | >= 1, <= 31 | |
mode | string | ||
ends | string | ||
endCount | integer | >= 1, <= 1000 | |
endDate | string (date) | ||
copySubtasks | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/recurrence" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"frequency":"string","intervalN":1,"byWeekdays":["string"],"monthDay":1,"mode":"string","ends":"string"}'Delete recurrence
/api/v1/projects/{projectId}/tasks/{taskId}/recurrence
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
version | query | integer | No |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/recurrence" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reminders
/api/v1/projects/{projectId}/tasks/{taskId}/reminders
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/reminders" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Add reminder
/api/v1/projects/{projectId}/tasks/{taskId}/reminders
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
remindType | string | Yes | required, not blank |
offsetMinutes | integer | >= 0, <= 86400 | |
remindAt | string (date-time) | ||
memberId | string (uuid) | ||
allAssignees | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/reminders" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"remindType":"string"}'Update reminder
/api/v1/projects/{projectId}/tasks/{taskId}/reminders/{reminderId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
reminderId | path | string (uuid) | Yes |
version | query | integer | No |
| Body field | Type | Required | Notes |
|---|---|---|---|
remindType | string | Yes | required, not blank |
offsetMinutes | integer | >= 0, <= 86400 | |
remindAt | string (date-time) | ||
memberId | string (uuid) | ||
allAssignees | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/reminders/{reminderId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"remindType":"string","offsetMinutes":1,"remindAt":"2026-10-12T09:30:00Z","memberId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","allAssignees":true}'Delete reminder
/api/v1/projects/{projectId}/tasks/{taskId}/reminders/{reminderId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
reminderId | path | string (uuid) | Yes |
version | query | integer | No |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/reminders/{reminderId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Restore task
/api/v1/projects/{projectId}/tasks/{taskId}/restore
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/restore" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1}'Schedule task
/api/v1/projects/{projectId}/tasks/{taskId}/schedule
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
startDate | string (date) | ||
dueDate | string (date) | ||
version | integer | Yes | required |
cascade | boolean |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/schedule" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"startDate":"2026-10-12","dueDate":"2026-10-12","version":1,"cascade":true}'Status timeline
/api/v1/projects/{projectId}/tasks/{taskId}/status-timeline
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/status-timeline" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Subtasks
/api/v1/projects/{projectId}/tasks/{taskId}/subtasks
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/subtasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Transition
/api/v1/projects/{projectId}/tasks/{taskId}/transition
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
stageId | string (uuid) | Yes | |
position | integer | ||
version | integer | Yes | required |
comment | string | max length 20000 | |
startDate | string (date) | ||
dueDate | string (date) | ||
assigneeIds | array of string (uuid) | max length 50 | |
estimatedMinutes | integer | >= 0, <= 1000000 | |
description | string | max length 20000 | |
tagIds | array of string (uuid) | max length 30 | |
customFields | map of any |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/transition" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"stageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","version":1}'Task transitions
/api/v1/projects/{projectId}/tasks/{taskId}/transitions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/transitions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Watchers
/api/v1/projects/{projectId}/tasks/{taskId}/watchers
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/watchers" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update watching
/api/v1/projects/{projectId}/tasks/{taskId}/watchers/me
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
watching | boolean | Yes | required |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/{taskId}/watchers/me" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"watching":true,"version":1}'Export
/api/v1/projects/{projectId}/tasks/export
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
q | query | string (default ) | No |
stageId | query | string (uuid) | No |
assigneeId | query | string (uuid) | No |
priority | query | string | No |
dueState | query | string | No |
startDate | query | string (date) | No |
endDate | query | string (date) | No |
taskListId | query | string (uuid) | No |
tagId | query | string (uuid) | No |
includeSubtasks | query | boolean (default true) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/export" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Import csv
/api/v1/projects/{projectId}/tasks/import
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
csv | string | Yes | required, not blank, max length 4000000 |
mapping | map of string | ||
dryRun | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/tasks/import" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"csv":"string"}'Terminology
/api/v1/projects/{projectId}/terminology
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
terminology | map of string | max length 20 |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/terminology" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1,"terminology":{}}'List time
/api/v1/projects/{projectId}/time
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
taskId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/time" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Log time
/api/v1/projects/{projectId}/time
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskId | string (uuid) | ||
entryDate | string (date) | ||
hours | number | ||
billable | boolean | ||
rate | number | ||
description | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/time" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","entryDate":"2026-10-12","hours":100,"billable":true,"rate":100,"description":"string"}'Update time
/api/v1/projects/{projectId}/time/{entryId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
entryId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
taskId | string (uuid) | ||
entryDate | string (date) | ||
hours | number | ||
billable | boolean | ||
rate | number | ||
description | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/time/{entryId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","entryDate":"2026-10-12","hours":100,"billable":true,"rate":100,"description":"string"}'Delete time
/api/v1/projects/{projectId}/time/{entryId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
entryId | path | string (uuid) | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/{projectId}/time/{entryId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Blueprint
/api/v1/projects/{projectId}/transitions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/transitions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update blueprint
/api/v1/projects/{projectId}/transitions
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
transitions | array of object | Yes | required, max length 400 |
transitions[].id | string (uuid) | ||
transitions[].fromStageId | string (uuid) | ||
transitions[].toStageId | string (uuid) | ||
transitions[].allowedRole | string | ||
transitions[].allowedMemberIds | array of string (uuid) | max length 100 | |
transitions[].requiredFields | array of string | max length 30 | |
transitions[].enabled | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/transitions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"transitions":[{"id":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","fromStageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","toStageId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","allowedRole":"string","allowedMemberIds":[null],"requiredFields":[null]}]}'Workflow
/api/v1/projects/{projectId}/workflow
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/{projectId}/workflow" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update workflow
/api/v1/projects/{projectId}/workflow
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
version | integer | Yes | required |
stages | array of object | Yes | required, not empty, max length 20 |
stages[].id | string (uuid) | ||
stages[].label | string | Yes | required, not blank, max length 80 |
stages[].color | string | max length 32 | |
stages[].semanticType | string | Yes | required, not blank |
stages[].visible | boolean | ||
stages[].displayOrder | integer | ||
stages[].version | integer | ||
replacements | map of string (uuid) |
curl -X PUT "https://api.scalar360.com/api/v1/projects/{projectId}/workflow" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"version":1,"stages":[{"id":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","label":"string","color":"string","semanticType":"string","visible":true,"displayOrder":1}],"replacements":{}}'Apply preset
/api/v1/projects/{projectId}/workflow/preset
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
preset | string | Yes | required, not blank |
version | integer | Yes | required |
mapping | map of string | ||
seedBlueprint | boolean | ||
createMilestones | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/workflow/preset" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"preset":"string","version":1}'Preview preset
/api/v1/projects/{projectId}/workflow/preset/preview
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
preset | string | ||
mapping | map of string |
curl -X POST "https://api.scalar360.com/api/v1/projects/{projectId}/workflow/preset/preview" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"preset":"string","mapping":{}}'Projects access
/api/v1/projects/access
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/access" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Executions
/api/v1/projects/automation/executions
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
ruleId | query | string (uuid) | No |
macroId | query | string (uuid) | No |
status | query | string | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 25) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/automation/executions" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Macros
/api/v1/projects/automation/macros
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/automation/macros" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create macro
/api/v1/projects/automation/macros
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 200 |
description | string | max length 2000 | |
projectId | string (uuid) | ||
actions | array of map of any | Yes | required, length 1-20 |
active | boolean | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/automation/macros" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","actions":[{}]}'Update macro
/api/v1/projects/automation/macros/{macroId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
macroId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 200 |
description | string | max length 2000 | |
projectId | string (uuid) | ||
actions | array of map of any | Yes | required, length 1-20 |
active | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/automation/macros/{macroId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","projectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","actions":[{}],"active":true,"version":1}'Delete macro
/api/v1/projects/automation/macros/{macroId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
macroId | path | string (uuid) | Yes |
version | query | integer | No |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/automation/macros/{macroId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Rules
/api/v1/projects/automation/rules
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/automation/rules" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create rule
/api/v1/projects/automation/rules
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 200 |
description | string | max length 2000 | |
projectId | string (uuid) | ||
entityType | string | ||
trigger | string | Yes | required, not blank |
triggerField | string | ||
triggerOffsetMinutes | integer | >= 0, <= 525600 | |
conditions | array of map of any | max length 20 | |
conditionMatch | string | ||
actions | array of map of any | max length 20 | |
active | boolean | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/automation/rules" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","trigger":"string"}'Rule
/api/v1/projects/automation/rules/{ruleId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
ruleId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/automation/rules/{ruleId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update rule
/api/v1/projects/automation/rules/{ruleId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
ruleId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 200 |
description | string | max length 2000 | |
projectId | string (uuid) | ||
entityType | string | ||
trigger | string | Yes | required, not blank |
triggerField | string | ||
triggerOffsetMinutes | integer | >= 0, <= 525600 | |
conditions | array of map of any | max length 20 | |
conditionMatch | string | ||
actions | array of map of any | max length 20 | |
active | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/automation/rules/{ruleId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","projectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","entityType":"string","trigger":"string","triggerField":"string"}'Delete rule
/api/v1/projects/automation/rules/{ruleId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
ruleId | path | string (uuid) | Yes |
version | query | integer | No |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/automation/rules/{ruleId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Toggle rule
/api/v1/projects/automation/rules/{ruleId}/active
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
ruleId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
active | boolean | Yes | required |
version | integer | Yes | required |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/automation/rules/{ruleId}/active" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"active":true,"version":1}'Test rule
/api/v1/projects/automation/rules/test
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
rule | object | Yes | required |
rule.name | string | Yes | required, not blank, max length 200 |
rule.description | string | max length 2000 | |
rule.projectId | string (uuid) | ||
rule.entityType | string | ||
rule.trigger | string | Yes | required, not blank |
rule.triggerField | string | ||
rule.triggerOffsetMinutes | integer | >= 0, <= 525600 | |
rule.conditions | array of map of any | max length 20 | |
rule.conditionMatch | string | ||
rule.actions | array of map of any | max length 20 | |
rule.active | boolean | ||
rule.version | integer | ||
projectId | string (uuid) | Yes | |
taskId | string (uuid) | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/automation/rules/test" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rule":{"name":"string","description":"string","projectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","entityType":"string","trigger":"string","triggerField":"string"},"projectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","taskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'Business calendar
/api/v1/projects/business-calendar
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/business-calendar" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update business calendar
/api/v1/projects/business-calendar
Scope: Scalar360.projects.UPDATE
| Body field | Type | Required | Notes |
|---|---|---|---|
workingDays | array of integer | Yes | required, length 1-7 |
dailyHours | number | Yes | required |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/business-calendar" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"workingDays":[1],"dailyHours":100,"version":1}'Add holiday
/api/v1/projects/business-calendar/holidays
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
date | string (date) | Yes | |
name | string | Yes | required, not blank, max length 120 |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/business-calendar/holidays" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"date":"2026-10-12","name":"string"}'Update holiday
/api/v1/projects/business-calendar/holidays/{holidayId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
holidayId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
date | string (date) | ||
name | string | Yes | required, not blank, max length 120 |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/business-calendar/holidays/{holidayId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"date":"2026-10-12","name":"string","version":1}'Delete holiday
/api/v1/projects/business-calendar/holidays/{holidayId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
holidayId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/business-calendar/holidays/{holidayId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Calendar
/api/v1/projects/calendar
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
from | query | string (date) | No |
to | query | string (date) | No |
projectId | query | string (uuid) | No |
mine | query | boolean (default false) | No |
types | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/calendar" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Values
/api/v1/projects/custom-field-values
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
entityType | query | string | Yes |
entityId | query | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/custom-field-values" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Save values
/api/v1/projects/custom-field-values
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
entityType | query | string | Yes |
entityId | query | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
values | map of any | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/custom-field-values" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"values":{}}'Fields
/api/v1/projects/custom-fields
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
entityType | query | string | Yes |
includeInactive | query | boolean (default false) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/custom-fields" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create field
/api/v1/projects/custom-fields
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
entityType | string | ||
label | string | Yes | required, not blank, max length 100 |
key | string | max length 60 | |
fieldType | string | ||
options | array of string | ||
required | boolean | ||
helpText | string | max length 300 | |
active | boolean | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/custom-fields" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"label":"string"}'Update field
/api/v1/projects/custom-fields/{fieldId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
fieldId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
entityType | string | ||
label | string | Yes | required, not blank, max length 100 |
key | string | max length 60 | |
fieldType | string | ||
options | array of string | ||
required | boolean | ||
helpText | string | max length 300 | |
active | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/custom-fields/{fieldId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entityType":"string","label":"string","key":"string","fieldType":"string","options":["string"],"required":true}'Delete field
/api/v1/projects/custom-fields/{fieldId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
fieldId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/custom-fields/{fieldId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Reorder fields
/api/v1/projects/custom-fields/reorder
Scope: Scalar360.projects.UPDATE
| Body field | Type | Required | Notes |
|---|---|---|---|
entityType | string | Yes | required, not blank |
fieldIds | array of string (uuid) | Yes | required |
curl -X PUT "https://api.scalar360.com/api/v1/projects/custom-fields/reorder" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"entityType":"string","fieldIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"]}'Dashboard
/api/v1/projects/dashboard
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/dashboard" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Feed
/api/v1/projects/feed
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
filter | query | string (default all) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/feed" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Form templates
/api/v1/projects/form-templates
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/form-templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"From template
/api/v1/projects/from-template
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
templateId | string | Yes | required, not blank, max length 200 |
name | string | Yes | required, not blank, max length 160 |
description | string | max length 10000 | |
color | string | max length 32 | |
status | string | ||
priority | string | ||
startDate | string (date) | Yes | |
dueDate | string (date) | ||
ownerMemberId | string (uuid) | ||
access | string | ||
groupId | string (uuid) | ||
strictDates | boolean | ||
methodology | string | ||
key | string | max length 10 | |
includeSamples | boolean |
curl -X POST "https://api.scalar360.com/api/v1/projects/from-template" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"templateId":"string","name":"string","startDate":"2026-10-12"}'Groups
/api/v1/projects/groups
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/groups" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create group
/api/v1/projects/groups
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
displayOrder | integer | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/groups" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update group
/api/v1/projects/groups/{groupId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
groupId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 120 |
displayOrder | integer | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/groups/{groupId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","displayOrder":1,"version":1}'Delete group
/api/v1/projects/groups/{groupId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
groupId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/groups/{groupId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Templates
/api/v1/projects/inspection-templates
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/inspection-templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create template
/api/v1/projects/inspection-templates
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
category | string | ||
items | array of object | ||
items[].key | string | ||
items[].label | string | ||
items[].expected | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/inspection-templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update template
/api/v1/projects/inspection-templates/{templateId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
templateId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 160 |
category | string | ||
items | array of object | ||
items[].key | string | ||
items[].label | string | ||
items[].expected | string | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/inspection-templates/{templateId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","category":"string","items":[{"key":"string","label":"string","expected":"string"}],"version":1}'Delete template
/api/v1/projects/inspection-templates/{templateId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
templateId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/inspection-templates/{templateId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Portal
/api/v1/projects/issues
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
mine | query | boolean (default false) | No |
q | query | string (default ) | No |
statusId | query | string (uuid) | No |
severity | query | string | No |
classification | query | string | No |
assigneeId | query | string | No |
reporter | query | string | No |
milestoneId | query | string (uuid) | No |
dueState | query | string | No |
state | query | string | No |
flag | query | string | No |
sortBy | query | string (default updatedAt) | No |
sortDir | query | string (default desc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/issues" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Portal
/api/v1/projects/issues/my
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
mine | query | boolean (default false) | No |
q | query | string (default ) | No |
statusId | query | string (uuid) | No |
severity | query | string | No |
classification | query | string | No |
assigneeId | query | string | No |
reporter | query | string | No |
milestoneId | query | string (uuid) | No |
dueState | query | string | No |
state | query | string | No |
flag | query | string | No |
sortBy | query | string (default updatedAt) | No |
sortDir | query | string (default desc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/issues/my" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Members
/api/v1/projects/members
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/members" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Portal milestones
/api/v1/projects/milestones
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
status | query | string | No |
ownerId | query | string (uuid) | No |
projectId | query | string (uuid) | No |
mine | query | boolean (default false) | No |
sortBy | query | string (default endDate) | No |
sortDir | query | string (default asc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/milestones" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Portal milestones
/api/v1/projects/milestones/my
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
status | query | string | No |
ownerId | query | string (uuid) | No |
projectId | query | string (uuid) | No |
mine | query | boolean (default false) | No |
sortBy | query | string (default endDate) | No |
sortDir | query | string (default asc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/milestones/my" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"My tasks
/api/v1/projects/my-tasks
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
projectId | query | string (uuid) | No |
stageId | query | string (uuid) | No |
priority | query | string | No |
dueState | query | string | No |
sortBy | query | string (default dueDate) | No |
sortDir | query | string (default asc) | No |
itemType | query | string | No |
sprint | query | string | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/my-tasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Onboarding
/api/v1/projects/onboarding
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/onboarding" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Save onboarding
/api/v1/projects/onboarding
Scope: Scalar360.projects.UPDATE
| Body field | Type | Required | Notes |
|---|---|---|---|
industry | string | max length 40 | |
teamType | string | max length 80 | |
teamSize | string | max length 20 | |
workStyle | string | max length 20 | |
defaultMethodology | string | max length 20 | |
defaultTemplateKey | string | max length 200 | |
defaultSections | array of string | max length 20 | |
addRecommendedFields | boolean | ||
complete | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/onboarding" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"industry":"string","teamType":"string","teamSize":"string","workStyle":"string","defaultMethodology":"string","defaultTemplateKey":"string"}'Dismiss onboarding
/api/v1/projects/onboarding/dismiss
Scope: Scalar360.projects.CREATE
curl -X POST "https://api.scalar360.com/api/v1/projects/onboarding/dismiss" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Recurring tasks
/api/v1/projects/recurring-tasks
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/recurring-tasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Recycle bin
/api/v1/projects/recycle-bin
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
type | query | string (default ALL) | No |
projectId | query | string (uuid) | No |
q | query | string (default ) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 25) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/recycle-bin" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Overdue
/api/v1/projects/reports/overdue
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/reports/overdue" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Planned vs actual
/api/v1/projects/reports/planned-vs-actual
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
groupBy | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/reports/planned-vs-actual" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Status distribution
/api/v1/projects/reports/status-distribution
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/reports/status-distribution" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Time
/api/v1/projects/reports/time
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
groupBy | query | string (default user) | No |
from | query | string (date) | No |
to | query | string (date) | No |
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/reports/time" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Workload
/api/v1/projects/reports/workload
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
from | query | string (date) | No |
to | query | string (date) | No |
projectId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/reports/workload" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Saved views
/api/v1/projects/saved-views
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
module | query | string (default TASK) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/saved-views" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create saved view
/api/v1/projects/saved-views
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 80 |
module | string | ||
filters | map of any | ||
isDefault | boolean | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/saved-views" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Update saved view
/api/v1/projects/saved-views/{viewId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
viewId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 80 |
module | string | ||
filters | map of any | ||
isDefault | boolean | ||
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/saved-views/{viewId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","module":"string","filters":{},"isDefault":true,"version":1}'Delete saved view
/api/v1/projects/saved-views/{viewId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
viewId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/saved-views/{viewId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Quota
/api/v1/projects/storage
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/storage" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Tasks
/api/v1/projects/tasks
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
projectId | query | string (uuid) | No |
assignee | query | string | No |
status | query | string | No |
priority | query | string | No |
tagIds | query | string | No |
taskListId | query | string (uuid) | No |
dueState | query | string | No |
dateField | query | string (default due) | No |
from | query | string (date) | No |
to | query | string (date) | No |
includeSubtasks | query | boolean (default true) | No |
itemType | query | string | No |
sprint | query | string | No |
sortBy | query | string (default dueDate) | No |
sortDir | query | string (default asc) | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 25) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/tasks" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"My tasks
/api/v1/projects/tasks/my
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
q | query | string (default ) | No |
projectId | query | string (uuid) | No |
stageId | query | string (uuid) | No |
priority | query | string | No |
dueState | query | string | No |
sortBy | query | string (default dueDate) | No |
sortDir | query | string (default asc) | No |
itemType | query | string | No |
sprint | query | string | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 20) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/tasks/my" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Teams
/api/v1/projects/teams
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/teams" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Create team
/api/v1/projects/teams
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 80 |
color | string | max length 20 | |
description | string | max length 500 | |
memberIds | array of string (uuid) | max length 500 | |
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/teams" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string"}'Team
/api/v1/projects/teams/{teamId}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
teamId | path | string (uuid) | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/teams/{teamId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update team
/api/v1/projects/teams/{teamId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
teamId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | Yes | required, not blank, max length 80 |
color | string | max length 20 | |
description | string | max length 500 | |
memberIds | array of string (uuid) | max length 500 | |
version | integer |
curl -X PUT "https://api.scalar360.com/api/v1/projects/teams/{teamId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","color":"string","description":"string","memberIds":["3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"],"version":1}'Delete team
/api/v1/projects/teams/{teamId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
teamId | path | string (uuid) | Yes |
version | query | integer | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/teams/{teamId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Catalog
/api/v1/projects/template-catalog
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/template-catalog" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Preview
/api/v1/projects/template-catalog/{key}
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
key | path | string | Yes |
curl -X GET "https://api.scalar360.com/api/v1/projects/template-catalog/{key}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Templates
/api/v1/projects/templates
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/templates" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update template
/api/v1/projects/templates/{templateId}
Scope: Scalar360.projects.UPDATE
| Parameter | In | Type | Required |
|---|---|---|---|
templateId | path | string | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
name | string | max length 160 | |
description | string | max length 2000 | |
shared | boolean |
curl -X PATCH "https://api.scalar360.com/api/v1/projects/templates/{templateId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"string","description":"string","shared":true}'Delete template
/api/v1/projects/templates/{templateId}
Scope: Scalar360.projects.DELETE
| Parameter | In | Type | Required |
|---|---|---|---|
templateId | path | string | Yes |
curl -X DELETE "https://api.scalar360.com/api/v1/projects/templates/{templateId}" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Duplicate template
/api/v1/projects/templates/{templateId}/duplicate
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
templateId | path | string | Yes |
curl -X POST "https://api.scalar360.com/api/v1/projects/templates/{templateId}/duplicate" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Approve
/api/v1/projects/timesheets/{timesheetId}/approve
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
timesheetId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
note | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/timesheets/{timesheetId}/approve" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"note":"string","version":1}'Reject
/api/v1/projects/timesheets/{timesheetId}/reject
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
timesheetId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
note | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/timesheets/{timesheetId}/reject" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"note":"string","version":1}'Reopen
/api/v1/projects/timesheets/{timesheetId}/reopen
Scope: Scalar360.projects.CREATE
| Parameter | In | Type | Required |
|---|---|---|---|
timesheetId | path | string (uuid) | Yes |
| Body field | Type | Required | Notes |
|---|---|---|---|
note | string | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/timesheets/{timesheetId}/reopen" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"note":"string","version":1}'Approvals
/api/v1/projects/timesheets/approvals
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
status | query | string | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/timesheets/approvals" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Settings
/api/v1/projects/timesheets/settings
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/timesheets/settings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Update settings
/api/v1/projects/timesheets/settings
Scope: Scalar360.projects.UPDATE
| Body field | Type | Required | Notes |
|---|---|---|---|
approvalRequired | boolean |
curl -X PUT "https://api.scalar360.com/api/v1/projects/timesheets/settings" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"approvalRequired":true}'Time logs
/api/v1/projects/timesheets/time-logs
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
membershipId | query | string (uuid) | No |
projectId | query | string (uuid) | No |
from | query | string (date) | No |
to | query | string (date) | No |
billable | query | boolean | No |
approvalStatus | query | string | No |
mine | query | boolean | No |
page | query | integer (default 1) | No |
pageSize | query | integer (default 50) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/timesheets/time-logs" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Export time logs
/api/v1/projects/timesheets/time-logs/export
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
membershipId | query | string (uuid) | No |
projectId | query | string (uuid) | No |
from | query | string (date) | No |
to | query | string (date) | No |
billable | query | boolean | No |
approvalStatus | query | string | No |
mine | query | boolean | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/timesheets/time-logs/export" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Week
/api/v1/projects/timesheets/week
Scope: Scalar360.projects.READ
| Parameter | In | Type | Required |
|---|---|---|---|
weekStart | query | string (date) | No |
membershipId | query | string (uuid) | No |
curl -X GET "https://api.scalar360.com/api/v1/projects/timesheets/week" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"Upsert cells
/api/v1/projects/timesheets/week/cells
Scope: Scalar360.projects.UPDATE
| Body field | Type | Required | Notes |
|---|---|---|---|
weekStart | string (date) | ||
cells | array of object | ||
cells[].projectId | string (uuid) | ||
cells[].taskId | string (uuid) | ||
cells[].date | string (date) | ||
cells[].minutes | integer | ||
cells[].billable | boolean | ||
cells[].description | string |
curl -X PUT "https://api.scalar360.com/api/v1/projects/timesheets/week/cells" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"weekStart":"2026-10-12","cells":[{"projectId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","taskId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","date":"2026-10-12","minutes":1,"billable":true,"description":"string"}]}'Submit
/api/v1/projects/timesheets/week/submit
Scope: Scalar360.projects.CREATE
| Body field | Type | Required | Notes |
|---|---|---|---|
weekStart | string (date) | ||
version | integer |
curl -X POST "https://api.scalar360.com/api/v1/projects/timesheets/week/submit" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"weekStart":"2026-10-12","version":1}'Presets
/api/v1/projects/workflow-presets
Scope: Scalar360.projects.READ
curl -X GET "https://api.scalar360.com/api/v1/projects/workflow-presets" \
-H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"