Connect an AI app

Add this one address to your AI app. It gives the app BuildPass Build, Win & Pay, or both, depending on what your account has. During sign-in, choose your region, sign in, and approve each product.

https://mcp.buildpass.global/mcp

For Build, you need a BuildPass admin account with MCP access turned on and access to the company and modules you need. What you can do depends on your builder, region, and enabled modules, and is checked on every request.

Added Win & Pay or Build to your account after connecting? Disconnect BuildPass in your AI app and connect again to approve it, then refresh BuildPass's tools in the app, as described in Disconnect and troubleshoot.

Read the BuildPass privacy policy.

Claude

  1. In Claude on the web or desktop, open Customize, then Connectors, then Add custom connector.
  2. Name it BuildPass, paste the address, and select Add.
  3. Select Connect and sign in. Turn BuildPass on for a chat from the + menu.

On a Claude Team or Enterprise plan, an Owner first adds it under Organization settings → Connectors → Add → Custom → Web, named BuildPass with the address. Then each person connects it from Customize → Connectors.

ChatGPT

Connecting BuildPass needs ChatGPT Business, Enterprise, or Edu. In a Business workspace, an admin or owner adds it and publishes it for the workspace. In Enterprise or Edu, an admin can let selected members add it.

  1. Open Plugins, select +, then Add custom MCP server.
  2. Name it BuildPass and paste the address. Choose OAuth and leave the client ID and secret blank.
  3. Accept the warning, select Create as a plugin, and install it. Sign in when asked.

After a BuildPass update, refresh the tools as described in Disconnect and troubleshoot.

Start with a read

Try a read-only request such as one of these:

  • "Read the names of projects I can access. Do not change data or send notifications."
  • "Summarize up to five open actions, including their status and due dates. Do not update them."
  • "List up to five draft RFIs, including their status and respondents. Do not send or change them."
  • "In Win & Pay, list up to five unpaid invoices with their amounts and due dates. Do not change them."

Review any client approval prompt before allowing a call. Tools marked as writing data can create or change BuildPass records; some can also notify people or interact with external systems.

Claude Code and other tools

Add BuildPass in Claude Code:

claude mcp add --transport http buildpass https://mcp.buildpass.global/mcp

Then run /mcp in Claude Code, choose BuildPass, and select Authenticate to sign in.

In other MCP clients, add a remote (streamable HTTP) server with the address and sign in when asked. No client ID is needed. See MCP client documentation.

Developer note: sign-in uses OAuth with the execute:ai_agent_tools scope.

Disconnect and troubleshoot

Disconnect the connector in the MCP client to stop using it. Contact BuildPass support if you need help revoking an authorization. If sign-in expires, reconnect and finish authorization again. If a tool is no longer available after a server update, refresh the BuildPass tools in your MCP client. Signing in again does not refresh them. In a ChatGPT Business or Enterprise workspace, an admin refreshes them in workspace app settings. A host that keeps an older tool list may need a new conversation. The current server catalog and your access determine which tools appear.

Tool reference

Build tools come from the reviewed MCP descriptor snapshot. Win & Pay tools are read from Win & Pay's current catalog when this page loads.

Build

Append action update appendActionUpdate Writes dataDestructive

Append an update to an action/task activity thread. Preserves the description and other action fields and records an authored timestamped update. Appending also triggers notifications to the action's current assignees. Requires a message, at least one file, or both. Does not edit status, priority, due date, location, or assignees.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "files": {
      "description": "Files to attach to this update.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "Action ID.",
      "type": "string"
    },
    "message": {
      "description": "Update message to append to the action activity thread.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Append defect update appendDefectUpdate Writes dataDestructive

Append an update to a defect activity thread using the same behavior as BuildPass "Send update". Preserves the description and other defect fields. Mentions can notify mentioned admin users, but this operation does not notify every assignee or send the defect itself. Requires a message, at least one file, or both.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "files": {
      "description": "Files to attach to this update.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "Defect ID.",
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Append RFI comment appendRFIComment Writes dataDestructive

Append a comment to an RFI conversation without changing the formal question or other RFI fields. Non-draft comments trigger the RFI activity workflow for respondents and watchers; draft comments are stored without that workflow. Requires a message, at least one file, or both.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "files": {
      "description": "Files to attach to this comment.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "RFI ID.",
      "type": "string"
    },
    "message": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Archive records archiveRecords Writes dataDestructive

Archive BuildPass records of one recordType; linked attachments are archived with actions, defects, form responses, notices, register items, and site diaries. formResponse archives a filled submission; template the reusable definition. Per-record outcomes; first failure stops the rest. Cascades: subcontractor (SWMS, insurance, SDS, documents, prequalifications, integrations), meetingType (active meetings), permit (reminders), template (resource links; company defaults cannot be archived). Only meetingType, notice, permit, register, registerItem, workflow can be restored; toolbox is deleted.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ids": {
      "description": "IDs of the records to archive, all of recordType. Use a one-item array for one record.",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "recordType": {
      "description": "Kind of every id. register and registerItem take IDs, not prefixes.",
      "enum": [
        "action",
        "attachment",
        "defect",
        "document",
        "drawing",
        "formResponse",
        "insurance",
        "meetingType",
        "notice",
        "permit",
        "prequalification",
        "project",
        "register",
        "registerItem",
        "registerItemType",
        "sds",
        "siteDiary",
        "subcontractor",
        "swms",
        "template",
        "toolbox",
        "workflow"
      ],
      "type": "string"
    }
  },
  "required": [
    "recordType",
    "ids"
  ],
  "type": "object"
}
Archive submittal archiveSubmittal Writes dataDestructive

Archive one Submittal by exact ID and cancel its approval flow. Only DRAFT or VOID Submittals can be archived; OPEN or CLOSED records must already be VOID. Archived records can be restored, but their cancelled approval flow is not reinstated.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the draft or void Submittal to archive",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Archive toolbox invite archiveToolboxInvite Writes dataDestructive

Archive one toolbox invite identified by toolboxId plus adminUserId or workerId.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "adminUserId": {
      "type": "string"
    },
    "toolboxId": {
      "type": "string"
    },
    "workerId": {
      "type": "string"
    }
  },
  "required": [
    "toolboxId"
  ],
  "type": "object"
}
Complete form response completeFormResponse Writes dataDestructive

Complete or submit an existing canonical form response as-is, matching Core UI completion. May notify linked-action assignees and run configured workflows or integration syncs. Does not fill answers or edit the reusable template. Omitted completedAt uses server completion time. Returns the completed-response report destination; validation, permission, and lifecycle failures remain errors.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "completedAt": {
      "description": "ISO with offset. Omit for the server time.",
      "type": "string"
    },
    "id": {
      "description": "The ID of the form response",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Complete submittal completeSubmittal Writes dataDestructive

Send the final approved package for one Submittal to its distribution list, closing it first if still open. Requires a final approval decision. Emails real recipients once and cannot be recalled. Already distributed records are returned unchanged. The to and cc arrays replace all recipients for this send. Always emails; to close without distributing, set the Submittal status to CLOSED instead.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "cc": {
      "description": "Replaces the CC recipients; omit or [] for none.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "createRevision": {
      "description": "Also open a new revision; allowed only when the final decision asks for resubmission.",
      "type": "boolean"
    },
    "id": {
      "description": "The ID of the Submittal to distribute",
      "type": "string"
    },
    "includeApproverResponses": {
      "description": "Include each approver decision and comment in the distributed package.",
      "type": "boolean"
    },
    "includeSubmitterResponse": {
      "description": "Include the submitter's response and comments in the distributed package.",
      "type": "boolean"
    },
    "to": {
      "description": "Replaces the main recipients; admin-user or contact IDs.",
      "items": {
        "properties": {
          "id": {
            "description": "Admin user or contact ID.",
            "type": "string"
          },
          "type": {
            "description": "ADMIN_USER: team member; CONTACT: external contact.",
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "id",
    "to"
  ],
  "type": "object"
}
Create actions createActions Writes dataDestructive

Create up to 50 project actions/tasks per call, including imports from files or pasted content. A one-item items array creates one action. Non-atomic: successful rows persist when others fail, with row-level failures returned. Top-level fields are defaults; row values override them. Initial assignees may be notified. type and priorityType require exact project-configured labels; assignees require canonical IDs.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "assignees": {
      "description": "Default canonical assignees for rows that omit their own assignees.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "CONTACT",
              "RESOURCE_TAG",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "dueDate": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "items": {
      "description": "Actions to create from the input rows",
      "items": {
        "properties": {
          "assignees": {
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT",
                    "RESOURCE_TAG",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "description": {
            "type": "string"
          },
          "dueDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "files": {
            "description": "Files to attach to this action.",
            "items": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                      "type": "string"
                    },
                    "type": {
                      "const": "attachment",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "contentType": {
                      "description": "MIME type.",
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "fileSize": {
                      "description": "Size in bytes, as a string.",
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    },
                    "photoTakenDate": {
                      "description": "ISO with offset.",
                      "type": "string"
                    },
                    "type": {
                      "const": "upload",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "key",
                    "fileName",
                    "contentType",
                    "fileSize"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Documents module document ID.",
                      "type": "string"
                    },
                    "type": {
                      "const": "document",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "const": "drawing",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "locationId": {
            "type": "string"
          },
          "priorityType": {
            "description": "Exact project-configured action priority label.",
            "type": "string"
          },
          "status": {
            "enum": [
              "CANT_DO",
              "COMPLETE",
              "IN_PROGRESS",
              "TO_DO",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "type": {
            "description": "Exact project-configured action type label.",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "locationId": {
      "type": "string"
    },
    "priorityType": {
      "description": "Exact project-configured action priority label.",
      "type": "string"
    },
    "projectId": {
      "description": "The project ID shared by all actions",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "status": {
      "enum": [
        "CANT_DO",
        "COMPLETE",
        "IN_PROGRESS",
        "TO_DO",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "type": {
      "description": "Exact project-configured action type label.",
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "items"
  ],
  "type": "object"
}
Create address book contacts createAddressBookContacts Writes data

Create standalone address-book contacts without a Company record. company is an optional free-text label, not a Company ID. projectIds scopes directory entries to projects; omit for global contacts. Creating contacts does not add them to an RFI or send its notifications. Returned entity IDs are contact IDs for RFI participants. Per-item outcomes; the first failure stops the rest.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "company": {
            "type": "string"
          },
          "email": {
            "format": "email",
            "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}quot;,
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create certifications createCertifications Writes data

Add certifications to workers' profiles for the builder, one per item. BuildPass recommends workers upload their own from their phone: it stays in their wallet across builders, they get expiry reminders, and it is reviewed. One added here is Builder Generated: hidden from the worker, marked reviewed by the user, and skips the automatic check. Suits a user asking to add one for a worker, especially one without their own login. Requiring a certification on the project prompts a worker with their own profile to add it at their next sign-on. Per-item outcomes; the first failure stops the rest.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "countryIssued": {
            "type": "string"
          },
          "expiry": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "files": {
            "description": "One file per template file name. Every name the template marks required needs a file.",
            "items": {
              "properties": {
                "name": {
                  "description": "One of the template's file names, such as Front Image.",
                  "type": "string"
                },
                "upload": {
                  "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
                  "properties": {
                    "contentType": {
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "fileSize": {
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "fileName",
                    "contentType",
                    "fileSize"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "number": {
            "type": "string"
          },
          "obtained": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "stateIssued": {
            "type": "string"
          },
          "ticketTemplateId": {
            "description": "Certification template ID.",
            "type": "string"
          },
          "workerId": {
            "type": "string"
          }
        },
        "required": [
          "workerId",
          "ticketTemplateId"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create contacts createContacts Writes data

Create subcontractor contacts, one per item. Per-item outcomes; the first failure stops the rest. Omitted optional fields stay blank; projectIds initially links a contact to those projects.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "customType": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "isPrimaryContact": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "number": {
            "description": "Phone number",
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          },
          "subcontractorId": {
            "type": "string"
          },
          "type": {
            "enum": [
              "CLIENT",
              "HSR",
              "OTHER",
              "SITE_MANAGER",
              "SUBCONTRACTOR"
            ],
            "type": "string"
          }
        },
        "required": [
          "subcontractorId",
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create dashboards createDashboards Writes data

Create reporting dashboards, one per item, each with a title and optional description, initial project scope, and access rules. Per-item outcomes; the first failure stops the rest. Omitted optional fields stay unset. Widget configuration happens in the UI, not through this tool.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "access": {
            "description": "Initial access rules: an optional company-wide role and optional per-admin-user roles.",
            "properties": {
              "adminUsers": {
                "items": {
                  "properties": {
                    "adminUserId": {
                      "type": "string"
                    },
                    "role": {
                      "enum": [
                        "READ_WRITE",
                        "VIEW_ONLY"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "adminUserId",
                    "role"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "companyRole": {
                "enum": [
                  "READ_WRITE",
                  "VIEW_ONLY"
                ],
                "type": "string"
              }
            },
            "type": "object"
          },
          "description": {
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create defects createDefects Writes dataDestructive

Create up to 50 defects/punch list items/snags per call, including imports from files or pasted rows. A one-item items array creates one defect. Non-atomic: successful rows persist when others fail, with row-level failures. Row values override top-level defaults. Files attach uploads, gallery photos, or existing BuildPass files. Assignees may be notified when creation notifications are enabled; otherwise defects remain pending an explicit send.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "assignees": {
      "description": "Default canonical assignees for rows that omit their own assignees.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "CONTACT",
              "RESOURCE_TAG",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "dueDate": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "items": {
      "items": {
        "properties": {
          "assignees": {
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT",
                    "RESOURCE_TAG",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "description": {
            "type": "string"
          },
          "dueDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "files": {
            "description": "Files to attach to this defect.",
            "items": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                      "type": "string"
                    },
                    "type": {
                      "const": "attachment",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "contentType": {
                      "description": "MIME type.",
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "fileSize": {
                      "description": "Size in bytes, as a string.",
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    },
                    "photoTakenDate": {
                      "description": "ISO with offset.",
                      "type": "string"
                    },
                    "type": {
                      "const": "upload",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "key",
                    "fileName",
                    "contentType",
                    "fileSize"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Documents module document ID.",
                      "type": "string"
                    },
                    "type": {
                      "const": "document",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "const": "drawing",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "locationId": {
            "type": "string"
          },
          "priority": {
            "enum": [
              "CRITICAL",
              "HIGH",
              "LOW",
              "MEDIUM"
            ],
            "type": "string"
          },
          "status": {
            "enum": [
              "BLOCKED",
              "CANCELLED",
              "IN_PROGRESS",
              "RESOLVED",
              "TO_DO",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "type": {
            "description": "Defect register. Type plus number is the reference users see, e.g. \"Builder defect #5\".",
            "enum": [
              "BUILDER_DEFECT",
              "CLIENT_DEFECT",
              "INCOMPLETE_WORKS",
              "PURCHASER_DEFECT"
            ],
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "locationId": {
      "type": "string"
    },
    "priority": {
      "enum": [
        "CRITICAL",
        "HIGH",
        "LOW",
        "MEDIUM"
      ],
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "status": {
      "enum": [
        "BLOCKED",
        "CANCELLED",
        "IN_PROGRESS",
        "RESOLVED",
        "TO_DO",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "type": {
      "description": "Default for rows without one. Defect register. Type plus number is the reference users see, e.g. \"Builder defect #5\".",
      "enum": [
        "BUILDER_DEFECT",
        "CLIENT_DEFECT",
        "INCOMPLETE_WORKS",
        "PURCHASER_DEFECT"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "items"
  ],
  "type": "object"
}
Create document folders createDocumentFolders Writes data

Create document, drawing, or gallery-photo folders, one per item, at the root or inside a folder in the same scope. Per-item outcomes; the first failure stops the rest. A child needs the returned ID of its parent, so nested structures take one call per level. Use subcontractor_documents for the UI Other Documents area. visibleToWorkers shares a document or drawing folder and its contents with workers; omit it for gallery_photos.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "folderScope": {
            "enum": [
              "builder_documents",
              "project_documents",
              "subcontractor_documents",
              "drawings",
              "gallery_photos"
            ],
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "parentFolderId": {
            "description": "Parent folder ID in the same scope/project. Omit for root.",
            "type": "string"
          },
          "projectId": {
            "description": "Exact project ID only; no search text or record numbers.",
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "visibleToWorkers": {
            "description": "Share with inducted workers; child folders inherit it. Not for gallery_photos.",
            "type": "boolean"
          }
        },
        "required": [
          "name",
          "folderScope"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create documents createDocuments Writes data

Create document records from files, one per item. The first failure stops remaining items. documentScope PROJECT requires projectId; COMPANY omits projectId. Omitted linked IDs stay unset.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "category": {
            "enum": [
              "BUILDER",
              "DRAWING",
              "GALLERY",
              "PROJECT",
              "SUBCONTRACTOR"
            ],
            "type": "string"
          },
          "documentFolderId": {
            "description": "Optional document folder ID; the new document is saved into that folder when supplied.",
            "type": "string"
          },
          "documentScope": {
            "enum": [
              "PROJECT",
              "COMPANY"
            ],
            "type": "string"
          },
          "key": {
            "description": "Key of a file already stored in BuildPass, not a new upload.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "public": {
            "type": "boolean"
          },
          "status": {
            "enum": [
              "CHANGES_REQUESTED",
              "REVIEWED",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "subcontractorId": {
            "type": "string"
          },
          "upload": {
            "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
            "properties": {
              "contentType": {
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "type": "string"
              },
              "key": {
                "type": "string"
              }
            },
            "required": [
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create emergencies createEmergencies Writes dataDestructive

Create emergency alerts, one per item. Per-item outcomes; the first failure stops the rest. workerIds and visitorIds define the initial recipients to notify; omitting them sends no emergency messages.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "description": {
            "description": "Emergency description/message",
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "visitorIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "workerIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "projectId",
          "title",
          "description"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Send feedback createFeedbackSubmission Writes dataDestructive

Submit explicit Agent product feedback directly to BuildPass support without opening support chat. Use when the user asks to send feedback, report an Agent problem, or contact support about the Agent. Creates an internal Pylon issue with the verified current user as requester and returns the real submission reference. Do not submit feedback speculatively without an explicit user request or agreement.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "message": {
      "description": "Support feedback written in the user's voice. Keep it concise, specific, and faithful to what the user asked to submit.",
      "maxLength": 8000,
      "type": "string"
    },
    "sourceMessageId": {
      "description": "Agent message the feedback refers to, such as a reply marked unhelpful.",
      "type": "string"
    }
  },
  "required": [
    "message"
  ],
  "type": "object"
}
Create form responses createFormResponses Writes dataDestructive

Create response shells from saved reusable templates, one per item, for inspections, checklists, or form submissions. The first failure stops remaining items. Omitted completedAt leaves the response in progress; completed responses may run completion, intake, and integration workflows. Does not fill answers. Returns a suggested Open navigation action for each row.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "completedAt": {
            "description": "ISO with offset. Omit to leave the response in progress.",
            "type": "string"
          },
          "libraryTemplateId": {
            "description": "Read-only library template ID. Mutually exclusive with templateId.",
            "type": "string"
          },
          "locationId": {
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "relatedRegisterItemId": {
            "type": "string"
          },
          "scheduledJobId": {
            "type": "string"
          },
          "templateId": {
            "description": "Company/project template ID. Mutually exclusive with libraryTemplateId.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create gallery photos createGalleryPhotos Writes data

Add uploaded images to project galleries, one per item. Requires completed upload keys and their matching projectId, fileName, contentType, and fileSize after the image bytes have been PUT to the upload URL. Returns attachment IDs with per-item outcomes; the first failure stops remaining items. Images only; does not create document records or attach files to other records.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "contentType": {
            "type": "string"
          },
          "fileName": {
            "type": "string"
          },
          "fileSize": {
            "type": "string"
          },
          "key": {
            "type": "string"
          },
          "photoTakenDate": {
            "description": "Photo capture time, ISO with offset; EXIF time when known.",
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          }
        },
        "required": [
          "projectId",
          "key",
          "fileName",
          "contentType",
          "fileSize"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create insurance createInsurance Writes data

Create insurance documents, one per item. Per-item outcomes; the first failure stops the rest. Omitted optional fields stay unset.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "expiry": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "key": {
            "description": "Key of a file already stored in BuildPass, not a new upload.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "enum": [
              "CHANGES_REQUESTED",
              "REVIEWED",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "subcontractorId": {
            "type": "string"
          },
          "type": {
            "enum": [
              "OTHER",
              "PUBLIC_LIABILITY",
              "WORK_COVER"
            ],
            "type": "string"
          },
          "typeOther": {
            "type": "string"
          },
          "upload": {
            "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
            "properties": {
              "contentType": {
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "type": "string"
              },
              "key": {
                "type": "string"
              }
            },
            "required": [
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          }
        },
        "required": [
          "name",
          "subcontractorId",
          "status",
          "type"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create locations createLocations Writes data

Create one or more project locations (areas/rooms/zones/levels/units, up to 50 per call) used to organize and filter records by place, from plans, PDFs, spreadsheets, CSVs, prose, or pasted lists. Use a one-item items array for a single location. Split larger imports into 50-row calls. Non-atomic: successful rows persist when others fail, and results include row-level failures. Top-level parentId acts as the default parent; row parentId values override it. Nesting under a location created in the same call requires a second call using the returned ID.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "name": {
            "type": "string"
          },
          "parentId": {
            "description": "Existing parent location ID to nest this row under. Overrides the top-level parentId.",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "parentId": {
      "description": "Row default. Omit for root locations.",
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "items"
  ],
  "type": "object"
}
Create meeting types createMeetingTypes Writes data

Create Meeting v2 meeting type records, one per item. Returns per-item outcomes; the first failure stops remaining items. Does not create or attach agenda or meeting templates.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create meeting type template createMeetingTypeTemplate Writes data

Create and attach a blank TOOLBOX template to a Meeting v2 meeting type. AGENDA defines agenda fields in toolbox.templateResponse; MEETING defines meeting-specific fields in toolbox.meetingTemplateResponse. Does not author the template structure.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The meeting type ID",
      "type": "string"
    },
    "type": {
      "description": "AGENDA or MEETING",
      "enum": [
        "AGENDA",
        "MEETING"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "type"
  ],
  "type": "object"
}
Create notices createNotices Writes data

Create notice/pre-start wrapper records with linked template responses, one per item. The first failure stops remaining items. Linked responses use template default answers; template.completedAt defaults to now unless supplied. Does not author response answers.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "date": {
            "description": "ISO with offset, keeping the intended local time.",
            "type": "string"
          },
          "endDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "requireDailyAcknowledgement": {
            "description": "Defaults to false when omitted.",
            "type": "boolean"
          },
          "template": {
            "properties": {
              "completedAt": {
                "description": "ISO with offset. Omit for now.",
                "type": "string"
              },
              "libraryTemplateId": {
                "description": "Read-only library template ID. Mutually exclusive with templateId.",
                "type": "string"
              },
              "locationId": {
                "type": "string"
              },
              "projectId": {
                "pattern": "^[A-Za-z0-9_-]+quot;,
                "type": "string"
              },
              "templateId": {
                "description": "Company/project template ID. Mutually exclusive with libraryTemplateId.",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "date",
          "projectId",
          "template"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create permits createPermits Writes dataDestructive

Create permits for workers, one per item. Per-item outcomes; the first failure stops the rest. workerIds becomes the initial worker set, and every supplied worker is notified immediately after the permit is created. Permit application template responses are authored in the permit UI, not here.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "description": {
            "type": "string"
          },
          "endDate": {
            "description": "ISO with offset, keeping the requested local time.",
            "type": "string"
          },
          "permitTypeId": {
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "projectLocationId": {
            "type": "string"
          },
          "startDate": {
            "description": "ISO with offset, keeping the requested local time.",
            "type": "string"
          },
          "status": {
            "enum": [
              "APPROVED",
              "CLOSED",
              "REJECTED",
              "WAITING_CLOSEOUT_REVIEW",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "workerIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "startDate",
          "endDate",
          "permitTypeId",
          "projectId",
          "workerIds"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create projects createProjects Writes data

Queue one or more BuildPass projects for creation in the connected user's active builder context using Core API authorization. This accepts the fields Core API bulk creation currently applies: name, address, status, and project contacts. Use a single-row projects array for one project. Creation is asynchronous through the Core API bulk-create worker, so this tool returns the queued count and does not return created project IDs, latitude/longitude, or completion proof.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projects": {
      "description": "Projects to queue for creation, up to 50.",
      "items": {
        "properties": {
          "address": {
            "description": "Project address text. Core API geocodes this server-side during async project creation.",
            "type": "string"
          },
          "name": {
            "description": "Project name",
            "type": "string"
          },
          "projectContacts": {
            "description": "Only name, email, number, type and customType are applied.",
            "items": {
              "properties": {
                "customType": {
                  "type": "string"
                },
                "email": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "number": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "CLIENT",
                    "HSR",
                    "OTHER",
                    "SITE_MANAGER",
                    "SUBCONTRACTOR"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "status": {
            "description": "Project status: IN_PROGRESS, UPCOMING, COMPLETE, or ARCHIVED.",
            "enum": [
              "ARCHIVED",
              "COMPLETE",
              "IN_PROGRESS",
              "UPCOMING"
            ],
            "type": "string"
          }
        },
        "required": [
          "name",
          "address",
          "status"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "projects"
  ],
  "type": "object"
}
Create project SWMS from library createProjectSwmsFromLibrary Writes data

Create project method statement records from exact IDs of existing library documents using Core API library-copy rules. Copies existing library records; does not generate or submit new method statement content.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "librarySwmsDocIds": {
      "description": "Library document IDs to create project records from.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "projectId": {
      "description": "Project ID receiving the library method statement.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "librarySwmsDocIds"
  ],
  "type": "object"
}
Create register createRegister Writes data

Create one live BuildPass register and its linked editable field definition. The setup choice is irreversible: blank is general-purpose; libraryBacked requires an active REGISTER_TYPE LibraryTemplate ID. Company-managed items require libraryBacked setup. A reusable template alone is not a live register. Failures can report partially created records and inspection details.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "identifierPrefix": {
      "description": "Short unique prefix used in register item identifiers, for example SH or PLANT.",
      "maxLength": 5,
      "type": "string"
    },
    "name": {
      "description": "Live register name",
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "settings": {
      "description": "Register behaviour settings. Unset ones use the register defaults.",
      "properties": {
        "assignableToProjects": {
          "type": "boolean"
        },
        "assigningMode": {
          "enum": [
            "single",
            "multiple"
          ],
          "type": "string"
        },
        "canAssignChecklists": {
          "type": "boolean"
        },
        "canSubcontractorsManageItems": {
          "type": "boolean"
        },
        "displayAssignees": {
          "type": "boolean"
        },
        "displayFollowUpDate": {
          "type": "boolean"
        },
        "displayIdentifier": {
          "type": "boolean"
        },
        "displayRegisterItemType": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "setup": {
      "description": "Irreversible: blank for a general register, or libraryBacked with an active REGISTER_TYPE library template ID.",
      "oneOf": [
        {
          "properties": {
            "kind": {
              "const": "blank",
              "type": "string"
            }
          },
          "required": [
            "kind"
          ],
          "type": "object"
        },
        {
          "properties": {
            "kind": {
              "const": "libraryBacked",
              "type": "string"
            },
            "typeLibraryTemplateId": {
              "type": "string"
            }
          },
          "required": [
            "kind",
            "typeLibraryTemplateId"
          ],
          "type": "object"
        }
      ]
    },
    "templatePlan": {
      "description": "Field definition linked to the new register.",
      "properties": {
        "description": {
          "maxLength": 4000,
          "type": "string"
        },
        "sections": {
          "items": {
            "properties": {
              "description": {
                "maxLength": 4000,
                "type": "string"
              },
              "groups": {
                "items": {
                  "properties": {
                    "conditions": {
                      "items": {
                        "items": {
                          "properties": {
                            "blockId": {
                              "maxLength": 160,
                              "type": "string"
                            },
                            "fieldKey": {
                              "maxLength": 80,
                              "type": "string"
                            },
                            "operator": {
                              "enum": [
                                "contains",
                                "containsAll",
                                "equals",
                                "exists",
                                "greaterThan",
                                "greaterThanOrEqual",
                                "isBetween",
                                "isEmpty",
                                "lessThan",
                                "lessThanOrEqual",
                                "notBetween",
                                "notContains",
                                "notEquals"
                              ],
                              "type": "string"
                            },
                            "optionKey": {
                              "maxLength": 80,
                              "type": "string"
                            },
                            "optionKeys": {
                              "items": {
                                "maxLength": 80,
                                "type": "string"
                              },
                              "maxItems": 30,
                              "minItems": 1,
                              "type": "array"
                            },
                            "value": {}
                          },
                          "required": [
                            "operator"
                          ],
                          "type": "object"
                        },
                        "maxItems": 20,
                        "minItems": 1,
                        "type": "array"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "description": {
                      "maxLength": 4000,
                      "type": "string"
                    },
                    "fields": {
                      "items": {
                        "properties": {
                          "action": {
                            "description": "Default enabled on inspection verdict fields.",
                            "enum": [
                              "enabled",
                              "disabled"
                            ],
                            "type": "string"
                          },
                          "attachments": {
                            "description": "Default optional on verdict fields only.",
                            "enum": [
                              "optional",
                              "none"
                            ],
                            "type": "string"
                          },
                          "conditions": {
                            "items": {
                              "items": {
                                "properties": {
                                  "blockId": {
                                    "maxLength": 160,
                                    "type": "string"
                                  },
                                  "fieldKey": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "operator": {
                                    "enum": [
                                      "contains",
                                      "containsAll",
                                      "equals",
                                      "exists",
                                      "greaterThan",
                                      "greaterThanOrEqual",
                                      "isBetween",
                                      "isEmpty",
                                      "lessThan",
                                      "lessThanOrEqual",
                                      "notBetween",
                                      "notContains",
                                      "notEquals"
                                    ],
                                    "type": "string"
                                  },
                                  "optionKey": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "optionKeys": {
                                    "items": {
                                      "maxLength": 80,
                                      "type": "string"
                                    },
                                    "maxItems": 30,
                                    "minItems": 1,
                                    "type": "array"
                                  },
                                  "value": {}
                                },
                                "required": [
                                  "operator"
                                ],
                                "type": "object"
                              },
                              "maxItems": 20,
                              "minItems": 1,
                              "type": "array"
                            },
                            "maxItems": 20,
                            "type": "array"
                          },
                          "description": {
                            "description": "Wording beyond the label; never invent it.",
                            "maxLength": 32000,
                            "type": "string"
                          },
                          "key": {
                            "maxLength": 80,
                            "type": "string"
                          },
                          "label": {
                            "maxLength": 2000,
                            "type": "string"
                          },
                          "notes": {
                            "description": "Default enabled on verdict fields only.",
                            "enum": [
                              "enabled",
                              "disabled"
                            ],
                            "type": "string"
                          },
                          "options": {
                            "items": {
                              "anyOf": [
                                {
                                  "maxLength": 2000,
                                  "type": "string"
                                },
                                {
                                  "properties": {
                                    "desired": {
                                      "description": "Expected (pass) or failing (fail) answer, or either. Omit for neutral options.",
                                      "enum": [
                                        "pass",
                                        "fail",
                                        "either"
                                      ],
                                      "type": "string"
                                    },
                                    "key": {
                                      "maxLength": 80,
                                      "type": "string"
                                    },
                                    "label": {
                                      "maxLength": 2000,
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "label"
                                  ],
                                  "type": "object"
                                }
                              ]
                            },
                            "maxItems": 30,
                            "type": "array"
                          },
                          "required": {
                            "description": "Keep the source or user requiredness.",
                            "type": "boolean"
                          },
                          "showInTable": {
                            "type": "boolean"
                          },
                          "type": {
                            "default": "text",
                            "description": "Use file for every upload, including photos.",
                            "enum": [
                              "heading",
                              "instructions",
                              "list",
                              "text",
                              "textarea",
                              "number",
                              "comments",
                              "passFail",
                              "yesNo",
                              "radio",
                              "checkbox",
                              "select",
                              "date",
                              "time",
                              "dateTime",
                              "file",
                              "photo",
                              "signature"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "label"
                        ],
                        "type": "object"
                      },
                      "maxItems": 400,
                      "minItems": 1,
                      "type": "array"
                    },
                    "isTable": {
                      "description": "Table: fields are columns, repeats are rows.",
                      "type": "boolean"
                    },
                    "key": {
                      "maxLength": 80,
                      "type": "string"
                    },
                    "maxRows": {
                      "anyOf": [
                        {
                          "minimum": 1,
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Table maximum rows."
                    },
                    "minRows": {
                      "anyOf": [
                        {
                          "minimum": 0,
                          "type": "integer"
                        },
                        {
                          "type": "null"
                        }
                      ],
                      "description": "Table minimum rows."
                    },
                    "name": {
                      "maxLength": 2000,
                      "type": "string"
                    },
                    "prefilledRows": {
                      "description": "Fixed table rows: field key to wording or default.",
                      "items": {
                        "properties": {
                          "cells": {
                            "items": {
                              "properties": {
                                "fieldKey": {
                                  "description": "Field key of the column.",
                                  "maxLength": 80,
                                  "type": "string"
                                },
                                "value": {
                                  "maxLength": 4000,
                                  "type": "string"
                                }
                              },
                              "required": [
                                "fieldKey",
                                "value"
                              ],
                              "type": "object"
                            },
                            "maxItems": 400,
                            "minItems": 1,
                            "type": "array"
                          }
                        },
                        "required": [
                          "cells"
                        ],
                        "type": "object"
                      },
                      "maxItems": 400,
                      "minItems": 1,
                      "type": "array"
                    },
                    "repeatable": {
                      "description": "True only when respondents add entries.",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "name",
                    "fields"
                  ],
                  "type": "object"
                },
                "maxItems": 60,
                "minItems": 1,
                "type": "array"
              },
              "key": {
                "maxLength": 80,
                "type": "string"
              },
              "name": {
                "maxLength": 2000,
                "type": "string"
              }
            },
            "required": [
              "name",
              "groups"
            ],
            "type": "object"
          },
          "minItems": 1,
          "type": "array"
        }
      },
      "required": [
        "sections"
      ],
      "type": "object"
    }
  },
  "required": [
    "name",
    "identifierPrefix",
    "setup",
    "templatePlan"
  ],
  "type": "object"
}
Create register item bookings createRegisterItemBookings Writes data

Create booking rows for register items, one per item. Per-item outcomes; the first failure stops the rest. This does not modify the register items' other fields.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "endDate": {
            "description": "ISO with offset, keeping the requested local time.",
            "type": "string"
          },
          "registerItemId": {
            "description": "The register item ID",
            "type": "string"
          },
          "startDate": {
            "description": "ISO with offset, keeping the requested local time.",
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "registerItemId",
          "startDate",
          "endDate"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create register items createRegisterItems Writes data

Create up to 50 register items per call, including imports from files or pasted content. identifierPrefix identifies the live register; the server resolves its canonical ID and templates. fieldUpdates require actual field IDs or labels, value shapes, and options from its field definition; raw template JSON is unsupported. Non-atomic: valid rows persist when others fail, with repairable row failures. Row values override top-level defaults.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "assignees": {
      "description": "Default assignees for rows that omit assignees",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "checklistTemplateIds": {
      "description": "Default linked checklists for rows that omit them",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "identifierPrefix": {
      "description": "The register identifier prefix shared by all items",
      "type": "string"
    },
    "items": {
      "description": "Register items to create from the import rows",
      "items": {
        "additionalProperties": false,
        "properties": {
          "assignees": {
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "checklistTemplateIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "fieldUpdates": {
            "description": "Main register field values matching the live definition: single-select takes a scalar, multi-select an array.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "description": "Actions to create on this field. Needs actions enabled.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "assignees": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "type": {
                              "enum": [
                                "ADMIN_USER",
                                "CONTACT",
                                "RESOURCE_TAG",
                                "SUBCONTRACTOR",
                                "WORKER"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "attachmentIds": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "description": {
                        "type": "string"
                      },
                      "dueDate": {
                        "type": "string"
                      },
                      "locationId": {
                        "type": "string"
                      },
                      "priorityType": {
                        "type": "string"
                      },
                      "status": {
                        "enum": [
                          "CANT_DO",
                          "COMPLETE",
                          "IN_PROGRESS",
                          "TO_DO",
                          "WAITING_REVIEW"
                        ],
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "title"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "fieldId": {
                  "description": "Field ID from the response definition.",
                  "type": "string"
                },
                "fieldName": {
                  "description": "Exact field label; use fieldId when labels repeat.",
                  "type": "string"
                },
                "note": {
                  "description": "Note text; null clears. Needs notes enabled on the field.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tableId": {
                  "type": "string"
                },
                "tableName": {
                  "type": "string"
                },
                "tableRows": {
                  "additionalProperties": false,
                  "description": "Rows for a table field; not combined with value, note, or actions.",
                  "properties": {
                    "mode": {
                      "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                      "enum": [
                        "append",
                        "replace"
                      ],
                      "type": "string"
                    },
                    "rows": {
                      "description": "One entry per row, in order; never join entries in a cell.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "cells": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "columnId": {
                                  "description": "Column id from the detail read.",
                                  "type": "string"
                                },
                                "columnName": {
                                  "description": "Exact column header, if no columnId.",
                                  "type": "string"
                                },
                                "note": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "value": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "boolean"
                                    },
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "items": {},
                                      "type": "array"
                                    },
                                    {
                                      "additionalProperties": {},
                                      "type": "object"
                                    }
                                  ],
                                  "description": "Match the column's valueSchema and options."
                                }
                              },
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          }
                        },
                        "required": [
                          "cells"
                        ],
                        "type": "object"
                      },
                      "maxItems": 200,
                      "minItems": 1,
                      "type": "array"
                    },
                    "tableId": {
                      "description": "Table id from the detail read.",
                      "type": "string"
                    },
                    "tableName": {
                      "description": "Exact table name, if no tableId.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "rows"
                  ],
                  "type": "object"
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    },
                    {
                      "items": {},
                      "type": "array"
                    },
                    {
                      "additionalProperties": {},
                      "type": "object"
                    }
                  ],
                  "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "followUpAt": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "name": {
            "description": "Register item name",
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          },
          "registerItemTypeId": {
            "type": "string"
          },
          "reviewFieldUpdates": {
            "description": "Same shape as fieldUpdates. Review form values; needs a review template on the item type.",
            "type": "array"
          },
          "status": {
            "enum": [
              "CHANGES_REQUESTED",
              "REVIEWED",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "typeLibraryFieldUpdates": {
            "description": "Same shape as fieldUpdates. Type-library values; needs a type library template on the register.",
            "type": "array"
          },
          "uploadFieldUpdates": {
            "description": "Same shape as fieldUpdates. Upload form values; needs an upload template on the item type.",
            "type": "array"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "registerItemTypeId": {
      "description": "Default register item type for rows that omit it",
      "type": "string"
    },
    "status": {
      "description": "Default status for rows that omit status",
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    }
  },
  "required": [
    "identifierPrefix",
    "items"
  ],
  "type": "object"
}
Create register item types createRegisterItemTypes Writes data

Create register item types, one per item. Per-item outcomes; the first failure stops the rest. linkedChecklistIds sets the initial linked checklist set when supplied.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "linkedChecklistIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "The register item type name",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create RFIs createRFIs Writes dataDestructive

Create up to 50 RFIs per call from files, pasted tables, or prose. A one-item items array creates one RFI. Non-atomic: successful rows persist when others fail, with row-level failures. Row values override top-level defaults. Omitted status defaults to DRAFT. OPEN rows receive numbers according to project numbering settings and notify respondents and watchers.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "costImpact": {
      "description": "Default cost impact for rows that omit costImpact.",
      "enum": [
        "NO",
        "TBD",
        "YES"
      ],
      "type": "string"
    },
    "drawingIds": {
      "description": "Default exact drawing IDs for rows that omit drawingIds.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "dueDate": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "items": {
      "description": "RFIs to create from the import rows",
      "items": {
        "properties": {
          "costImpact": {
            "description": "Cost impact",
            "enum": [
              "NO",
              "TBD",
              "YES"
            ],
            "type": "string"
          },
          "drawingIds": {
            "description": "Optional exact drawing IDs linked to this RFI.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "dueDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "files": {
            "description": "Files to attach to this RFI.",
            "items": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                      "type": "string"
                    },
                    "type": {
                      "const": "attachment",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "contentType": {
                      "description": "MIME type.",
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "fileSize": {
                      "description": "Size in bytes, as a string.",
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    },
                    "photoTakenDate": {
                      "description": "ISO with offset.",
                      "type": "string"
                    },
                    "type": {
                      "const": "upload",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "key",
                    "fileName",
                    "contentType",
                    "fileSize"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Documents module document ID.",
                      "type": "string"
                    },
                    "type": {
                      "const": "document",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "const": "drawing",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "locationId": {
            "description": "Optional project location ID to link to this RFI",
            "type": "string"
          },
          "question": {
            "description": "The question or information being requested",
            "type": "string"
          },
          "respondents": {
            "description": "Initial RFI respondents, each with a canonical admin-user or contact ID.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "scheduleImpact": {
            "description": "Schedule impact",
            "enum": [
              "NO",
              "TBD",
              "YES"
            ],
            "type": "string"
          },
          "status": {
            "description": "Default DRAFT. OPEN numbers the RFI now.",
            "enum": [
              "DRAFT",
              "OPEN"
            ],
            "type": "string"
          },
          "subject": {
            "description": "Subject/title of the RFI",
            "type": "string"
          },
          "watchers": {
            "description": "Optional RFI watchers, each with a canonical admin-user or contact ID.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "subject",
          "question"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "locationId": {
      "description": "Default project location ID for rows that omit locationId.",
      "type": "string"
    },
    "projectId": {
      "description": "The project ID shared by all RFIs",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "respondents": {
      "description": "Default respondents for rows that omit them, using canonical admin-user or contact IDs.",
      "items": {
        "properties": {
          "id": {
            "description": "The ID of the admin user or contact for the RFI participant.",
            "type": "string"
          },
          "type": {
            "description": "ADMIN_USER: team member; CONTACT: external contact.",
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "scheduleImpact": {
      "description": "Default schedule impact for rows that omit scheduleImpact.",
      "enum": [
        "NO",
        "TBD",
        "YES"
      ],
      "type": "string"
    },
    "status": {
      "description": "Row default; DRAFT if omitted. OPEN numbers RFIs now.",
      "enum": [
        "DRAFT",
        "OPEN"
      ],
      "type": "string"
    },
    "watchers": {
      "description": "Default watchers for rows that omit them, using canonical admin-user or contact IDs.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "projectId",
    "items"
  ],
  "type": "object"
}
Create schedule createSchedule Writes data

Create a new blank schedule shell for a project when the user explicitly wants a blank schedule container. This creates the schedule title only. Schedule item generation, review assumptions, and publishing are separate from this blank shell.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "title": {
      "description": "Schedule title",
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "title"
  ],
  "type": "object"
}
Create SDS createSds Writes data

Create SDS documents, one per item. Per-item outcomes; the first failure stops the rest. projectIds sets the initial linked projects.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "key": {
            "description": "Key of a file already stored in BuildPass, not a new upload.",
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          },
          "reviewDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "status": {
            "enum": [
              "CHANGES_REQUESTED",
              "REVIEWED",
              "WAITING_REVIEW"
            ],
            "type": "string"
          },
          "subcontractorId": {
            "type": "string"
          },
          "upload": {
            "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
            "properties": {
              "contentType": {
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "type": "string"
              },
              "key": {
                "type": "string"
              }
            },
            "required": [
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          }
        },
        "required": [
          "name",
          "subcontractorId",
          "status"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Send message to self createSelfMessage Writes dataDestructive

Send an email or SMS to the signed-in user only; cannot send to other people. emailHtml supplies designed email content and message supplies the matching plain-text version. BuildPass delivers the supplied message through its notification system.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "channel": {
      "enum": [
        "EMAIL",
        "SMS"
      ],
      "type": "string"
    },
    "controlLabels": {
      "description": "EMAIL only, optional: localized wording for a non-English email. BuildPass uses English for any label left out.",
      "properties": {
        "attribution": {
          "description": "Localized attribution label for the email.",
          "maxLength": 200,
          "type": "string"
        },
        "continueChat": {
          "maxLength": 100,
          "type": "string"
        },
        "customise": {
          "maxLength": 100,
          "type": "string"
        },
        "disable": {
          "maxLength": 100,
          "type": "string"
        },
        "sourceName": {
          "description": "Localized chat source wording, such as BuildPass Agent Chat.",
          "maxLength": 200,
          "type": "string"
        }
      },
      "type": "object"
    },
    "emailHtml": {
      "type": "string"
    },
    "message": {
      "description": "Message content to send to yourself.",
      "type": "string"
    },
    "subject": {
      "description": "Optional subject line (EMAIL only).",
      "type": "string"
    }
  },
  "required": [
    "channel",
    "message"
  ],
  "type": "object"
}
Create sign ons createSignOns Writes data

Create manual site-attendance sign-on records, each for one worker on one project. Returns per-item outcomes; the first failure stops remaining items. May reuse an existing active sign-on for the same worker and project. Does not read attendance or sign workers off.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "preStartIds": {
            "description": "Optional pre-start notice IDs acknowledged and linked on the new sign-on.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "signOnDate": {
            "description": "Sign-on time as ISO with the project offset, e.g. 2026-05-04T07:30:00+10:00. Defaults to now.",
            "type": "string"
          },
          "workerId": {
            "description": "Worker ID",
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "workerName": {
            "description": "Optional worker name for change display",
            "type": "string"
          }
        },
        "required": [
          "projectId",
          "workerId"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create site diaries createSiteDiaries Writes data

Create Site Diary records with default embedded response shells, one per item. kind daily (default) creates a daily diary; supplementary creates a sub-log with its supplementary templateId, attaching to or creating the parent daily diary for that date. The first failure stops remaining items. Does not fill response answers.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "date": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "kind": {
            "description": "daily (default): the daily Site Diary. supplementary: a sub-log (supplementary diary).",
            "enum": [
              "daily",
              "supplementary"
            ],
            "type": "string"
          },
          "libraryTemplateId": {
            "description": "Read-only library template ID. Mutually exclusive with templateId.",
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "templateId": {
            "description": "Company/project template ID. Mutually exclusive with libraryTemplateId.",
            "type": "string"
          }
        },
        "required": [
          "date",
          "projectId"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create subcontractors createSubcontractors Writes data

Create up to 50 subcontractors/companies/vendors in the current builder per call, including imports from files or pasted vendor lists, CSVs, spreadsheets, PDFs, or tables. A one-item items array creates one company. Non-atomic: successful rows persist when others fail; returns created counts and row-level failures. Each row requires companyEmail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "address": {
            "type": "string"
          },
          "companyAbn": {
            "type": "string"
          },
          "companyContactName": {
            "type": "string"
          },
          "companyEmail": {
            "type": "string"
          },
          "companyName": {
            "type": "string"
          },
          "companyNumber": {
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "companyName",
          "companyEmail"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create submittal drafts createSubmittalDrafts Writes data

Create up to 50 draft Submittals per call, including manual entry and imports from files or pasted tables. Accepts submitter, intake mode, documents, reference files, due date, and an approval plan or template. Type keys and approval template IDs must match builder configuration. Drafts require a submitter and approval plan before opening. Top-level fields are defaults for rows that omit them. Non-atomic: rows can partially fail. Does not open, send, close, or distribute.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "approvalPlan": {
      "description": "Row default; overrides approvalTemplateId.",
      "properties": {
        "stages": {
          "description": "Ordered stages, excluding the submitter; [] means no review.",
          "items": {
            "properties": {
              "name": {
                "description": "Stage label.",
                "type": "string"
              },
              "participants": {
                "description": "People on this stage.",
                "items": {
                  "properties": {
                    "adminUserId": {
                      "description": "Admin user ID, for INTERNAL.",
                      "type": "string"
                    },
                    "externalEmail": {
                      "description": "Email, for EXTERNAL.",
                      "type": "string"
                    },
                    "externalName": {
                      "description": "Display name, for EXTERNAL.",
                      "type": "string"
                    },
                    "participantType": {
                      "description": "INTERNAL: admin user; EXTERNAL: email only.",
                      "enum": [
                        "INTERNAL",
                        "EXTERNAL"
                      ],
                      "type": "string"
                    },
                    "required": {
                      "description": "Must respond.",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "participantType"
                  ],
                  "type": "object"
                },
                "minItems": 1,
                "type": "array"
              },
              "requiredAll": {
                "description": "True: everyone must respond; false: one response decides.",
                "type": "boolean"
              },
              "stageNo": {
                "description": "1-based stage order.",
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "stageNo",
              "participants"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "stages"
      ],
      "type": "object"
    },
    "approvalTemplateId": {
      "description": "Row default.",
      "type": "string"
    },
    "description": {
      "description": "Row default.",
      "type": "string"
    },
    "distribution": {
      "description": "Row default.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "dueDate": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "intakeMode": {
      "description": "Row default.",
      "enum": [
        "REQUESTED",
        "LOGGED"
      ],
      "type": "string"
    },
    "items": {
      "description": "Drafts to create.",
      "items": {
        "properties": {
          "approvalPlan": {
            "description": "Same shape as approvalPlan. Approver stages; required before opening unless a template supplies them.",
            "type": "object"
          },
          "approvalTemplateId": {
            "description": "Exact approval template ID, not a name; its stages become the plan.",
            "type": "string"
          },
          "description": {
            "description": "Body or notes; keep the title short.",
            "type": "string"
          },
          "distribution": {
            "description": "Saved recipients; no notice is sent.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "dueDate": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "files": {
            "description": "Submission documents; with an in-house submitter they count as submitted on open.",
            "items": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                      "type": "string"
                    },
                    "type": {
                      "const": "attachment",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "contentType": {
                      "description": "MIME type.",
                      "type": "string"
                    },
                    "fileName": {
                      "type": "string"
                    },
                    "fileSize": {
                      "description": "Size in bytes, as a string.",
                      "type": "string"
                    },
                    "key": {
                      "type": "string"
                    },
                    "photoTakenDate": {
                      "description": "ISO with offset.",
                      "type": "string"
                    },
                    "type": {
                      "const": "upload",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "key",
                    "fileName",
                    "contentType",
                    "fileSize"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Documents module document ID.",
                      "type": "string"
                    },
                    "type": {
                      "const": "document",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "type": {
                      "const": "drawing",
                      "type": "string"
                    }
                  },
                  "required": [
                    "type",
                    "id"
                  ],
                  "type": "object"
                }
              ]
            },
            "type": "array"
          },
          "intakeMode": {
            "description": "REQUESTED asks for documents; LOGGED records received ones, needing submittedAt and files to open.",
            "enum": [
              "REQUESTED",
              "LOGGED"
            ],
            "type": "string"
          },
          "locationId": {
            "description": "Resolved project location ID.",
            "type": "string"
          },
          "referenceFiles": {
            "description": "Same shape as files. Reference documents for the submitter, such as specifications; never the submission.",
            "type": "array"
          },
          "specificationSection": {
            "description": "Specification section, e.g. 033000.",
            "type": "string"
          },
          "subcontractorId": {
            "description": "Subcontractor/company ID.",
            "type": "string"
          },
          "submissionDueAt": {
            "description": "ISO with offset. When the submitter owes the documents; dueDate is the review deadline.",
            "type": "string"
          },
          "submittalPackageId": {
            "description": "Submittal Package ID.",
            "type": "string"
          },
          "submittalType": {
            "description": "Configured type key, not a display label.",
            "type": "string"
          },
          "submittedAt": {
            "description": "LOGGED intake only: when received; not in the future.",
            "type": "string"
          },
          "submitter": {
            "description": "Who supplies the documents: a contact, or an admin user for in-house work.",
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "enum": [
                  "ADMIN_USER",
                  "CONTACT"
                ],
                "type": "string"
              }
            },
            "required": [
              "id",
              "type"
            ],
            "type": "object"
          },
          "title": {
            "description": "Submittal title",
            "type": "string"
          },
          "urgent": {
            "description": "Only when the user or source says it is urgent.",
            "type": "boolean"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "locationId": {
      "description": "Row default.",
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "specificationSection": {
      "description": "Row default.",
      "type": "string"
    },
    "subcontractorId": {
      "description": "Row default.",
      "type": "string"
    },
    "submissionDueAt": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "submittalPackageId": {
      "description": "Row default.",
      "type": "string"
    },
    "submittalType": {
      "description": "Row default.",
      "type": "string"
    },
    "submittedAt": {
      "description": "ISO with offset. Row default.",
      "type": "string"
    },
    "submitter": {
      "description": "Row default.",
      "properties": {
        "id": {
          "description": "Admin user or contact ID.",
          "type": "string"
        },
        "type": {
          "description": "ADMIN_USER: team member; CONTACT: external contact.",
          "enum": [
            "ADMIN_USER",
            "CONTACT"
          ],
          "type": "string"
        }
      },
      "required": [
        "id",
        "type"
      ],
      "type": "object"
    },
    "urgent": {
      "description": "Row default.",
      "type": "boolean"
    }
  },
  "required": [
    "projectId",
    "items"
  ],
  "type": "object"
}
Open and send submittals createSubmittalOpenAndSend Writes dataDestructive

Open the named Submittals and email each subcontractor a portal link to their own items. Sends real email to external recipients and cannot be recalled. Recipients must belong to the selectable contacts in the current package send-preview groups. The recipients array replaces all recipients for this send; omitted contacts receive nothing. Blocked or excluded Submittals are skipped and reported.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "description": "Message included in every email this call sends.",
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "recipients": {
      "description": "One entry per subcontractor group being sent to, built from the preview.",
      "items": {
        "properties": {
          "perSubmittalDistribution": {
            "description": "Narrows each Submittal to some group recipients. Omit to email every recipient about every item.",
            "items": {
              "properties": {
                "distribution": {
                  "description": "Replaces who is emailed about this one Submittal. Each person is emailed about their own items only.",
                  "items": {
                    "properties": {
                      "id": {
                        "description": "Admin user or contact ID.",
                        "type": "string"
                      },
                      "type": {
                        "description": "ADMIN_USER: team member; CONTACT: external contact.",
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "submittalId": {
                  "description": "Submittal ID within this group.",
                  "type": "string"
                }
              },
              "required": [
                "submittalId",
                "distribution"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "recipients": {
            "description": "Replaces the emailed recipients for this group. Each one must be a person the preview offered for this subcontractor.",
            "items": {
              "properties": {
                "id": {
                  "description": "The ID of the admin user or contact offered by the open-and-send preview.",
                  "type": "string"
                },
                "type": {
                  "description": "ADMIN_USER: team member; CONTACT: subcontractor or directory contact; EXTERNAL: email-only, from the preview.",
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT",
                    "EXTERNAL"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "subcontractorId": {
            "description": "Subcontractor ID of the preview group these recipients belong to.",
            "type": "string"
          }
        },
        "required": [
          "subcontractorId",
          "recipients"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "submittalIds": {
      "description": "Exact Submittal IDs to open and send, taken from the preview rows that are ready to send.",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "projectId",
    "submittalIds",
    "recipients"
  ],
  "type": "object"
}
Create submittal packages createSubmittalPackages Writes data

Create Submittal Packages, one per item, optionally attaching existing Submittals or creating simple placeholder draftItems. Per-item outcomes; the first failure stops the rest. Within an item the package is created first, so a move or draft can fail after it exists: resolve with its returned ID rather than creating another package. This does not open, send, close, distribute, share, or create public links.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "confirmMoveExistingSubmittals": {
            "description": "Set true only when the user explicitly confirmed moving existing Submittals out of their current packages.",
            "type": "boolean"
          },
          "description": {
            "description": "Optional package description.",
            "type": "string"
          },
          "draftItems": {
            "description": "Simple drafts in the new package: title, submittalType, specificationSection, and description only.",
            "items": {
              "properties": {
                "description": {
                  "description": "Optional body or notes.",
                  "type": "string"
                },
                "specificationSection": {
                  "description": "Optional specification section, for example 033000.",
                  "type": "string"
                },
                "submittalType": {
                  "description": "Optional configured Submittal type key. Use the stored key, not a display label.",
                  "type": "string"
                },
                "title": {
                  "description": "Submittal title",
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "maxItems": 50,
            "type": "array"
          },
          "existingSubmittalIds": {
            "description": "Existing Submittal IDs to place into this package.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "specificationSection": {
            "type": "string"
          },
          "title": {
            "description": "Submittal Package title",
            "type": "string"
          }
        },
        "required": [
          "projectId",
          "title"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create submittal revision createSubmittalRevision Writes dataDestructive

Request a new revision of one Submittal: closes the current revision and opens the next against the same approval stages, notifying the submitter to resubmit. Requires OPEN or CLOSED status and a latest decision of Revise and Resubmit or Rejected. The optional note goes to the submitter.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "description": "Message to the submitter explaining what to resubmit.",
      "type": "string"
    },
    "submittalId": {
      "description": "The ID of the Submittal to revise",
      "type": "string"
    }
  },
  "required": [
    "submittalId"
  ],
  "type": "object"
}
Create submittals from log template createSubmittalsFromLogTemplate Writes data

Create draft Submittals from selected published log-template item IDs, matching the apply-template dialog. Each draft records its source template. packageMode NONE (default) leaves them unpackaged; NEW puts them in one new package (packageTitle, packageSpecificationSection, packageDescription); EXISTING adds them to existingPackageId on this project. Opening later requires a company, submitter, submission due date, and approval template. Does not open or send.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "existingPackageId": {
      "type": "string"
    },
    "packageDescription": {
      "type": "string"
    },
    "packageMode": {
      "enum": [
        "NONE",
        "NEW",
        "EXISTING"
      ],
      "type": "string"
    },
    "packageSpecificationSection": {
      "type": "string"
    },
    "packageTitle": {
      "description": "Defaults to the first template name.",
      "type": "string"
    },
    "projectId": {
      "description": "The project the drafts are added to.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "templates": {
      "description": "One entry per log template, each used once.",
      "items": {
        "properties": {
          "itemIds": {
            "description": "Item IDs from that template's items to add. Pass every item ID to add the whole template.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          },
          "templateId": {
            "description": "Exact published Submittal log template ID.",
            "type": "string"
          }
        },
        "required": [
          "templateId",
          "itemIds"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "projectId",
    "templates"
  ],
  "type": "object"
}
Create timesheet entries createTimesheetEntries Writes data

Create timesheet entry wrapper records for workers, one per item. The first failure stops remaining items. timeType and costCode require exact configured labels and codes. Datetimes are absolute ISO with the project offset. templateResponse creates or links an embedded response; completedAt defaults to now. Does not subsequently edit response answers.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "costCode": {
            "description": "Exact configured CostCode code. Required when settings report costCodeRequired.",
            "type": "string"
          },
          "date": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "endTime": {
            "description": "Absolute end datetime with timezone offset.",
            "type": "string"
          },
          "hours": {
            "type": "number"
          },
          "notes": {
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "startTime": {
            "description": "Absolute start datetime with timezone offset.",
            "type": "string"
          },
          "status": {
            "enum": [
              "APPROVED_1",
              "APPROVED_2",
              "PENDING"
            ],
            "type": "string"
          },
          "subcontractorId": {
            "type": "string"
          },
          "templateResponse": {
            "properties": {
              "completedAt": {
                "description": "ISO with offset. Omit for now.",
                "type": "string"
              },
              "libraryTemplateId": {
                "description": "Read-only library template ID. Mutually exclusive with templateId.",
                "type": "string"
              },
              "locationId": {
                "type": "string"
              },
              "projectId": {
                "pattern": "^[A-Za-z0-9_-]+quot;,
                "type": "string"
              },
              "templateId": {
                "description": "Company/project template ID. Mutually exclusive with libraryTemplateId.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "timeType": {
            "description": "Exact configured TimeType label.",
            "type": "string"
          },
          "workerId": {
            "type": "string"
          }
        },
        "required": [
          "projectId",
          "workerId",
          "subcontractorId",
          "date",
          "hours",
          "timeType"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create toolboxes createToolboxes Writes dataDestructive

Create toolbox talks/Meeting v2 meetings, one per item. Per-item outcomes; the first failure stops the rest. For typed meetings pass meetingTypeId and fill its AGENDA and MEETING templates with agendaFieldUpdates and meetingFieldUpdates. Omit meetingTitle to use the type name. With status DISTRIBUTED, workerIds create invites, notify recipients, and schedule reminders; other statuses do not.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "agenda": {
            "type": "string"
          },
          "agendaFieldUpdates": {
            "description": "AGENDA template answers by exact field label. Omit for blank defaults.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "actions": {
                  "description": "Actions to create on this field. Needs actions enabled.",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "assignees": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "id": {
                              "type": "string"
                            },
                            "type": {
                              "enum": [
                                "ADMIN_USER",
                                "CONTACT",
                                "RESOURCE_TAG",
                                "SUBCONTRACTOR",
                                "WORKER"
                              ],
                              "type": "string"
                            }
                          },
                          "required": [
                            "id",
                            "type"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "attachmentIds": {
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "description": {
                        "type": "string"
                      },
                      "dueDate": {
                        "type": "string"
                      },
                      "locationId": {
                        "type": "string"
                      },
                      "priorityType": {
                        "type": "string"
                      },
                      "status": {
                        "enum": [
                          "CANT_DO",
                          "COMPLETE",
                          "IN_PROGRESS",
                          "TO_DO",
                          "WAITING_REVIEW"
                        ],
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "type": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "title"
                    ],
                    "type": "object"
                  },
                  "minItems": 1,
                  "type": "array"
                },
                "fieldId": {
                  "description": "Field ID from the response definition.",
                  "type": "string"
                },
                "fieldName": {
                  "description": "Exact field label; use fieldId when labels repeat.",
                  "type": "string"
                },
                "note": {
                  "description": "Note text; null clears. Needs notes enabled on the field.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "tableId": {
                  "type": "string"
                },
                "tableName": {
                  "type": "string"
                },
                "tableRows": {
                  "additionalProperties": false,
                  "description": "Rows for a table field; not combined with value, note, or actions.",
                  "properties": {
                    "mode": {
                      "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                      "enum": [
                        "append",
                        "replace"
                      ],
                      "type": "string"
                    },
                    "rows": {
                      "description": "One entry per row, in order; never join entries in a cell.",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "cells": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "columnId": {
                                  "description": "Column id from the detail read.",
                                  "type": "string"
                                },
                                "columnName": {
                                  "description": "Exact column header, if no columnId.",
                                  "type": "string"
                                },
                                "note": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "value": {
                                  "anyOf": [
                                    {
                                      "type": "string"
                                    },
                                    {
                                      "type": "number"
                                    },
                                    {
                                      "type": "boolean"
                                    },
                                    {
                                      "type": "null"
                                    },
                                    {
                                      "items": {},
                                      "type": "array"
                                    },
                                    {
                                      "additionalProperties": {},
                                      "type": "object"
                                    }
                                  ],
                                  "description": "Match the column's valueSchema and options."
                                }
                              },
                              "type": "object"
                            },
                            "minItems": 1,
                            "type": "array"
                          }
                        },
                        "required": [
                          "cells"
                        ],
                        "type": "object"
                      },
                      "maxItems": 200,
                      "minItems": 1,
                      "type": "array"
                    },
                    "tableId": {
                      "description": "Table id from the detail read.",
                      "type": "string"
                    },
                    "tableName": {
                      "description": "Exact table name, if no tableId.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "rows"
                  ],
                  "type": "object"
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    },
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    },
                    {
                      "items": {},
                      "type": "array"
                    },
                    {
                      "additionalProperties": {},
                      "type": "object"
                    }
                  ],
                  "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
                }
              },
              "type": "object"
            },
            "type": "array"
          },
          "date": {
            "description": "ISO with offset, keeping the requested local time.",
            "type": "string"
          },
          "keys": {
            "description": "Initial key list when supplied.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "meetingFieldUpdates": {
            "description": "Same shape as agendaFieldUpdates. MEETING template answers by exact field label. Omit for blank defaults.",
            "type": "array"
          },
          "meetingTitle": {
            "type": "string"
          },
          "meetingTypeId": {
            "description": "Exact Meeting v2 meeting type ID.",
            "type": "string"
          },
          "notes": {
            "type": "string"
          },
          "projectId": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "status": {
            "enum": [
              "COMPLETED",
              "DISTRIBUTED",
              "DRAFT",
              "RUNNING"
            ],
            "type": "string"
          },
          "type": {
            "enum": [
              "INCIDENT",
              "OTHER",
              "REGULAR"
            ],
            "type": "string"
          },
          "workerIds": {
            "description": "Worker IDs to invite. Invites are only created when the toolbox status is DISTRIBUTED.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "projectId",
          "date",
          "type"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Create toolbox invites createToolboxInvites Writes data

Create one or more toolbox invites for workers/admin users. Use a one-item adminUserIds or workerIds array for a single invite. This appends invites for the supplied users and skips duplicates; it does not replace the existing invite roster.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "adminUserIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "attended": {
      "type": "boolean"
    },
    "toolboxId": {
      "type": "string"
    },
    "workerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "toolboxId"
  ],
  "type": "object"
}
Create toolbox pre starts createToolboxPreStarts Writes data

Create pre-start notices from toolbox talk content, starting today in the project's timezone for numberOfDays. The toolbox's scheduled date is not used. Per-item outcomes; the first failure stops the rest.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "items": {
      "items": {
        "properties": {
          "numberOfDays": {
            "description": "How many days the pre-start stays open at sign-on. Defaults to 1, as in BuildPass.",
            "minimum": 1,
            "type": "integer"
          },
          "toolboxId": {
            "description": "The toolbox ID",
            "type": "string"
          }
        },
        "required": [
          "toolboxId"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "items"
  ],
  "type": "object"
}
Edit template working copy editTemplateWorkingCopy Writes dataDestructive

Apply exact JSON edits to a private template working copy and validate the whole result. Schema-invalid edits ARE retained: use the returned revision for subsequent repairs. Path/target failures apply none of the batch. set assigns a value, remove deletes, insert inserts at an array index. IDs target existing items; omit itemId and use root-relative paths to repair malformed hierarchy or duplicate IDs. Preserve stable IDs and unrelated authored content. Result lists added/updated items (ids, paths) and removed ids; a cut list gives changedItemCount and outline offset. Apply only after valid.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "edits": {
      "items": {
        "properties": {
          "itemId": {
            "description": "Resolve this item uniquely, then apply path relative to it. Omit to use a root-relative path.",
            "type": "string"
          },
          "operation": {
            "enum": [
              "set",
              "remove",
              "insert"
            ],
            "type": "string"
          },
          "path": {
            "description": "Exact JSON path. Empty path replaces the root or identified item. Insert at an array path appends.",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "minimum": 0,
                  "type": "integer"
                }
              ]
            },
            "maxItems": 64,
            "type": "array"
          },
          "valueJson": {
            "description": "JSON-encoded value for set or insert, including quotes for strings. Use \"null\" for null. Omit for remove.",
            "type": "string"
          }
        },
        "required": [
          "operation",
          "path"
        ],
        "type": "object"
      },
      "maxItems": 100,
      "type": "array"
    },
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "templateName": {
      "maxLength": 120,
      "type": "string"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision",
    "edits"
  ],
  "type": "object"
}
Edit workflow working copy editWorkflowWorkingCopy Writes dataDestructive

Apply exact JSON edits to a private workflow working copy and validate the whole result. Schema-invalid edits ARE retained: use the returned revision for subsequent repairs. Path/target failures apply none of the batch. set assigns a value, remove deletes, insert inserts at an array index. IDs target existing items; omit itemId and use root-relative paths to repair malformed hierarchy or duplicate IDs. Preserve stable IDs and unrelated authored content. Result lists added/updated steps (ids, paths) and removed ids. Apply only after valid.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "edits": {
      "items": {
        "properties": {
          "itemId": {
            "description": "Resolve this item uniquely, then apply path relative to it. Omit to use a root-relative path.",
            "type": "string"
          },
          "operation": {
            "enum": [
              "set",
              "remove",
              "insert"
            ],
            "type": "string"
          },
          "path": {
            "description": "Exact JSON path. Empty path replaces the root or identified item. Insert at an array path appends.",
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "minimum": 0,
                  "type": "integer"
                }
              ]
            },
            "maxItems": 64,
            "type": "array"
          },
          "valueJson": {
            "description": "JSON-encoded value for set or insert, including quotes for strings. Use \"null\" for null. Omit for remove.",
            "type": "string"
          }
        },
        "required": [
          "operation",
          "path"
        ],
        "type": "object"
      },
      "maxItems": 100,
      "type": "array"
    },
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision",
    "edits"
  ],
  "type": "object"
}
Get action getAction Read only

Get one action/task by exact ID, including details, status, priority, due date, location, description, and its complete activity-thread update history in newest-first order.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get admin user getAdminUser Read only

Get detailed information about a specific admin user.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the admin user",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get auto sign on setup status getAutoSignOnSetupStatus Read only

Report automatic sign-on setup by project. Shows builder auto sign-on setting, project latitude/longitude/radius, geofence readiness, geolocation reminders, and whether each project is effectively ready for auto sign-on/off. Worker phone opt-in and location permission state are not available in admin data.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search by project name or address",
      "type": "string"
    },
    "status": {
      "enum": [
        "ARCHIVED",
        "COMPLETE",
        "IN_PROGRESS",
        "UPCOMING"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Get BuildPass workflow guide getBuildPassWorkflowGuide Read only

Fetch one MCP-safe BuildPass product or workflow guide by its exact guide ID.

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "id": {
      "description": "Exact BuildPass product or workflow guide ID.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "guide": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "type": "string"
        },
        "description": {
          "type": "string"
        },
        "id": {
          "type": "string"
        },
        "priority": {
          "type": "number"
        },
        "resourceUri": {
          "type": "string"
        },
        "title": {
          "type": "string"
        }
      },
      "required": [
        "id",
        "title",
        "description",
        "body",
        "priority",
        "resourceUri"
      ],
      "type": "object"
    }
  },
  "required": [
    "guide"
  ],
  "type": "object"
}
Get certification getCertification Read only

Get the certification record and its attached file metadata. File URLs are references only; this result does not include or inspect the referenced file contents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the certification",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get contact getContact Read only

Get detailed information about a specific contact.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the contact",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get dashboard getDashboard Read only

Get detailed information about a dashboard by ID.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get defect getDefect Read only

Get detailed information about a specific defect, including whether it has been sent to its assignees (sentToAssignees and sentAt) and its complete update thread in newest-first order.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get document getDocument Read only

Get one document record and its file metadata. This result does not include or inspect the referenced file contents. sharedDirectlyWithWorkers and sharedViaWorkerVisibleFolder report configuration only; they do not establish that a named worker can open it.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the document",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get drawing getDrawing Read only

Get one drawing record and its file metadata, including review status, notify recipients, previous revision, version history, and read receipts. This result does not include or inspect the referenced drawing contents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the drawing",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get emergency getEmergency Read only

Get detailed information about a specific emergency.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the emergency",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get form response getFormResponse Read only

Get a specific form/template response. Compact mode includes response metadata, a complete value-bearing field summary, and attachmentCount. Full mode includes normalized field labels, block types, options, current values, expected answer shapes, attachment URLs, and canonical raw responseData.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the form response",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get induction getInduction Read only

Get detailed information about a specific induction. Use the returned authenticated webUrl for the trusted induction signature workflow.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "inductionId": {
      "description": "The ID of the induction",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "type": {
      "description": "Type of induction",
      "enum": [
        "site",
        "company"
      ],
      "type": "string"
    }
  },
  "required": [
    "inductionId",
    "type"
  ],
  "type": "object"
}
Get insurance getInsurance Read only

Get one insurance record and its file metadata. This result does not include or inspect the referenced file contents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the insurance document",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get library SWMS getLibrarySwms Read only

Get details for one reusable library method statement before creating a project record from it, including compact review checklist fields when available.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The library method statement document ID.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get location getLocation Read only

Get detailed information about a location.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get meeting type getMeetingType Read only

Get one Meeting v2 meeting type, including agendaTemplate.fields and meetingTemplate.fields with the labels and value shapes of its agenda and meeting-specific fields.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The meeting type ID",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get my activity summary getMyActivitySummary Read only

Get the signed-in user's own BuildPass activity over recent weeks in the active company: counts by record type, action and status change, by weekday and hour, plus event counts per project, most active first. Use for questions about how they work, what they review or approve, what they do regularly or which projects they work on most; it does not show other people's activity.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "timeZone": {
      "description": "IANA timezone for weekday and hour buckets, for example Australia/Melbourne.",
      "type": "string"
    },
    "weeks": {
      "description": "Weeks to look back, 1-12. Defaults to 8.",
      "maximum": 12,
      "minimum": 1,
      "type": "integer"
    }
  },
  "type": "object"
}
Get notice getNotice Read only

Get a notice/pre-start with project, dates, sign-ons, acknowledgements, linked toolbox details, and embedded response. Compact mode includes a complete value-bearing field summary. Full mode includes normalized field labels, block types, options, values, expected answer shapes, and canonical raw responseData.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the notice",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get permit getPermit Read only

Get detailed information about a specific permit.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the permit",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get phone call getPhoneCall Read only

Get one authorized phone call summary by exact ID. Returns current ordered Page summary, tasks, and photos; legacy summary fields are returned only without a Page. Core API enforces builder access and call-detail visibility.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "BuildPass phone call ID.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get photo report getPhotoReport Read only

Get one authorized, view-only Supasite Photo Report and its ordered semantic Page blocks by exact Photo Report ID. Does not expose the owner-only Supasite edit link.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "Exact BuildPass Photo Report ID.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get platform usage report getPlatformUsageReport Read only

Get high-level platform usage report data with optional project and date range filters. Use for report-style summaries of BuildPass activity; returns reporting data only and does not export files.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "afterDateTime": {
      "description": "Report period start, ISO with offset.",
      "type": "string"
    },
    "beforeDateTime": {
      "description": "Report period end, ISO with offset.",
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Get prequalification getPrequalification Read only

Get one prequalification submission. formResponse contains read-only subcontractor answers; reviewFormResponse contains the company review checklist, or null if absent. Compact mode includes metadata and complete value-bearing summaries. Full mode includes normalized fields and canonical raw responseData for each form.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the prequalification",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get project getProject Read only

Get detailed information about a specific project by ID.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the project",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get project schedule getProjectSchedule Read only

Get a project schedule by exact ID, including every phase, task, and milestone. Returns the full schedule rather than a filtered or paged item subset.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the project schedule",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get published schedule getPublishedSchedule Read only

Read the published schedule snapshot, marked source: published, as a summary or as a paged reference. view "summary" (default) for an overview; view "reference" for item IDs, dates, durations, hierarchy, dependencies, and critical-path inputs. Excludes browser-local unsaved items and temporary IDs. The user publishes manually in Scheduling UI.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectScheduleId": {
      "description": "The ID of the project schedule",
      "type": "string"
    },
    "query": {
      "description": "Reference view only. index (default), targeted or full for exact values, property for nested JSON chunks.",
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "Items per page, up to 100; a larger value reads 100.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "index",
              "type": "string"
            },
            "search": {
              "description": "Text to match in item IDs, kinds, labels, or paths.",
              "maxLength": 200,
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "ids": {
              "description": "Exact item IDs from an index read.",
              "items": {
                "maxLength": 200,
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "mode": {
              "const": "targeted",
              "type": "string"
            }
          },
          "required": [
            "mode",
            "ids"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "Items per page, up to 25; a larger value reads 25.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "full",
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "id": {
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "JSON characters per page, up to 4000; a larger value reads 4000.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "property",
              "type": "string"
            },
            "path": {
              "items": {
                "maxLength": 200,
                "type": "string"
              },
              "maxItems": 20,
              "type": "array"
            }
          },
          "required": [
            "mode",
            "id",
            "path"
          ],
          "type": "object"
        }
      ]
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "view": {
      "description": "summary (default): published schedule overview. reference: bounded, paged item reference.",
      "enum": [
        "summary",
        "reference"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectScheduleId"
  ],
  "type": "object"
}
Get register getRegister Read only

Get a live register with its linked editable template identity, settings, and compact field contracts for main and type-library responses. linkedTemplate identifies its owned definition, distinct from a reusable REGISTER template. fields and typeFields include IDs, labels, block types, value shapes, and options.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "identifierPrefix": {
      "description": "The identifier prefix of the register",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "identifierPrefix"
  ],
  "type": "object"
}
Get register item getRegisterItem Read only

Get a register item. Compact mode includes metadata and complete value-bearing summaries of main, type, upload, and review responses. Full mode includes normalized fields and one canonical raw responseData payload per form.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "identifier": {
      "description": "The identifier number of the item",
      "type": "integer"
    },
    "identifierPrefix": {
      "description": "The identifier prefix of the register",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "identifierPrefix",
    "identifier"
  ],
  "type": "object"
}
Get report format getReportFormat Read only

Fetch a saved output/report format prompt by exact ID, including its stored content for PDF-ready documents, CSV exports, charts, reports, or other recurring output formats. Returns content without generating an artifact.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The saved report format ID to load.",
      "type": "string"
    },
    "includeArchived": {
      "description": "Include archived report formats when true.",
      "type": "boolean"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get RFI getRFI Read only

Get one RFI by exact ID, including the formal question, delivery state (sentToRespondents and openedAt), response context, and complete comment history in newest-first order.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the RFI",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get schedule item getScheduleItem Read only

Get detailed information about a specific schedule item (phase, task, or milestone).

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the schedule item",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get SDS getSds Read only

Get one SDS record and its linked file metadata. This result does not include or inspect the referenced SDS contents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the SDS document",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get settings getSettings Read only

Read one BuildPass settings scope: actions (type and priority labels), company, project, signOn, user, checklists, integration, procoreProject folders, or rfiNumbering. Read actions before filtering or setting action type or priorityType; rfiNumbering before RFI imports that carry numbers; checklists to see which forms workers can use. actions, project, procoreProject, and rfiNumbering need projectId; integration needs integrationType. The manual QR access code is not returned; use the project webUrl.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "integrationType": {
      "enum": [
        "ADAPTIVE",
        "PREMIER",
        "PROCORE"
      ],
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "scope": {
      "enum": [
        "actions",
        "company",
        "project",
        "signOn",
        "user",
        "checklists",
        "integration",
        "procoreProject",
        "rfiNumbering"
      ],
      "type": "string"
    }
  },
  "required": [
    "scope"
  ],
  "type": "object"
}
Get sign on getSignOn Read only

Get detailed information about a specific sign-on record.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the sign-on record",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get site diary getSiteDiary Read only

Get one Site Diary wrapper with embedded response values by id or by projectId and date. Full mode includes normalized fields and raw responseData. Photos are associated with formResponse.id and image source SITE_DIARY. A date without a diary returns data null.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "date": {
      "description": "Date in YYYY-MM-DD format for a lookup by projectId and date",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
      "type": "string"
    },
    "id": {
      "description": "Site Diary ID. Omit when looking up by projectId and date.",
      "type": "string"
    },
    "projectId": {
      "description": "Project ID for a date lookup",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Get subcontractor getSubcontractor Read only

Get detailed information about a subcontractor.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get submittal getSubmittal Read only

Get a Submittal by exact ID: package, type, spec section, intake mode, submitter, frozen approval plan, live approval flow with current stage and participant decisions, all revisions, distribution recipients and dates, documents and their provenance, and recent conversation. Includes stage and participant IDs.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the Submittal",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get submittal package getSubmittalPackage Read only

Get a Submittal Package by exact ID with package metadata and contained item identity/status. Does not provide item-level approval or ball-in-court analysis or the native package CSV/PDF export.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the Submittal Package",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get submittal settings getSubmittalSettings Read only

Get builder Submittal configuration: type keys and labels, approval templates with IDs, stages and default selection, and published log templates. With logTemplateId and projectId, returns that log template's items and their exact IDs instead.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "logTemplateId": {
      "description": "Exact submittal log template ID from logTemplates. Returns the submittals the template would create on projectId.",
      "type": "string"
    },
    "projectId": {
      "description": "Project the log template would be applied to.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Get summary record getSummaryRecord Read only

Read a meeting, phone call or photo report summary and its directly connected actions and defects by exact record type and record ID. Returns ordered Page content and image attachment URLs. Defects are supported only for PHOTO_REPORT. IDs identify the source record, not its Page.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "Source record ID",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "recordType": {
      "enum": [
        "MEETING",
        "PHONE_CALL",
        "PHOTO_REPORT"
      ],
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id",
    "recordType"
  ],
  "type": "object"
}
Get SWMS getSwms Read only

Get a project safety method statement with assigned workers, review status, and whether its review response exists or will be created from the project template. Compact mode includes checklist source and complete value-bearing summary. Full mode includes normalized checklist fields and canonical raw responseData when present.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The project method statement document ID.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get template getTemplate Read only

Read one saved template, checklist, or form definition from canonical database state. Compact detail returns metadata, summaries, current validation issues (informational, each with the item id to patch). A null patchItem value removes a field. For structure, use "index" for compact IDs and hierarchy, "targeted" for exact known values including conditions, "property" with an item ID and path for nested JSON, or "full" for paged access. Follow nextCursor and concatenate valueJsonChunks.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "detail": {
      "description": "Omit or compact for metadata; structure returns one page of items with IDs, narrowed by query.",
      "enum": [
        "compact",
        "structure"
      ],
      "type": "string"
    },
    "id": {
      "description": "The ID of the template",
      "type": "string"
    },
    "query": {
      "description": "Selective structure read. index and full paginate; targeted fails on any unknown ID.",
      "oneOf": [
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "Items per page, up to 100; a larger value reads 100.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "index",
              "type": "string"
            },
            "search": {
              "description": "Text to match in item IDs, kinds, labels, or paths.",
              "maxLength": 200,
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "ids": {
              "description": "Exact item IDs from an index read.",
              "items": {
                "maxLength": 200,
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "mode": {
              "const": "targeted",
              "type": "string"
            }
          },
          "required": [
            "mode",
            "ids"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "Items per page, up to 25; a larger value reads 25.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "full",
              "type": "string"
            }
          },
          "required": [
            "mode"
          ],
          "type": "object"
        },
        {
          "additionalProperties": false,
          "properties": {
            "cursor": {
              "description": "nextCursor from the previous page, copied unchanged.",
              "maxLength": 200,
              "type": "string"
            },
            "id": {
              "maxLength": 200,
              "type": "string"
            },
            "limit": {
              "description": "JSON characters per page, up to 4000; a larger value reads 4000.",
              "minimum": 1,
              "type": "integer"
            },
            "mode": {
              "const": "property",
              "type": "string"
            },
            "path": {
              "items": {
                "maxLength": 200,
                "type": "string"
              },
              "maxItems": 20,
              "type": "array"
            }
          },
          "required": [
            "mode",
            "id",
            "path"
          ],
          "type": "object"
        }
      ]
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get template authoring reference getTemplateAuthoringReference Read only

Return the requested sections of the reusable template/checklist/form definition reference: core has the template and design rules and section, group, block, and option shapes (returned when nothing else is requested); sourceDigitisation covers file migrations; conditions covers Condition[][] visibility; capture/display block types return exact block shapes. Does not return an existing template's IDs or definition.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "captureBlockTypes": {
      "description": "Exact capture/input block types to include, such as text, radio, checkbox, dateTime, signature, or file.",
      "items": {
        "enum": [
          "action",
          "checkbox",
          "dateTime",
          "drillDown",
          "file",
          "image",
          "projectHoursBudget",
          "projectLocation",
          "radio",
          "richText",
          "checkAll",
          "select",
          "signature",
          "subcontractorSelect",
          "subcontractorSummary",
          "text",
          "timeNotes",
          "todo",
          "toggle",
          "weather",
          "workerAttendance",
          "workerQrCodeSignature"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "type": "array"
    },
    "displayBlockTypes": {
      "description": "Display block chunks to include, such as heading, text, richText, divider, image, video, or list.",
      "items": {
        "enum": [
          "action",
          "checklist",
          "dateTime",
          "divider",
          "drillDown",
          "file",
          "heading",
          "image",
          "list",
          "projectHoursBudget",
          "projectLocation",
          "richText",
          "select",
          "signature",
          "subcontractorSelect",
          "subcontractorSummary",
          "swmsGeneralInfo",
          "swmsHrcw",
          "swmsHazards",
          "swmsPpe",
          "swmsPlant",
          "text",
          "timeNotes",
          "todo",
          "video",
          "weather",
          "workerAttendance",
          "workerQrCodeSignature"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "type": "array"
    },
    "topics": {
      "description": "Topics to return; core comes back when nothing else is requested. conditions only for conditional visibility.",
      "items": {
        "enum": [
          "core",
          "supportingTypes",
          "conditions",
          "sourceDigitisation"
        ],
        "type": "string"
      },
      "maxItems": 4,
      "type": "array"
    }
  },
  "type": "object"
}
Get template type reference getTemplateTypeReference Read only

For reusable template/checklist/form definitions, get the exact Core API TemplateType enum values, their BuildPass product destinations, and each type's placement (module-effective: one effective template per project; company-wide: available to every project, no project copies or company default) when the value or placement is unclear. Includes the INSPECTION-to-Forms and ITP-to-Inspections mapping. For broad inventory or count questions, treat the returned values as the complete type set.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {},
  "type": "object"
}
Get template working copy getTemplateWorkingCopy Read only

Check the whole template working copy and read an outline or exact JSON subtree. Subtrees are returned as valueJson (JSON text); parse it as JSON. All reads and edits use the same authored JSON. Supply itemId and/or path for a subtree; omit both for a paginated outline. Repair diagnostics refer to this working copy. Source remains unchanged.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "issueOffset": {
      "minimum": 0,
      "type": "integer"
    },
    "itemId": {
      "type": "string"
    },
    "limit": {
      "description": "Items per page, up to 50; a larger value reads 50.",
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "outline": {
      "type": "boolean"
    },
    "path": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "minimum": 0,
            "type": "integer"
          }
        ]
      },
      "type": "array"
    },
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision"
  ],
  "type": "object"
}
Get timesheet getTimesheet Read only

Get a timesheet entry with worker, project, hours, status, timing, approval details, and linked response. Compact mode includes a complete value-bearing field summary. Full mode includes normalized field labels, block types, options, values, expected answer shapes, and canonical raw responseData.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the timesheet entry",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get timesheet types getTimesheetTypes Read only

Get available timesheet time type labels, cost code codes, and settings flags for the current builder or a specific project.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Get toolbox getToolbox Read only

Get a toolbox talk or meeting with current manual and synced Page notes; legacy notes appear only without a Page. Child-page metadata identifies the source app for synced notes. Compact mode includes Page content and form summaries; full mode adds template definitions and normalized fields. includeAttendance adds merged invite and pre-start sign-on attendance matching the printed PDF.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the toolbox talk",
      "type": "string"
    },
    "includeAttendance": {
      "description": "Include attendance: admin-marked invites and self sign-ons, each labelled with its source.",
      "type": "boolean"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get visitor getVisitor Read only

Get a visitor by exact ID with their name, contact details, and project sign-on history.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get worker getWorker Read only

Get detailed information about a specific worker by ID, including contact details, address, date of birth, emergency contact details, archived/disconnected workers when includeArchived is true, and a certificationIds helper list for follow-up certification checks. Medical information and allergies are intentionally unavailable here; use the returned authenticated webUrl when the user needs those worker details.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "includeArchived": {
      "description": "Also return archived, disconnected or historical workers.",
      "type": "boolean"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get workflow getWorkflow Read only

Get detailed information about a specific workflow.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the workflow",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Get workflow authoring capabilities getWorkflowAuthoringCapabilities Read only

Read the Core API workflow capability catalogue for a trigger and selected resource. Includes supported conditions, recipients, waits, attachments, variables, and stepTypes: the JSON Schema of each step type. Supply path to read a smaller section, with offset and limit to page arrays. Arbitrary subtrees are returned as valueJson; parse it as JSON. Use real resource and project IDs; refresh after changing the trigger.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "input": {
      "properties": {
        "projectId": {
          "type": [
            "string",
            "null"
          ]
        },
        "resourceId": {
          "type": [
            "string",
            "null"
          ]
        },
        "resourceType": {
          "anyOf": [
            {
              "enum": [
                "CHECKLIST",
                "COMPANY_INDUCTION",
                "DEFECT",
                "PREQUALIFICATION",
                "PROJECT_SCHEDULE_ITEM",
                "REGISTER_ITEM",
                "RFI",
                "SIGN_ON",
                "SITE_DIARY",
                "SITE_INDUCTION",
                "TIMESHEET"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "scheduleResourceType": {
          "anyOf": [
            {
              "enum": [
                "CHECKLIST",
                "COMPANY_INDUCTION",
                "DEFECT",
                "PREQUALIFICATION",
                "PROJECT_SCHEDULE_ITEM",
                "REGISTER_ITEM",
                "RFI",
                "SIGN_ON",
                "SITE_DIARY",
                "SITE_INDUCTION",
                "TIMESHEET"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "triggerMode": {
          "enum": [
            "EVENT",
            "SCHEDULE"
          ],
          "type": "string"
        },
        "workflowId": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "required": [
        "triggerMode"
      ],
      "type": "object"
    },
    "limit": {
      "description": "Items per page, up to 50; a larger value reads 50.",
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "path": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "minimum": 0,
            "type": "integer"
          }
        ]
      },
      "type": "array"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}
Get workflow working copy getWorkflowWorkingCopy Read only

Check the whole workflow working copy and read an outline or exact JSON subtree. Subtrees are returned as valueJson (JSON text); parse it as JSON. All reads and edits use the same authored JSON. Supply itemId and/or path for a subtree; omit both for a paginated outline. Repair diagnostics refer to this working copy. Source remains unchanged.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "issueOffset": {
      "minimum": 0,
      "type": "integer"
    },
    "itemId": {
      "type": "string"
    },
    "limit": {
      "description": "Items per page, up to 50; a larger value reads 50.",
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "outline": {
      "type": "boolean"
    },
    "path": {
      "items": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "minimum": 0,
            "type": "integer"
          }
        ]
      },
      "type": "array"
    },
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision"
  ],
  "type": "object"
}
List actions listActions Read only

List project actions/tasks with search, status, configured type/priority, assignee, location, date, and pagination filters. Returns structured rows for outstanding-work and task questions. type and priorityType filters require projectId and exact project-configured labels.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "assignees": {
      "items": {
        "properties": {
          "id": {
            "description": "Canonical assignee ID for the specified assignee type.",
            "type": "string"
          },
          "type": {
            "description": "Resolved assignee type.",
            "enum": [
              "ADMIN_USER",
              "CONTACT",
              "RESOURCE_TAG",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "dateFrom": {
      "description": "Due at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Due at or before, ISO with offset.",
      "type": "string"
    },
    "ids": {
      "description": "Filter by action IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "includeSublocations": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "locationId": {
      "description": "Filter actions by project location ID",
      "type": "string"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "overdue": {
      "type": "boolean"
    },
    "priorityType": {
      "description": "Exact project-configured action priority labels.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "dueDate",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Omit for outstanding only (TO_DO, IN_PROGRESS, WAITING_REVIEW) unless ids is set. List all statuses for closed too.",
      "items": {
        "enum": [
          "CANT_DO",
          "COMPLETE",
          "IN_PROGRESS",
          "TO_DO",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "type": {
      "description": "Exact project-configured action type labels.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List address book contacts listAddressBookContacts Read only

Search active standalone address-book contacts by name or email, optionally scoped to a project. Returns contact IDs for RFI and Submittal participants; directoryEntryId is not a participant ID. Omit projectId to search the whole builder directory, including global contacts.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List admin users listAdminUsers Read only

List admin users (staff members) in the organization, with identity, role, and project-scope information. Does not list site worker records.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search by name or email",
      "type": "string"
    }
  },
  "type": "object"
}
List certifications listCertifications Read only

List worker certifications/tickets/licences/licenses/qualifications with worker, type, review status, expiry, search, and pagination filters. Includes certification IDs and credential metadata, not the contents of attached files.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "expiringSoon": {
      "type": "boolean"
    },
    "expiryAfterDateTime": {
      "description": "Expires at or after, ISO with offset.",
      "type": "string"
    },
    "expiryBeforeDateTime": {
      "description": "Expires at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "reviewStatus": {
      "description": "Review statuses mapped to Core ticketReviewStatus.",
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "searchString": {
      "type": "string"
    },
    "shouldIncludeBuilderSubcontractors": {
      "type": "boolean"
    },
    "shouldIncludeManuallyGeneratedWorkers": {
      "type": "boolean"
    },
    "sortBy": {
      "enum": [
        "name",
        "number",
        "updatedAt",
        "worker"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "subcontractorIds": {
      "description": "Filter by subcontractor/company IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "ticketTemplateId": {
      "description": "Filter by certification type",
      "type": "string"
    },
    "ticketTemplateIds": {
      "description": "Filter by certification type IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "workerId": {
      "description": "Filter by worker ID",
      "type": "string"
    },
    "workerIds": {
      "description": "Filter by worker IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List certification templates listCertificationTemplates Read only

Search and page available certification/ticket templates by name, short name, code, category, or type. Returns template IDs, metadata, and the file names each template takes with whether each is required, not worker certifications.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List contacts listContacts Read only

List contacts for a subcontractor. Use when user asks about subcontractor contacts.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "description": "The subcontractor ID",
      "type": "string"
    }
  },
  "required": [
    "subcontractorId"
  ],
  "type": "object"
}
List dashboards listDashboards Read only

List custom reporting dashboards with optional search, project filters, and pagination. Use when the user clearly means saved analytics/reporting dashboards, not general app navigation.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List defects listDefects Read only

List defects/punch list items/snags across accessible projects, or narrow to one project, with search, status, priority, type, assignee, location, date, and pagination filters. Use for quality issues, incomplete work, rectification, close-out, and outstanding-work questions; returns structured defect rows, each stating whether it has been sent to its assignees.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "assignees": {
      "items": {
        "properties": {
          "id": {
            "description": "Canonical assignee ID for the specified assignee type.",
            "type": "string"
          },
          "type": {
            "description": "Resolved assignee type.",
            "enum": [
              "ADMIN_USER",
              "CONTACT",
              "RESOURCE_TAG",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "assignerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "includeSublocations": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "locationId": {
      "type": "string"
    },
    "locationIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "overdue": {
      "type": "boolean"
    },
    "pending": {
      "description": "true returns only TO_DO defects that have not been sent to their assignees yet.",
      "type": "boolean"
    },
    "priority": {
      "description": "Defect priorities.",
      "items": {
        "enum": [
          "CRITICAL",
          "HIGH",
          "LOW",
          "MEDIUM"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "projectId": {
      "description": "Optional project ID. Omit to list defects across all accessible projects.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search text such as a defect number, title, or keyword.",
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "dueDate",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Omit for outstanding only (TO_DO, IN_PROGRESS, WAITING_REVIEW, BLOCKED). List all statuses for closed too.",
      "items": {
        "enum": [
          "BLOCKED",
          "CANCELLED",
          "IN_PROGRESS",
          "RESOLVED",
          "TO_DO",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "type": {
      "description": "Defect types/registers.",
      "items": {
        "enum": [
          "BUILDER_DEFECT",
          "CLIENT_DEFECT",
          "INCOMPLETE_WORKS",
          "PURCHASER_DEFECT"
        ],
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List document folders listDocumentFolders Read only

List document, drawing or gallery-photo folders with paths and parent IDs in one scope tree. folderId narrows to one folder and its descendants. Each row has its own settings (visibleToWorkers, hasActivePublicLink) and effective access (effectiveWorkerAccess, effectivePublicLinkAccess), identifying the parent granting inherited access. Worker sharing and public-link access are independent. Scopes: builder_documents (company-wide), project_documents, subcontractor_documents (project Other), drawings, gallery_photos.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "folderId": {
      "description": "Read this folder and the folders beneath it instead of the whole scope.",
      "type": "string"
    },
    "folderScope": {
      "enum": [
        "builder_documents",
        "project_documents",
        "subcontractor_documents",
        "drawings",
        "gallery_photos"
      ],
      "type": "string"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Case-insensitive substring of the folder name or path.",
      "type": "string"
    }
  },
  "required": [
    "folderScope"
  ],
  "type": "object"
}
List documents listDocuments Read only

List project documents/files/paperwork with search, status, category, company, folder, archived, and pagination filters. sharedDirectlyWithWorkers and sharedViaWorkerVisibleFolder report how each document is configured for worker access; they do not establish that a named worker can open it. Rows may include an existing free-text type label, but Core does not expose configured type options here, so do not invent type values; use searchString for user wording like SWMS, SDS/MSDS, insurance, permits, manuals, certificates, reports, or contracts.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "categories": {
      "items": {
        "enum": [
          "BUILDER",
          "DRAWING",
          "GALLERY",
          "PROJECT",
          "SUBCONTRACTOR"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "category": {
      "enum": [
        "BUILDER",
        "DRAWING",
        "GALLERY",
        "PROJECT",
        "SUBCONTRACTOR"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "folderId": {
      "type": "string"
    },
    "includeArchived": {
      "type": "boolean"
    },
    "includeDescendants": {
      "type": "boolean"
    },
    "includeFolders": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "name",
        "type"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Document status: WAITING_REVIEW, REVIEWED, or CHANGES_REQUESTED.",
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "statuses": {
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorId": {
      "type": "string"
    },
    "subcontractorIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List drawings listDrawings Read only

List project drawings/plans/blueprints/sheets with search, status, folder, archived, and pagination filters. Use for drawing registers, plan sets, latest revision, sheet lookup, waiting-review approval checks, notification recipient review, and drawing status questions. Returns structured drawing rows including review status and notify recipients.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "folderId": {
      "type": "string"
    },
    "includeArchived": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "description": "Drawing status: WAITING_REVIEW, APPROVED, OUTDATED, or PROCESSING.",
      "enum": [
        "APPROVED",
        "OUTDATED",
        "PROCESSING",
        "WAITING_REVIEW"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List emergencies listEmergencies Read only

List emergencies for a project. Use when user asks about site emergencies or incidents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List form responses listFormResponses Read only

List form responses/submissions/checklists/inspections with project, template, status, search, location, date, and pagination filters. Includes completed and in-progress structured site records. Omitted status returns all unarchived responses regardless of completion. appliedFilters echoes the effective filter. Returns response rows, not reusable template definitions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "authorId": {
      "description": "Author ID of an admin user or worker; unlike authors, needs no author type.",
      "type": "string"
    },
    "authors": {
      "items": {
        "properties": {
          "id": {
            "description": "Admin user or worker ID.",
            "type": "string"
          },
          "type": {
            "description": "Author type: ADMIN_USER or WORKER.",
            "enum": [
              "ADMIN_USER",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "createdDateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "createdDateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "dateFrom": {
      "description": "Last updated at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Last updated at or before, ISO with offset.",
      "type": "string"
    },
    "includeAllProjects": {
      "description": "With projectId, also include responses that belong to no project. It does not widen the search to other projects.",
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "locationId": {
      "type": "string"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "publicResponse": {
      "type": "boolean"
    },
    "registerItemId": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "completedAt",
        "createdAt",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Status filter. DRAFT means never edited and is not IN_PROGRESS. Omit for every unarchived response.",
      "enum": [
        "IN_PROGRESS",
        "COMPLETED",
        "ARCHIVED",
        "DRAFT"
      ],
      "type": "string"
    },
    "templateId": {
      "description": "Only responses filled from this company or library template ID.",
      "type": "string"
    },
    "templateType": {
      "description": "Reusable template type, not a filled response: INSPECTION = Forms; ITP = legacy Inspections.",
      "enum": [
        "COMPANY_INDUCTION",
        "INSPECTION",
        "ITP",
        "OTHER",
        "PERMIT_TYPE",
        "PREQUALIFICATION",
        "PREQUALIFICATION_CHECKLIST",
        "PRE_START",
        "REGISTER",
        "REGISTER_ITEM_TYPE",
        "REGISTER_TYPE",
        "SDS_CHECKLIST",
        "SIGN_ON",
        "SITE_DIARY",
        "SITE_INDUCTION",
        "SWMS",
        "SWMS_CHECKLIST",
        "TIMESHEET_GROUP",
        "TOOLBOX",
        "VISITOR_SIGN_ON"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List gallery photos listGalleryPhotos Read only

Search project gallery photos by text, image source, location, folder, upload date, and photo-taken date. Each result includes its BuildPass image URL and mediaReference (mediaId, sourceType, sourceId, filename, contentType, url). Does not return a record's full form response.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "createdAfterDateTime": {
      "description": "Uploaded at or after, ISO with offset.",
      "type": "string"
    },
    "createdBeforeDateTime": {
      "description": "Uploaded at or before, ISO with offset.",
      "type": "string"
    },
    "folderId": {
      "description": "Restrict to a gallery folder.",
      "type": "string"
    },
    "imageSource": {
      "description": "Restrict to photos originating from one source, for example SITE_DIARY or DEFECT.",
      "enum": [
        "SITE_DIARY",
        "PRE_START",
        "CHECKLIST",
        "ITP",
        "PLATFORM_ACTION",
        "GALLERY",
        "DEFECT"
      ],
      "type": "string"
    },
    "includeSublocations": {
      "description": "Include photos from sublocations of projectLocationId.",
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "photoTakenAfterDateTime": {
      "description": "Taken at or after, ISO with offset.",
      "type": "string"
    },
    "photoTakenBeforeDateTime": {
      "description": "Taken at or before, ISO with offset.",
      "type": "string"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectLocationId": {
      "description": "Restrict to a project location.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Free-text search over photo filename, description, and tags.",
      "type": "string"
    },
    "sortBy": {
      "description": "Sort key, newest first. Defaults to uploadedDate.",
      "enum": [
        "uploadedDate",
        "photoTakenDate",
        "sortDate"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List inductions listInductions Read only

List inductions/orientations/onboarding records for site or company in the current builder context. Use for worker induction status, orientation progress, sign-on readiness, and review queues. For site inductions, provide projectId; company inductions use the current builder context.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Required for site inductions",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "status",
        "subcontractorName",
        "workerName"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Induction status: WAITING_REVIEW, REVIEWED, or CHANGES_REQUESTED.",
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "statuses": {
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "type": {
      "description": "Type of induction (site or company)",
      "enum": [
        "site",
        "company"
      ],
      "type": "string"
    },
    "workerId": {
      "type": "string"
    },
    "workerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List insurance listInsurance Read only

List insurance documents/COIs/certificates of insurance with project, subcontractor, search, status, expiry, archived, and pagination filters. Use for subcontractor insurance, coverage, expiry, and compliance questions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "expiryStatus": {
      "description": "Insurance expiry statuses. Use exact values: Current, Expiring Soon, or Expired.",
      "items": {
        "enum": [
          "Current",
          "Expiring Soon",
          "Expired"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "expiry",
        "name"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Insurance statuses.",
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List integration connections listIntegrationConnections Read only

List existing integration connections, optionally filtered by project or subcontractor. Does not connect, disconnect, or return the configured integration-management settings.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "type": "string"
    }
  },
  "type": "object"
}
List integrations listIntegrations Read only

List configured BuildPass integrations for connection diagnostics. Connection and sync configuration changes are managed in the BuildPass integrations UI.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List library SWMS listLibrarySwms Read only

List reusable library method statement documents with exact IDs, status, subcontractor, and expiry. With projectId, also returns whether each document is connected to that project and whether its subcontractor is on the project. Returns library documents rather than project records.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "expired": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "description": "Exact library document review statuses to filter by.",
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List locations listLocations Read only

List project locations/areas/rooms/zones/levels/units used to organize and filter records by place.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List meeting types listMeetingTypes Read only

List Meeting v2 meeting types for the builder, including meetingTypeId and visible field labels. Types group toolbox/meeting records and may have two linked TOOLBOX templates: AGENDA for agenda fields and MEETING for meeting-specific fields. archivedFilter accepts ACTIVE_ONLY, ARCHIVED_ONLY, or BOTH.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "description": "Default is ACTIVE_ONLY.",
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List my builders listMyBuilders Read only

List the BuildPass builders (company accounts) the current user can work in, with the active builder marked. Use for active-builder and available-company-account questions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List notices listNotices Read only

List notices/pre-starts/daily sign-on messages with optional project, date, archive, and pagination filters. Use for hazards, announcements, daily instructions, acknowledgement records, and sign-on notice questions. Date bounds match either the notice start date or its creation date; check returned dates when selecting notices for a scheduled day. For a local calendar day, pass dateFrom at 00:00:00 and dateTo at 23:59:59.999 with the project's timezone offset.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Notice date or created time at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Notice date or created time at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List permits listPermits Read only

List permits/permits-to-work for high-risk work, including hot works, excavation, confined space, energisation, and working at heights. Supports project, status, type, search, date, location, archive, and pagination filters. Returns list rows rather than full individual permit detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "activeStatus": {
      "items": {
        "enum": [
          "IN_PROGRESS",
          "NOT_STARTED",
          "PAUSED"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Range start; matches permits starting or ending in the range, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Range end, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "locationId": {
      "type": "string"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "permitTypeIds": {
      "description": "Permit type IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "created",
        "name",
        "startDate"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Permit statuses.",
      "items": {
        "enum": [
          "APPROVED",
          "CLOSED",
          "REJECTED",
          "WAITING_CLOSEOUT_REVIEW",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "workerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List phone calls listPhoneCalls Read only

List and search Supasite-powered Phone Calls within the current builder and project access. Includes exact phone call IDs. Core API enforces the caller's call-visibility permissions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Optional search text matched against source app, external call id, and summary text.",
      "type": "string"
    },
    "syncStatuses": {
      "description": "Phone-call sync statuses.",
      "items": {
        "enum": [
          "FAILED",
          "PENDING",
          "SYNCED"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "visibilities": {
      "description": "Phone-call visibility values.",
      "items": {
        "enum": [
          "PRIVATE",
          "SHARED",
          "TEAM"
        ],
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List photo reports listPhotoReports Read only

List and search view-only Supasite Photo Reports in one BuildPass project. Core API applies project and Page visibility access.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "includeArchived": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Project ID. Required unless a project is open in BuildPass chat.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Optional text matched against Page title and short description.",
      "type": "string"
    }
  },
  "type": "object"
}
List photo tags listPhotoTags Read only

List project photos with their tags, descriptions, and source. Use when the user asks what tags photos have, wants to see tagged/untagged photos, or asks about photo descriptions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Project to list photo tags for",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search photos by name, tag, or description",
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List prequalifications listPrequalifications Read only

List prequalification/prequal/vendor onboarding submissions with search, status, subcontractor, overdue, due-date, archive, and pagination filters. Provides company-level compliance submission rows rather than full individual submission detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archived": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dueDateAfter": {
      "description": "Due at or after, ISO with offset.",
      "type": "string"
    },
    "dueDateBefore": {
      "description": "Due at or before, ISO with offset.",
      "type": "string"
    },
    "isOverdue": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "date",
        "dueDate",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Prequalification statuses.",
      "items": {
        "enum": [
          "APPROVED",
          "REJECTED",
          "SENT",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List projects listProjects Read only

List and search accessible projects, including stable project IDs and stored geofence latitude, longitude, and radius. Results are paginated and scoped to the current user. Archived projects are excluded unless status is ARCHIVED.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search by project name or address",
      "type": "string"
    },
    "status": {
      "description": "Project status: IN_PROGRESS, UPCOMING, COMPLETE, or ARCHIVED.",
      "enum": [
        "ARCHIVED",
        "COMPLETE",
        "IN_PROGRESS",
        "UPCOMING"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List project schedules listProjectSchedules Read only

List project schedules/programs/timelines/lookaheads with project, archive, and pagination filters. Provides schedule metadata and exact IDs rather than every phase, task, or milestone.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "includeArchived": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List register items listRegisterItems Read only

List register items/rows by exact register identifier, project, search, assignee, archive, and pagination filters. Returns entries within a register rather than register definitions or full individual item detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "assignees": {
      "items": {
        "properties": {
          "id": {
            "description": "Canonical assignee ID for the specified assignee type.",
            "type": "string"
          },
          "type": {
            "description": "Resolved assignee type.",
            "enum": [
              "ADMIN_USER",
              "CONTACT",
              "RESOURCE_TAG",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "excludeArchivedRegisters": {
      "description": "Whether to exclude items from archived parent registers. Defaults to true.",
      "type": "boolean"
    },
    "identifierPrefix": {
      "description": "The identifier prefix of the register",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "followUpAt",
        "name",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List register item types listRegisterItemTypes Read only

List register item types and their upload/review template configuration. Upload templates and review templates are assigned to Register Item Types, not register item rows. Use this for questions about which item types have upload templates, review templates, linked checklists, or template visibility.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List registers listRegisters Read only

List BuildPass registers/custom tracking lists such as plant, equipment, asset, activity, and compliance registers. Returns metadata and exact identifier prefixes, not item rows or item-type upload/review template assignments.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List register setup types listRegisterSetupTypes Read only

List active library-backed register setup types, such as Plant and Equipment. Returned IDs identify LibraryTemplates validated for REGISTER_TYPE, not company reusable template IDs. Blank/custom registers do not require a library setup type.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    }
  },
  "type": "object"
}
List report formats listReportFormats Read only

List saved reusable output/report formats, including CSV/PDF/chart recipes and repeatable deliverable structures.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "contextResourceId": {
      "description": "Optional context resource ID filter.",
      "type": "string"
    },
    "contextResourceType": {
      "description": "Optional context resource type filter.",
      "type": "string"
    },
    "includeArchived": {
      "description": "Include archived report formats when true.",
      "type": "boolean"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "query": {
      "description": "Optional search text for report format name or prompt.",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List RFIs listRFIs Read only

List RFIs (Requests for Information) across accessible projects or one project, with status, ball-in-court, respondent, location, drawing, due-date, archive, search, sort, and pagination filters. Returns structured RFI rows with project identity rather than full individual detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "ballInCourt": {
      "description": "Filter by who needs to respond: INTERNAL, EXTERNAL, or NONE.",
      "enum": [
        "EXTERNAL",
        "INTERNAL",
        "NONE"
      ],
      "type": "string"
    },
    "createdByAdminUserId": {
      "description": "Only RFIs created by this admin user",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "drawingFolderId": {
      "description": "Only RFIs linked to drawings in this folder",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "drawingId": {
      "description": "Only RFIs linked to this drawing",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "dueDateAfter": {
      "description": "Due at or after, ISO with offset.",
      "type": "string"
    },
    "dueDateBefore": {
      "description": "Due at or before, ISO with offset.",
      "type": "string"
    },
    "hasDrawing": {
      "description": "true: only RFIs with a linked drawing; false: only RFIs without one.",
      "type": "boolean"
    },
    "hasMarkupLink": {
      "description": "true: only RFIs with a drawing markup link; false: only RFIs without one.",
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "locationId": {
      "description": "Only RFIs at this project location",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "description": "Optional project ID. Omit to list RFIs across all accessible projects.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "respondentId": {
      "description": "Only RFIs assigned to this respondent",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "description": "Sort field. Defaults to sequenceNumber (project-local) in one project, latest updated across projects.",
      "enum": [
        "sequenceNumber",
        "createdAt",
        "updatedAt",
        "dueDate"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "RFI statuses.",
      "items": {
        "enum": [
          "CLOSED",
          "DRAFT",
          "OPEN",
          "VOID"
        ],
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List roles listRoles Read only

List assignable admin-user roles for the current builder, including exact role IDs and display names. Role assignment inputs require IDs, not display names.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
List schedule items listScheduleItems Read only

List schedule items from a project schedule with paging and optional filters for item type, date range, item title text, assignee name, and unassigned items. Use narrow filters first for large schedules and request additional pages with limit/offset when needed. Use this for questions like "find everything between these dates", "who is meant to be on site on this day", and bulk operations like assigning companies to multiple tasks. Returns item IDs, dates, durations, hierarchy, and assignee names.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "assigneeName": {
      "description": "Case-insensitive substring of an assignee person or company name.",
      "type": "string"
    },
    "dateFrom": {
      "description": "Inclusive schedule date filter start in YYYY-MM-DD format",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
      "type": "string"
    },
    "dateTo": {
      "description": "Inclusive schedule date filter end in YYYY-MM-DD format",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
      "type": "string"
    },
    "filterType": {
      "description": "Filter by item type",
      "enum": [
        "PHASE",
        "TASK",
        "MILESTONE"
      ],
      "type": "string"
    },
    "filterUnassigned": {
      "description": "If true, only return items with no assignees",
      "type": "boolean"
    },
    "itemName": {
      "description": "Case-insensitive substring of the item title.",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectScheduleId": {
      "description": "The ID of the project schedule",
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectScheduleId"
  ],
  "type": "object"
}
List SDS listSds Read only

List Safety Data Sheets (SDS/MSDS/material safety data sheets) with project, subcontractor, search, status, review-date, archive, and pagination filters. Returns chemical and hazardous-material safety document metadata, not referenced file contents.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "reviewDateStatus": {
      "items": {
        "enum": [
          "CURRENT",
          "DUE_SOON",
          "NONE",
          "OVERDUE"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "name",
        "reviewDate"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "SDS review statuses.",
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List sign ons listSignOns Read only

List sign-ons/sign-ins/site attendance records by project, worker, subcontractor, date, sign-off, method, archive, time-of-day, search, and pagination. Use for attendance, site-hours, sign-on coverage, who was on site, not-signed-off rows, and group-by subcontractor reporting. Dates are absolute ISO datetimes with the project timezone offset; time-of-day filters are HH:MM in each row project timezone. Use summaryBy="worker" for worker attendance; summaryBy="day" for daily coverage/site-hours with projectId/projectIds and dateFrom/dateTo up to 31 days.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "description": "Archived row filter: ACTIVE_ONLY, ARCHIVED_ONLY, or BOTH. Defaults to ACTIVE_ONLY.",
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "dateFrom": {
      "description": "Signed on at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Signed on at or before, ISO with offset.",
      "type": "string"
    },
    "includeNotSignedOff": {
      "description": "With sign-off time-of-day filters, whether to keep rows without a sign-off.",
      "type": "boolean"
    },
    "includeWorkersWithoutSignOns": {
      "description": "summaryBy=\"worker\" with projectId: include active workers with no sign-ons in the range.",
      "type": "boolean"
    },
    "integrationGeneratedOnly": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Search by name",
      "type": "string"
    },
    "signOnTypeFilter": {
      "description": "Sign-on method: AUTO, SELF (worker app; QR scans are not recorded separately), MANUAL, FORM, or ALL.",
      "enum": [
        "ALL",
        "AUTO",
        "FORM",
        "MANUAL",
        "SELF"
      ],
      "type": "string"
    },
    "signedOffFilter": {
      "description": "Filter by sign-off status",
      "enum": [
        "SIGNED_OFF",
        "NOT_SIGNED_OFF",
        "ALL"
      ],
      "type": "string"
    },
    "signedOffTimeOfDayFrom": {
      "description": "HH:MM in the project timezone. Needs signedOffTimeOfDayTo.",
      "type": "string"
    },
    "signedOffTimeOfDayTo": {
      "description": "HH:MM exclusive end, project timezone. Needs signedOffTimeOfDayFrom.",
      "type": "string"
    },
    "signedOnTimeOfDayFrom": {
      "description": "HH:MM in the project timezone. Needs signedOnTimeOfDayTo.",
      "type": "string"
    },
    "signedOnTimeOfDayTo": {
      "description": "HH:MM exclusive end, project timezone. Needs signedOnTimeOfDayFrom.",
      "type": "string"
    },
    "sortBy": {
      "description": "Sort field for row mode. Defaults to date.",
      "enum": [
        "date",
        "workerName",
        "trade"
      ],
      "type": "string"
    },
    "sortDirection": {
      "description": "Sort direction. Defaults to desc.",
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "summaryBy": {
      "description": "Grouped summary instead of rows: worker for who signed on or off; day for daily coverage over a date range.",
      "enum": [
        "worker",
        "day"
      ],
      "type": "string"
    },
    "visitorsOnly": {
      "type": "boolean"
    },
    "workerIds": {
      "description": "Worker IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "workersOnly": {
      "type": "boolean"
    }
  },
  "type": "object"
}
List site diaries listSiteDiaries Read only

List Site Diary/Site Log records with search, archive, sort, and pagination filters. kind daily (default) lists daily logs across one (projectId), several (projectIds) or all visible projects, by dateFrom/dateTo. supplementary lists sub-logs for one required projectId, by date or supplementary templateId. Returns diary entry content such as notes, weather, incidents, deliveries, and fields, not site attendance records.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "date": {
      "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
      "type": "string"
    },
    "dateFrom": {
      "anyOf": [
        {
          "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
          "type": "string"
        },
        {
          "type": "string"
        }
      ],
      "description": "Range start."
    },
    "dateTo": {
      "anyOf": [
        {
          "pattern": "^\\d{4}-\\d{2}-\\d{2}quot;,
          "type": "string"
        },
        {
          "type": "string"
        }
      ],
      "description": "Range end."
    },
    "kind": {
      "enum": [
        "daily",
        "supplementary"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "date",
        "createdAt",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc",
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "templateId": {
      "type": "string"
    }
  },
  "type": "object"
}
List subcontractors listSubcontractors Read only

List companies/subcontractors/trade partners/vendors with project, search, status, compliance, and pagination filters. includeComplianceSnapshot=true requires projectId and adds a loaded-page snapshot across SWMS, public liability, workers compensation, and prequalification. Trade licences are worker-level records and are not included.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "hasCompletedPrequalifications": {
      "type": "boolean"
    },
    "hasInsurances": {
      "type": "boolean"
    },
    "hasIntegrationConnections": {
      "type": "boolean"
    },
    "hasPrequalifications": {
      "type": "boolean"
    },
    "hasSwms": {
      "type": "boolean"
    },
    "includeComplianceSnapshot": {
      "description": "With projectId, add a SWMS, insurance, and prequalification compliance snapshot for the loaded page.",
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "noInsurances": {
      "type": "boolean"
    },
    "noSwms": {
      "type": "boolean"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "name",
        "workers"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "statuses": {
      "description": "Subcontractor statuses.",
      "items": {
        "enum": [
          "INSURANCES_REVIEWED",
          "INSURANCES_UPLOADED",
          "INVITED",
          "NOT_INVITED",
          "PREQUALIFICATION_APPROVED",
          "PREQUALIFICATION_COMPLETED",
          "SWMS_REVIEWED",
          "SWMS_UPLOADED"
        ],
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List submittal packages listSubmittalPackages Read only

List Submittal Packages with package identity, spec section, counts, and IDs. Does not provide item-level approval, ball-in-court, due-date, or type analysis or the native package CSV/PDF export.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Package numbers or titles; IDs go in ID fields.",
      "type": "string"
    },
    "sortBy": {
      "description": "Sort field. If omitted, Submittal Packages default to sequenceNumber asc.",
      "enum": [
        "createdAt",
        "updatedAt",
        "sequenceNumber"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List submittals listSubmittals Read only

List project Submittals with search, status, approval status, type, package, urgent, due-date, archive, sort, and pagination filters. Rows include ball-in-court, intake mode, submitter, and live revision number. forApprovalAdminUserId filters items waiting on that exact admin user; createdByAdminUserId filters their created items.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "approvalStatus": {
      "description": "Exact approval outcomes; map wording like \"approved as noted\" to APPROVED_AS_NOTED.",
      "items": {
        "enum": [
          "PENDING",
          "APPROVED",
          "APPROVED_AS_NOTED",
          "REVISE_AND_RESUBMIT",
          "REJECTED"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "createdByAdminUserId": {
      "description": "Only Submittals created by this admin user.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "dueDateAfter": {
      "description": "Due at or after, ISO with offset.",
      "type": "string"
    },
    "dueDateBefore": {
      "description": "Due at or before, ISO with offset.",
      "type": "string"
    },
    "forApprovalAdminUserId": {
      "description": "Only Submittals whose live approval flow is currently waiting on this exact admin-user ID.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Submittal numbers or titles; IDs go in ID fields.",
      "type": "string"
    },
    "sortBy": {
      "description": "Sort field. If omitted, Submittals default to sequenceNumber desc.",
      "enum": [
        "createdAt",
        "updatedAt",
        "dueDate",
        "sequenceNumber"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Submittal statuses.",
      "items": {
        "enum": [
          "CLOSED",
          "DRAFT",
          "OPEN",
          "VOID"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "submittalPackageId": {
      "description": "Items in one package. Not with unassignedPackageOnly.",
      "type": "string"
    },
    "submittalType": {
      "description": "Exact configured Submittal type keys to filter by. Use stored keys, not display labels.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "unassignedPackageOnly": {
      "description": "Only Submittals in no package. Not with submittalPackageId.",
      "type": "boolean"
    },
    "urgent": {
      "description": "Filter by urgent flag. Use only when the user asks about urgent/non-urgent Submittals.",
      "type": "boolean"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List SWMS listSwms Read only

List project safety method statements with project, status, subcontractor, search, archive, and pagination filters. Includes hazardous-work methods, risk controls, review, and worker acknowledgement facts. Returns project records, not reusable library documents or full individual record detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "limit": {
      "description": "Default 20.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "description": "SWMS review statuses.",
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List templates listTemplates Read only

List or count form/checklist templates of one exact Core API TemplateType (view templates, the default), or inspect its management state (view managementState): the effective template, company default, and project assignment. managementState takes only templateType, projectId and supplementary; for supplementary SITE_DIARY it returns the assigned and unassigned sub-log templates without resolving a default. Does not inventory all types in one call, create, or edit.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "archivedFilter": {
      "enum": [
        "ACTIVE_ONLY",
        "ARCHIVED_ONLY",
        "BOTH"
      ],
      "type": "string"
    },
    "default": {
      "type": "boolean"
    },
    "excludeTemplateTypes": {
      "items": {
        "enum": [
          "COMPANY_INDUCTION",
          "INSPECTION",
          "ITP",
          "OTHER",
          "PERMIT_TYPE",
          "PREQUALIFICATION",
          "PREQUALIFICATION_CHECKLIST",
          "PRE_START",
          "REGISTER",
          "REGISTER_ITEM_TYPE",
          "REGISTER_TYPE",
          "SDS_CHECKLIST",
          "SIGN_ON",
          "SITE_DIARY",
          "SITE_INDUCTION",
          "SWMS",
          "SWMS_CHECKLIST",
          "TIMESHEET_GROUP",
          "TOOLBOX",
          "VISITOR_SIGN_ON"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "registerItemId": {
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "showIfActiveTemplateResponses": {
      "type": "boolean"
    },
    "sortBy": {
      "enum": [
        "category",
        "name",
        "type",
        "updatedAt"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "supplementary": {
      "description": "SITE_DIARY supplementary sub-log templates. With managementState, needs projectId.",
      "type": "boolean"
    },
    "templateResponseLocationId": {
      "type": "string"
    },
    "templateResponseProjectId": {
      "type": "string"
    },
    "templateType": {
      "description": "Reusable template type, not a filled response: INSPECTION = Forms; ITP = legacy Inspections.",
      "enum": [
        "COMPANY_INDUCTION",
        "INSPECTION",
        "ITP",
        "OTHER",
        "PERMIT_TYPE",
        "PREQUALIFICATION",
        "PREQUALIFICATION_CHECKLIST",
        "PRE_START",
        "REGISTER",
        "REGISTER_ITEM_TYPE",
        "REGISTER_TYPE",
        "SDS_CHECKLIST",
        "SIGN_ON",
        "SITE_DIARY",
        "SITE_INDUCTION",
        "SWMS",
        "SWMS_CHECKLIST",
        "TIMESHEET_GROUP",
        "TOOLBOX",
        "VISITOR_SIGN_ON"
      ],
      "type": "string"
    },
    "view": {
      "enum": [
        "templates",
        "managementState"
      ],
      "type": "string"
    }
  },
  "required": [
    "templateType"
  ],
  "type": "object"
}
List timesheets listTimesheets Read only

List timesheet entries with project, status, subcontractor, worker, date, search, and pagination filters for labour hours, approvals, and hours worked. dateFrom/dateTo require offset ISO DateTime boundaries in the project timezone. Returns rows rather than full individual entry detail.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "dateFrom": {
      "description": "Entry date at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Entry date at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "createdAt",
        "date",
        "workerName"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "status": {
      "description": "Timesheet statuses.",
      "items": {
        "enum": [
          "APPROVED_1",
          "APPROVED_2",
          "PENDING"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "subcontractorIds": {
      "description": "Subcontractor IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "workerIds": {
      "description": "Worker IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List toolboxes listToolboxes Read only

List project toolbox talks/tailgate meetings/safety meetings with search, status, legacy type, and date filters. Includes Meeting v2 meetingType/template summaries when present.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "dateFrom": {
      "description": "Created at or after, ISO with offset.",
      "type": "string"
    },
    "dateTo": {
      "description": "Created at or before, ISO with offset.",
      "type": "string"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "enum": [
        "COMPLETED",
        "DISTRIBUTED",
        "DRAFT",
        "RUNNING"
      ],
      "type": "string"
    },
    "type": {
      "enum": [
        "INCIDENT",
        "OTHER",
        "REGULAR"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List visitors listVisitors Read only

List visitors currently on site for a specific project with their contact details. Provides current attendance and headcount, not a cross-project visitor search.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
List workers listWorkers Read only

List and search workers/operatives. searchString matches name, email, mobile, or trade; filters narrow by trade, company, project, tickets, or tags. Returns paginated worker records and certification helper IDs.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "employmentStatus": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "hideBuilderSubcontractors": {
      "type": "boolean"
    },
    "hideManuallyCreated": {
      "type": "boolean"
    },
    "includeArchived": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "missingWhiteCard": {
      "type": "boolean"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "description": "Text matched against worker name, email, mobile, or trade.",
      "type": "string"
    },
    "sortBy": {
      "enum": [
        "name",
        "trade"
      ],
      "type": "string"
    },
    "sortDirection": {
      "enum": [
        "asc",
        "desc"
      ],
      "type": "string"
    },
    "subcontractorIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "tagIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "ticketReviewStatus": {
      "items": {
        "enum": [
          "CHANGES_REQUESTED",
          "REVIEWED",
          "WAITING_REVIEW"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "trade": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List workflow executions listWorkflowExecutions Read only

List workflow execution runs with workflow, project, status, resource type, and pagination filters. Provides run history, failures, and skipped executions, not workflow definitions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "includeArchived": {
      "type": "boolean"
    },
    "includeBuilderLevelExecutions": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resourceTypes": {
      "description": "Workflow resource types.",
      "items": {
        "enum": [
          "SITE_DIARY",
          "CHECKLIST",
          "PREQUALIFICATION",
          "REGISTER_ITEM",
          "SIGN_ON",
          "SITE_INDUCTION",
          "COMPANY_INDUCTION",
          "TIMESHEET",
          "RFI",
          "DEFECT"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "description": "Workflow execution statuses.",
      "items": {
        "enum": [
          "COMPLETED",
          "FAILED",
          "IN_PROGRESS",
          "PENDING",
          "SKIPPED"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "workflowIds": {
      "description": "Workflow IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "type": "object"
}
List workflows listWorkflows Read only

List and search workflow/automation/reminder definitions with project, status, active state, resource type, archive, and pagination filters. Includes triggers and scheduled notification/email/SMS automation metadata, not execution history.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "active": {
      "type": "boolean"
    },
    "includeArchived": {
      "type": "boolean"
    },
    "limit": {
      "description": "Default 10.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "offset": {
      "minimum": 0,
      "type": "integer"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "resourceTypes": {
      "description": "Workflow resource types.",
      "items": {
        "enum": [
          "SITE_DIARY",
          "CHECKLIST",
          "PREQUALIFICATION",
          "REGISTER_ITEM",
          "SIGN_ON",
          "SITE_INDUCTION",
          "COMPANY_INDUCTION",
          "TIMESHEET",
          "RFI",
          "DEFECT"
        ],
        "type": "string"
      },
      "type": "array"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "searchString": {
      "type": "string"
    },
    "status": {
      "description": "Workflow status: DRAFT or PUBLISHED.",
      "enum": [
        "DRAFT",
        "PUBLISHED"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Prepare attachment upload prepareAttachmentUpload Writes data

Mint a presigned upload URL and storage key for images, PDFs, and common documents up to 50MB. uploadUrl accepts raw bytes via PUT with the specified contentType. A completed upload is identified by { type: "upload", key, fileName, contentType, fileSize }; creating a record or attaching the file is not performed here.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "contentType": {
      "description": "MIME type, e.g. image/jpeg or application/pdf",
      "type": "string"
    },
    "fileName": {
      "type": "string"
    },
    "fileSize": {
      "description": "Exact file size in bytes, as a string",
      "type": "string"
    }
  },
  "required": [
    "fileName",
    "contentType",
    "fileSize"
  ],
  "type": "object"
}
Prepare submittal open and send prepareSubmittalOpenAndSend Read only

Preview bulk open-and-send for a Submittal Package or chosen Submittals without sending. Returns subcontractor groups, selectable contacts, ready items, and blocked (missing plan/company/contact) or excluded (sent/closed/void/archived/logged/in-review) items. Groups and recipients describe the current valid send inputs.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "resultMode": {
      "description": "\"full\" adds detail, not linked files.",
      "enum": [
        "compact",
        "full"
      ],
      "type": "string"
    },
    "submittalIds": {
      "description": "Exact Submittal IDs for a chosen set. Requires this or submittalPackageId, never both.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "submittalPackageId": {
      "description": "Preview every Submittal in this package. This or submittalIds, not both.",
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
Prepare template working copy prepareTemplateWorkingCopy Writes data

Open a private template JSON working copy from a saved template, or start a new template. The source remains unchanged while you edit and repair the working copy.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "supplementary": {
      "description": "For a new SITE_DIARY sub-log only.",
      "type": "boolean"
    },
    "templateCategoryName": {
      "type": "string"
    },
    "templateId": {
      "type": "string"
    },
    "templateName": {
      "maxLength": 120,
      "type": "string"
    },
    "templateType": {
      "description": "Reusable template type, not a filled response: INSPECTION = Forms; ITP = legacy Inspections.",
      "enum": [
        "COMPANY_INDUCTION",
        "INSPECTION",
        "ITP",
        "OTHER",
        "PERMIT_TYPE",
        "PREQUALIFICATION",
        "PREQUALIFICATION_CHECKLIST",
        "PRE_START",
        "REGISTER",
        "REGISTER_ITEM_TYPE",
        "REGISTER_TYPE",
        "SDS_CHECKLIST",
        "SIGN_ON",
        "SITE_DIARY",
        "SITE_INDUCTION",
        "SWMS",
        "SWMS_CHECKLIST",
        "TIMESHEET_GROUP",
        "TOOLBOX",
        "VISITOR_SIGN_ON"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Prepare workflow working copy prepareWorkflowWorkingCopy Writes data

Open a private workflow JSON working copy from a saved workflow, or start a new workflow. The source remains unchanged while you edit and repair the working copy.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "workflowId": {
      "type": "string"
    },
    "workflowName": {
      "maxLength": 120,
      "type": "string"
    }
  },
  "type": "object"
}
Restore records restoreRecords Writes data

Restore one or more archived BuildPass records of one recordType without changing their other fields. Per-record outcomes; the first failure stops remaining records. A permit reinstates its workers' reminder schedule; a meeting type restores the type record only, not its meetings.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ids": {
      "description": "IDs of the records to restore, all of recordType. Use a one-item array for one record.",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "recordType": {
      "description": "Kind of every id. register and registerItem take IDs, not prefixes.",
      "enum": [
        "meetingType",
        "notice",
        "permit",
        "register",
        "registerItem",
        "workflow"
      ],
      "type": "string"
    }
  },
  "required": [
    "recordType",
    "ids"
  ],
  "type": "object"
}
Restore submittal restoreSubmittal Writes data

Restore an archived Submittal by exact ID into the active log. Does not reinstate an approval flow cancelled by archiving.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the archived Submittal to restore",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Save report format saveReportFormat Writes dataDestructive

Create or update a reusable output/report format after the user explicitly asks to save the current output format, report format, CSV/PDF/chart recipe, or repeatable deliverable structure. The prompt stores the repeatable recipe (data-source gathering, filters, grouping, columns, chart choices, and authoring instructions), not the generated artifact body. Pass id to update an existing format; omit id to create a new one.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "byline": {
      "description": "Optional short subtitle or description.",
      "type": [
        "string",
        "null"
      ]
    },
    "contextResourceId": {
      "description": "Optional context resource ID.",
      "type": [
        "string",
        "null"
      ]
    },
    "contextResourceType": {
      "description": "Optional context resource type.",
      "type": [
        "string",
        "null"
      ]
    },
    "fileName": {
      "description": "Optional default export file name.",
      "type": [
        "string",
        "null"
      ]
    },
    "id": {
      "description": "Existing report format ID to update. Omit to create.",
      "type": "string"
    },
    "name": {
      "description": "Output/report format name. Required when creating.",
      "type": "string"
    },
    "projectIds": {
      "anyOf": [
        {
          "items": {
            "pattern": "^[A-Za-z0-9_-]+quot;,
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ]
    },
    "prompt": {
      "description": "Reusable recipe: data sources and deliverable format, never the generated output, rows, or copied sources.",
      "maxLength": 30000,
      "type": "string"
    }
  },
  "required": [
    "prompt"
  ],
  "type": "object"
}
Save template working copy saveTemplateWorkingCopy Writes dataDestructive

Save an exact validated working-copy revision to its original saved template, or create its new template. A changed saved source is rejected. Browser-editor working copies cannot be saved with this tool.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision"
  ],
  "type": "object"
}
Save workflow working copy saveWorkflowWorkingCopy Writes dataDestructive

Save an exact validated working-copy revision to its original saved workflow, or create its new workflow. A changed saved source is rejected. Browser-editor working copies cannot be saved with this tool.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "revision": {
      "minimum": 0,
      "type": "integer"
    },
    "workingCopyId": {
      "type": "string"
    }
  },
  "required": [
    "workingCopyId",
    "revision"
  ],
  "type": "object"
}
Search assignees searchAssignees Read only

Search for assignees (workers, admin users, subcontractors) by name. Returns bounded candidates with IDs, names, and types; a name can match multiple people. projectId improves worker/admin-user/resource-tag matching; company/subcontractor matches can be found without project context.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "names": {
      "description": "Array of names to search for",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "names"
  ],
  "type": "object"
}
Search BuildPass searchBuildPass Read only

Start here to find any BuildPass record, document, photo or person from the user's own words, even when the wording is loose. Searches every category unless categories narrows it; photos also match by what they show. Returns best-effort matches, not exhaustive lists, totals or aggregations; coverage is incomplete.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "categories": {
      "description": "Omit to search everything. Narrow to the types you want, such as [\"defects\"]; matching stays just as loose.",
      "items": {
        "enum": [
          "photos",
          "documents",
          "drawings",
          "insuranceDocuments",
          "templates",
          "forms",
          "actions",
          "defects",
          "rfis",
          "scheduling",
          "swms",
          "prequalifications",
          "workers",
          "visitors",
          "adminUsers",
          "addressBook",
          "subcontractors"
        ],
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "limit": {
      "description": "Maximum matches in total, at most 20 from one category. Defaults to 15.",
      "maximum": 50,
      "minimum": 1,
      "type": "integer"
    },
    "projectId": {
      "description": "Omit to search every project and builder-level record the user can access.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "query": {
      "description": "Identifying text such as a name, record number, title, or phrase; never just a category name.",
      "minLength": 3,
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "type": "object"
}
Search BuildPass workflow guides searchBuildPassWorkflowGuides Read only

Search MCP-safe BuildPass product and workflow documentation by query. Returns matching guide IDs and summaries of product relationships.

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "maxResults": {
      "description": "Maximum results, capped at 8.",
      "type": "number"
    },
    "query": {
      "description": "Search text for the BuildPass workflow.",
      "type": "string"
    }
  },
  "type": "object"
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false,
  "properties": {
    "results": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "description": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "resourceUri": {
            "type": "string"
          },
          "score": {
            "type": "number"
          },
          "title": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "description",
          "resourceUri",
          "score"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "results"
  ],
  "type": "object"
}
Search product guidance searchProductGuidance Read only

Search BuildPass how-to articles and product stories for how to do a task, whether it is possible, who can do it and on which plan. Accepts a product question and one to four compact queries; returns task-shaped sources (steps with exact screen and button names, roles, plan, limits, and how each was checked), not customer records. Inputs must not contain customer data.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "queries": {
      "description": "One to four short phrases of product nouns and concepts; no filenames, record names, IDs, or customer data.",
      "items": {
        "maxLength": 80,
        "minLength": 2,
        "type": "string"
      },
      "maxItems": 4,
      "minItems": 1,
      "type": "array"
    },
    "question": {
      "description": "The natural-language BuildPass product question to ground",
      "maxLength": 500,
      "minLength": 3,
      "type": "string"
    }
  },
  "required": [
    "question",
    "queries"
  ],
  "type": "object"
}
Send defects sendDefects Writes dataDestructive

Send one or more defects in a project to their assignees. Uses the Core send operation and reads back saved sentToAssignees/sentAt. This confirms BuildPass distribution state, not recipient delivery or receipt. Use when a defect shows sentToAssignees=false and the user asks to send, issue, notify, or distribute it, and to resend an already-sent defect only when the user explicitly asks to resend. Every defect needs at least one assignee, and a company assignee needs a contact; the call fails with that reason when one is missing.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "ids": {
      "description": "Defect IDs to send. All must belong to projectId.",
      "items": {
        "type": "string"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "projectId",
    "ids"
  ],
  "type": "object"
}
Update action updateAction Writes dataDestructive

Update an action/task. Omitted fields are preserved, including project, location, assignees, and attachments. Scalar fields patch the action. addAssignees, assignToCurrentUser, removeAssignees, and addFiles append/remove only the specified relationships; they never replace the full set. The update notifies the action assigner and affected current or newly added assignees. At least one field or relationship change must be supplied.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addAssignees": {
      "description": "Canonical assignees to add.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "addFiles": {
      "description": "Files to append; existing attachments stay linked.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "minItems": 1,
      "type": "array"
    },
    "assignToCurrentUser": {
      "description": "Set true only when the user says \"assign it to me\", \"myself\", or \"current user\"; otherwise omit.",
      "type": "boolean"
    },
    "description": {
      "type": "string"
    },
    "dueDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "locationId": {
      "description": "Exact project location ID for this action.",
      "type": "string"
    },
    "priorityType": {
      "description": "Exact project-configured action priority label.",
      "type": "string"
    },
    "removeAssignees": {
      "description": "Specific assignees to remove. Other assignees are preserved.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "status": {
      "enum": [
        "CANT_DO",
        "COMPLETE",
        "IN_PROGRESS",
        "TO_DO",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "type": {
      "description": "Exact project-configured action type label.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update active builder updateActiveBuilder Writes dataDestructive

Switch the user's active BuildPass builder to an exact builderId they belong to. Changes the active builder everywhere for that user, including the web app and subsequent tool calls, until another switch.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "builderId": {
      "description": "Exact builder ID of a builder the current user belongs to.",
      "type": "string"
    }
  },
  "required": [
    "builderId"
  ],
  "type": "object"
}
Update admin user updateAdminUser Writes dataDestructive

Update admin-user metadata and project scope, not roles. Omitted scalars are preserved. Email changes update identity; profile changes synchronize to notifications. Supplied projectIds replace this builder's entire project scope for that user; [] clears it and omission preserves it.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "email": {
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}quot;,
      "type": "string"
    },
    "firstName": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "lastName": {
      "type": "string"
    },
    "limitedPermissions": {
      "type": "boolean"
    },
    "mobile": {
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update admin user roles updateAdminUserRoles Writes dataDestructive

Replace an existing admin user's role assignments for the current builder using exact admin-user and assignable role IDs. Supplied roleIds replace the builder's entire current role list. Resulting roles synchronize to external identity and profile systems. BuildPass permissions enforce which roles the caller may assign.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The ID of the admin user whose roles change",
      "type": "string"
    },
    "roleIds": {
      "description": "Replacement role IDs to assign for this builder.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "id",
    "roleIds"
  ],
  "type": "object"
}
Update checklist settings updateChecklistSettings Writes dataDestructive

Update organisation-wide checklist/form settings. This is a shallow settings merge for the exposed booleans: omit options you want to preserve. addPublicChecklistIds and removePublicChecklistIds append/remove worker-available forms without replacing the full public checklist list.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addPublicChecklistIds": {
      "description": "Template IDs to make available to workers. Existing worker-available forms are preserved.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "checklistsAvailableForStaff": {
      "description": "Allow any form to be completed by staff members",
      "type": "boolean"
    },
    "onlySendActionsAfterChecklistCompleted": {
      "description": "Only send actions to assignees once a form is completed",
      "type": "boolean"
    },
    "removePublicChecklistIds": {
      "description": "Template IDs to remove from worker access. Other worker-available forms are preserved.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "requireProjectInduction": {
      "description": "Require workers to have a reviewed project induction before filling forms",
      "type": "boolean"
    },
    "showSubcontractorColumnInChecklistTable": {
      "description": "Show subcontractor column in the checklist table",
      "type": "boolean"
    }
  },
  "type": "object"
}
Update dashboard favourite status updateDashboardFavouriteStatus Writes dataDestructive

Favourite or unfavourite a dashboard for the current admin user only. This does not change dashboard content or access.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "isFavourited": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "isFavourited"
  ],
  "type": "object"
}
Update defect updateDefect Writes dataDestructive

Update a defect, including moving it to a different defect type/register. Omitted fields are preserved, including assignees and attachments. Scalar fields patch the defect. addAssignees, assignToCurrentUser, removeAssignees, and addFiles append/remove only the specified relationships; they never replace the full set. The update notifies the defect assigner and, when the defect was already distributed and remains open, its recipients. At least one field or relationship change must be supplied.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addAssignees": {
      "description": "Canonical assignees to add.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "addFiles": {
      "description": "Files to append; existing attachments stay linked.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "minItems": 1,
      "type": "array"
    },
    "assignToCurrentUser": {
      "description": "Set true only when the user says \"assign it to me\", \"myself\", or \"current user\"; otherwise omit.",
      "type": "boolean"
    },
    "description": {
      "type": "string"
    },
    "dueDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "locationId": {
      "type": "string"
    },
    "priority": {
      "enum": [
        "CRITICAL",
        "HIGH",
        "LOW",
        "MEDIUM"
      ],
      "type": "string"
    },
    "removeAssignees": {
      "description": "Specific assignees to remove. Other assignees are preserved.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "status": {
      "enum": [
        "BLOCKED",
        "CANCELLED",
        "IN_PROGRESS",
        "RESOLVED",
        "TO_DO",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "type": {
      "description": "Defect register. Changing it moves and renumbers the defect, so cite the number from the result.",
      "enum": [
        "BUILDER_DEFECT",
        "CLIENT_DEFECT",
        "INCOMPLETE_WORKS",
        "PURCHASER_DEFECT"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update document updateDocument Writes dataDestructive

Update a document record; a new file replaces the original. Omitted scalars are preserved. Does not edit the free-text document type label.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "category": {
      "enum": [
        "BUILDER",
        "DRAWING",
        "GALLERY",
        "PROJECT",
        "SUBCONTRACTOR"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "key": {
      "description": "Key of a file already stored in BuildPass, not a new upload.",
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "public": {
      "type": "boolean"
    },
    "status": {
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "type": "string"
    },
    "summary": {
      "type": "string"
    },
    "upload": {
      "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "fileName": {
          "type": "string"
        },
        "fileSize": {
          "type": "string"
        },
        "key": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "fileName",
        "contentType",
        "fileSize"
      ],
      "type": "object"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update document folder updateDocumentFolder Writes dataDestructive

Rename a document, drawing, or gallery-photo folder, or change worker sharing for document/drawing folders. Omitted name is preserved. visibleToWorkers shares/unshares with inducted workers except in gallery_photos. Parent sharing is inherited by nested folders and contents. Does not move a folder.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "folderScope": {
      "enum": [
        "builder_documents",
        "project_documents",
        "subcontractor_documents",
        "drawings",
        "gallery_photos"
      ],
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "visibleToWorkers": {
      "description": "Share with inducted workers; child folders inherit it. Not for gallery_photos.",
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "folderScope"
  ],
  "type": "object"
}
Move folder contents updateDocumentFolderContents Writes dataDestructive

Move folders, documents or drawings within one folder scope and project. folderIds work in every scope; documentIds in the three document scopes; drawingIds in drawings. gallery_photos moves folders, not individual photos. A folder cannot move into itself or a descendant.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "destinationFolderId": {
      "description": "Destination folder ID. Omit to move to the root of the scope.",
      "type": "string"
    },
    "documentIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 25,
      "type": "array"
    },
    "drawingIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 25,
      "type": "array"
    },
    "folderIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 25,
      "type": "array"
    },
    "folderScope": {
      "enum": [
        "builder_documents",
        "project_documents",
        "subcontractor_documents",
        "drawings",
        "gallery_photos"
      ],
      "type": "string"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "folderScope"
  ],
  "type": "object"
}
Update drawing review updateDrawingReview Writes dataDestructive

Update a project's drawing review table: replace per-drawing notification recipients and/or approve waiting-review drawings. Recipients require canonical {id, type}; [] clears the list. Recipients apply before approval. Approval creates version history and notifies recipients; revisions/duplicates mark the previously approved revision OUTDATED.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "approveAllWaitingReview": {
      "description": "True to approve every active waiting-review drawing in the project.",
      "type": "boolean"
    },
    "approveDrawingIds": {
      "description": "Specific waiting-review drawing IDs to approve.",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    },
    "notifyRecipientUpdates": {
      "description": "Per-drawing notify recipient replacement updates",
      "items": {
        "properties": {
          "drawingId": {
            "description": "Drawing ID whose notify recipient list changes",
            "type": "string"
          },
          "notifyRecipients": {
            "description": "Full replacement notify recipient list for this drawing. Use [] to clear notifications.",
            "items": {
              "properties": {
                "id": {
                  "description": "Canonical assignee ID.",
                  "type": "string"
                },
                "type": {
                  "description": "ADMIN_USER, WORKER, SUBCONTRACTOR, or RESOURCE_TAG (notifies its people). CONTACT recipients are not notified.",
                  "enum": [
                    "ADMIN_USER",
                    "CONTACT",
                    "RESOURCE_TAG",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "drawingId",
          "notifyRecipients"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "projectId": {
      "description": "Project that owns every target drawing",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
Update emergency updateEmergency Writes dataDestructive

Update an emergency. Omit title and description to preserve them. Changing status is a direct status update, but note that editing a resolved emergency can clear its resolvedAt timestamp unless it remains resolved.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "description": {
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "ONGOING",
        "RESOLVED"
      ],
      "type": "string"
    },
    "title": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update form response updateFormResponse Writes dataDestructive

Update response answers via fieldUpdates and/or metadata (projectId, locationId, completedAt). Answers require actual field IDs or labels and their defined value shapes. Applies answers in order, preserving other fields; linked actions may notify assignees and saving may run workflows or syncs. Supplied completedAt completes the response; omission preserves completion state. Does not edit the reusable template.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "completedAt": {
      "description": "ISO with offset. May complete an in-progress response. Omit to keep.",
      "type": "string"
    },
    "fieldUpdates": {
      "description": "Answers to set by field ID or unique label, in each field value shape. New files need completed upload metadata.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "The ID of the form response",
      "type": "string"
    },
    "locationId": {
      "description": "Omit to keep; null clears.",
      "type": [
        "string",
        "null"
      ]
    },
    "projectId": {
      "anyOf": [
        {
          "description": "Exact project ID only; no search text or record numbers.",
          "pattern": "^[A-Za-z0-9_-]+quot;,
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update induction updateInduction Writes dataDestructive

Update or review an induction: status WAITING_REVIEW, CHANGES_REQUESTED, or REVIEWED (approve), evidenceSighted, and whether related tickets follow. Omit status to preserve it. When approving, updateTicketStatus defaults to true like the review screen. Current backend behavior can set evidenceSighted to true but does not reliably set it back to false. Signature capture is intentionally unavailable through this tool; use the returned authenticated induction webUrl.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "evidenceSighted": {
      "description": "Whether evidence has been sighted",
      "type": "boolean"
    },
    "inductionId": {
      "description": "The ID of the induction",
      "type": "string"
    },
    "status": {
      "description": "New status: WAITING_REVIEW, CHANGES_REQUESTED, or REVIEWED",
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "updateTicketStatus": {
      "description": "Whether related tickets should also be updated. Defaults to true when status is REVIEWED.",
      "type": "boolean"
    }
  },
  "required": [
    "inductionId"
  ],
  "type": "object"
}
Update insurance updateInsurance Writes dataDestructive

Update an insurance document. Omit fields to preserve them. A new file creates a new version of the document and resets status to WAITING_REVIEW.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "expiry": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "key": {
      "description": "Key of a file already stored in BuildPass, not a new upload.",
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "status": {
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "type": "string"
    },
    "type": {
      "enum": [
        "OTHER",
        "PUBLIC_LIABILITY",
        "WORK_COVER"
      ],
      "type": "string"
    },
    "typeOther": {
      "type": "string"
    },
    "upload": {
      "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "fileName": {
          "type": "string"
        },
        "fileSize": {
          "type": "string"
        },
        "key": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "fileName",
        "contentType",
        "fileSize"
      ],
      "type": "object"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update location updateLocation Writes dataDestructive

Update a project location's name or parent. Omit name or parentId to preserve the current value.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "parentId": {
      "description": "New parent location ID to move under. Moving back to the root is not supported.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update meeting type updateMeetingType Writes dataDestructive

Rename a Meeting v2 meeting type. Does not change linked agenda or meeting template definitions.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update notice updateNotice Writes dataDestructive

Update notice/pre-start wrapper metadata and/or embedded response fieldUpdates. Metadata patches the wrapper and linked response; fieldUpdates change answers and complete the response, with completedAt defaulting to now. template.completedAt also defaults to now when omitted. Answers require actual visible field labels and defined value shapes. Omitted fields are preserved; reusable definitions are unchanged.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "date": {
      "description": "ISO with offset, keeping the intended local time.",
      "type": "string"
    },
    "endDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "fieldUpdates": {
      "description": "Notice response fields to update while preserving all others",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "The notice ID",
      "type": "string"
    },
    "requireDailyAcknowledgement": {
      "type": "boolean"
    },
    "template": {
      "properties": {
        "completedAt": {
          "description": "ISO with offset. Omit for now.",
          "type": "string"
        },
        "libraryTemplateId": {
          "description": "Read-only library template ID. Mutually exclusive with templateId.",
          "type": "string"
        },
        "locationId": {
          "type": "string"
        },
        "projectId": {
          "pattern": "^[A-Za-z0-9_-]+quot;,
          "type": "string"
        },
        "templateId": {
          "description": "Company/project template ID. Mutually exclusive with libraryTemplateId.",
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update permit updatePermit Writes dataDestructive

Update permit dates, details, location, or workers. Omitted fields are preserved. workerIds is a full replacement list only when explicitly supplied; omit workerIds to preserve current workers. Newly added workers are notified, and the permit reminder schedule is recalculated after the update. At least one field must be supplied.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "description": {
      "type": "string"
    },
    "endDate": {
      "description": "ISO with offset, keeping the requested local time.",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "projectLocationId": {
      "type": "string"
    },
    "startDate": {
      "description": "ISO with offset, keeping the requested local time.",
      "type": "string"
    },
    "workerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update permit worker updatePermitWorkerStatus Writes dataDestructive

Move permit workers through their status lifecycle via transition: approve, reject, start, pause, resume from suspension, or closeout. Only the supplied permit-worker ids are affected. message is optional on approve, required on reject; files may accompany either to annotate the decision. start, pause, resume, and closeout take only permitId, ids, and transition. This tool does not fill enacting or closeout template responses from raw payloads; use the permit UI for that.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "files": {
      "description": "Annotates the decision.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "ids": {
      "description": "Permit-worker record IDs (the permit-to-worker association), not worker IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "message": {
      "type": "string"
    },
    "permitId": {
      "description": "Permit resource ID, not a permit-worker ID.",
      "type": "string"
    },
    "transition": {
      "enum": [
        "approve",
        "reject",
        "start",
        "pause",
        "resume",
        "closeout"
      ],
      "type": "string"
    }
  },
  "required": [
    "permitId",
    "ids",
    "transition"
  ],
  "type": "object"
}
Update photo updatePhoto Writes dataDestructive

Update gallery photos: add tags to many photos, or replace one photo's tags or description. Use attachment IDs from gallery reads. addTags keeps existing tags on every listed photo. tags is the complete replacement list for one photo: read existing tags first and keep any the user wants; [] clears them. Missing tag names are created automatically. Omitted fields are preserved; an empty description clears it.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addTags": {
      "description": "Tag names to add to every listed photo.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "attachmentIds": {
      "description": "Photo attachment IDs.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "description": {
      "description": "Replacement description for a single photo; empty string clears it.",
      "type": "string"
    },
    "tags": {
      "description": "Complete replacement tag names for a single photo; [] clears tags.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "attachmentIds"
  ],
  "type": "object"
}
Update prequalification updatePrequalification Writes dataDestructive

Update submission status, dueDate, comments, and/or the company review checklist via fieldUpdates using actual reviewFormResponse field labels and defined value shapes. One write; omitted wrapper fields and answers are preserved. Subcontractor-submitted answers are read-only. Does not edit the reusable definition.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "comments": {
      "type": "string"
    },
    "dueDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "fieldUpdates": {
      "description": "Review checklist fields to update while preserving all others",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "type": "string"
    },
    "status": {
      "enum": [
        "APPROVED",
        "REJECTED",
        "SENT",
        "WAITING_REVIEW"
      ],
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update project updateProject Writes dataDestructive

Update project name, address, status, dates, timezone, locale, admins, geolocation, or assigned companies (subcontractors). Omitted scalars are preserved. Scalar changes and company assignment changes cannot be combined in one call because they use separate mutations. Coordinates require latitude and longitude together; radius is independent.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addSubcontractorIds": {
      "description": "Companies to add; others are kept.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "address": {
      "type": "string"
    },
    "endDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "id": {
      "type": "string"
    },
    "latitude": {
      "type": "number"
    },
    "locale": {
      "description": "Optional locale/country code: AU, CA, GB, NZ, or US.",
      "enum": [
        "AU",
        "CA",
        "GB",
        "NZ",
        "US"
      ],
      "type": "string"
    },
    "longitude": {
      "type": "number"
    },
    "name": {
      "type": "string"
    },
    "projectAdminsIds": {
      "description": "Replaces the project admins (admin-user IDs). [] clears; omit to keep.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "radius": {
      "minimum": 0,
      "type": "number"
    },
    "removeSubcontractorIds": {
      "description": "Companies to remove; others are kept.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "replaceSubcontractorIds": {
      "description": "Replaces every assigned company, only when asked to replace the whole set.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "startDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "status": {
      "description": "IN_PROGRESS, UPCOMING, or COMPLETE. Setting one on an archived project restores it. ARCHIVED is not accepted here.",
      "enum": [
        "ARCHIVED",
        "COMPLETE",
        "IN_PROGRESS",
        "UPCOMING"
      ],
      "type": "string"
    },
    "timezone": {
      "description": "Optional IANA timezone, for example Australia/Melbourne",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update project geofence updateProjectGeofence Writes dataDestructive

Update only a project geofence used for geolocation reminders and automatic sign-on/off. Coordinates require latitude and longitude together; radius can change independently. Omitted values are preserved.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "radius": {
      "description": "Geofence radius in meters; auto sign-on/off needs a positive radius, and 0 disables it.",
      "minimum": 0,
      "type": "number"
    }
  },
  "required": [
    "projectId"
  ],
  "type": "object"
}
Update project site timings updateProjectSiteTimings Writes dataDestructive

Replace the full weekly site timing set for a project with the supplied working hours and daily start/finish times.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "siteTimings": {
      "description": "Seven rows, Monday to Sunday, with project-local times like 8:00:00 AM; null or omit both times to clear a day.",
      "items": {
        "properties": {
          "dayOfWeek": {
            "enum": [
              "Monday",
              "Tuesday",
              "Wednesday",
              "Thursday",
              "Friday",
              "Saturday",
              "Sunday"
            ],
            "type": "string"
          },
          "endTime": {
            "description": "Project-local end time in UI format, for example 5:00:00 PM",
            "type": [
              "string",
              "null"
            ]
          },
          "startTime": {
            "description": "Project-local start time in UI format, for example 8:00:00 AM",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "dayOfWeek"
        ],
        "type": "object"
      },
      "maxItems": 7,
      "minItems": 7,
      "type": "array"
    }
  },
  "required": [
    "projectId",
    "siteTimings"
  ],
  "type": "object"
}
Update register updateRegister Writes dataDestructive

Change a live register's name, identifier prefix, project availability, or Edit settings by its exact identifierPrefix. Omitted values are preserved. Does not edit fields, archive, or change blank/library-backed setup. Company management requires library-backed setup.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "identifierPrefix": {
      "description": "Current identifier prefix of the register to change",
      "type": "string"
    },
    "name": {
      "description": "New register name",
      "type": "string"
    },
    "newIdentifierPrefix": {
      "description": "New identifier prefix. Existing item identifiers change with it, for example SWP-1 becomes SOP-1.",
      "maxLength": 5,
      "type": "string"
    },
    "projectIds": {
      "description": "Replaces the linked projects. No links means every project: [] makes it available everywhere; it cannot be on none.",
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "settings": {
      "additionalProperties": false,
      "description": "Edit settings switches to change; switches left out keep their current value.",
      "properties": {
        "canAssignChecklists": {
          "description": "Forms can be linked to items",
          "type": "boolean"
        },
        "canAssignItemsToProject": {
          "description": "Items can be assigned to projects",
          "type": "boolean"
        },
        "canAssignMultipleProjects": {
          "description": "An item can be assigned to more than one project",
          "type": "boolean"
        },
        "canSubcontractorsManageItems": {
          "description": "Company management: companies manage the items assigned to them. Library-backed registers only.",
          "type": "boolean"
        },
        "hideAssignees": {
          "type": "boolean"
        },
        "hideFollowUpDate": {
          "type": "boolean"
        },
        "hideIdentifier": {
          "type": "boolean"
        },
        "hideName": {
          "type": "boolean"
        },
        "hideRegisterItemType": {
          "type": "boolean"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "identifierPrefix"
  ],
  "type": "object"
}
Update register definition updateRegisterDefinition Writes dataDestructive

Edit a live register's linked field definition by exact identifierPrefix. The server resolves the owned template ID, not a similarly named reusable template. templateEditPlan makes targeted edits preserving existing fields. Does not change irreversible blank/library-backed setup.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "identifierPrefix": {
      "description": "Live register identifier prefix",
      "type": "string"
    },
    "templateEditPlan": {
      "description": "Edit plan using stable IDs from the live register definition.",
      "properties": {
        "appendPlan": {
          "description": "New sections, groups, and field intents to append.",
          "properties": {
            "description": {
              "maxLength": 4000,
              "type": "string"
            },
            "sections": {
              "items": {
                "properties": {
                  "description": {
                    "maxLength": 4000,
                    "type": "string"
                  },
                  "groups": {
                    "items": {
                      "properties": {
                        "conditions": {
                          "items": {
                            "items": {
                              "properties": {
                                "blockId": {
                                  "maxLength": 160,
                                  "type": "string"
                                },
                                "fieldKey": {
                                  "maxLength": 80,
                                  "type": "string"
                                },
                                "operator": {
                                  "enum": [
                                    "contains",
                                    "containsAll",
                                    "equals",
                                    "exists",
                                    "greaterThan",
                                    "greaterThanOrEqual",
                                    "isBetween",
                                    "isEmpty",
                                    "lessThan",
                                    "lessThanOrEqual",
                                    "notBetween",
                                    "notContains",
                                    "notEquals"
                                  ],
                                  "type": "string"
                                },
                                "optionKey": {
                                  "maxLength": 80,
                                  "type": "string"
                                },
                                "optionKeys": {
                                  "items": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "maxItems": 30,
                                  "minItems": 1,
                                  "type": "array"
                                },
                                "value": {}
                              },
                              "required": [
                                "operator"
                              ],
                              "type": "object"
                            },
                            "maxItems": 20,
                            "minItems": 1,
                            "type": "array"
                          },
                          "maxItems": 20,
                          "type": "array"
                        },
                        "description": {
                          "maxLength": 4000,
                          "type": "string"
                        },
                        "fields": {
                          "items": {
                            "description": "Same shape as fields.",
                            "type": "object"
                          },
                          "maxItems": 400,
                          "minItems": 1,
                          "type": "array"
                        },
                        "isTable": {
                          "description": "Table: fields are columns, repeats are rows.",
                          "type": "boolean"
                        },
                        "key": {
                          "maxLength": 80,
                          "type": "string"
                        },
                        "maxRows": {
                          "anyOf": [
                            {
                              "minimum": 1,
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Table maximum rows."
                        },
                        "minRows": {
                          "anyOf": [
                            {
                              "minimum": 0,
                              "type": "integer"
                            },
                            {
                              "type": "null"
                            }
                          ],
                          "description": "Table minimum rows."
                        },
                        "name": {
                          "maxLength": 2000,
                          "type": "string"
                        },
                        "prefilledRows": {
                          "description": "Fixed table rows: field key to wording or default.",
                          "items": {
                            "properties": {
                              "cells": {
                                "items": {
                                  "properties": {
                                    "fieldKey": {
                                      "description": "Field key of the column.",
                                      "maxLength": 80,
                                      "type": "string"
                                    },
                                    "value": {
                                      "maxLength": 4000,
                                      "type": "string"
                                    }
                                  },
                                  "required": [
                                    "fieldKey",
                                    "value"
                                  ],
                                  "type": "object"
                                },
                                "maxItems": 400,
                                "minItems": 1,
                                "type": "array"
                              }
                            },
                            "required": [
                              "cells"
                            ],
                            "type": "object"
                          },
                          "maxItems": 400,
                          "minItems": 1,
                          "type": "array"
                        },
                        "repeatable": {
                          "description": "True only when respondents add entries.",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "name",
                        "fields"
                      ],
                      "type": "object"
                    },
                    "maxItems": 60,
                    "minItems": 1,
                    "type": "array"
                  },
                  "key": {
                    "maxLength": 80,
                    "type": "string"
                  },
                  "name": {
                    "maxLength": 2000,
                    "type": "string"
                  }
                },
                "required": [
                  "name",
                  "groups"
                ],
                "type": "object"
              },
              "minItems": 1,
              "type": "array"
            }
          },
          "required": [
            "sections"
          ],
          "type": "object"
        },
        "operations": {
          "items": {
            "anyOf": [
              {
                "properties": {
                  "fields": {
                    "description": "Field intents to add to each group.",
                    "items": {
                      "properties": {
                        "action": {
                          "description": "Default enabled on inspection verdict fields.",
                          "enum": [
                            "enabled",
                            "disabled"
                          ],
                          "type": "string"
                        },
                        "attachments": {
                          "description": "Default optional on verdict fields only.",
                          "enum": [
                            "optional",
                            "none"
                          ],
                          "type": "string"
                        },
                        "conditions": {
                          "items": {
                            "items": {
                              "properties": {
                                "blockId": {
                                  "maxLength": 160,
                                  "type": "string"
                                },
                                "fieldKey": {
                                  "maxLength": 80,
                                  "type": "string"
                                },
                                "operator": {
                                  "enum": [
                                    "contains",
                                    "containsAll",
                                    "equals",
                                    "exists",
                                    "greaterThan",
                                    "greaterThanOrEqual",
                                    "isBetween",
                                    "isEmpty",
                                    "lessThan",
                                    "lessThanOrEqual",
                                    "notBetween",
                                    "notContains",
                                    "notEquals"
                                  ],
                                  "type": "string"
                                },
                                "optionKey": {
                                  "maxLength": 80,
                                  "type": "string"
                                },
                                "optionKeys": {
                                  "items": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "maxItems": 30,
                                  "minItems": 1,
                                  "type": "array"
                                },
                                "value": {}
                              },
                              "required": [
                                "operator"
                              ],
                              "type": "object"
                            },
                            "maxItems": 20,
                            "minItems": 1,
                            "type": "array"
                          },
                          "maxItems": 20,
                          "type": "array"
                        },
                        "description": {
                          "description": "Wording beyond the label; never invent it.",
                          "maxLength": 32000,
                          "type": "string"
                        },
                        "key": {
                          "maxLength": 80,
                          "type": "string"
                        },
                        "label": {
                          "maxLength": 2000,
                          "type": "string"
                        },
                        "notes": {
                          "description": "Default enabled on verdict fields only.",
                          "enum": [
                            "enabled",
                            "disabled"
                          ],
                          "type": "string"
                        },
                        "options": {
                          "items": {
                            "anyOf": [
                              {
                                "maxLength": 2000,
                                "type": "string"
                              },
                              {
                                "properties": {
                                  "desired": {
                                    "description": "Expected (pass) or failing (fail) answer, or either. Omit for neutral options.",
                                    "enum": [
                                      "pass",
                                      "fail",
                                      "either"
                                    ],
                                    "type": "string"
                                  },
                                  "key": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "label": {
                                    "maxLength": 2000,
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "label"
                                ],
                                "type": "object"
                              }
                            ]
                          },
                          "maxItems": 30,
                          "type": "array"
                        },
                        "required": {
                          "description": "Keep the source or user requiredness.",
                          "type": "boolean"
                        },
                        "showInTable": {
                          "type": "boolean"
                        },
                        "type": {
                          "default": "text",
                          "description": "Use file for every upload, including photos.",
                          "enum": [
                            "heading",
                            "instructions",
                            "list",
                            "text",
                            "textarea",
                            "number",
                            "comments",
                            "passFail",
                            "yesNo",
                            "radio",
                            "checkbox",
                            "select",
                            "date",
                            "time",
                            "dateTime",
                            "file",
                            "photo",
                            "signature"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "label"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "operation": {
                    "const": "addFieldsToGroups",
                    "type": "string"
                  },
                  "position": {
                    "properties": {
                      "placement": {
                        "enum": [
                          "beginning",
                          "end"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "targetGroupIds": {
                    "description": "Existing block group ids.",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  }
                },
                "required": [
                  "operation",
                  "targetGroupIds",
                  "fields"
                ],
                "type": "object"
              },
              {
                "properties": {
                  "itemId": {
                    "description": "Block or block group id.",
                    "type": "string"
                  },
                  "operation": {
                    "const": "setVisibility",
                    "type": "string"
                  },
                  "showWhen": {
                    "properties": {
                      "anyOf": {
                        "description": "Shown when any branch is true.",
                        "items": {
                          "properties": {
                            "allOf": {
                              "description": "Predicates that must all hold.",
                              "items": {
                                "properties": {
                                  "blockId": {
                                    "maxLength": 160,
                                    "type": "string"
                                  },
                                  "fieldKey": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "operator": {
                                    "enum": [
                                      "contains",
                                      "containsAll",
                                      "equals",
                                      "exists",
                                      "greaterThan",
                                      "greaterThanOrEqual",
                                      "isBetween",
                                      "isEmpty",
                                      "lessThan",
                                      "lessThanOrEqual",
                                      "notBetween",
                                      "notContains",
                                      "notEquals"
                                    ],
                                    "type": "string"
                                  },
                                  "optionKey": {
                                    "maxLength": 80,
                                    "type": "string"
                                  },
                                  "optionKeys": {
                                    "items": {
                                      "maxLength": 80,
                                      "type": "string"
                                    },
                                    "maxItems": 30,
                                    "minItems": 1,
                                    "type": "array"
                                  },
                                  "value": {}
                                },
                                "required": [
                                  "operator"
                                ],
                                "type": "object"
                              },
                              "maxItems": 20,
                              "minItems": 1,
                              "type": "array"
                            }
                          },
                          "required": [
                            "allOf"
                          ],
                          "type": "object"
                        },
                        "maxItems": 20,
                        "minItems": 1,
                        "type": "array"
                      }
                    },
                    "required": [
                      "anyOf"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "operation",
                  "itemId",
                  "showWhen"
                ],
                "type": "object"
              },
              {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "operation": {
                        "const": "addSection",
                        "type": "string"
                      },
                      "position": {
                        "additionalProperties": false,
                        "properties": {
                          "placement": {
                            "enum": [
                              "beginning",
                              "end",
                              "beforeId",
                              "afterId"
                            ],
                            "type": "string"
                          },
                          "referenceId": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "section": {
                        "additionalProperties": {},
                        "type": "object"
                      }
                    },
                    "required": [
                      "operation",
                      "section"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "blockGroup": {
                        "additionalProperties": {},
                        "type": "object"
                      },
                      "operation": {
                        "const": "addBlockGroup",
                        "type": "string"
                      },
                      "parentId": {
                        "type": "string"
                      },
                      "position": {
                        "additionalProperties": false,
                        "properties": {
                          "placement": {
                            "enum": [
                              "beginning",
                              "end",
                              "beforeId",
                              "afterId"
                            ],
                            "type": "string"
                          },
                          "referenceId": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "operation",
                      "parentId",
                      "blockGroup"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "blocks": {
                        "items": {
                          "additionalProperties": {},
                          "type": "object"
                        },
                        "maxItems": 25,
                        "minItems": 1,
                        "type": "array"
                      },
                      "operation": {
                        "const": "addBlocks",
                        "type": "string"
                      },
                      "parentId": {
                        "type": "string"
                      },
                      "position": {
                        "additionalProperties": false,
                        "properties": {
                          "placement": {
                            "enum": [
                              "beginning",
                              "end",
                              "beforeId",
                              "afterId"
                            ],
                            "type": "string"
                          },
                          "referenceId": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "operation",
                      "parentId",
                      "blocks"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "field": {
                        "additionalProperties": {},
                        "type": "object"
                      },
                      "operation": {
                        "const": "addField",
                        "type": "string"
                      },
                      "position": {
                        "additionalProperties": false,
                        "properties": {
                          "placement": {
                            "enum": [
                              "beginning",
                              "end",
                              "beforeId",
                              "afterId"
                            ],
                            "type": "string"
                          },
                          "referenceId": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "targetGroupId": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "targetGroupId",
                      "field"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "changes": {
                        "additionalProperties": {},
                        "type": "object"
                      },
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "patchItem",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "changes"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "renameItem",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "name"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "updateTitle",
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "title"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "updateFieldOptions",
                        "type": "string"
                      },
                      "options": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "desiredState": {
                              "type": [
                                "boolean",
                                "null"
                              ]
                            },
                            "label": {
                              "type": "string"
                            },
                            "value": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "label"
                          ],
                          "type": "object"
                        },
                        "maxItems": 200,
                        "minItems": 1,
                        "type": "array"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "options"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "setRequired",
                        "type": "string"
                      },
                      "required": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "required"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "conditions": {},
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "setConditions",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "conditions"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "clearConditions",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "moveItem",
                        "type": "string"
                      },
                      "parentId": {
                        "type": "string"
                      },
                      "position": {
                        "additionalProperties": false,
                        "properties": {
                          "placement": {
                            "enum": [
                              "beginning",
                              "end",
                              "beforeId",
                              "afterId"
                            ],
                            "type": "string"
                          },
                          "referenceId": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId",
                      "position"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "removeItem",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId"
                    ],
                    "type": "object"
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "itemId": {
                        "type": "string"
                      },
                      "operation": {
                        "const": "deleteItem",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operation",
                      "itemId"
                    ],
                    "type": "object"
                  }
                ]
              }
            ]
          },
          "minItems": 1,
          "type": "array"
        },
        "summary": {
          "maxLength": 500,
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "required": [
    "identifierPrefix",
    "templateEditPlan"
  ],
  "type": "object"
}
Update register item fields updateRegisterItemFields Writes dataDestructive

Update visible register-item main fields, type-library fields, or upload-form fields using actual field IDs or labels and defined value shapes. id targets one item; items targets up to 50 with non-atomic row outcomes. Preserves other item data. Does not edit metadata, links, status, follow-up date, or name.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "fieldUpdates": {
      "description": "Main register fields from formResponse.fields.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "Register item ID to update",
      "type": "string"
    },
    "items": {
      "description": "One row per register item when updating fields on several items in one call.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "fieldUpdates": {
            "description": "Same shape as fieldUpdates. Main register fields from formResponse.fields.",
            "minItems": 1,
            "type": "array"
          },
          "id": {
            "description": "Register item ID to update",
            "type": "string"
          },
          "typeLibraryFieldUpdates": {
            "description": "Same shape as fieldUpdates. Library-backed type fields, such as Make or Serial, from typeFormResponse.fields.",
            "minItems": 1,
            "type": "array"
          },
          "uploadFieldUpdates": {
            "description": "Same shape as fieldUpdates. Upload form fields from uploadFormResponse.fields; starts the upload form if it is unfilled.",
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "typeLibraryFieldUpdates": {
      "description": "Same shape as fieldUpdates. Library-backed type fields, such as Make or Serial, from typeFormResponse.fields.",
      "minItems": 1,
      "type": "array"
    },
    "uploadFieldUpdates": {
      "description": "Same shape as fieldUpdates. Upload form fields from uploadFormResponse.fields; starts the upload form if it is unfilled.",
      "minItems": 1,
      "type": "array"
    }
  },
  "type": "object"
}
Update register items updateRegisterItems Writes dataDestructive

Update register item metadata, links or assignees for one or multiple items. Use ids for one shared patch across up to 100 items, or items for up to 50 different row patches. Row values override the top-level patch. Omitted fields are preserved and hidden required data is kept. checklistTemplateIds and projectIds replace all links when supplied. Non-atomic: per-row failures are returned. addAssignees, removeAssignees, and setAssignees also patch assignees only via ids or items; setAssignees: [] clears assignees and cannot combine with addAssignees or removeAssignees.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addAssignees": {
      "description": "Assignees to add. Existing assignees are preserved.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "checklistTemplateIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "followUpAt": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "ids": {
      "description": "Items that all get the same patch; use items when values differ.",
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    },
    "items": {
      "description": "One row per item when values differ; row values override the top-level patch.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "addAssignees": {
            "description": "Assignees to add. Existing assignees are preserved.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "checklistTemplateIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "followUpAt": {
            "description": "ISO with offset.",
            "type": "string"
          },
          "id": {
            "description": "Register item ID to update",
            "type": "string"
          },
          "name": {
            "description": "New name for this register item",
            "type": "string"
          },
          "projectIds": {
            "items": {
              "pattern": "^[A-Za-z0-9_-]+quot;,
              "type": "string"
            },
            "type": "array"
          },
          "registerItemTypeId": {
            "type": "string"
          },
          "removeAssignees": {
            "description": "Specific assignees to remove. Other assignees are preserved.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "setAssignees": {
            "description": "Replace the full assignee list. Use an empty array to clear assignees.",
            "items": {
              "properties": {
                "id": {
                  "type": "string"
                },
                "type": {
                  "enum": [
                    "ADMIN_USER",
                    "SUBCONTRACTOR",
                    "WORKER"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "status": {
            "enum": [
              "CHANGES_REQUESTED",
              "REVIEWED",
              "WAITING_REVIEW"
            ],
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "maxItems": 50,
      "minItems": 1,
      "type": "array"
    },
    "name": {
      "description": "New item name. Only valid with a one-item ids array; with items, set name on each row.",
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "registerItemTypeId": {
      "type": "string"
    },
    "removeAssignees": {
      "description": "Specific assignees to remove. Other assignees are preserved.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "setAssignees": {
      "description": "Replace the full assignee list. Use an empty array to clear assignees.",
      "items": {
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "enum": [
              "ADMIN_USER",
              "SUBCONTRACTOR",
              "WORKER"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "status": {
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    }
  },
  "type": "object"
}
Update register item type updateRegisterItemType Writes dataDestructive

Update a register item type. Omit name and linkedChecklistIds to preserve them. If linkedChecklistIds is supplied, it replaces the full linked-checklist set and [] clears it.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "description": "The register item type ID",
      "type": "string"
    },
    "linkedChecklistIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update RFI updateRFI Writes dataDestructive

Update an RFI or open, close, reopen, or void it. Omitted fields are preserved; supplied respondents, watchers, drawingIds, and files replace each entire list. Opening, non-draft changes, or adding recipients to an open RFI may notify respondents/watchers. Recipient IDs must identify admin users or contacts.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "costImpact": {
      "enum": [
        "YES",
        "NO",
        "TBD"
      ],
      "type": "string"
    },
    "drawingIds": {
      "description": "Replaces all linked drawings with these exact drawing IDs.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "dueDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "files": {
      "description": "Replaces every attachment, DRAFT only. Pass existing ones as {type:\"attachment\"} references to keep them.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "id": {
      "description": "The ID of the RFI",
      "type": "string"
    },
    "locationId": {
      "description": "Project location ID for the RFI.",
      "type": "string"
    },
    "question": {
      "type": "string"
    },
    "respondents": {
      "description": "Replaces all RFI respondents with canonical admin-user or contact IDs.",
      "items": {
        "properties": {
          "id": {
            "description": "The ID of the admin user or contact to assign as respondent",
            "type": "string"
          },
          "type": {
            "description": "ADMIN_USER for internal team members, CONTACT for external subcontractor contacts",
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "scheduleImpact": {
      "enum": [
        "YES",
        "NO",
        "TBD"
      ],
      "type": "string"
    },
    "status": {
      "description": "OPEN sends a draft and numbers it; CLOSED closes it; VOID is final, keeps it in the log, and hides it from the portal.",
      "enum": [
        "OPEN",
        "CLOSED",
        "VOID"
      ],
      "type": "string"
    },
    "subject": {
      "type": "string"
    },
    "watchers": {
      "description": "Replaces all RFI watchers with canonical admin-user or contact IDs.",
      "items": {
        "properties": {
          "id": {
            "description": "The ID of the admin user or contact to add as a watcher",
            "type": "string"
          },
          "type": {
            "description": "ADMIN_USER for internal team members, CONTACT for external subcontractor contacts",
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update RFI numbering settings updateRFINumberingSettings Writes dataDestructive

Update a project RFI starting number for future opened RFIs only; existing RFIs are not renumbered. A startingNumber at or below currentHighestSequenceNumber does not change the next number because existing numbered RFIs are already at or above that setting.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "startingNumber": {
      "description": "Positive whole number for future RFI numbering.",
      "minimum": 1,
      "type": "integer"
    }
  },
  "required": [
    "projectId",
    "startingNumber"
  ],
  "type": "object"
}
Update schedule title updateScheduleTitle Writes dataDestructive

Rename a project schedule by its exact projectScheduleId, not a project ID. Changes only the title and applies immediately. Does not edit phases, tasks, milestones, dates, dependencies, or assignees, and is not a draft item edit or publish action.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectScheduleId": {
      "description": "The ID of the project schedule to rename",
      "type": "string"
    },
    "title": {
      "description": "The new schedule title",
      "type": "string"
    }
  },
  "required": [
    "projectScheduleId",
    "title"
  ],
  "type": "object"
}
Update SDS updateSds Writes dataDestructive

Update an SDS document; a new file replaces the current one. Omit scalar fields to preserve them. If projectIds is supplied, it replaces the full linked project set and [] clears all project links.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "key": {
      "description": "Key of a file already stored in BuildPass, not a new upload.",
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "projectIds": {
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "reviewDate": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "status": {
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "type": "string"
    },
    "upload": {
      "description": "A completed upload (key, fileName, contentType, fileSize); copied into storage.",
      "properties": {
        "contentType": {
          "type": "string"
        },
        "fileName": {
          "type": "string"
        },
        "fileSize": {
          "type": "string"
        },
        "key": {
          "type": "string"
        }
      },
      "required": [
        "key",
        "fileName",
        "contentType",
        "fileSize"
      ],
      "type": "object"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Sign off or correct sign-ons updateSignOn Writes dataDestructive

Sign workers off or correct manual attendance times on supplied sign-on IDs only. Sign-off uses optional signOffDate, defaulting to now. A signOnDate correction requires one signOnId; omitted signOffDate is preserved. Does not infer additional workers or create records.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "signOffDate": {
      "description": "Sign-off time as ISO with the project offset, e.g. 2026-05-04T16:30:00+10:00.",
      "type": "string"
    },
    "signOnDate": {
      "description": "Corrected sign-on time for one record, as ISO with the project offset.",
      "type": "string"
    },
    "signOnIds": {
      "description": "Sign-on record IDs. Use a one-item array for a single sign-on.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    }
  },
  "required": [
    "signOnIds"
  ],
  "type": "object"
}
Update Site Diary updateSiteDiary Writes dataDestructive

Update a Site Diary or supplementary diary's date/project and/or embedded response answers via one fieldUpdates array. id must be the diary wrapper ID, not formResponse.id. Answers require actual form field labels and defined value shapes. Resolves supported projectLocation and company IDs; preserves omissions. Does not edit reusable definitions. Concurrent writes to one diary can overwrite each other.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "date": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "fieldUpdates": {
      "description": "Confident human-readable Site Diary field updates to apply while preserving all others",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "Site Diary wrapper ID from the read result top-level data.id; never use formResponse.id",
      "type": "string"
    },
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update subcontractor tags updateSubcontractorTags Writes dataDestructive

Set tags on a subcontractor by tag name. This replaces the subcontractor's current tags; pass [] to clear all tags.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "projectId": {
      "description": "Exact project ID only; no search text or record numbers.",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "subcontractorId": {
      "type": "string"
    },
    "tags": {
      "description": "Full tag name set to apply to this subcontractor; [] clears all tags.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "subcontractorId",
    "tags"
  ],
  "type": "object"
}
Update submittal updateSubmittal Writes dataDestructive

Update a Submittal by exact ID or open, close, or void it. Omitted fields are preserved; null clears a field. Description fields are editable in DRAFT/OPEN; company, distribution, intake, documents, and approval settings are DRAFT-only. OPEN submitters can change until they respond. Opening requires a submitter and approval plan and sends irreversible email to the submitter or first stage. ids with approvalTemplateId applies one template to many drafts. Does not decide approval stages or distribute the final package.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "approvalPlan": {
      "anyOf": [
        {
          "description": "Approver stages; required before opening unless a template supplies them.",
          "properties": {
            "stages": {
              "description": "Ordered stages, excluding the submitter; [] means no review.",
              "items": {
                "properties": {
                  "name": {
                    "description": "Stage label.",
                    "type": "string"
                  },
                  "participants": {
                    "description": "People on this stage.",
                    "items": {
                      "properties": {
                        "adminUserId": {
                          "description": "Admin user ID, for INTERNAL.",
                          "type": "string"
                        },
                        "externalEmail": {
                          "description": "Email, for EXTERNAL.",
                          "type": "string"
                        },
                        "externalName": {
                          "description": "Display name, for EXTERNAL.",
                          "type": "string"
                        },
                        "participantType": {
                          "description": "INTERNAL: admin user; EXTERNAL: email only.",
                          "enum": [
                            "INTERNAL",
                            "EXTERNAL"
                          ],
                          "type": "string"
                        },
                        "required": {
                          "description": "Must respond.",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "participantType"
                      ],
                      "type": "object"
                    },
                    "minItems": 1,
                    "type": "array"
                  },
                  "requiredAll": {
                    "description": "True: everyone must respond; false: one response decides.",
                    "type": "boolean"
                  },
                  "stageNo": {
                    "description": "1-based stage order.",
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "stageNo",
                  "participants"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "stages"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "description": "Replaces the approval plan; overrides approvalTemplateId."
    },
    "approvalTemplateId": {
      "description": "Replaces the approval plan with the template's stages; null clears the plan.",
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "description": "Submittal body or notes.",
      "type": [
        "string",
        "null"
      ]
    },
    "distribution": {
      "description": "Replaces saved draft distribution recipients without sending notices. [] clears them.",
      "items": {
        "properties": {
          "id": {
            "description": "Admin user or contact ID.",
            "type": "string"
          },
          "type": {
            "description": "ADMIN_USER: team member; CONTACT: external contact.",
            "enum": [
              "ADMIN_USER",
              "CONTACT"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "type"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "dueDate": {
      "anyOf": [
        {
          "description": "ISO with offset.",
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "files": {
      "description": "DRAFT only. Submission documents to add; existing ones are kept.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "id": {
      "description": "Submittal ID; or use ids.",
      "type": "string"
    },
    "ids": {
      "description": "Draft IDs to give approvalTemplateId; pass only ids and approvalTemplateId. Non-drafts are skipped and reported.",
      "items": {
        "type": "string"
      },
      "maxItems": 200,
      "minItems": 1,
      "type": "array"
    },
    "intakeMode": {
      "description": "REQUESTED asks the submitter for documents; LOGGED records documents already received.",
      "enum": [
        "REQUESTED",
        "LOGGED"
      ],
      "type": "string"
    },
    "locationId": {
      "description": "Resolved project location ID.",
      "type": [
        "string",
        "null"
      ]
    },
    "referenceFiles": {
      "description": "Same shape as files. DRAFT only. Reference documents to add, such as specifications; existing ones are kept.",
      "type": "array"
    },
    "removeAttachmentIds": {
      "description": "DRAFT only. Attachment IDs to remove.",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "type": "array"
    },
    "specificationSection": {
      "description": "Specification section.",
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "description": "OPEN starts approval; CLOSED closes after a final decision, without sending; VOID is final. Omit to keep.",
      "enum": [
        "OPEN",
        "CLOSED",
        "VOID"
      ],
      "type": "string"
    },
    "subcontractorId": {
      "description": "Subcontractor/company ID for the draft.",
      "type": [
        "string",
        "null"
      ]
    },
    "submissionDueAt": {
      "anyOf": [
        {
          "description": "ISO with offset. When the submitter owes the documents; dueDate is the review deadline.",
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "submittalPackageId": {
      "description": "Submittal Package ID to move the draft into; null removes it from its package.",
      "type": [
        "string",
        "null"
      ]
    },
    "submittalType": {
      "description": "Configured Submittal type key.",
      "type": [
        "string",
        "null"
      ]
    },
    "submittedAt": {
      "description": "LOGGED intake only: when the documents were received; not in the future.",
      "type": [
        "string",
        "null"
      ]
    },
    "submitter": {
      "anyOf": [
        {
          "properties": {
            "id": {
              "type": "string"
            },
            "type": {
              "enum": [
                "ADMIN_USER",
                "CONTACT"
              ],
              "type": "string"
            }
          },
          "required": [
            "id",
            "type"
          ],
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "description": "Who supplies the documents. On an OPEN Submittal it replaces a submitter who has not responded."
    },
    "title": {
      "description": "New title.",
      "type": "string"
    },
    "urgent": {
      "description": "Urgent flag.",
      "type": "boolean"
    }
  },
  "type": "object"
}
Update submittal approval stage updateSubmittalApprovalStage Writes dataDestructive

Act on an open Submittal's live approval flow. Each action and its fields (? optional): DECIDE (participantId, decision, message?, files?) records the signed-in participant's own decision; external approvers use their email link. SUBMIT (message?, files?) supplies documents during the active submitter stage. UPDATE_APPROVERS (stageId, addApprovers?, removeParticipantIds?, requiredAll?) changes unfinished-stage approvers. REMIND (stageId for the whole stage or participantId for one person, message?) emails pending participants. SKIP (stageId, reason) skips a stage.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "action": {
      "enum": [
        "DECIDE",
        "SUBMIT",
        "UPDATE_APPROVERS",
        "REMIND",
        "SKIP"
      ],
      "type": "string"
    },
    "addApprovers": {
      "description": "Approvers added to the active stage are emailed now.",
      "items": {
        "properties": {
          "adminUserId": {
            "description": "Admin user ID, for INTERNAL.",
            "type": "string"
          },
          "externalEmail": {
            "description": "Email, for EXTERNAL.",
            "type": "string"
          },
          "externalName": {
            "description": "Display name, for EXTERNAL.",
            "type": "string"
          },
          "participantType": {
            "description": "INTERNAL: admin user; EXTERNAL: email only.",
            "enum": [
              "INTERNAL",
              "EXTERNAL"
            ],
            "type": "string"
          },
          "required": {
            "description": "Must respond.",
            "type": "boolean"
          }
        },
        "required": [
          "participantType"
        ],
        "type": "object"
      },
      "type": "array"
    },
    "decision": {
      "description": "APPROVED_AS_NOTED needs a message saying what was noted.",
      "enum": [
        "APPROVED",
        "APPROVED_AS_NOTED",
        "REJECTED",
        "REVISE_AND_RESUBMIT"
      ],
      "type": "string"
    },
    "files": {
      "description": "Marked-up documents with a decision, or the submitted documents.",
      "items": {
        "oneOf": [
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Gallery mediaId, record attachment ID, or form photo attachmentId.",
                "type": "string"
              },
              "type": {
                "const": "attachment",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "contentType": {
                "description": "MIME type.",
                "type": "string"
              },
              "fileName": {
                "type": "string"
              },
              "fileSize": {
                "description": "Size in bytes, as a string.",
                "type": "string"
              },
              "key": {
                "type": "string"
              },
              "photoTakenDate": {
                "description": "ISO with offset.",
                "type": "string"
              },
              "type": {
                "const": "upload",
                "type": "string"
              }
            },
            "required": [
              "type",
              "key",
              "fileName",
              "contentType",
              "fileSize"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "description": "Documents module document ID.",
                "type": "string"
              },
              "type": {
                "const": "document",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          },
          {
            "additionalProperties": false,
            "properties": {
              "id": {
                "type": "string"
              },
              "type": {
                "const": "drawing",
                "type": "string"
              }
            },
            "required": [
              "type",
              "id"
            ],
            "type": "object"
          }
        ]
      },
      "type": "array"
    },
    "message": {
      "description": "Comment sent with the decision, submission or reminder.",
      "type": "string"
    },
    "participantId": {
      "description": "For DECIDE, your own pending one on the active stage.",
      "type": "string"
    },
    "reason": {
      "description": "Why the stage is skipped; kept on the record.",
      "type": "string"
    },
    "removeParticipantIds": {
      "description": "Participants who already responded cannot be removed.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "requiredAll": {
      "description": "True: every approver on the stage must respond. False: one response decides.",
      "type": "boolean"
    },
    "stageId": {
      "type": "string"
    },
    "submittalId": {
      "description": "The ID of the open Submittal whose approval flow this acts on.",
      "type": "string"
    }
  },
  "required": [
    "submittalId",
    "action"
  ],
  "type": "object"
}
Update summary record connections updateSummaryRecordConnections Writes dataDestructive

Connect or disconnect existing actions on a meeting, phone call, or photo report, or defects on a PHOTO_REPORT. Omitted links remain unchanged. Additions must share the source builder and projects. Returns saved connection lists.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "addActionIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "type": "array"
    },
    "addDefectIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "type": "array"
    },
    "id": {
      "description": "Source record ID",
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "recordType": {
      "enum": [
        "MEETING",
        "PHONE_CALL",
        "PHOTO_REPORT"
      ],
      "type": "string"
    },
    "removeActionIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "type": "array"
    },
    "removeDefectIds": {
      "items": {
        "type": "string"
      },
      "maxItems": 100,
      "type": "array"
    }
  },
  "required": [
    "id",
    "recordType"
  ],
  "type": "object"
}
Update SWMS updateSwms Writes dataDestructive

Update a project method statement's workers, status/review, or review-checklist answers, preserving omitted groups. Requires at least one change. workerIds replaces all assignments; [] clears them. fieldUpdates require actual field names/options and defined value shapes. Creates a missing review response from the project template.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "fieldUpdates": {
      "description": "Checklist fields to update by exact visible field name.",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "id": {
      "description": "The project method statement document ID.",
      "type": "string"
    },
    "review": {
      "description": "Optional reviewer comment or changes-requested note.",
      "type": "string"
    },
    "status": {
      "description": "Review status: WAITING_REVIEW, REVIEWED, or CHANGES_REQUESTED.",
      "enum": [
        "CHANGES_REQUESTED",
        "REVIEWED",
        "WAITING_REVIEW"
      ],
      "type": "string"
    },
    "workerIds": {
      "description": "Full replacement worker ID list for this document. [] clears all assignments.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update template updateTemplate Writes dataDestructive

Update saved template metadata only: name, category, or identifier prefix. Does not create, edit, or repair template JSON or an open editor draft.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "id": {
      "type": "string"
    },
    "identifierPrefix": {
      "type": "string"
    },
    "templateCategoryName": {
      "type": "string"
    },
    "templateName": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update template assignments updateTemplateAssignments Writes dataDestructive

Assign templates to projects, set a company default, or reset a project override for site diary, induction, sign-on, SWMS checklist, notice, timesheet, and prequalification types. INSPECTION is unsupported. operation assignProjects (templateId, projectIds) replaces the template's projects; setAsDefault (templateId) makes it the company default, clearing project assignments, and rejects supplementary templates; resetProjectToDefault (projectId, templateType) clears that project's override. Does not edit structure.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "operation": {
      "enum": [
        "assignProjects",
        "setAsDefault",
        "resetProjectToDefault"
      ],
      "type": "string"
    },
    "projectId": {
      "pattern": "^[A-Za-z0-9_-]+quot;,
      "type": "string"
    },
    "projectIds": {
      "description": "Full replacement list.",
      "items": {
        "pattern": "^[A-Za-z0-9_-]+quot;,
        "type": "string"
      },
      "type": "array"
    },
    "templateId": {
      "type": "string"
    },
    "templateType": {
      "description": "INSPECTION = Forms; ITP = legacy Inspections.",
      "enum": [
        "COMPANY_INDUCTION",
        "INSPECTION",
        "ITP",
        "OTHER",
        "PERMIT_TYPE",
        "PREQUALIFICATION",
        "PREQUALIFICATION_CHECKLIST",
        "PRE_START",
        "REGISTER",
        "REGISTER_ITEM_TYPE",
        "REGISTER_TYPE",
        "SDS_CHECKLIST",
        "SIGN_ON",
        "SITE_DIARY",
        "SITE_INDUCTION",
        "SWMS",
        "SWMS_CHECKLIST",
        "TIMESHEET_GROUP",
        "TOOLBOX",
        "VISITOR_SIGN_ON"
      ],
      "type": "string"
    }
  },
  "required": [
    "operation"
  ],
  "type": "object"
}
Update timesheet entry updateTimesheetEntry Writes dataDestructive

Update a timesheet entry's date, hours, configured time type/cost code, status, times, notes, or linked response fieldUpdates. Answers require actual field labels and defined value shapes; timeType/costCode require exact configured labels/codes. Datetimes are absolute ISO with the project offset. Omitted fields are preserved; reusable definitions are unchanged.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "costCode": {
      "description": "Exact configured CostCode code; required when settings report costCodeRequired.",
      "type": "string"
    },
    "date": {
      "description": "ISO with offset.",
      "type": "string"
    },
    "endTime": {
      "description": "Absolute end datetime with timezone offset.",
      "type": "string"
    },
    "fieldUpdates": {
      "description": "Linked template response fields to update while preserving all others",
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "hours": {
      "type": "number"
    },
    "id": {
      "type": "string"
    },
    "notes": {
      "type": "string"
    },
    "startTime": {
      "description": "Absolute start datetime with timezone offset.",
      "type": "string"
    },
    "status": {
      "enum": [
        "APPROVED_1",
        "APPROVED_2",
        "PENDING"
      ],
      "type": "string"
    },
    "timeType": {
      "description": "Exact configured TimeType label.",
      "type": "string"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update toolbox updateToolbox Writes dataDestructive

Update a toolbox talk/Meeting v2 meeting. Omitted scalar fields are preserved. agendaFieldUpdates and meetingFieldUpdates require the live template field definitions and preserve untouched fields. meetingTypeId changes the type. keys replaces the full list; [] clears it. Updates queue the meeting refresh workflow. When the resulting status is DISTRIBUTED, supplied workerIds add only new invites, notify those recipients, and schedule reminders.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "agenda": {
      "type": "string"
    },
    "agendaFieldUpdates": {
      "items": {
        "additionalProperties": false,
        "properties": {
          "actions": {
            "description": "Actions to create on this field. Needs actions enabled.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "assignees": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "type": {
                        "enum": [
                          "ADMIN_USER",
                          "CONTACT",
                          "RESOURCE_TAG",
                          "SUBCONTRACTOR",
                          "WORKER"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "attachmentIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "description": {
                  "type": "string"
                },
                "dueDate": {
                  "type": "string"
                },
                "locationId": {
                  "type": "string"
                },
                "priorityType": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "CANT_DO",
                    "COMPLETE",
                    "IN_PROGRESS",
                    "TO_DO",
                    "WAITING_REVIEW"
                  ],
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "type": {
                  "type": "string"
                }
              },
              "required": [
                "title"
              ],
              "type": "object"
            },
            "minItems": 1,
            "type": "array"
          },
          "fieldId": {
            "description": "Field ID from the response definition.",
            "type": "string"
          },
          "fieldName": {
            "description": "Exact field label; use fieldId when labels repeat.",
            "type": "string"
          },
          "note": {
            "description": "Note text; null clears. Needs notes enabled on the field.",
            "type": [
              "string",
              "null"
            ]
          },
          "tableId": {
            "type": "string"
          },
          "tableName": {
            "type": "string"
          },
          "tableRows": {
            "additionalProperties": false,
            "description": "Rows for a table field; not combined with value, note, or actions.",
            "properties": {
              "mode": {
                "description": "append (default) fills empty trailing rows, then adds; replace resets to the starting rows.",
                "enum": [
                  "append",
                  "replace"
                ],
                "type": "string"
              },
              "rows": {
                "description": "One entry per row, in order; never join entries in a cell.",
                "items": {
                  "additionalProperties": false,
                  "properties": {
                    "cells": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "columnId": {
                            "description": "Column id from the detail read.",
                            "type": "string"
                          },
                          "columnName": {
                            "description": "Exact column header, if no columnId.",
                            "type": "string"
                          },
                          "note": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "value": {
                            "anyOf": [
                              {
                                "type": "string"
                              },
                              {
                                "type": "number"
                              },
                              {
                                "type": "boolean"
                              },
                              {
                                "type": "null"
                              },
                              {
                                "items": {},
                                "type": "array"
                              },
                              {
                                "additionalProperties": {},
                                "type": "object"
                              }
                            ],
                            "description": "Match the column's valueSchema and options."
                          }
                        },
                        "type": "object"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  },
                  "required": [
                    "cells"
                  ],
                  "type": "object"
                },
                "maxItems": 200,
                "minItems": 1,
                "type": "array"
              },
              "tableId": {
                "description": "Table id from the detail read.",
                "type": "string"
              },
              "tableName": {
                "description": "Exact table name, if no tableId.",
                "type": "string"
              }
            },
            "required": [
              "rows"
            ],
            "type": "object"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "type": "null"
              },
              {
                "items": {},
                "type": "array"
              },
              {
                "additionalProperties": {},
                "type": "object"
              }
            ],
            "description": "Per the field's valueSchema and options. Omit to keep; null clears where supported."
          }
        },
        "type": "object"
      },
      "minItems": 1,
      "type": "array"
    },
    "date": {
      "description": "ISO with offset, keeping the requested local time.",
      "type": "string"
    },
    "id": {
      "description": "The toolbox ID",
      "type": "string"
    },
    "keys": {
      "description": "Replaces the full key list when supplied; [] clears it.",
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "meetingFieldUpdates": {
      "description": "Same shape as agendaFieldUpdates.",
      "minItems": 1,
      "type": "array"
    },
    "meetingTitle": {
      "type": "string"
    },
    "meetingTypeId": {
      "type": "string"
    },
    "notes": {
      "description": "Replaces manual meeting notes only. Synced source notes are preserved and must be edited in their source app.",
      "type": "string"
    },
    "status": {
      "enum": [
        "COMPLETED",
        "DISTRIBUTED",
        "DRAFT",
        "RUNNING"
      ],
      "type": "string"
    },
    "type": {
      "enum": [
        "INCIDENT",
        "OTHER",
        "REGULAR"
      ],
      "type": "string"
    },
    "workerIds": {
      "description": "Does not replace the invite roster; when supplied on a DISTRIBUTED toolbox it only adds new invites.",
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "id"
  ],
  "type": "object"
}
Update toolbox attendance updateToolboxAttendance Writes dataDestructive

Mark toolbox attendance, either for the supplied invitee adminUserIds and workerIds (the invite roster is not replaced), or with currentUser true for the signed-in user only, which marks them attended and affects nobody else. Signature capture is intentionally unavailable through this tool; use the returned authenticated toolbox webUrl.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false,
  "properties": {
    "adminUserIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    },
    "attended": {
      "type": "boolean"
    },
    "builderGeneratedAttendance": {
      "type": "boolean"
    },
    "currentUser": {
      "description": "True to mark only the signed-in user as attended. Cannot be combined with adminUserIds, workerIds, or attended.",
      "type": "boolean"
    },
    "toolboxId": {
      "type": "string"
    },
    "workerIds": {
      "items": {
        "type": "string"
      },
      "type": "array"
    }
  },
  "required": [
    "toolboxId"
  ],
  "type": "object"
}
Update workflow updateWorkflowStatus Writes dataDestructive

Change whether a workflow runs. publish makes a draft the live, active version and archives the previously published version in its chain; activate and deactivate turn a published workflow on or off; discardDraft drops a draft and keeps the published version.

Input schema

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "change": {
      "enum": [
        "publish",
        "activate",
        "deactivate",
        "discardDraft"
      ],
      "type": "string"
    },
    "id": {
      "description": "Workflow ID. publish and discardDraft take the draft version ID; activate and deactivate take the published one.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "change"
  ],
  "type": "object"
}

Win & Pay

Loading Win & Pay tools.