solarOS Organization API

Organization API

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.

/api/v1/quotes/{id}

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

quotes:write

Parameters

NameInTypeDescription
idrequiredpathstringQuote identifier returned by the Organization API.

Request body

objectrequired
FieldTypeDescription
namestringOptional unless marked required.
customerIdstringOptional unless marked required.
propertyIdstring | nullOptional unless marked required.
opportunityIdstring | nullOptional unless marked required.
validUntilstring | nullOptional unless marked required.
summarystring | nullOptional unless marked required.
notesstring | nullOptional unless marked required.
termsstring | nullOptional unless marked required.
originatorIdstringCredits 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.
customFieldsobjectField Values keyed by savedIdentity from GET /api/v1/schema.
updatedraftquoteRequest
{
  "name": "8.4 kW solar and storage proposal"
}

Responses

200

Updated Quote envelope

#/components/schemas/OrgApiResourceEnvelope

400

Validation error, including an Originator who cannot be credited

#/components/schemas/OrgApiError

401

Missing or invalid organization API key

#/components/schemas/OrgApiError

402

Organization billing access or an endpoint-specific business quota denied the request

#/components/schemas/OrgApiError

403

Missing required scope: quotes:write

#/components/schemas/OrgApiError

409

Quote already sent, or a travel charge blocks changing it

#/components/schemas/OrgApiError

429

Rate limit exceeded

#/components/schemas/OrgApiError

Errors

400 Validation error, including an Originator who cannot be credited401 Missing or invalid organization API key402 Organization billing access or an endpoint-specific business quota denied the request403 Missing required scope: quotes:write409 Quote already sent, or a travel charge blocks changing it429 Rate limit exceeded

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"}'