Update milestone progress

Updates milestone completion percentage and/or projected date through Delivery command authority.

POST/api/v1/delivery/milestones/:id/progress

Authorization

delivery-timeline:writeapi key scoperequired
Required scope when calling with an API key.

Path parameters

idstringrequired
Delivery milestone ID

Example: dm_01k2...

Request body

completion_pctnumberoptional
Integer percentage from 0 to 100
projected_datestringoptional
YYYY-MM-DD projection, or null to clear
expected_updated_atstringoptional
Optimistic concurrency token
reasonstringoptional
Reason stored in Delivery audit
confirmbooleanrequired
Must be true
Example request
{
  "completion_pct": 70,
  "projected_date": "2026-08-02",
  "expected_updated_at": "2026-07-15T14:20:00Z",
  "confirm": true
}

Request

curl -X POST "https://www.digitalstack360.com/api/v1/delivery/milestones/dm_01k2.../progress" \
  -H "Authorization: Bearer $DS_API_KEY" \
  -H "Idempotency-Key: milestone-progress-42-v1" \
  -H "Content-Type: application/json" \
  -d '{"completion_pct":70,"projected_date":"2026-08-02","expected_updated_at":"2026-07-15T14:20:00Z","confirm":true}'

Examples use a placeholder key from your environment. Store your key in $DS_API_KEY — never commit it.

Response

200 OK
{
  "data": {
    "ok": true,
    "milestone": {
      "id": "dm_01k2...",
      "completion_pct": 70,
      "projected_date": "2026-08-02"
    },
    "changed_fields": [
      "completion_pct",
      "projected_date"
    ],
    "event_type": "milestone.progress_updated",
    "idempotency_replayed": false,
    "errors": []
  }
}

Errors

401
missing_auth

No credentials provided

401
invalid_api_key

API key is invalid or revoked

400
bad_request

Missing or invalid request fields

403
scope_insufficient

Key lacks the required write scope

403
scope_insufficient

Key lacks delivery-timeline:write scope

400
invalid_completion_pct

completion_pct must be between 0 and 100