Update estimate metadata
Updates bounded draft metadata with optimistic versioning. It cannot mutate status or replace an immutable baseline.
PATCH
/api/v1/estimates/:idAuthorization
estimates:writeapi key scoperequiredRequired scope when calling with an API key.
Path parameters
idstringrequiredEstimate UUID.
Example: 8a043c6e-52ab-4df1-8b7a-afec991a05a2
Request body
namestringoptionalUpdated estimate name.
descriptionstringoptionalUpdated description.
commercial_modelstringoptionalCommercial posture.
contingency_percentnumberoptionalContingency percentage.
expected_versionnumberrequiredVersion returned by the prior read.
confirmbooleanrequiredMust be true.
Example request
{
"contingency_percent": 20,
"expected_version": 3,
"confirm": true
}Request
curl -X PATCH "https://www.digitalstack360.com/api/v1/estimates/8a043c6e-52ab-4df1-8b7a-afec991a05a2" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: estimate-update-04" \
-H "Content-Type: application/json" \
-d '{"contingency_percent":20,"expected_version":3,"confirm":true}'Examples use a placeholder key from your environment. Store your key in $DS_API_KEY — never commit it.
Response
200 OK
{
"data": {
"id": "8a043c6e-52ab-4df1-8b7a-afec991a05a2",
"version": 4
},
"meta": {
"idempotency_replayed": false
}
}Errors
401
missing_authNo credentials provided
401
invalid_api_keyAPI key is invalid or revoked
400
bad_requestMissing or invalid request fields
403
scope_insufficientKey lacks the required write scope
409
version_conflictEstimate changed since it was read.