Save quote changes as a new version
POST
/v1/workspace/quotes/{quote_id}/versions
const url = 'https://api.vocapable.com/v1/workspace/quotes/example/versions';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"currency":"example","lines":[{"description":"example","quantity":1,"unit_amount_minor":1}],"discount_minor":0,"tax_treatment":"not_calculated","tax_minor":0,"deposit_minor":0,"terms":"example","expires_at":"2026-04-15T12:00:00Z","recipient_contact_id":"example","recipient_email":"example","expected_revision":1}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.vocapable.com/v1/workspace/quotes/example/versions \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "currency": "example", "lines": [ { "description": "example", "quantity": 1, "unit_amount_minor": 1 } ], "discount_minor": 0, "tax_treatment": "not_calculated", "tax_minor": 0, "deposit_minor": 0, "terms": "example", "expires_at": "2026-04-15T12:00:00Z", "recipient_contact_id": "example", "recipient_email": "example", "expected_revision": 1 }'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”quote_id
required
Quote Id
string
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
WorkspaceQuoteVersionSave
object
lines
required
Lines
Array<object>
WorkspaceQuoteLineInputobject
description
required
Description
string
quantity
Quantity
integer
unit_amount_minor
required
Unit Amount Minor
integer
discount_minor
Discount Minor
integer
tax_treatment
Tax Treatment
string
tax_minor
Tax Minor
integer
deposit_minor
Deposit Minor
integer
expected_revision
required
Expected Revision
integer
Responses
Section titled “Responses”Successful Response
Media typeapplication/json
WorkspaceQuoteSaved
A save’s result. unchanged means the content equals the current version: no new
version, no history entry.
object
quote
required
WorkspaceQuote
object
id
required
Id
string
organization_id
required
Organization Id
string
organization_name
required
Organization Name
string
status
required
Status
string
current_version
required
Any of:
WorkspaceQuoteVersion
object
id
required
Id
string
number
required
Number
integer
status
required
Status
string
currency
required
Currency
string
lines
required
Lines
Array<object>
WorkspaceQuoteLineobject
description
required
Description
string
quantity
required
Quantity
integer
unit_amount_minor
required
Unit Amount Minor
integer
amount_minor
required
Amount Minor
integer
subtotal_minor
required
Subtotal Minor
integer
discount_minor
required
Discount Minor
integer
tax_treatment
required
Tax Treatment
string
tax_minor
required
Tax Minor
integer
total_minor
required
Total Minor
integer
deposit_minor
required
Deposit Minor
integer
digest
required
Digest
string
pricing_review
required
Pricing Review
string
approval
required
WorkspaceQuoteApproval
object
state
required
State
string
reviewer
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
decided_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
acceptance
required
created_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
created_at
required
Created At
string format: date-time
null
versions
required
Versions
Array<object>
WorkspaceQuoteVersionobject
id
required
Id
string
number
required
Number
integer
status
required
Status
string
currency
required
Currency
string
lines
required
Lines
Array<object>
WorkspaceQuoteLineobject
description
required
Description
string
quantity
required
Quantity
integer
unit_amount_minor
required
Unit Amount Minor
integer
amount_minor
required
Amount Minor
integer
subtotal_minor
required
Subtotal Minor
integer
discount_minor
required
Discount Minor
integer
tax_treatment
required
Tax Treatment
string
tax_minor
required
Tax Minor
integer
total_minor
required
Total Minor
integer
deposit_minor
required
Deposit Minor
integer
digest
required
Digest
string
pricing_review
required
Pricing Review
string
approval
required
WorkspaceQuoteApproval
object
state
required
State
string
reviewer
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
decided_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
acceptance
required
created_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
created_at
required
Created At
string format: date-time
share_links
required
Share Links
Array<object>
WorkspaceShareLinkobject
id
required
Id
string
purpose
required
Purpose
string
quote_version_id
required
Quote Version Id
string
state
required
State
string
expires_at
required
Expires At
string format: date-time
created_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
created_at
required
Created At
string format: date-time
payments
required
Payments
Array<object>
WorkspacePaymentRequestobject
id
required
Id
string
kind
required
Kind
string
amount_minor
required
Amount Minor
integer
currency
required
Currency
string
status
required
Status
string
paid_minor
required
Paid Minor
integer
refunded_minor
required
Refunded Minor
integer
provider
required
Provider
string
environment
required
Environment
string
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
shareable
required
Shareable
boolean
created_by
required
Any of:
WorkspacePersonRef
A teammate named on a record: the id the server holds and the name to show.
object
user_id
required
User Id
string
name
required
Name
string
null
revision
required
Revision
integer
created_at
required
Created At
string format: date-time
updated_at
required
Updated At
string format: date-time
unchanged
required
Unchanged
boolean
Example
{ "quote": { "status": "draft", "current_version": { "status": "draft", "tax_treatment": "not_calculated", "pricing_review": "none", "approval": { "state": "not_required" }, "acceptance": { "accepted_via": "portal" } }, "versions": [ { "status": "draft", "tax_treatment": "not_calculated", "pricing_review": "none", "approval": { "state": "not_required" }, "acceptance": { "accepted_via": "portal" } } ], "share_links": [ { "purpose": "quote", "state": "live" } ], "payments": [ { "kind": "deposit", "status": "draft", "provider": "stripe", "environment": "test" } ] }}Validation Error
Media typeapplication/json
HTTPValidationError
object
detail
Detail
Array<object>
ValidationErrorobject
loc
required
Location
Array
msg
required
Message
string
type
required
Error Type
string
input
Input
ctx
Context
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example", "input": "example", "ctx": {} } ]}