solarOS Organization API

Organization API

Create or link a Property

Creates a Property for the Customer, or links that Customer's own Property at an exact placeId match to the calling organization, without fuzzy matching. A Property at the same place under another Customer is never returned or linked; this Customer gets a new Property. customFields accepts any active Field; an answer to a Property Field (see isPropertyField) becomes the Property's answer, is recorded in its history, and fills that Field on the Property's draft Quotes and open Projects where it is still blank. isPrimary asks for this organization to be the Property's primary service provider and defaults to true. A new Property takes it as sent. On a Property already on file it applies only when no organization is primary; the link succeeds either way, so read access.isPrimary on the response for the outcome. It has no effect when this organization already has access. Requires Idempotency-Key. Required scope: properties:write.

/api/v1/properties

Creates a Property for the Customer, or links that Customer's own Property at an exact placeId match to the calling organization, without fuzzy matching. A Property at the same place under another Customer is never returned or linked; this Customer gets a new Property. customFields accepts any active Field; an answer to a Property Field (see isPropertyField) becomes the Property's answer, is recorded in its history, and fills that Field on the Property's draft Quotes and open Projects where it is still blank. isPrimary asks for this organization to be the Property's primary service provider and defaults to true. A new Property takes it as sent. On a Property already on file it applies only when no organization is primary; the link succeeds either way, so read access.isPrimary on the response for the outcome. It has no effect when this organization already has access. Requires Idempotency-Key. Required scope: properties:write.

Create or link a Property. Use an organization API key with properties:write. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

properties:writeIdempotency-Key required

Parameters

No path or query parameters.

Request body

objectrequired
FieldTypeDescription
customerIdrequiredstringOptional unless marked required.
addressrequiredstringOptional unless marked required.
cityrequiredstringOptional unless marked required.
staterequiredstringOptional unless marked required.
zipCoderequiredstringOptional unless marked required.
placeIdstring | nullOptional unless marked required.
latitudenumber | nullOptional unless marked required.
longitudenumber | nullOptional unless marked required.
formattedAddressstring | nullOptional unless marked required.
countrystringOptional unless marked required.
serviceTypes[]array<string>Optional unless marked required.
isPrimarybooleanOptional unless marked required.
customFieldsobjectField Values keyed by savedIdentity from GET /api/v1/schema.
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.
createpropertyRequest
{
  "customerId": "customer_123",
  "address": "1 Market St",
  "city": "San Francisco",
  "state": "CA",
  "zipCode": "94105",
  "country": "US",
  "serviceTypes": [
    "SOLAR"
  ]
}

Responses

201

Property envelope

#/components/schemas/OrgApiResourceEnvelope

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

#/components/schemas/OrgApiError

404

Customer not found

#/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: properties:write404 Customer not found429 Rate limit exceeded

Static examples

curl -X POST "$SOLAROS_BASE_URL/api/v1/properties" \
  -H "Authorization: Bearer $SOLAROS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $SOLAROS_IDEMPOTENCY_KEY" \
  --data '{"customerId":"customer_123","address":"1 Market St","city":"San Francisco","state":"CA","zipCode":"94105","country":"US","serviceTypes":["SOLAR"]}'