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

Proposals/Item

Add Proposal Items

Adds one or more items to a proposal, creating one item per area option each entry targets. In each of those area options, the new item nests under whichever item from parentProposalItemIds sits in that same area option, and is added at top level when none does. Repeating a call adds further copies - the endpoint is not idempotent. Returns the created items using the standard proposal-item response shape.

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
required
Array of objects (PublicProposalItemModel)

New items to add to the proposal. At least one item is required.

IncludeAttachments
boolean

(Optional) Also add the items attached to each newly created item, nested under it. Defaults to true - pass false to skip. Attachment items are not part of this call's response and may take a moment to appear; re-fetch the proposal to read them.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Invalid item payload, or name/model supplied on an item type that does not accept it.

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 proposal area option not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/items
Request samples
Response samples
application/json
[
  • {
    }
]

Delete Proposal Items

Deletes one or more items from a proposal. Nothing is deleted unless every id passes validation. Succeeds with an empty 200 or 204, so re-fetch the proposal to read the remaining items.

Request
path Parameters
ProposalId
required
integer <int32>

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

query Parameters
ItemIds
required
Array of integers <int32>

Ids of the proposal items to delete. Each id must belong to the proposal, and a repeated id returns 404 rather than being ignored.

IncludeAttachments
boolean

(Optional) Also remove the items nested under each deleted item. Defaults to false - nested items are then kept and promoted to top-level items in the same area option.

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 (no body).

204

Success (no body).

400

Invalid item ids.

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 item not found.

409

Proposal state prevents editing

delete/public/proposals/{ProposalId}/items
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
}

Set Proposal Item Combined Pricing

Sets combined pricing on a proposal item, rolling the totals of its nested items into the item's own total.amount. Nested items keep their own totals in responses, so those amounts must not be added on top of a combined parent's. Returns the affected item.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
required
IsCombinedPrice
required
boolean

Whether the totals of nested items roll up into this item's total. Takes effect only on a top-level, non-recurring item that has nested items.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

isCombinedPrice is missing.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/combineprice
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Supplier Cost

Updates the per-unit supplier cost of a proposal item, as an absolute value or a percentage + basis. Returns the updated item, or every updated instance when updateAllInstances is true.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
Cost
number <double>

Absolute per-unit supplier cost, mutually exclusive with costPercentage. Supplying it clears any stored percentage and basis.

CostPercentage
number <double>

Cost as a whole percent of the chosen basis (15 means 15%), with the resulting cost rounded to 2 decimals. Requires costPercentageBasis, is mutually exclusive with cost, and clears any stored absolute cost. Ignored while the item is a recurring service.

CostPercentageBasis
string

Which amount costPercentage is a percentage of. CostOfSellPrice - the item's own sell price; valid for cost only. AreaTotal - the sell total of the item's own area option. PartsInAreaTotal and LaborInAreaTotal - the parts-only and labor-only sell totals of that same area option. ProposalTotal - the proposal subtotal before any convenience fee. PartTotal and LaborTotal - the parts-only and labor-only sell totals across the whole proposal. For example, costPercentage 15 with CostOfSellPrice makes the cost 15% of the item's sell price. Required when costPercentage is supplied.

Enum: "ProposalTotal" "PartTotal" "LaborTotal" "AreaTotal" "PartsInAreaTotal" "LaborInAreaTotal" "CostOfSellPrice"
SetDefault
boolean

When true, also save this cost in the catalog so later proposals start with it. For a Part, only an absolute cost is saved, against the supplier the item uses: a percentage-based update saves no cost and clears any cost saved there before. The company's draft proposals and draft orders that carry that part without a cost of their own are updated too. For a Labor, CustomItem, or Fee item, the cost, percentage, and basis are saved on the library item. Defaults to false.

UpdateAllInstances
boolean

When true, apply the change to every other instance of the same catalog item in this proposal that shares its item type and assigned supplier, across all area options. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Neither an absolute cost nor a percentage was supplied, both were supplied, or a percentage was supplied without its basis.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/cost
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Image

Sets a proposal item's image, either from a hosted URL or from image bytes sent in the request. The same image is also applied to Part items that use the same catalog item, have no image of their own, and belong to another draft proposal of the same company; those items may take a moment to catch up. Returns every item in this proposal that the call changed, using the standard proposal-item response shape.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update.

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
ImageUrl
string

Absolute http(s) URL of the image; any other scheme or a relative URL returns 400. Must be reachable from Portal - a failed download leaves the item without an image. Exactly one of imageUrl and fileData is required.

FileData
Array of arrays

Raw image bytes, sent base64-encoded. Animated GIFs are not stored and leave the item without an image. Exactly one of imageUrl and fileData is required.

SetDefault
boolean

When true, also sets this image as the company's default for the underlying catalog item, so later proposals inherit it. Depending on the account's trust level and how many companies already use the same image, it may also become the shared catalog primary image. Defaults to false.

UpdateAllInstances
boolean

When true, also overwrites the image of every other instance of the same catalog item in this proposal that already has one. Instances with no image are updated either way. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Neither or both of imageUrl and fileData were supplied, or imageUrl is not an absolute http(s) URL.

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 item not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/items/{ProposalItemId}/image
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item MSRP

Sets the per-unit MSRP of a proposal item. MSRP never changes what the item sells for - it only serves as the list price, and when it exceeds the sell price the difference is reported as MSRP savings. Returns the updated item, or every updated instance when updateAllInstances is true.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
required
Msrp
required
number <double>

Per-unit MSRP amount for the item.

SetDefault
boolean

When true, also save this MSRP so later proposals start with it. A Part saves it as the company's own MSRP, in the currency of the caller's locale; a CustomItem saves it on the library item. Labor and Fee items have no MSRP of their own, so the flag does nothing for them. Once enough companies record the same MSRP for a part, that figure can also become the catalog's shared MSRP. Defaults to false.

UpdateAllInstances
boolean

When true, apply the change to every other instance of the same catalog item in this proposal that shares its item type, across all area options. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

msrp is missing.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/msrp
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Client Note

Updates the client-facing note of a proposal item. Returns the affected item(s) using the standard proposal-item response shape.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update.

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
ClientNote
string

New client-facing note for the item. Omit it or send null to clear the note held on the item; with setDefault, the caller's stored default note is cleared as well.

SetDefault
boolean

When true, also saves the note as the caller's own default note for the underlying catalog item, so items they add to later proposals start with it. Defaults to false.

UpdateAllInstances
boolean

When true, apply the change to every other instance of the same catalog item in this proposal that shares its item type, across all area options. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Malformed request body.

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 item not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/items/{ProposalItemId}/note
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Quantity

Updates the quantity of a proposal item. Returns the affected items.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
required
Quantity
required
number <double>

New quantity for the item, stored rounded to 2 decimals. Zero is allowed and leaves the item in place - use the delete endpoint to remove it.

IncludeAttachments
boolean

When true, the items nested under this item are rescaled by the same factor as this item, rather than being set to the same quantity. For example, changing this item from 2 to 6 multiplies every nested quantity by 3, so a nested item at 1 becomes 3. If this item's current quantity is zero there is no factor to apply and only this item changes. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

quantity is missing.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/qty
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Recurring-Service Flag

Marks a proposal item as a recurring service, or clears that mark. Part items cannot be recurring services. A recurring-service item is left out of its area option's total and counted in that option's totalRecurringService instead. Turning the mark on also switches combined pricing off on the item. Returns the affected item.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
required
IsRecurringService
required
boolean

Whether the item is a recurring service.

SetDefault
boolean

When true, also mark the library item behind this one - a Labor or CustomItem - as a recurring service, so items added from it later start that way. This happens only while isRecurringService is true; clearing the mark leaves the library item as it was. Nothing is written for Fee items. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Recurring service is not valid for a part item.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/recurringservice
Request samples
Response samples
application/json
[
  • {
    }
]

Replace Proposal Item

Replaces a proposal item with a different catalog item. The new item keeps the original's quantity, position, area option, parent and combined-pricing setting. Its supplier, prices, MSRP, tax-exempt and recurring-service settings, image, brand, model and description come from the catalog item you name. The original item is removed and its id stops working. The response lists the new item - or items, when replaceAll is used - along with any attachment items added with them.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to replace.

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
NewCatalogItemId
required
integer <int32>

Identifier of the source item to replace with, matching itemType. Part ids come from GET /public/catalog; ids for Labor, CustomItem, and Fee items are not exposed by the public API yet.

ItemType
required
string

Type of the incoming (replacement) item. It does not have to match the type of the item being replaced.

Enum: "Part" "Labor" "CustomItem" "Fee"
ReplaceAll
boolean

When true, also replace every other instance of the same catalog item in this proposal that shares its item type. Instances sitting in a declined area option are left alone. Defaults to false.

IncludeAttachments
boolean

When true, also add the items attached to each replacement item, nested under it. Requires the account's plan to include product attachments. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

itemType is missing or not a known item type, or newCatalogItemId is missing.

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 item not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/items/{ProposalItemId}/replace
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Sell Price

Updates the per-unit sell price of a proposal item, as an absolute value or a percentage + basis. Returns the updated item, or every updated instance when updateAllInstances is true.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
SellPrice
number <double>

Absolute per-unit sell price, mutually exclusive with sellPercentage. Supplying it clears any stored percentage and basis.

SellPercentage
number <double>

Sell price as a whole percent of the chosen basis (15 means 15%), with the resulting price rounded to 2 decimals. Requires sellPercentageBasis, is mutually exclusive with sellPrice, and clears any stored absolute price.

SellPercentageBasis
string

Which amount sellPercentage is a percentage of. Within the item's own area option: AreaTotal is that option's sell total, PartsInAreaTotal and LaborInAreaTotal its parts-only and labor-only sell totals. Across the whole proposal: ProposalTotal is the subtotal before any convenience fee, PartTotal and LaborTotal the parts-only and labor-only sell totals. For example, sellPercentage 15 with PartsInAreaTotal prices the item at 15% of the parts total in its area option. CostOfSellPrice belongs to supplier cost and must not be used here. Required when sellPercentage is supplied.

Enum: "ProposalTotal" "PartTotal" "LaborTotal" "AreaTotal" "PartsInAreaTotal" "LaborInAreaTotal" "CostOfSellPrice"
SetDefault
boolean

When true, also save this sell price in the catalog so later proposals start with it. For a Part, only an absolute price is saved: a percentage-based update saves no price and clears any price saved there before. For a Labor, CustomItem, or Fee item, the price, percentage, and basis are saved on the library item. Defaults to false.

UpdateAllInstances
boolean

When true, the same change is applied to the proposal's other items that come from the same catalog item and have the same item type, in any area option. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Neither an absolute sell price nor a percentage was supplied, both were supplied, or a percentage was supplied without its basis.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/sellprice
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Short Description

Updates the short description of a proposal item - the line's descriptive text, read back as shortDescription. It replaces whatever the item carried before, and omitting shortDescription or sending null clears it. Returns the affected item(s) using the standard proposal-item response shape.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update.

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
ShortDescription
string

New short description for the item. Omit it or send null to clear the description held on the item.

SetDefault
boolean

When true, also save the description on the catalog item behind this one, so items added from it later start with it. A Part saves it as the company's own description; a Labor or CustomItem saves it on the library item. Clearing the description also clears a Part's saved one, while a Labor or CustomItem keeps what it had. Do not use this flag on a Fee item: it currently overwrites the fee's name in the library instead of its description. Defaults to false.

UpdateAllInstances
boolean

When true, apply the change to every other instance of the same catalog item in this proposal that shares its item type, across all area options. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Malformed request body.

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 item not found.

409

Proposal state prevents editing

post/public/proposals/{ProposalId}/items/{ProposalItemId}/shortdescription
Request samples
Response samples
application/json
[
  • {
    }
]

Set Proposal Item Supplier

Assigns a supplier to a proposal item. The change always covers every item in the proposal that comes from the same catalog item and has the same item type; it cannot be narrowed to the single item named in the path. Each item that moves to the new supplier also takes that supplier's catalog cost, which replaces any cost entered on it, and ends up with no cost when the supplier has none for that item. If the company is not linked to the supplier yet, the call links it. The response lists all matched items, including any that were already using this supplier.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Unique ID of the proposal item to set the supplier on. Must belong to the proposal.

SupplierId
required
integer <int32>

Unique ID of the supplier to assign. Must be a supplier available for the item's catalog item (see the suppliers list endpoint).

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
SetDefault
boolean

(Optional) When true, also save this supplier as the company's default for the catalog item, so later proposals start with it. The company's draft proposals and draft orders that carry the item without a cost of their own are updated as well. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

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, proposal item, or supplier not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/supplier/{SupplierId}
Request samples
Response samples
application/json
[
  • {
    }
]

List Proposal Item Suppliers

Lists every supplier available for the item's catalog item, with their cost details. The entry whose isDefault is true is the supplier the item currently uses, and both its cost and lastVerifiedDate carry the item's own values rather than the catalog ones; no entry is marked default when the item has no supplier assigned. The list is empty for Labor, CustomItem, and Fee items.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Unique ID of the proposal item to list available suppliers for. Must belong to the 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

Responses
200

Success

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

Identifier of the supplier

name
required
string

Supplier display name

object (PublicCostModel)

Supplier cost information used by public catalog responses.

isDefault
required
boolean

Whether the supplier is the default one

sku
string

SKU the supplier uses for the item

isInStock
required
boolean

Whether the supplier reports the item as in stock

isDiscontinued
required
boolean

Whether the item is marked discontinued for the supplier

status
required
string

Manage-price status for the supplier

createdDate
required
string <date-time>

UTC timestamp when this supplier information was created

accountNumber
string

Account number your company uses with the supplier

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 proposal item not found.

get/public/proposals/{ProposalId}/items/{ProposalItemId}/suppliers
Request samples
Response samples
application/json
[
  • {
    }
]

Update Proposal Item Tax-Exempt Flag

Marks a proposal item as tax-exempt, or clears that mark. Returns the affected item.

Request
path Parameters
ProposalId
required
integer <int32>

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

ProposalItemId
required
integer <int32>

Id of the proposal item to update. Must belong to the 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
required
IsTaxExempt
required
boolean

Whether the item is tax-exempt.

SetDefault
boolean

Saves the tax-exempt setting on the library item, so new items created from it are tax-exempt too. Works only when isTaxExempt is true. Works only for Labor and CustomItem items. Defaults to false.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

isTaxExempt is missing.

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 proposal item not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/{ProposalItemId}/taxexempt
Request samples
Response samples
application/json
[
  • {
    }
]

Copy Proposal Items

Copies one or more items into one or more destination area options within the same proposal. Every destination receives a copy of every listed item, so listing three items and two destinations creates six items. Nested items copy along with their parent unless suppressed. Copies are always appended to the end of the destination option. Returns the newly-created items, including the copies of any nested items.

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
DestinationAreaOptionIds
required
Array of integers <int32>

Area options to copy the items to. Each option must belong to the proposal, and duplicate ids return 400 rather than being ignored.

ProposalItemIds
required
Array of integers <int32>

Ids of the proposal items to copy. Each item must belong to the proposal, and duplicate ids return 400 rather than being ignored.

CopyNestedItems
boolean

(Optional) Whether nested (child) items copy along with their parent. Defaults to true.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Missing required fields, or destinationAreaOptionIds or proposalItemIds contains duplicate ids.

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, item, or destination area option not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/copy
Request samples
Response samples
application/json
[
  • {
    }
]

Refresh Proposal Item Costs

Refreshes item costs across the whole proposal from the catalog. There is no request body. Only Part items are refreshed. An item is skipped entirely once its cost or MSRP has been set on it directly, including through the cost and msrp endpoints - it keeps its cost, in-stock flag and MSRP. For the others, all three are re-read from the catalog. The part's future cost is used when its supplier is set to use it. An item with no supplier picks up the part's default supplier. Succeeds with an empty 200 or 204, so re-fetch the proposal to read the new values.

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

Responses
200

Success

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

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/costupdate
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
}

Move Proposal Items

Moves items to a different area option in the same proposal. Moved items are added at the end of the destination. Move a parent item to move its whole group. Sending a nested item's own id moves only that item, and its parent link still points into the old area option. The response also lists the nested items of each item you moved, even the ones that stayed behind.

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
DestinationAreaOptionId
required
integer <int32>

Area option to move the items to. Must belong to the proposal.

ProposalItemIds
required
Array of integers <int32>

Ids of the proposal items to move. Each item must belong to the proposal, and duplicate ids return 400 rather than being ignored.

MoveNestedItems
boolean

(Optional) Whether nested items move with their parent. Defaults to true. When false, they stay in the old area option and become top-level items there.

Responses
200

Success

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

Unique numeric identifier of the proposal item

parentId
integer <int32>

Identifier of the parent item when this item is nested under another item

itemType
required
string

Item type

Enum: "Part" "Labor" "CustomItem" "Fee"
referencedItemId
required
integer <int32>

Identifier of the catalog, labor, custom, or fee item this proposal item was created from

createdDate
required
string <date-time>

UTC timestamp when the proposal item was created

lastModifiedDate
string <date-time>

UTC timestamp when the proposal item was last modified

brand
string

Brand name of the item

model
string

Model value of the item

description
string

Deprecated - use shortDescription

name
string

Name of a Labor item

shortDescription
string

Short description shown for the proposal item

clientNote
string

Client-facing note for the proposal item

imageUrl
string

Image URL of the item

msrp
number <double>

MSRP amount of the item

sellPrice
number <double>

Sell price for the proposal item

cost
number <double>

Supplier cost for the proposal item

costUpdateDate
string <date-time>

UTC timestamp when the supplier cost was last updated

supplier
string

Display name of the supplier assigned to the item.

quantity
required
number <double>

Quantity of the proposal item

required
object (PublicItemTotalModel)

Total amount for a proposal item

isTaxExempt
boolean

Whether the proposal item is tax exempt

isRecurringService
boolean

Whether the proposal item is a recurring service

Array of objects (PublicLinkedOrderModel)

Linked orders created from this proposal item

400

Missing required fields, or proposalItemIds contains duplicate ids.

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, item, or destination area option not found.

409

Proposal is in a state that does not allow editing.

post/public/proposals/{ProposalId}/items/move
Request samples
Response samples
application/json
[
  • {
    }
]