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/applyAuthorization
time:write_selfapi key scoperequiredRequired scope when calling with an API key.
Path parameters
idstringrequiredPersisted time-draft ID
Example: draft_01k2...
Request body
expected_versionnumberrequiredVersion shown during review
confirmbooleanrequiredMust 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_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
400
confirmation_requiredconfirm must be true
409
version_conflictDraft changed after review
409
idempotency_conflictKey was reused for a different apply command