solarOS Organization API

Organization API

List Projects

Lists narrow Project containers inside the organization and linked Property boundary with customFields, Project Scope, and External References. Each Project carries onHold: true while it has an open hold; holds never change status. Supply externalSystem, externalObject, and externalId together to filter by a canonical External Reference. Project Scope (originalScope, currentScope) carries the sale's money only for a key that also has quotes:content:read, the scope that reads it on the Quote: without it, every field typed Currency and every financing fact (apr, dealerFeePercent, financingTerms, paymentSources, financingScenarioName, loan and financing terms, ppaRatePerKwh, financingEscalatorPercent, pricePerWatt, downPayment, upfrontPayment, monthlyPayment, totalCostWithFinancing) is left out, and projectDetails.pricing and its line items' unitPrice, lineTotal and section subtotal are null. Required scope: projects:read; quotes:content:read for the scope money.

/api/v1/projects

Lists narrow Project containers inside the organization and linked Property boundary with customFields, Project Scope, and External References. Each Project carries onHold: true while it has an open hold; holds never change status. Supply externalSystem, externalObject, and externalId together to filter by a canonical External Reference. Project Scope (originalScope, currentScope) carries the sale's money only for a key that also has quotes:content:read, the scope that reads it on the Quote: without it, every field typed Currency and every financing fact (apr, dealerFeePercent, financingTerms, paymentSources, financingScenarioName, loan and financing terms, ppaRatePerKwh, financingEscalatorPercent, pricePerWatt, downPayment, upfrontPayment, monthlyPayment, totalCostWithFinancing) is left out, and projectDetails.pricing and its line items' unitPrice, lineTotal and section subtotal are null. Required scope: projects:read; quotes:content:read for the scope money.

List Projects. Use an organization API key with projects:read. Check the response envelope and meta.requestId before triggering dependent workflow steps.

Required scopes

projects:read

Parameters

NameInTypeDescription
limitqueryintegerMaximum records to return. Defaults to 50 and is capped at 100.
cursorquerystringOpaque record cursor from the previous response meta.nextCursor value.
sortDirqueryasc | descSort direction. Defaults to desc.
statusqueryDRAFT | ACTIVE | COMPLETED | CANCELLED | CLOSEDFilter by Project status. ON_HOLD is no longer a status and is rejected; use onHold.
onHoldquerytrue | falsetrue lists Projects with at least one open hold; false lists Projects with none.
caseIdquerystringCanonical Case membership. Use null for unlinked Projects.
customerIdquerystringFilter by Customer id.
propertyIdquerystringFilter by Property id.
ownerIdquerystringFilter by owner Team Member id.
templateIdquerystringFilter by Project Template id.
externalSystemquerystringExternal Reference system filter. Supply with externalObject and externalId for exact reconciliation lookup.
externalObjectquerystringExternal Reference object filter. Supply with externalSystem and externalId.
externalIdquerystringExternal Reference id filter. Supply with externalSystem and externalObject.

Request body

This endpoint does not accept a JSON request body.

Responses

200

Project list envelope

#/components/schemas/OrgApiListEnvelope

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: projects:read

#/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: projects:read429 Rate limit exceeded

Static examples

curl -X GET "$SOLAROS_BASE_URL/api/v1/projects" \
  -H "Authorization: Bearer $SOLAROS_API_KEY"