Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.portal.io/llms.txt

Use this file to discover all available pages before exploring further.

Updates the internal notes (installer project description) on a proposal. These notes are visible only to your team and are never shown on client-facing proposal documents. Use this field to record installation details, site conditions, or coordination notes that are relevant to your crew but not appropriate for customer documents. The response returns the complete updated proposal detail.

Request

POST /public/proposals/{ProposalId}/internalnotes

Headers

Accept
string
required
Must be application/json.
Content-Type
string
required
Must be application/x-www-form-urlencoded.
X-MSS-API-APPID
string
required
Your API Application Key.
X-MSS-API-USERKEY
string
required
Your User API Key obtained from the authentication exchange.
X-MSS-CUSTOM-DATE
string
required
Current UTC timestamp in RFC 7231 format, e.g. Mon, 06 Apr 2026 00:22:19 GMT.
X-MSS-SIGNATURE
string
required
HMAC-SHA256 signature of the canonical request message, Base64-encoded.

Path Parameters

ProposalId
integer
required
The unique numeric ID of the proposal to update.

Body Parameters

InternalNotes
string
New internal notes to save on the proposal. This text is only visible to the dealer’s team and does not appear on any customer-facing documents.
Internal notes are strictly dealer-side content. They are never included in proposal PDFs or portal views that are shared with customers.

Response

200 Success

Returns the full updated proposal detail. See Get Proposal for the complete field reference. Key fields:
id
integer
required
Unique numeric ID of the proposal.
number
integer
required
Proposal number unique within the dealer account.
name
string
required
Display name of the proposal.
status
string
required
Current proposal status.
lastModifiedDate
string
required
ISO 8601 timestamp reflecting the update just performed.
lastModifiedByUserDate
string
required
ISO 8601 timestamp when the proposal was last modified by a human user.
financialSummary
object
required
Full financial breakdown. See Get Proposal for field details.
dealer
object
required
Dealer account details.
lastModifiedUser
object
required
Details of the user who last modified the proposal.

Error Codes

CodeMeaning
401Not authorized. Check that your HMAC signature and headers are correct.
402The account’s subscription is inactive or expired.
403Your user does not have permission to update this proposal.
404No resource found with the given ProposalId.

Example

curl -i -X POST \
  'https://sandbox.api.portal.io/public/proposals/1042/internalnotes' \
  -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 'InternalNotes=Pre-wire+complete.+Confirm+rack+location+with+homeowner+before+rough-in.'
{
  "id": 1042,
  "createdDate": "2026-03-10T14:00:00Z",
  "lastModifiedDate": "2026-04-06T00:22:19Z",
  "lastModifiedByUserDate": "2026-04-06T00:22:19Z",
  "financialSummary": {
    "partsSubtotal": 8000.00,
    "partsTotal": 8000.00,
    "laborTotal": 2500.00,
    "feeTotal": 0,
    "proposalSubtotal": 10500.00,
    "salesTax": {
      "taxStatus": "Ok",
      "total": 892.50
    },
    "proposalTotal": 11392.50
  }
}