Apply a reviewed time draft

Atomically applies a reviewed proposal to canonical draft entries. Requires optimistic versioning, an Idempotency-Key header, and explicit confirmation.

POST/api/v1/time-drafts/:id/apply

Authorization

time:write_selfapi key scoperequired
Required scope when calling with an API key.

Path parameters

idstringrequired
Persisted time-draft ID

Example: draft_01k2...

Request body

expected_versionnumberrequired
Version shown during review
confirmbooleanrequired
Must be true after human review
Example request
{
  "expected_version": 1,
  "confirm": true
}

Request

curl -X POST "https://www.digitalstack360.com/api/v1/time-drafts/draft_01k2.../apply" \
  -H "Authorization: Bearer $DS_API_KEY" \
  -H "Idempotency-Key: apply-draft-01k2" \
  -H "Content-Type: application/json" \
  -d '{"expected_version":1,"confirm":true}'

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

Response

200 OK
{
  "data": {
    "draft": {
      "id": "draft_01k2...",
      "state": "applied",
      "version": 2
    },
    "entries": [
      {
        "id": "time_01k2...",
        "status": "draft",
        "version": 1
      }
    ]
  },
  "meta": {
    "idempotency_replayed": false,
    "self_scoped": true
  }
}

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

400
confirmation_required

confirm must be true

409
version_conflict

Draft changed after review

409
idempotency_conflict

Key was reused for a different apply command