solarOSsolarOS Docs

Update editable Quote builder content

Updates purpose-built builder content families while the Quote is editable: sections and lines, pricing adjustments, solar/system design, financing scenarios, payment schedule milestones, incentives, assumptions, savings, and environmental data. Each supplied array replaces that entire content family; omit a family to leave it unchanged. Battery backupPercent and estimatedBackupHours are compatibility inputs that are not persisted—responses derive them from dispatch configuration and load assumptions. No-op PATCH requests return changed=false without ActivityLog, domain event, or timestamp churn. Material writes reject customer-facing Quote states, validate builder constraints such as solar-only system design, and emit ActivityLog plus quote.content.updated domain events with changedFields for webhook consumers. Required scope: quotes:content:write.

PATCH
/quotes/{id}/content

Updates purpose-built builder content families while the Quote is editable: sections and lines, pricing adjustments, solar/system design, financing scenarios, payment schedule milestones, incentives, assumptions, savings, and environmental data. Each supplied array replaces that entire content family; omit a family to leave it unchanged. Battery backupPercent and estimatedBackupHours are compatibility inputs that are not persisted—responses derive them from dispatch configuration and load assumptions. No-op PATCH requests return changed=false without ActivityLog, domain event, or timestamp churn. Material writes reject customer-facing Quote states, validate builder constraints such as solar-only system design, and emit ActivityLog plus quote.content.updated domain events with changedFields for webhook consumers. Required scope: quotes:content:write.

Authorization

Authorization<token>

Organization API key. Format: Bearer sk_live_...

In: header

Path Parameters

id*string

Quote identifier returned by the Organization API.

Request Body

application/json

JSON request payload for patchQuoteBuilderContent.

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/quotes/string/content" \  -H "Content-Type: application/json" \  -d '{    "sections": [      {        "name": "Solar installation",        "lines": [          {            "name": "PV installation",            "quantity": 1,            "unit": "each",            "unitPrice": 31500          }        ]      }    ],    "solar": {      "systemSizeKw": 8.4,      "arrays": [        {          "panelCount": 21,          "panelWattage": 400        }      ],      "batteries": [        {          "manufacturer": "Example Energy",          "capacityKwh": 13.5,          "quantity": 1        }      ],      "systemDesign": {        "designMode": "manual",        "totalActivePanels": 21,        "designSizeKw": 8.4      }    }  }'
{  "data": {},  "meta": {    "requestId": "string",    "version": "v1",    "timestamp": "2019-08-24T14:15:22Z",    "rateLimit": {      "limit": 0,      "remaining": 0,      "reset": 0    }  }}