Webhooks
Event catalog
Canonical DigitalStack events with their exact v1 envelope, minimal payloads, and per-event readiness.
Promoted capability events are available
A webhook event is a notification of a canonical state change— what happened and which resource changed — not a copy of the resource. Payloads are minimal; when you need more, fetch the current authorized representation by resource id through DigitalStack's API.
Supported events
Twenty canonical, past-tense events: four document/workflow contracts, seven Time Management lifecycle events, three Work Item lifecycle events, and six Work Item Enhance lifecycle events. These are the only events a subscription may select.
Event types
document.createdeventworkflow.transitionedeventworkflow.approvedeventworkflow.rejectedeventtime_entry.createdeventtime_entry.updatedeventtime_entry.voidedeventtime_submission.submittedeventtime_submission.recalledeventtime_submission.approvedeventtime_submission.rejectedeventwork_item.createdeventwork_item.updatedeventwork_item.status_changedeventwork_item.comment_createdeventwork_item.comment_updatedeventwork_item.assignment_changedeventwork_item.dates_changedeventwork_item.estimate_changedeventwork_item.labels_changedeventwork_item.dependency_linkedeventwork_item.dependency_unlinkedeventwork_item.blocker_changedeventwork_item.focus_changedeventwork_item_enhancement.queuedeventwork_item_enhancement.action_completedeventwork_item_enhancement.draft_createdeventwork_item_enhancement.completedeventwork_item_enhancement.appliedeventwork_item_enhancement.failedeventattention_item.resolvedeventattention_item.dismissedeventattention_item.snoozedeventmilestone.status_changedeventmilestone.target_date_changedeventmilestone.progress_updatedeventproject.createdeventproject.updatedeventproject.status_changedeventproject.archivedeventproject.member_addedeventproject.member_updatedeventproject.member_removedeventproject.settings_updatedeventproject_health.alert_acknowledgedeventcontext_engine.contribution_persistedeventcontext_engine.merge_decidedeventcontext_engine.entry_supersededeventestimate.createdeventestimate.updatedeventestimate.baseline_requestedeventestimate.baselinedeventsprint_planning.suggestions_generatedeventv1 event envelope
Every event shares this envelope. It is signed exactly as described on the security & delivery page (X-DStack-Signature, X-DStack-Event, X-DStack-Delivery).
Envelope fields
event_idstringrequiredtypestringrequiredevent_versionintegerrequiredoccurred_atstring (ISO-8601 UTC)requiredworkspace_idstringrequiredresourceobject { type, id }requiredactorobject { id } | nullrequirednullablepayloadobjectrequiredsourceobject | nullrequirednullableMinimal-payload rule
Payloads carry only the canonical facts of the change. The following are deliberately never in a v1 payload — fetch the resource by id if you need them:
- document title / name
- document body / content
- workflow reason (free text)
- arbitrary metadata
- source-system payloads or schemas
- secrets, tokens, authorization headers
- personal, financial, or otherwise sensitive fields
Per-event payloads
document.created
PlannedA workspace document was created by a user. Only user-originated creations emit — imports, templates, migrations, and system writes do not.
payload fields
document_idstringrequireddocument_typestringrequiredstatusstringrequiredcreated_atstring (ISO-8601 UTC)required{
"event_id": "evt_1a2b3c4d5e6f7089",
"type": "document.created",
"event_version": 1,
"occurred_at": "2026-07-13T18:22:04Z",
"workspace_id": "b1a2c3d4-0000-4000-8000-000000000001",
"resource": {
"type": "document",
"id": "d4e5f6a7-0000-4000-8000-000000000002"
},
"actor": {
"id": "u7788990-0000-4000-8000-000000000003"
},
"payload": {
"document_id": "d4e5f6a7-0000-4000-8000-000000000002",
"document_type": "sow",
"status": "draft",
"created_at": "2026-07-13T18:22:04Z"
},
"source": null
}workflow.transitioned
PlannedA document workflow moved between states (any transition that is not an approval or a rejection).
payload fields
document_idstringrequiredfrom_statestringrequiredto_statestringrequiredtransition_outcomestringrequiredoverride_usedbooleanrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_9f2c8b1e4a7d4f0b",
"type": "workflow.transitioned",
"event_version": 1,
"occurred_at": "2026-07-13T18:22:04Z",
"workspace_id": "b1a2c3d4-0000-4000-8000-000000000001",
"resource": {
"type": "document",
"id": "d4e5f6a7-0000-4000-8000-000000000002"
},
"actor": {
"id": "u7788990-0000-4000-8000-000000000003"
},
"payload": {
"document_id": "d4e5f6a7-0000-4000-8000-000000000002",
"from_state": "in_review",
"to_state": "frozen",
"transition_outcome": "transitioned",
"override_used": false,
"occurred_at": "2026-07-13T18:22:04Z"
},
"source": null
}workflow.approved
PlannedA document was approved in its workflow.
payload fields
document_idstringrequiredfrom_statestringrequiredto_statestringrequiredtransition_outcomestringrequiredoverride_usedbooleanrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_9f2c8b1e4a7d4f0b",
"type": "workflow.approved",
"event_version": 1,
"occurred_at": "2026-07-13T18:22:04Z",
"workspace_id": "b1a2c3d4-0000-4000-8000-000000000001",
"resource": {
"type": "document",
"id": "d4e5f6a7-0000-4000-8000-000000000002"
},
"actor": {
"id": "u7788990-0000-4000-8000-000000000003"
},
"payload": {
"document_id": "d4e5f6a7-0000-4000-8000-000000000002",
"from_state": "in_review",
"to_state": "approved",
"transition_outcome": "approved",
"override_used": false,
"occurred_at": "2026-07-13T18:22:04Z"
},
"source": null
}workflow.rejected
PlannedA document was rejected in its workflow.
payload fields
document_idstringrequiredfrom_statestringrequiredto_statestringrequiredtransition_outcomestringrequiredoverride_usedbooleanrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_9f2c8b1e4a7d4f0b",
"type": "workflow.rejected",
"event_version": 1,
"occurred_at": "2026-07-13T18:22:04Z",
"workspace_id": "b1a2c3d4-0000-4000-8000-000000000001",
"resource": {
"type": "document",
"id": "d4e5f6a7-0000-4000-8000-000000000002"
},
"actor": {
"id": "u7788990-0000-4000-8000-000000000003"
},
"payload": {
"document_id": "d4e5f6a7-0000-4000-8000-000000000002",
"from_state": "in_review",
"to_state": "draft",
"transition_outcome": "rejected",
"override_used": false,
"occurred_at": "2026-07-13T18:22:04Z"
},
"source": null
}time_entry.created
AvailableA canonical time entry was created. Notes, rates, and raw evidence are never included.
payload fields
time_entry_idstringrequiredwork_datedaterequiredduration_minutesintegerrequiredproject_idstring | nullrequirednullablestatusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_created",
"type": "time_entry.created",
"event_version": 1,
"occurred_at": "2026-07-14T18:22:04Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_entry",
"id": "entry_1"
},
"actor": null,
"payload": {
"time_entry_id": "entry_1",
"work_date": "2026-07-14",
"duration_minutes": 60,
"project_id": null,
"status": "draft",
"occurred_at": "2026-07-14T18:22:04Z"
},
"source": null
}time_entry.updated
AvailableGoverned time-entry fields changed.
payload fields
time_entry_idstringrequiredchanged_fieldsstring[]requiredversionintegerrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_updated",
"type": "time_entry.updated",
"event_version": 1,
"occurred_at": "2026-07-14T18:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_entry",
"id": "entry_1"
},
"actor": null,
"payload": {
"time_entry_id": "entry_1",
"changed_fields": [
"duration_minutes"
],
"version": 2,
"occurred_at": "2026-07-14T18:30:00Z"
},
"source": null
}time_entry.voided
AvailableA time entry was governedly voided.
payload fields
time_entry_idstringrequiredprior_statusstringrequiredvoided_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_voided",
"type": "time_entry.voided",
"event_version": 1,
"occurred_at": "2026-07-14T18:40:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_entry",
"id": "entry_1"
},
"actor": null,
"payload": {
"time_entry_id": "entry_1",
"prior_status": "draft",
"voided_at": "2026-07-14T18:40:00Z"
},
"source": null
}time_submission.submitted
AvailableA time submission was submitted.
payload fields
submission_idstringrequiredperiod_startdaterequiredperiod_enddaterequiredsubmitted_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_submitted",
"type": "time_submission.submitted",
"event_version": 1,
"occurred_at": "2026-07-15T14:22:04Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_submission",
"id": "submission_1"
},
"actor": null,
"payload": {
"submission_id": "submission_1",
"period_start": "2026-07-14",
"period_end": "2026-07-14",
"submitted_at": "2026-07-15T14:22:04Z"
},
"source": null
}time_submission.recalled
AvailableA time submission was recalled.
payload fields
submission_idstringrequiredprior_statusstringrequiredrecalled_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_recalled",
"type": "time_submission.recalled",
"event_version": 1,
"occurred_at": "2026-07-15T14:22:04Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_submission",
"id": "submission_1"
},
"actor": null,
"payload": {
"submission_id": "submission_1",
"prior_status": "submitted",
"recalled_at": "2026-07-15T14:22:04Z"
},
"source": null
}time_submission.approved
AvailableA time submission was approved.
payload fields
submission_idstringrequiredapproval_idstringrequiredapproved_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_approved",
"type": "time_submission.approved",
"event_version": 1,
"occurred_at": "2026-07-15T14:22:04Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_submission",
"id": "submission_1"
},
"actor": {
"id": "approver_1"
},
"payload": {
"submission_id": "submission_1",
"approval_id": "approval_1",
"approved_at": "2026-07-15T14:22:04Z"
},
"source": null
}time_submission.rejected
AvailableA time submission was rejected.
payload fields
submission_idstringrequiredapproval_idstringrequiredrejected_atstring (ISO-8601 UTC)required{
"event_id": "evt_time_rejected",
"type": "time_submission.rejected",
"event_version": 1,
"occurred_at": "2026-07-15T14:22:04Z",
"workspace_id": "ws_1",
"resource": {
"type": "time_submission",
"id": "submission_1"
},
"actor": {
"id": "approver_1"
},
"payload": {
"submission_id": "submission_1",
"approval_id": "approval_1",
"rejected_at": "2026-07-15T14:22:04Z"
},
"source": null
}work_item.created
AvailableA canonical Execute work item was created.
payload fields
work_item_idstringrequiredteam_idstringrequiredsprint_idstring | nullrequirednullablekindstringrequiredstatus_bucketstringrequiredcreated_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_created",
"type": "work_item.created",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_01k2...",
"team_id": "team_abc123",
"sprint_id": null,
"kind": "task",
"status_bucket": "todo",
"created_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item.updated
AvailableCanonical editable work-item fields changed. Changed values are fetched through the authorized API.
payload fields
work_item_idstringrequiredchanged_fieldsstring[]requiredupdated_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_updated",
"type": "work_item.updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:03:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": null,
"payload": {
"work_item_id": "work_01k2...",
"changed_fields": [
"title",
"points"
],
"updated_at": "2026-07-15T21:03:00Z"
},
"source": null
}work_item.status_changed
AvailableA canonical flow-state transition changed the work item status bucket.
payload fields
work_item_idstringrequiredfrom_state_idstring | nullrequirednullableto_state_idstringrequiredfrom_bucketstring | nullrequirednullableto_bucketstringrequiredtransition_idstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_status_changed",
"type": "work_item.status_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:08:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_01k2...",
"from_state_id": "state_todo",
"to_state_id": "state_doing",
"from_bucket": "todo",
"to_bucket": "in_progress",
"transition_id": "transition_01k2...",
"occurred_at": "2026-07-15T21:08:00Z"
},
"source": null
}work_item.comment_created
AvailableA comment was added to a canonical Execute work item.
payload fields
work_item_idstringrequiredcomment_idstringrequiredauthor_idstring | nullrequirednullablecreated_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_comment_created",
"type": "work_item.comment_created",
"event_version": 1,
"occurred_at": "2026-07-15T21:12:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_01k2...",
"comment_id": "comment_01k7...",
"author_id": "user_123",
"created_at": "2026-07-15T21:12:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.comment_updated
AvailableA work-item comment was edited or archived.
payload fields
work_item_idstringrequiredcomment_idstringrequiredchanged_fieldsstring[]requiredupdated_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_comment_updated",
"type": "work_item.comment_updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:14:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_01k2...",
"comment_id": "comment_01k7...",
"changed_fields": [
"body"
],
"updated_at": "2026-07-15T21:14:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.assignment_changed
AvailableThe canonical work-item assignee changed.
payload fields
work_item_idstring | nullrequirednullableprior_assignee_idstring | nullrequirednullableassignee_idstring | nullrequirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_assignment_changed",
"type": "work_item.assignment_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"prior_assignee_id": "prior_assignee_id_value",
"assignee_id": "assignee_id_value",
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.dates_changed
AvailableWork-item start, due, target, sprint, or ordering fields changed.
payload fields
work_item_idstring | nullrequirednullablechanged_fieldsstring[]requiredprior_valuesobjectrequirednew_valuesobjectrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_dates_changed",
"type": "work_item.dates_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"changed_fields": [
"due_date"
],
"prior_values": {
"due_date": "2026-07-24"
},
"new_values": {
"due_date": "2026-07-24"
},
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.estimate_changed
AvailableWork-item estimate or points changed.
payload fields
work_item_idstring | nullrequirednullableprior_estimatestringrequiredestimatestringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_estimate_changed",
"type": "work_item.estimate_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"prior_estimate": "prior_estimate_value",
"estimate": "estimate_value",
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.labels_changed
AvailableWork-item labels changed.
payload fields
work_item_idstring | nullrequirednullableadded_labelsstring[]requiredremoved_labelsstring[]requiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_labels_changed",
"type": "work_item.labels_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"added_labels": [
"api"
],
"removed_labels": [
"triage"
],
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.dependency_linked
AvailableA work-item dependency or relationship was created.
payload fields
work_item_idstring | nullrequirednullabledependency_idstring | nullrequirednullabletarget_work_item_idstring | nullrequirednullablerelationshipstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_dependency_linked",
"type": "work_item.dependency_linked",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"dependency_id": "dependency_id_value",
"target_work_item_id": "target_work_item_id_value",
"relationship": "relationship_value",
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.dependency_unlinked
AvailableA work-item dependency or relationship was removed.
payload fields
work_item_idstring | nullrequirednullabledependency_idstring | nullrequirednullabletarget_work_item_idstring | nullrequirednullablerelationshipstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_dependency_unlinked",
"type": "work_item.dependency_unlinked",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"dependency_id": "dependency_id_value",
"target_work_item_id": "target_work_item_id_value",
"relationship": "relationship_value",
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.blocker_changed
AvailableA blocker was raised, updated, resolved, or reopened for a work item.
payload fields
work_item_idstring | nullrequirednullableblocker_idstring | nullrequirednullablestatusstringrequiredseveritystringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_blocker_changed",
"type": "work_item.blocker_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"blocker_id": "blocker_id_value",
"status": "status_value",
"severity": "severity_value",
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item.focus_changed
AvailableA work item was pinned, reprioritized, annotated, snoozed, or cleared from focus.
payload fields
work_item_idstring | nullrequirednullablefocus_idstring | nullrequirednullableactionstringrequiredprioritystringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_focus_changed",
"type": "work_item.focus_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:16:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item",
"id": "work_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"work_item_id": "work_item_id_value",
"focus_id": "focus_id_value",
"action": "action_value",
"priority": 10,
"occurred_at": "2026-07-15T21:16:00Z"
},
"source": {
"kind": "work_item_operations_api"
}
}work_item_enhancement.queued
AvailableA Work Item Enhance run was accepted and queued.
payload fields
run_idstringrequiredtarget_typestringrequiredtarget_idstringrequiredrequested_actionsstring[]requiredqueued_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_queued",
"type": "work_item_enhancement.queued",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"target_type": "work_item",
"target_id": "target_id_value",
"requested_actions": [
"draft_01k6..."
],
"queued_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item_enhancement.action_completed
AvailableOne enhancement action completed and produced drafts or artifacts.
payload fields
run_idstringrequiredactionstringrequireddraft_idsstring[]requiredartifact_idsstring[]requiredcompleted_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_action_completed",
"type": "work_item_enhancement.action_completed",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"action": "requirements",
"draft_ids": [
"draft_01k6..."
],
"artifact_ids": [
"draft_01k6..."
],
"completed_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item_enhancement.draft_created
AvailableA field-level draft was created for review.
payload fields
run_idstringrequireddraft_idstringrequiredfieldstringrequiredtarget_idstringrequiredcreated_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_draft_created",
"type": "work_item_enhancement.draft_created",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"draft_id": "draft_id_value",
"field": "field_value",
"target_id": "target_id_value",
"created_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item_enhancement.completed
AvailableThe enhancement run finished and is ready for review.
payload fields
run_idstringrequiredtarget_idstringrequireddraft_countintegerrequiredartifact_countintegerrequiredcompleted_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_completed",
"type": "work_item_enhancement.completed",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"target_id": "target_id_value",
"draft_count": 1,
"artifact_count": 1,
"completed_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item_enhancement.applied
AvailableSelected drafts were applied to the canonical work item.
payload fields
run_idstringrequiredtarget_idstringrequiredapplied_draft_idsstring[]requiredtarget_versionstringrequiredapplied_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_applied",
"type": "work_item_enhancement.applied",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"target_id": "target_id_value",
"applied_draft_ids": [
"draft_01k6..."
],
"target_version": "target_version_value",
"applied_at": "2026-07-15T20:58:00Z"
},
"source": null
}work_item_enhancement.failed
AvailableThe run or action failed with a durable error code.
payload fields
run_idstringrequiredactionstringrequirederror_codestringrequiredfailed_atstring (ISO-8601 UTC)required{
"event_id": "evt_work_item_enhancement_failed",
"type": "work_item_enhancement.failed",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "work_item_enhancement_run",
"id": "wie_01k6..."
},
"actor": {
"id": "user_123"
},
"payload": {
"run_id": "run_id_value",
"action": "requirements",
"error_code": "synthetic_failure",
"failed_at": "2026-07-15T20:58:00Z"
},
"source": null
}attention_item.resolved
AvailableA Today & My Work attention item was marked resolved by an explicit caller action.
payload fields
attention_item_idstringrequiredactionstringrequiredstatusstringrequirednotestring | nullrequirednullablesnooze_untilstring (ISO-8601 UTC) | nullrequirednullablecontext_package_generated_atstring (ISO-8601 UTC) | nullrequirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_attention_item_resolved",
"type": "attention_item.resolved",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "attention_item",
"id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3"
},
"actor": {
"id": "user_123"
},
"payload": {
"attention_item_id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3",
"action": "resolve",
"status": "resolved",
"note": null,
"snooze_until": null,
"context_package_generated_at": "2026-07-15T20:45:00Z",
"occurred_at": "2026-07-15T20:58:00Z"
},
"source": null
}attention_item.dismissed
AvailableA Today & My Work attention item was dismissed as not relevant for the current day.
payload fields
attention_item_idstringrequiredactionstringrequiredstatusstringrequirednotestring | nullrequirednullablesnooze_untilstring (ISO-8601 UTC) | nullrequirednullablecontext_package_generated_atstring (ISO-8601 UTC) | nullrequirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_attention_item_dismissed",
"type": "attention_item.dismissed",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "attention_item",
"id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3"
},
"actor": {
"id": "user_123"
},
"payload": {
"attention_item_id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3",
"action": "dismiss",
"status": "dismissed",
"note": "Not relevant today",
"snooze_until": null,
"context_package_generated_at": "2026-07-15T20:45:00Z",
"occurred_at": "2026-07-15T20:58:00Z"
},
"source": null
}attention_item.snoozed
AvailableA Today & My Work attention item was snoozed until a future timestamp.
payload fields
attention_item_idstringrequiredactionstringrequiredstatusstringrequirednotestring | nullrequirednullablesnooze_untilstring (ISO-8601 UTC) | nullrequirednullablecontext_package_generated_atstring (ISO-8601 UTC) | nullrequirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_attention_item_snoozed",
"type": "attention_item.snoozed",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "attention_item",
"id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3"
},
"actor": {
"id": "user_123"
},
"payload": {
"attention_item_id": "b1259ce1-bf47-5a54-8d71-b9b2f4e83ed3",
"action": "snooze",
"status": "snoozed",
"note": null,
"snooze_until": "2026-07-16T13:00:00Z",
"context_package_generated_at": "2026-07-15T20:45:00Z",
"occurred_at": "2026-07-15T20:58:00Z"
},
"source": null
}milestone.status_changed
AvailableA governed milestone status command changed the Delivery milestone status.
payload fields
milestone_idstringrequiredproject_idstringrequiredfrom_statusstringrequiredto_statusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_milestone_status_changed",
"type": "milestone.status_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:20:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "milestone",
"id": "dm_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"milestone_id": "milestone_id_value",
"project_id": "project_id_value",
"from_status": "in_progress",
"to_status": "at_risk",
"occurred_at": "2026-07-15T21:20:00Z"
},
"source": {
"kind": "delivery_timeline_api"
}
}milestone.target_date_changed
AvailableA governed milestone target-date command changed the explicit target date.
payload fields
milestone_idstringrequiredproject_idstringrequiredprior_target_datestring | null (YYYY-MM-DD)requirednullabletarget_datestring | null (YYYY-MM-DD)requirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_milestone_target_date_changed",
"type": "milestone.target_date_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:20:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "milestone",
"id": "dm_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"milestone_id": "milestone_id_value",
"project_id": "project_id_value",
"prior_target_date": "2026-07-31",
"target_date": "2026-08-07",
"occurred_at": "2026-07-15T21:20:00Z"
},
"source": {
"kind": "delivery_timeline_api"
}
}milestone.progress_updated
AvailableA governed milestone progress command changed completion percentage and/or projected date.
payload fields
milestone_idstringrequiredproject_idstringrequiredprior_completion_pctintegerrequiredcompletion_pctintegerrequiredprior_projected_datestring | null (YYYY-MM-DD)requirednullableprojected_datestring | null (YYYY-MM-DD)requirednullableoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_milestone_progress_updated",
"type": "milestone.progress_updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:20:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "milestone",
"id": "dm_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"milestone_id": "milestone_id_value",
"project_id": "project_id_value",
"prior_completion_pct": 55,
"completion_pct": 70,
"prior_projected_date": "2026-07-31",
"projected_date": "2026-08-07",
"occurred_at": "2026-07-15T21:20:00Z"
},
"source": {
"kind": "delivery_timeline_api"
}
}project.created
AvailableA canonical project/engagement was created.
payload fields
project_idstringrequiredstatusstringrequiredcreated_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_created",
"type": "project.created",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"status": "draft",
"created_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.updated
AvailableCanonical project identity or relationship fields changed.
payload fields
project_idstringrequiredchanged_fieldsstring[]requiredupdated_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_updated",
"type": "project.updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"changed_fields": [
"client_name"
],
"updated_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.status_changed
AvailableA project lifecycle status changed without archiving.
payload fields
project_idstringrequiredfrom_statusstringrequiredto_statusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_status_changed",
"type": "project.status_changed",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"from_status": "draft",
"to_status": "active",
"occurred_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.archived
AvailableA project was archived through a confirmed command.
payload fields
project_idstringrequiredfrom_statusstringrequiredto_statusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_archived",
"type": "project.archived",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"from_status": "draft",
"to_status": "archived",
"occurred_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.member_added
AvailableA project member was added or upserted.
payload fields
project_idstringrequiredmember_idstringrequireduser_idstringrequiredrolestringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_member_added",
"type": "project.member_added",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"member_id": "member_id_value",
"user_id": "user_id_value",
"role": "viewer",
"occurred_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.member_updated
AvailableA project member role changed.
payload fields
project_idstringrequiredmember_idstringrequireduser_idstringrequiredrolestringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_member_updated",
"type": "project.member_updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"member_id": "member_id_value",
"user_id": "user_id_value",
"role": "viewer",
"occurred_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.member_removed
AvailableA project member was removed.
payload fields
project_idstringrequiredmember_idstringrequireduser_idstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_member_removed",
"type": "project.member_removed",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"member_id": "member_id_value",
"user_id": "user_id_value",
"occurred_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project.settings_updated
AvailableProject settings changed.
payload fields
project_idstringrequiredchanged_fieldsstring[]requiredupdated_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_settings_updated",
"type": "project.settings_updated",
"event_version": 1,
"occurred_at": "2026-07-15T21:30:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "project_id_value",
"changed_fields": [
"client_name"
],
"updated_at": "2026-07-15T21:30:00Z"
},
"source": {
"kind": "projects_api"
}
}project_health.alert_acknowledged
AvailableA Project Health alert was acknowledged through a confirmed command.
payload fields
project_idstringrequiredalert_keystringrequiredacknowledgement_idstringrequiredstatusstringrequiredacknowledged_atstring (ISO-8601 UTC)required{
"event_id": "evt_project_health_alert_acknowledged",
"type": "project_health.alert_acknowledged",
"event_version": 1,
"occurred_at": "2026-07-15T21:35:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "project_health",
"id": "proj_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "proj_01k2...",
"alert_key": "delivery_risk:blocked_items",
"acknowledgement_id": "ack_01k2...",
"status": "acknowledged",
"acknowledged_at": "2026-07-15T21:35:00Z"
},
"source": {
"kind": "project_health_api"
}
}context_engine.contribution_persisted
AvailableA governed provider contribution was persisted into the Context Engine.
payload fields
subject_idstringrequiredrelated_entry_idstring | nullrequirednullableevolution_kindstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_context_engine_contribution_persisted",
"type": "context_engine.contribution_persisted",
"event_version": 1,
"occurred_at": "2026-07-15T21:42:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "context_engine_evolution",
"id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52"
},
"actor": null,
"payload": {
"subject_id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52",
"related_entry_id": null,
"evolution_kind": "context-entry-persisted",
"occurred_at": "2026-07-15T21:42:00Z"
},
"source": {
"kind": "context_engine",
"promoter_identity": "adoption-workspace"
}
}context_engine.merge_decided
AvailableA governed Context Engine overlap/merge decision was committed.
payload fields
subject_idstringrequiredrelated_entry_idstring | nullrequirednullableevolution_kindstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_context_engine_merge_decided",
"type": "context_engine.merge_decided",
"event_version": 1,
"occurred_at": "2026-07-15T21:42:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "context_engine_evolution",
"id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52"
},
"actor": null,
"payload": {
"subject_id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52",
"related_entry_id": null,
"evolution_kind": "merge-decided",
"occurred_at": "2026-07-15T21:42:00Z"
},
"source": {
"kind": "context_engine",
"promoter_identity": "adoption-workspace"
}
}context_engine.entry_superseded
AvailableA Context Engine entry was superseded by a governed successor.
payload fields
subject_idstringrequiredrelated_entry_idstring | nullrequirednullableevolution_kindstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_context_engine_entry_superseded",
"type": "context_engine.entry_superseded",
"event_version": 1,
"occurred_at": "2026-07-15T21:42:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "context_engine_evolution",
"id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52"
},
"actor": null,
"payload": {
"subject_id": "9c9f22ac-8b6a-4a72-8145-9d1714f8af52",
"related_entry_id": "1932e786-445f-4fae-99d8-c57263efbf22",
"evolution_kind": "supersession",
"occurred_at": "2026-07-15T21:42:00Z"
},
"source": {
"kind": "context_engine",
"promoter_identity": "adoption-workspace"
}
}estimate.created
AvailableA canonical estimate draft was created.
payload fields
estimate_idstringrequiredproject_idstringrequiredchanged_fieldsstring[]requiredversionintegerrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_estimate_created",
"type": "estimate.created",
"event_version": 1,
"occurred_at": "2026-07-15T22:00:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "estimate",
"id": "estimate_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"estimate_id": "estimate_id_value",
"project_id": "project_id_value",
"changed_fields": [
"contingency_percent"
],
"version": 3,
"occurred_at": "2026-07-15T22:00:00Z"
},
"source": {
"kind": "digitalstack",
"authority": "vsow_package"
}
}estimate.updated
AvailableGoverned estimate metadata, scope, effort, role demand, risk, timeline, or composition changed.
payload fields
estimate_idstringrequiredproject_idstringrequiredchanged_fieldsstring[]requiredversionintegerrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_estimate_updated",
"type": "estimate.updated",
"event_version": 1,
"occurred_at": "2026-07-15T22:00:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "estimate",
"id": "estimate_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"estimate_id": "estimate_id_value",
"project_id": "project_id_value",
"changed_fields": [
"contingency_percent"
],
"version": 3,
"occurred_at": "2026-07-15T22:00:00Z"
},
"source": {
"kind": "digitalstack",
"authority": "vsow_package"
}
}estimate.baseline_requested
AvailableA reviewable estimate proposal was submitted for human baseline review.
payload fields
estimate_idstringrequiredproject_idstringrequiredproposal_idstringrequiredexpected_versionintegerrequiredstatusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_estimate_baseline_requested",
"type": "estimate.baseline_requested",
"event_version": 1,
"occurred_at": "2026-07-15T22:00:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "estimate",
"id": "estimate_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"estimate_id": "estimate_id_value",
"project_id": "project_id_value",
"proposal_id": "proposal_id_value",
"expected_version": 3,
"status": "status_value",
"occurred_at": "2026-07-15T22:00:00Z"
},
"source": {
"kind": "digitalstack",
"authority": "estimate_change_proposal"
}
}estimate.baselined
AvailableAn authorized human froze an immutable estimate baseline.
payload fields
estimate_idstringrequiredproject_idstringrequiredsnapshot_idstringrequiredrevision_numberintegerrequiredsource_signaturestringrequiredstatusstringrequiredoccurred_atstring (ISO-8601 UTC)required{
"event_id": "evt_estimate_baselined",
"type": "estimate.baselined",
"event_version": 1,
"occurred_at": "2026-07-15T22:00:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "estimate",
"id": "estimate_01k2..."
},
"actor": {
"id": "user_123"
},
"payload": {
"estimate_id": "estimate_id_value",
"project_id": "project_id_value",
"snapshot_id": "snapshot_id_value",
"revision_number": 2,
"source_signature": "source_signature_value",
"status": "status_value",
"occurred_at": "2026-07-15T22:00:00Z"
},
"source": {
"kind": "digitalstack",
"authority": "vsow_snapshot"
}
}sprint_planning.suggestions_generated
AvailableA Sprints & Planning suggestion batch was generated for review. This is proposal-only and does not apply a plan.
payload fields
project_idstringrequiredaction_kindstringrequiredreadiness_scoreintegerrequiredreadiness_verdictstringrequiredintent_countintegerrequiredobservation_countintegerrequiredcomputed_atstring (ISO-8601 UTC)required{
"event_id": "evt_sprint_planning_suggestions_generated",
"type": "sprint_planning.suggestions_generated",
"event_version": 1,
"occurred_at": "2026-07-15T20:58:00Z",
"workspace_id": "ws_1",
"resource": {
"type": "sprint_planning",
"id": "proj_abc123"
},
"actor": {
"id": "user_123"
},
"payload": {
"project_id": "proj_abc123",
"action_kind": "suggest_next_planning_moves",
"readiness_score": 70,
"readiness_verdict": "nearly",
"intent_count": 2,
"observation_count": 3,
"computed_at": "2026-07-15T20:58:00Z"
},
"source": null
}document.created eligibility
Only user-originated document creation emits document.created. A canonical origin marker decides eligibility explicitly — it is never inferred from status or type.
Emitsorigin=userDoes not emitorigin≠userdocument.created.Fails closedsafetyWorkflow classification
Exactly one event per workflow transition, chosen solely by a canonical transition_outcome value — never from labels, status names, reason text, or metadata.
approved→ workflow.approvedrejected→ workflow.rejectedtransitioned→ workflow.transitionedFails closedsafetyDelivery & guarantees
At-least-oncedeliveryevent_id, which is immutable and unique per event.No ordering guaranteedeliveryoccurred_at and your own state; do not assume sequence.RetriesdeliveryActivation watermarkrolloutSecret-backfill gaterolloutRedeliverygovernedevent_id, payload, event_version, and occurred_at. It never mutates the event or re-runs business logic.Capability events
The capability pages — Project Health, Sprint Intelligence, and the rest — publish their own interface status. Time Management, Work Items & Board, and Work Item Enhance have named lifecycle events and are Available. Other capabilities stay Planned rather than borrowing promoted capability maturity.
7 named lifecycle events.
3 named lifecycle events.
10 named lifecycle events.
6 named lifecycle events.
3 named lifecycle events.
1 named lifecycle events.
8 named lifecycle events.
3 named lifecycle events.
1 named lifecycle events.
3 named lifecycle events.
No named events defined yet.
4 named lifecycle events.