Skip to main content
GET
/
public
/
proposals
/
{ProposalId}
/
changeorders
/
{ChangeOrderId}
curl -i -X GET \
  'https://api.portal.io/public/proposals/123/changeorders/42' \
  -H 'Accept: application/json' \
  -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'
{
  "id": 42,
  "number": 1,
  "name": "Smith Residence AV - Change Order 1",
  "status": "Draft",
  "createdDate": "2026-04-01T10:00:00Z",
  "lastModifiedDate": "2026-04-05T14:30:00Z",
  "lastModifiedByUserDate": "2026-04-05T14:30:00Z",
  "lastSubmittedDate": null,
  "clientLastOpenedDate": null,
  "clientLastDecisionDate": null,
  "lastCompletedDate": null,
  "financialSummary": {
    "partsSubtotal": 800.00,
    "laborTotal": 350.00,
    "feeTotal": 100.00,
    "changeOrderSubtotal": 1250.00,
    "salesTax": {
      "taxStatus": "Ok",
      "total": 103.13
    }
  },
  "areas": [
    {
      "id": 55,
      "name": "Living Room",
      "options": [
        {
          "id": 201,
          "status": "Draft",
          "clientDescription": "Standard Installation Package",
          "items": []
        }
      ]
    }
  ],
  "customer": {
    "id": 101,
    "firstName": "Jane",
    "lastName": "Smith",
    "contactEmail": "jane@example.com",
    "contactPhone": "555-867-5309"
  },
  "dealer": {
    "id": 5,
    "name": "AV Solutions Inc."
  },
  "coverpageImageUrl": null,
  "aboutUs": null,
  "projectDescription": null,
  "profit": null,
  "recurringServices": null,
  "paymentSchedule": null,
  "paymentRequests": [],
  "projectTerms": null,
  "lastModifiedUser": {
    "id": 12,
    "firstName": "Alex",
    "lastName": "Johnson"
  }
}
Use this endpoint to retrieve the full detail of a specific change order. The response includes the complete financial summary (parts, labor, fees, subtotal, and sales tax), all areas with their options and line items, and customer contact information. The HTTP response also sets the Last-Modified header from the change order’s lastModifiedDate, which you can use for conditional requests.
curl -i -X GET \
  'https://api.portal.io/public/proposals/123/changeorders/42' \
  -H 'Accept: application/json' \
  -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'
{
  "id": 42,
  "number": 1,
  "name": "Smith Residence AV - Change Order 1",
  "status": "Draft",
  "createdDate": "2026-04-01T10:00:00Z",
  "lastModifiedDate": "2026-04-05T14:30:00Z",
  "lastModifiedByUserDate": "2026-04-05T14:30:00Z",
  "lastSubmittedDate": null,
  "clientLastOpenedDate": null,
  "clientLastDecisionDate": null,
  "lastCompletedDate": null,
  "financialSummary": {
    "partsSubtotal": 800.00,
    "laborTotal": 350.00,
    "feeTotal": 100.00,
    "changeOrderSubtotal": 1250.00,
    "salesTax": {
      "taxStatus": "Ok",
      "total": 103.13
    }
  },
  "areas": [
    {
      "id": 55,
      "name": "Living Room",
      "options": [
        {
          "id": 201,
          "status": "Draft",
          "clientDescription": "Standard Installation Package",
          "items": []
        }
      ]
    }
  ],
  "customer": {
    "id": 101,
    "firstName": "Jane",
    "lastName": "Smith",
    "contactEmail": "jane@example.com",
    "contactPhone": "555-867-5309"
  },
  "dealer": {
    "id": 5,
    "name": "AV Solutions Inc."
  },
  "coverpageImageUrl": null,
  "aboutUs": null,
  "projectDescription": null,
  "profit": null,
  "recurringServices": null,
  "paymentSchedule": null,
  "paymentRequests": [],
  "projectTerms": null,
  "lastModifiedUser": {
    "id": 12,
    "firstName": "Alex",
    "lastName": "Johnson"
  }
}

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.

ChangeOrderId
integer<int32>
required

Change Order Id.

Response

Success

Detailed change-order representation

id
integer<int32>
required

Unique numeric identifier of the change order.

createdDate
string<date-time>
required

UTC timestamp when the change order was created.

lastModifiedDate
string<date-time>
required

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

lastModifiedByUserDate
string<date-time>
required

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

financialSummary
PublicChangeOrderFinancialSummaryModel · object
required

Financial summary for a change order

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

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.