Update milestone target date

Runs one explicit target-date command. This does not resize a phase or implicitly move execution work.

POST/api/v1/delivery/milestones/:id/target-date

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

target_datestringoptional
YYYY-MM-DD target date, or null to clear
expected_updated_atstringoptional
Optimistic concurrency token
reasonstringoptional
Reason stored in Delivery audit
confirmbooleanrequired
Must be true
Example request
{
  "target_date": "2026-08-07",
  "expected_updated_at": "2026-07-15T14:20:00Z",
  "reason": "Customer dependency moved one week.",
  "confirm": true
}

Request

curl -X POST "https://www.digitalstack360.com/api/v1/delivery/milestones/dm_01k2.../target-date" \
  -H "Authorization: Bearer $DS_API_KEY" \
  -H "Idempotency-Key: milestone-target-42-v1" \
  -H "Content-Type: application/json" \
  -d '{"target_date":"2026-08-07","expected_updated_at":"2026-07-15T14:20:00Z","reason":"Customer dependency moved one week.","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...",
      "target_date": "2026-08-07"
    },
    "changed_fields": [
      "target_date"
    ],
    "event_type": "milestone.target_date_changed",
    "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_target_date

target_date must be YYYY-MM-DD or null