Draft estimate change
Persists a reviewable proposal without mutating the estimate, staffing plan, schedule, or baseline.
POST
/api/v1/estimates/:id/proposalsAuthorization
estimates:writeapi key scoperequiredRequired scope when calling with an API key.
Path parameters
idstringrequiredEstimate UUID.
Example: 8a043c6e-52ab-4df1-8b7a-afec991a05a2
Request body
requested_outcomestringrequiredExplicit user intent.
proposed_changesobjectrequiredReviewable proposed patch; no canonical mutation occurs.
evidence_refsarrayoptionalOptional provenance references.
expected_versionnumberoptionalVersion the proposal was drafted against.
Example request
{
"requested_outcome": "Reduce launch risk",
"proposed_changes": {
"contingency_percent": 20
},
"expected_version": 3
}Request
curl -X POST "https://www.digitalstack360.com/api/v1/estimates/8a043c6e-52ab-4df1-8b7a-afec991a05a2/proposals" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: estimate-proposal-03" \
-H "Content-Type: application/json" \
-d '{"requested_outcome":"Reduce launch risk","proposed_changes":{"contingency_percent":20},"expected_version":3}'Examples use a placeholder key from your environment. Store your key in $DS_API_KEY — never commit it.
Response
200 OK
{
"data": {
"id": "f61f8271-ddb5-4d55-a4d2-5910714fd7a2",
"status": "draft",
"expected_version": 3
}
}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