Skip to content

Restore an offer revision

POST
/api/offers/{offerId}/revisions/{revisionId}/restore
curl --request POST \
--url https://example.com/api/offers/example/revisions/example/restore \
--cookie better-auth.session_token=<better-auth.session_token>
offerId
required
string
revisionId
required
string

The restored offer and the revision created by the restore action.

Media type application/json
object
offer
required
object
id
required
string
customerId
required
string | null
requestId
required
string | null
userId
required
string | null
name
required
string
status
required
string
Allowed values: draft accepted rejected imported
currency
required
string
discountPercent
required
number
<= 100
discountAmount
required
number
notes
required
Array<string>
unmatched
required
Array<string>
items
required
Array<object>

A product line item included in an offer.

object
id
string
offerId
string
productId
required
string | null
name
required
string
description
required
string
quantity
required
number
> 0
unitPriceNet
required
number
vatRate
required
number
unitGrossPrice
required
number
totalNet
required
number
totalGross
required
number
requestItem
required
string
rationale
required
string
matchSource
required
string | null
Allowed values: exact semantic manual
matchScore
required
number | null
position
required
integer
product

Product snapshot used to render an offer line without frontend fixture lookup.

object
id
required
string
sku
string
name
required
string
description
string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
customerName
string | null
clientRequest
string | null
userName
string | null
revision
required

Saved revision metadata and optional snapshot for an offer.

object
id
required
string
offerId
required
string
revisionNumber
required
integer
> 0
snapshot

Stored offer state that can be restored later.

object
name
required
string
customerId
required
string | null
customerName
required
string | null
requestId
required
string | null
clientRequest
required
string | null
status
required
string
Allowed values: draft accepted rejected imported
currency
required
string
discountPercent
number
0 <= 100
discountAmount
number
0
notes
required
Array<string>
unmatched
required
Array<string>
items
required
Array<object>

Line item captured in an offer revision snapshot.

object
productId
required
string | null
sku
required
string | null
name
required
string
description
required
string
requestItem
required
string
quantity
required
number
> 0
unitPriceNet
required
number
vatRate
required
number
unitGrossPrice
required
number
totalNet
required
number
totalGross
required
number
rationale
required
string
matchSource
required
string | null
Allowed values: exact semantic manual
matchScore
required
number | null
position
required
integer
createdBy
required
object
id
required
string
name
required
string
createdAt
required
string format: date-time
acceptedAt
string | null format: date-time
Example
{
"offer": {
"id": "offer-demo-001",
"status": "draft",
"items": [
{
"matchSource": "exact"
}
]
},
"revision": {
"snapshot": {
"status": "draft",
"discountPercent": 0,
"discountAmount": 0,
"items": [
{
"matchSource": "exact"
}
]
}
}
}

No valid Better Auth session was present.

Media type application/json

Returned when no valid Better Auth session is present.

object
error
required
string
Example generated
{
"error": "example"
}

The revision was not found.

Media type application/json

Standard API error payload.

object
error
required
object
code
required
string
message
required
string
issues
Array<string>
Example generated
{
"error": {
"code": "example",
"message": "example",
"issues": [
"example"
]
}
}