API ReferenceProject
project.create
Type: Mutation · Auth: Workspace-aware
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| opportunityId | string | No | — | ID of the associated opportunity |
| acceptedQuoteId | string | No | — | ID of the associated accepted quote |
| customerId | string | Yes | — | ID of the associated customer |
| siteId | string | No | — | ID of the associated site |
| primaryContactId | string | No | — | ID of the associated primary contact |
| name | string | Yes | — | Name |
| description | string | No | — | Description |
| status | enum(planning, active, on_hold, completed, canceled) | Yes | "planning" | Status |
| priority | enum(low, medium, high, urgent) | Yes | "medium" | Priority |
| projectType | enum(new_construction, retrofit, service_agreement, expansion, other) | No | — | Project type |
| startDate | string.date-time | No | — | Start date |
| targetEndDate | string.date-time | No | — | Target end date |
| actualEndDate | string.date-time | No | — | Actual end date |
| projectManagerUserId | unknown | No | — | ID of the associated project manager user |
| percentComplete | unknown | No | — | Percent complete |
| materialBudget | unknown | No | — | Material budget |
| laborBudget | unknown | No | — | Labor budget |
| recurringBudget | unknown | No | — | Recurring budget |
| totalBudget | unknown | No | — | Total budget |
| discountTotal | unknown | No | — | Discount total |
| taxTotal | unknown | No | — | Tax total |
| scopeOfWork | string | No | — | Scope of work |
| assumptions | string | No | — | Assumptions |
| exclusions | string | No | — | Exclusions |
| warrantyTerms | string | No | — | Warranty terms |
| permitRequired | boolean | No | — | Permit required |
| permitNotes | string | No | — | Permit notes |
| insuranceRequirements | string | No | — | Insurance requirements |
| projectTimelineEstimate | string | No | — | Project timeline estimate |
| siteAccessInstructions | string | No | — | Site access instructions |
| aiSummary | string | No | — | Ai summary |
| riskLevel | enum(low, medium, high, critical) | No | — | Risk level |
| customerApprovalStatus | enum(not_required, pending, approved, rejected) | No | "not_required" | Customer approval status |
| changeOrderCount | integer | No | — | Change order count |
| changeOrderValue | number | No | — | Change order value |
| workspaceId | string | No | — | ID of the associated workspace |
| visibilityMode | enum(global, workspace_local, shared) | Yes | "workspace_local" | Visibility mode |
Example
{
"opportunityId": "550e8400-e29b-41d4-a716-446655440000",
"acceptedQuoteId": "550e8400-e29b-41d4-a716-446655440000",
"customerId": "550e8400-e29b-41d4-a716-446655440000",
"siteId": "550e8400-e29b-41d4-a716-446655440000",
"primaryContactId": "550e8400-e29b-41d4-a716-446655440000",
"name": "Example Name",
"status": "planning",
"priority": "low",
"visibilityMode": "global"
}