Update editable Quote metadata and custom Fields
Updates only editable DRAFT/PENDING_APPROVAL Quote metadata and customFields. Post-send Quotes are immutable through this generic PATCH, except that a request with only originatorId can correct who a Quote credits at any status. originatorId is logged as an Originator change with its own quote.updated event. ownerId and quoteTypeId are not writable here.
Updates only editable DRAFT/PENDING_APPROVAL Quote metadata and customFields. Post-send Quotes are immutable through this generic PATCH, except that a request with only originatorId can correct who a Quote credits at any status. originatorId is logged as an Originator change with its own quote.updated event. ownerId and quoteTypeId are not writable here.
Update editable Quote metadata and custom Fields. Use an organization API key with quotes:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.
Required scopes
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| idrequired | path | string | Quote identifier returned by the Organization API. |
Request body
| Field | Type | Description |
|---|---|---|
| name | string | Optional unless marked required. |
| customerId | string | Optional unless marked required. |
| propertyId | string | null | Optional unless marked required. |
| opportunityId | string | null | Optional unless marked required. |
| validUntil | string | null | Optional unless marked required. |
| summary | string | null | Optional unless marked required. |
| notes | string | null | Optional unless marked required. |
| terms | string | null | Optional unless marked required. |
| originatorId | string | Credits a different active or draft same-organization Team Member, and writes its own activity entry and updated event. An Originator cannot be cleared. Naming a deactivated Team Member is refused unless they are already the Originator. |
| customFields | object | Field Values keyed by savedIdentity from GET /api/v1/schema. |
{
"name": "8.4 kW solar and storage proposal"
}Responses
Updated Quote envelope
#/components/schemas/OrgApiResourceEnvelope
Validation error, including an Originator who cannot be credited
#/components/schemas/OrgApiError
Missing or invalid organization API key
#/components/schemas/OrgApiError
Organization billing access or an endpoint-specific business quota denied the request
#/components/schemas/OrgApiError
Missing required scope: quotes:write
#/components/schemas/OrgApiError
Quote already sent, or a travel charge blocks changing it
#/components/schemas/OrgApiError
Rate limit exceeded
#/components/schemas/OrgApiError
Errors
Static examples
curl -X PATCH "$SOLAROS_BASE_URL/api/v1/quotes/$SOLAROS_QUOTE" \
-H "Authorization: Bearer $SOLAROS_API_KEY" \
-H "Content-Type: application/json" \
--data '{"name":"8.4 kW solar and storage proposal"}'