We've launched a new documentation site. Visit docs.portal.io for the latest version.

Proposals

Most proposal workflows start with GET /public/proposals to Search & Get Proposal List, then GET /public/proposals/{ProposalId} to Get Proposal Details.

Search & Get Proposal List

Returns the proposals for the current account. Supports filtering by status, contact, modified date, search text, and archive state, along with sorting and pagination.

Request
query Parameters
SearchText
string

Search proposal by this text

Statuses
Array of strings
Items Enum: "Draft" "Submitted" "ViewedByClient" "Accepted" "Declined" "Delayed" "Completed" "EmailFailed" "Expired"
ContactId
integer <int32>
SalespersonId
integer <int32>

Filter proposals by salesperson user ID

ModifiedAfter
string <date-time>

Modified after timestamp in UTC

SortBy
string
Enum: "CreatedDate" "ModifiedDate" "Number" "Name" "ClientName" "Status" "LastModifiedByMe"
IsArchive
boolean

If true return only archived proposals otherwise return non archive proposals

SortDirection
string
PageNumber
integer <int32>

Page number. Starting from 1

PageSize
integer <int32>

Page Size

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
200

Success

Response Schema: application/json
required
Array of objects (PublicProposalModel)

Proposals returned within the current page boundaries

proposalCount
required
integer <int32>

Total number of proposals matching the query across all pages

401

Not Authorized to access this endpoint or your HMAC hash was incorrect.

402

This action requires an active subscription.

403

You do not have permission for this API call.

get/public/proposals
Request samples
Response samples
application/json
{
  • "proposals": [
    ],
  • "proposalCount": 0
}

Create Proposal

Creates a new proposal for the authenticated account. Supply a salesperson ID from the same account and, optionally, a proposal name. If no name is given, the system assigns a default name using the same logic as the Portal UI. The response includes the full proposal detail, including the new proposal ID, number, status, and financial summary.

Request
header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
required
SalesPersonId
required
integer <int32>

ID of the salesperson (user) who will own the proposal. Must belong to the current account.

Name
string

Optional name of the proposal. If omitted, the system will assign a default name.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

No resource exists with the given ID.

post/public/proposals
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Get Proposal Details

Returns detailed information for the specified proposal. The HTTP response also sets the Last-Modified header from the response LastModifiedDate. Item costs are left out when costs are not available to your account, so a null cost does not mean the item has none. A recurring-service item is left out of its area option's total and counted in that option's totalRecurringService instead. When an item has total.isCombinedPrice true, its amount already includes the totals of the items nested under it, and those nested items still report their own amounts.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized to access this endpoint or your HMAC hash was incorrect.

403

You do not have permission for this API call.

get/public/proposals/{ProposalId}
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Update Proposal

Performs a partial update on an existing proposal. You can update the proposal name, reassign the salesperson, or do both in one request. Both fields are optional, and omitted fields keep their current values. SalesPersonId must reference a user in the same account. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

ID of the proposal to update. Must belong to the current account.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
Name
string

Optional new name for the proposal. If omitted, the current name is retained.

SalesPersonId
integer <int32>

Optional ID of the new salesperson (user) to assign. Must belong to the current account. If omitted, the current salesperson is retained.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Update Proposal Description

Updates the client-facing project description of a proposal. This is the description shown on customer-facing proposal documents. The request body accepts a single description string. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
Description
string

Description.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/description
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Update Proposal Internal Notes

Updates the internal installer notes (installer project description) of a proposal. These notes are visible only to the dealer's team and do not appear on client-facing documents. The request body accepts a single internal notes string. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>
header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
InternalNotes
string

New internal notes (installer project description) to save on the proposal.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

No resource exists with the given ID.

post/public/proposals/{ProposalId}/internalnotes
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Get Change Order Details

Returns detailed information for the specified change order. The HTTP response also sets the Last-Modified header from the response LastModifiedDate. Item costs are left out when costs are not available to your account, so a null cost does not mean the item has none. A recurring-service item is left out of its area option's total and counted in that option's totalRecurringService instead. When an item has total.isCombinedPrice true, its amount already includes the totals of the items nested under it, and those nested items still report their own amounts.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

ChangeOrderId
required
integer <int32>

Change Order Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

Unique numeric identifier of the change order.

createdDate
required
string <date-time>

UTC timestamp when the change order was created.

clientLastDecisionDate
string <date-time>

UTC timestamp when the customer last accepted or declined the change order.

lastCompletedDate
string <date-time>

UTC timestamp when the change order was completed, if it has reached a completed state.

lastModifiedDate
required
string <date-time>

UTC timestamp when the change order was last modified by either the system or a user.

lastModifiedByUserDate
required
string <date-time>

UTC timestamp when the change order was last modified by a user action.

required
object (PublicChangeOrderFinancialSummaryModel)

Financial summary for a change order

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized to access this endpoint or your HMAC hash was incorrect.

403

You do not have permission for this API call.

get/public/proposals/{ProposalId}/changeorders/{ChangeOrderId}
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Get Change Order List for the Given Proposal

Returns the change orders for the specified proposal, including customer details, total, status, and created and modified dates.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
200

Success

Response Schema: application/json
Array
id
required
integer <int32>

Unique numeric identifier of the change order

number
required
integer <int32>

Change-order number shown to the dealer in the UI

name
required
string

Display name of the change order

status
required
string

Current change-order status

Enum: "Undefined" "Draft" "Submitted" "ViewedByClient" "Accepted" "Declined" "Delayed" "Completed" "EmailFailed" "Expired"
object (PublicChangeOrderTotalModel)

Change-order total amount and currency

object (PublicContactModel)

Contact summary model

createdDate
required
string <date-time>

UTC timestamp when the change order was created

lastModifiedDate
required
string <date-time>

UTC timestamp when the change order was last modified by the system or a user

lastModifiedByUserDate
string <date-time>

UTC timestamp when the change order was last modified by a user action

401

Not Authorized to access this endpoint or your HMAC hash was incorrect.

402

This action requires an active subscription.

403

You do not have permission for this API call.

get/public/proposals/{ProposalId}/changeorders
Request samples
Response samples
application/json
[
  • {
    }
]

Add Proposal Area

Creates a new area (room) within a proposal. The area name must be unique within the proposal. The system automatically creates one default option in "Draft" status under the new area. The response includes the full updated proposal detail, including the new area and its default option.

Request
path Parameters
ProposalId
required
integer <int32>

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

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
required
Name
required
string

Name of the area to create.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

400

If an area with the same name already exists.

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/area
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Add Proposal Area Option

Creates a new option within an existing area. Each area supports a maximum of three options. Client description and internal installer notes are optional at creation time. The new option is created with "Draft" status. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

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

AreaId
required
integer <int32>

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

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
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.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

400

Each area supports a maximum of three options.

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal or area not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/area/{AreaId}/option
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Update Proposal Area Client Description

Updates the client-facing description of a specific option. The route includes both the proposal ID and option ID to verify that the option belongs to the specified proposal. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

AreaOptionId
required
integer <int32>

Area Option Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
ClientDescription
string

Client-facing description for the option.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal or area option not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/area-options/{AreaOptionId}/clientdescription
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Update Proposal Area Installer Notes

Updates the internal installer notes of a specific option. Like the client description endpoint, the route includes both proposal and option IDs for ownership validation. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

AreaOptionId
required
integer <int32>

Area Option Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Request Body schema: application/x-www-form-urlencoded
InstallerNotes
string

Internal installer notes for the option.

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal or area option not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/area-options/{AreaOptionId}/installernotes
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}

Assign Contact to Proposal

Assigns an existing contact (person/client) to a proposal. The proposal and contact must belong to the same account. If the contact has a single primary location, that location is automatically assigned to the proposal as well. Assigning a contact may trigger tax recalculations based on the contact's location.

Request
path Parameters
ProposalId
required
integer <int32>

Proposal Id.

ContactId
required
integer <int32>

Contact Id.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
204

No Content

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal or contact not found.

post/public/proposals/{ProposalId}/contact/{ContactId}
Request samples
Response samples
application/json
{
  • "errorCode": "string",
  • "stackTrace": "string",
  • "contentType": "string",
  • "headers": {
    },
  • "cookies": [
    ],
  • "status": 0,
  • "statusCode": "string",
  • "statusDescription": "string",
  • "response": { },
  • "responseFilter": { },
  • "requestContext": { },
  • "paddingLength": 0,
  • "resultScope": { },
  • "options": {
    },
  • "responseStatus": {
    },
  • "targetSite": { },
  • "message": "string",
  • "data": { },
  • "innerException": { },
  • "helpLink": "string",
  • "source": "string",
  • "hResult": 0
}

Assign Proposal Location

Assigns a location to a proposal that already has a contact assigned. The location must belong to the proposal's assigned contact and to the same account. Assigning a location triggers tax recalculations for the proposal. The response includes the full updated proposal detail.

Request
path Parameters
ProposalId
required
integer <int32>

ID of the proposal to update. Must belong to the current account.

LocationId
required
integer <int32>

ID of the location to assign to the proposal’s existing person. Must belong to the current account.

header Parameters
Accept
required
string

Accept Header

Value: "application/json"
X-MSS-API-APPID
required
string

Application Id

X-MSS-CUSTOM-DATE
required
string

A date timestamp of the request

X-MSS-SIGNATURE
required
string

A signature for the request

X-MSS-API-USERKEY
required
string

User API Key

Responses
200

Success

Response Schema: application/json
id
required
integer <int32>

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

createdDate
required
string <date-time>

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

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.

lastModifiedDate
required
string <date-time>

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

lastModifiedByUserDate
required
string <date-time>

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

required
object (PublicFinancialSummaryModel)

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

Array of objects (PublicChangeOrderModel)

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

number
required
integer <int32>

Proposal number unique within the dealer account.

name
required
string

Display name of the proposal.

status
required
string

The current status of the resource.

Enum: "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.

object (PublicCustomerModel)

Customer contact

required
object (PublicDealerModel)

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.

Array of objects (PublicAreaModel)

The list of areas.

object (PublicProfitModel)

Profit summary for the proposal

object (PublicRecurringServicesModel)

Recurring service summary associated with the proposal.

object (PublicPaymentScheduleModel)

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

Array of objects (PublicPaymentRequestModel)

Payment requests already issued for this proposal.

projectTerms
string

The terms and conditions for the project.

required
object (PublicUserModel)

User summary returned within proposal detail responses

401

Not Authorized. Ensure a valid session cookie or HMAC authentication headers are provided.

402

The dealer's subscription is inactive or expired. An active subscription is required to use this endpoint.

403

You do not have permission for this action.

404

Proposal or location not found.

409

The proposal has no person assigned, so a location cannot be set.

post/public/proposals/{ProposalId}/location/{LocationId}
Request samples
Response samples
application/json
{
  • "id": 0,
  • "createdDate": "2019-08-24T14:15:22Z",
  • "clientLastDecisionDate": "2019-08-24T14:15:22Z",
  • "lastCompletedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedDate": "2019-08-24T14:15:22Z",
  • "lastModifiedByUserDate": "2019-08-24T14:15:22Z",
  • "financialSummary": {
    },
  • "changeOrders": [
    ],
  • "number": 0,
  • "name": "string",
  • "status": "Undefined",
  • "lastSubmittedDate": "2019-08-24T14:15:22Z",
  • "clientLastOpenedDate": "2019-08-24T14:15:22Z",
  • "customer": {
    },
  • "dealer": {
    },
  • "coverpageImageUrl": "string",
  • "aboutUs": "string",
  • "projectDescription": "string",
  • "areas": [
    ],
  • "profit": {
    },
  • "recurringServices": {
    },
  • "paymentSchedule": {
    },
  • "paymentRequests": [
    ],
  • "projectTerms": "string",
  • "lastModifiedUser": {
    }
}