Skip to main content
POST
Copy Proposal Items
Copies items into one or more area options of the same proposal — the way to offer the same equipment across several client-selectable options without re-adding it by hand. Pass the items in ProposalItemIds and the targets in DestinationAreaOptionIds. Every destination receives a copy of every listed item, so three items and two destinations produce six new items. Copies are appended to the end of each destination option. Every destination option and item must belong to the proposal, and a repeated id in either list returns 400 rather than being ignored. CopyNestedItems defaults to true, so children are copied under their new parent and appear in the response alongside them. The copies are new proposal items with their own ids: later edits to the originals do not follow them.
Each destination option is saved separately. Every id is checked before anything is copied, so one bad id copies nothing at all — but if the call fails part-way through several destinations, the copies already saved stay where they are. Re-fetch get proposal before retrying, or you will copy those items twice.

Authorizations

X-MSS-API-APPID
string
header
required

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

X-MSS-API-USERKEY
string
header
required

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

X-MSS-CUSTOM-DATE
string
header
required

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

X-MSS-SIGNATURE
string
header
required

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

Headers

Accept
enum<string>
required

Accept Header

Available options:
application/json

Path Parameters

ProposalId
integer<int32>
required

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

Body

application/json

Proposals Service

destinationAreaOptionIds
integer<int32>[]
required

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

proposalItemIds
integer<int32>[]
required

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

copyNestedItems
boolean

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

Response

Success

id
integer<int32>
required

Unique numeric identifier of the proposal item

referencedItemId
integer<int32>
required

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

createdDate
string<date-time>
required

UTC timestamp when the proposal item was created

quantity
number<double>
required

Quantity of the proposal item

parentId
integer<int32>

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

itemType
enum<string>
Available options:
Part,
Labor,
CustomItem,
Fee
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

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.

total
PublicItemTotalModel · object

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

linkedOrders
PublicLinkedOrderModel · object[]

Linked orders created from this proposal item