Skip to main content
POST
/
public
/
proposals
/
{ProposalId}
/
area-options
/
{AreaOptionId}
/
installernotes
curl -i -X POST \
  'https://api.portal.io/public/proposals/123/area-options/201/installernotes' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'X-MSS-API-APPID: YOUR_APP_ID' \
  -H 'X-MSS-API-USERKEY: YOUR_USER_KEY' \
  -H 'X-MSS-CUSTOM-DATE: Mon, 06 Apr 2026 00:22:19 GMT' \
  -H 'X-MSS-SIGNATURE: BASE64_SIGNATURE' \
  -d 'InstallerNotes=Use+18-gauge+wire+on+all+runs.+Check+panel+capacity+before+install.'
{
  "id": 123,
  "lastModifiedDate": "2026-04-06T00:22:19Z",
  "areas": [
    {
      "id": 55,
      "name": "Living Room",
      "options": [
        {
          "id": 201,
          "status": "Draft",
          "clientDescription": "Standard Installation Package",
          "installerDescription": "Use 18-gauge wire on all runs. Check panel capacity before install."
        }
      ]
    }
  ]
}
Use this endpoint to set or update the internal installer notes for a specific area option. These notes are intended for the installer team and are not included on customer-facing proposal documents. Like the client description endpoint, the route requires both the proposal ID and area option ID to confirm that the option belongs to the correct proposal before saving the update.
curl -i -X POST \
  'https://api.portal.io/public/proposals/123/area-options/201/installernotes' \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'X-MSS-API-APPID: YOUR_APP_ID' \
  -H 'X-MSS-API-USERKEY: YOUR_USER_KEY' \
  -H 'X-MSS-CUSTOM-DATE: Mon, 06 Apr 2026 00:22:19 GMT' \
  -H 'X-MSS-SIGNATURE: BASE64_SIGNATURE' \
  -d 'InstallerNotes=Use+18-gauge+wire+on+all+runs.+Check+panel+capacity+before+install.'
{
  "id": 123,
  "lastModifiedDate": "2026-04-06T00:22:19Z",
  "areas": [
    {
      "id": 55,
      "name": "Living Room",
      "options": [
        {
          "id": 201,
          "status": "Draft",
          "clientDescription": "Standard Installation Package",
          "installerDescription": "Use 18-gauge wire on all runs. Check panel capacity before install."
        }
      ]
    }
  ]
}

Headers

Accept
enum<string>
required

Accept Header

Available options:
application/json
X-MSS-API-APPID
string
required

Application Id

X-MSS-CUSTOM-DATE
string
required

A date timestamp of the request

X-MSS-SIGNATURE
string
required

A signature for the request

X-MSS-API-USERKEY
string
required

User API Key

Path Parameters

ProposalId
integer<int32>
required

Proposal Id.

AreaOptionId
integer<int32>
required

Area Option Id.

Body

application/x-www-form-urlencoded
InstallerNotes
string

Internal installer notes for the option.

Response

Success

Detailed proposal representation

id
integer<int32>
required

Unique identifier for the proposal. Use this id for subsequent API calls that reference the proposal.

createdDate
string<date-time>
required

UTC timestamp when the proposal was initially created. Returned in ISO 8601 format.

lastModifiedDate
string<date-time>
required

UTC timestamp when the proposal was last modified by any user or system process.

lastModifiedByUserDate
string<date-time>
required

UTC timestamp when the proposal was last modified by a human user (not an automated system update).

financialSummary
PublicFinancialSummaryModel · object
required

Financial totals, discounts, tax, and currency values for the proposal

number
integer<int32>
required

Proposal number unique within the dealer account.

name
string
required

Display name of the proposal.

status
enum<string>
required

The current status of the resource.

Available options:
Undefined,
Draft,
Submitted,
ViewedByClient,
Accepted,
Declined,
Delayed,
Completed,
EmailFailed,
Expired
dealer
PublicDealerModel · object
required

Dealer information

lastModifiedUser
PublicUserModel · object
required

User summary returned within proposal detail responses

clientLastDecisionDate
string<date-time>

UTC timestamp when the client last accepted or declined the proposal. Null if no client decision has been recorded.

lastCompletedDate
string<date-time>

UTC timestamp when the proposal last reached a completed state, if applicable.

changeOrders
PublicChangeOrderModel · object[]

List of change orders associated with this proposal. Each item contains details of scope changes, price adjustments, and approval state.

lastSubmittedDate
string<date-time>

UTC timestamp when the proposal was last submitted to the customer.

clientLastOpenedDate
string<date-time>

UTC timestamp when the customer last opened the proposal viewer link.

customer
PublicCustomerModel · object

Customer contact

coverpageImageUrl
string

Absolute URL of the proposal cover image, when one is available.

aboutUs
string

The about us text for the company profile.

projectDescription
string

A description of the project.

areas
PublicAreaModel · object[]

The list of areas.

profit
PublicProfitModel · object

Profit summary for the proposal

recurringServices
PublicRecurringServicesModel · object

Recurring service summary associated with the proposal.

paymentSchedule
PublicPaymentScheduleModel · object

Payment schedule configuration for the proposal, including the customer-facing description and individual payment milestones.

paymentRequests
PublicPaymentRequestModel · object[]

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.