solarOS Organization API

Organization API

Get a Project's Sold System

Returns the solar system the Project was sold with: the quote's Solar System Record (version 1), frozen when the accepted quote handed off to the Project and never changed by later quote edits. A Project made with no quote has one when its solar facts were entered at New Project: source.quoteId and source.quoteNumber are null, and it holds what was entered and the price and payments it was made with, with storage, production, usage, utility and savings null unless entered. A Project sold before Sold Systems were kept gets one from a one-time backfill, and its source.backfilledFrom says what it was rebuilt from: QUOTE (the accepted quote's design) or PROJECT_SCOPE (the Project's copy of the sale, without price, usage, savings or payments). It holds the scope (PV, PV_STORAGE or STORAGE_ONLY), totals, arrays, inverters, batteries in units, storage and backup, production, usage, utility and rates, savings, price, financing, payment schedule, site, printable display strings (display.summarySentence names the system in one sentence), media (media.designImageKey is the stored design picture's reference, not a URL) and, once the agreement is signed, agreement.contractId. The sale's money needs quotes:content:read as well, the scope that reads it on the Quote: without it, price, financing (with its dealerFeePercent) and payments are null, so are display.ppaRate, display.paymentSources and display.financingTerms, and moneyWithheld is true; with it, moneyWithheld is false. Money is in dollars, energy in kWh, power in kW, and monthly series run January to December. Returns 404 NOT_FOUND when the Project is outside the organization's Property access or has no Sold System. Required scope: projects:read; quotes:content:read for price, financing and payments.

/api/v1/projects/{id}/system

Returns the solar system the Project was sold with: the quote's Solar System Record (version 1), frozen when the accepted quote handed off to the Project and never changed by later quote edits. A Project made with no quote has one when its solar facts were entered at New Project: source.quoteId and source.quoteNumber are null, and it holds what was entered and the price and payments it was made with, with storage, production, usage, utility and savings null unless entered. A Project sold before Sold Systems were kept gets one from a one-time backfill, and its source.backfilledFrom says what it was rebuilt from: QUOTE (the accepted quote's design) or PROJECT_SCOPE (the Project's copy of the sale, without price, usage, savings or payments). It holds the scope (PV, PV_STORAGE or STORAGE_ONLY), totals, arrays, inverters, batteries in units, storage and backup, production, usage, utility and rates, savings, price, financing, payment schedule, site, printable display strings (display.summarySentence names the system in one sentence), media (media.designImageKey is the stored design picture's reference, not a URL) and, once the agreement is signed, agreement.contractId. The sale's money needs quotes:content:read as well, the scope that reads it on the Quote: without it, price, financing (with its dealerFeePercent) and payments are null, so are display.ppaRate, display.paymentSources and display.financingTerms, and moneyWithheld is true; with it, moneyWithheld is false. Money is in dollars, energy in kWh, power in kW, and monthly series run January to December. Returns 404 NOT_FOUND when the Project is outside the organization's Property access or has no Sold System. Required scope: projects:read; quotes:content:read for price, financing and payments.

Get a Project's Sold System. 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
idrequiredpathstringProject identifier returned by the Organization API.

Request body

This endpoint does not accept a JSON request body.

Responses

200

Sold System envelope

object

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

404

Not found, or the Project has no Sold System

#/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:read404 Not found, or the Project has no Sold System429 Rate limit exceeded

Static examples

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