Skip to main content
PUT
Update Proposal
Updates an existing Proposal record. You must include the Id of the record to update along with all required fields.

Authentication

This endpoint requires OAuth2 authentication. Include a valid bearer token in the Authorization header. The authenticated user must be a full unrestricted administrator or have the Proposal-Edit role.

Enums

Request Body

Required Fields

integer
required
The Id of the Proposal record to update.
integer
required
ID of the location that issued this proposal; it is supplied from the agent’s current location context and its currency is the one all proposal amounts are expressed in..
integer
required
ID of the staff user who owns this proposal; required, and their email address is notified when the customer completes an e-signed document..
integer
required
ID of the customer the proposal is addressed to; required, and on acceptance the contracts, products, and discount of this proposal are created against this customer..
string
required
Required human-readable reference shown to the customer and used to name the generated e-signature document; the admin UI seeds it as a random six-character code followed by the customer and plan names..
integer
required
Lifecycle state of the proposal: Draft, Sent (stamped when the proposal is emailed), Accepted (set only by the acceptance flow, after which no field on the proposal can be changed), or Rejected (set manually to withdraw the offer)..
integer
required
ID of the plan being quoted; required, and it is copied into the ProposalContract created with the proposal, so a different plan must be set on that ProposalContract instead..
integer
required
Day of the month, from 1 to 28, on which the quoted contract is invoiced; it is copied into the ProposalContract created with the proposal, so later changes belong on that ProposalContract..
integer
required
Number of plan units quoted, at least 1; it multiplies the unit price. It is copied into the ProposalContract created with the proposal, so later changes belong on that ProposalContract..

Optional Fields

string
Free-text notes about this proposal; they are shown to the customer on the proposal page, so they are not internal-only..
integer
Optional ID of the document template rendered for the customer in place of the standard price-schedule table; when empty, the standard layout is used..
integer
Optional ID of the document template used to generate the document the customer is asked to e-sign when the proposal is accepted; when empty, no signature is requested..
string
Per-proposal HTML copy of the document to e-sign, produced from DocumentToSign and editable in the document editor; it is cleared automatically whenever DocumentToSign changes..
string
URL of a new file to upload as the document to sign binary document.
boolean
Set to true to remove the current document to sign binary document file.
string
Per-proposal HTML copy of the document presented to the customer, produced from DocumentToSend and editable in the document editor; it is cleared automatically whenever DocumentToSend changes..
string
URL of a new file to upload as the document to send binary document.
boolean
Set to true to remove the current document to send binary document file.
string
URL of a new file to upload as the proposal file.
boolean
Set to true to remove the current proposal file file.
integer[]
List of IDs of the floor-plan units quoted in this proposal; each unit must belong to a location the user can access, an empty list means no unit is attached, and the list is copied into the ProposalContract created with the proposal, so later changes belong on that ProposalContract..
integer[]
IDs added to the Desks relationship..
integer[]
IDs removed from the Desks relationship..
integer[]
List of IDs of the floor-plan unit packages quoted in this proposal; each package must belong to one of the units listed in Desks and to a location the user can access, an empty list means none, and the list is copied into the ProposalContract created with the proposal..
integer[]
IDs added to the Variants relationship..
integer[]
IDs removed from the Variants relationship..
number
Optional per-unit price override for the quoted contract, in the issuing location’s currency; when empty the plan’s own price is used. It is copied into the ProposalContract created with the proposal, so later price changes belong on that ProposalContract..
string
Date the quoted contract starts; when empty, acceptance starts it the day after the proposal is accepted. It is copied into the ProposalContract created with the proposal, so later changes belong on that ProposalContract..
integer
Optional minimum cancellation notice, in days before the next billing day, for the quoted contract; when empty the plan’s own notice period applies. It seeds the ProposalContract created with the proposal and cannot be changed here afterwards, so later changes belong on that ProposalContract..
string
End date of the minimum term for the quoted contract; when empty, the contract derives its own term from the plan’s default term and start date. It seeds the ProposalContract created with the proposal and cannot be changed here afterwards, so later changes belong on that ProposalContract..
string
Optional date on which the quoted contract ends; leave empty for an open-ended contract. It is copied into the ProposalContract created with the proposal, so later changes belong on that ProposalContract..
string
Last date the customer may still accept this proposal; acceptance and e-signing are refused once the current UTC time passes this date plus one day, and when empty the proposal expires 30 days after it was created. It stays editable after creation..
integer
Optional ID of a discount code quoted with this proposal; on acceptance it is both copied into the contract and added to the customer’s account..
string
Legacy location-timezone column for StartDate; Proposal is not date-localized, so it is never populated. Read StartDate instead..
string
Legacy location-timezone column for SentOn; Proposal is not date-localized, so it is never populated. Read SentOn instead..
boolean
Whether the contracts created on acceptance are left paused with no renewal date, so no invoice is issued automatically; the location’s Billing.DoNotIssueInvoice setting supplies the default. It is read from the proposal at the moment of acceptance, never copied into the ProposalContract, so it can still be changed while the proposal is not accepted..

Code Examples

Response

200

integer
HTTP status code. 200 on success.
string
A human-readable message confirming the update.
object
Contains the Id of the updated record.
boolean
true if the proposal was updated successfully.
array
null on success.
Example Response

400

string
A summary of the validation error(s), in the format PropertyName: error message.
any
null on validation failure.
object[]
Array of validation errors.
boolean
false when the request fails validation.
Example Response