solarOS Organization API

Organization API

Create a quote-generated Contract

Creates a Contract from a Quote using templateId and one or more signers. Optional inputs are message, mergeFieldOverrides, and External References. The first customer signer's name fills customer.fullName unless mergeFieldOverrides sets that value.

/api/v1/quotes/{id}/contracts

Creates a Contract from a Quote using templateId and one or more signers. Optional inputs are message, mergeFieldOverrides, and External References. The first customer signer's name fills customer.fullName unless mergeFieldOverrides sets that value.

Create a quote-generated Contract. Use an organization API key with contracts:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

contracts:writeIdempotency-Key required

Parameters

NameInTypeDescription
idrequiredpathstringQuote identifier returned by the Organization API.

Request body

objectrequired
FieldTypeDescription
templateIdrequiredstringOptional unless marked required.
signers[]requiredarray<object>Optional unless marked required.
signers[].namerequiredstringOptional unless marked required.
signers[].emailrequiredstringOptional unless marked required.
signers[].rolerequiredstringOptional unless marked required.
signers[].orderintegerOptional unless marked required.
messagestring | nullOptional unless marked required.
mergeFieldOverridesobjectOptional unless marked required.
externalReferences[]array<object>Optional unless marked required.
externalReferences[].externalSystemrequiredstringOptional unless marked required.
externalReferences[].externalObjectrequiredstringOptional unless marked required.
externalReferences[].externalIdrequiredstringOptional unless marked required.
externalReferences[].metadataobjectOptional unless marked required.
createcontractfromquoteRequest
{
  "templateId": "contract_template_123",
  "signers": [
    {
      "name": "Ada Lovelace",
      "email": "ada@example.com",
      "role": "CUSTOMER",
      "order": 0
    }
  ],
  "message": "Please review and sign the installation contract."
}

Responses

201

Contract create action envelope

#/components/schemas/OrgApiActionEnvelope

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: contracts:write

#/components/schemas/OrgApiError

429

Rate limit exceeded

#/components/schemas/OrgApiError

Errors

401 Missing or invalid organization API key402 Organization billing access or an endpoint-specific business quota denied the request403 Missing required scope: contracts:write429 Rate limit exceeded

Static examples

curl -X POST "$SOLAROS_BASE_URL/api/v1/quotes/$SOLAROS_QUOTE/contracts" \
  -H "Authorization: Bearer $SOLAROS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SOLAROS_IDEMPOTENCY_KEY" \
  --data '{"templateId":"contract_template_123","signers":[{"name":"Ada Lovelace","email":"ada@example.com","role":"CUSTOMER","order":0}],"message":"Please review and sign the installation contract."}'