Skip to main content
POST
Use this endpoint to add a new option to an existing proposal area. Options allow you to present multiple installation configurations within a single area — for example, a standard package and a premium package for the same room. The new option is created with “Draft” status, and you can optionally provide a client-facing description and internal installer notes at creation time.
Each area already has one default option created automatically when the area is added. Use this endpoint to add up to 2 more options, for a maximum of 3 per area. Attempting to add a fourth option returns 400.

Authorizations

X-MSS-API-APPID
string
header
required

Portal application identifier used as part of HMAC-authenticated API requests.

X-MSS-API-USERKEY
string
header
required

Portal user API key used together with the HMAC signature headers.

X-MSS-CUSTOM-DATE
string
header
required

Timestamp header included in the signed request to prevent replay attacks.

X-MSS-SIGNATURE
string
header
required

HMAC-SHA256 signature for the request, calculated over the canonical string defined in the authentication docs.

Headers

Accept
enum<string>
required

Accept Header

Available options:
application/json

Path Parameters

ProposalId
integer<int32>
required

Unique ID of the proposal (not the proposal number).

AreaId
integer<int32>
required

Unique ID of the area within the proposal where the option will be created. The area must exist for the given proposal.

Body

application/json

Proposals Service

clientDescription
string

(Optional) Client‑facing description to show to customers. Keep concise and user-focused, e.g. 'Premium Installation Package'.

internalNotes
string

(Optional) Internal notes for installers or administrators (installer description). Not shown to clients; use for technical details, special instructions, or compatibility notes.

Response

Success

Detailed proposal representation

number
integer<int32>
required

Proposal number unique within the dealer account.

name
string
required

Display name of the proposal.

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).

status
enum<string>
Available options:
Undefined,
Draft,
Submitted,
ViewedByClient,
Accepted,
Declined,
Delayed,
Completed,
EmailFailed,
Expired
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

dealer
PublicDealerModel · object

Dealer information

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.

lastModifiedUser
PublicUserModel · object

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.

financialSummary
PublicFinancialSummaryModel · object

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

changeOrders
PublicChangeOrderModel · object[]

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