Capabilities
Work Item Operations
Comment, transition, assign, schedule, estimate, label, link, block, and focus Execute work items through named, confirmation-bound commands separate from Work Item Enhance.
Interfaces
REST exposes operation context plus named commands for comments, status, assignment, dates, estimates, labels, dependencies, blockers, focus, and bounded bulk operations.
MCP tools can inspect operation context and apply confirmed work-item commands through the same public v1 routes as REST.
GraphQL exposes operation context reads plus named work-item command mutations backed by the same Execute command service and scope checks as REST.
Work Item Operations emit lifecycle facts for comments, assignment, dates, estimates, labels, dependencies, blockers, and focus changes through the durable webhook outbox.
Required scopes
work-items:readAPI key scoperequiredwork-items:commentAPI key scoperequiredwork-items:transitionAPI key scoperequiredwork-items:assignAPI key scoperequiredwork-items:scheduleAPI key scoperequiredwork-items:estimateAPI key scoperequiredwork-items:linkAPI key scoperequiredwork-items:blockersAPI key scoperequiredwork-items:focusAPI key scoperequiredwork-items:bulkAPI key scoperequiredExamples
Get work-item operation context — view in REST API reference
curl -X GET "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../operations/context" \
-H "Authorization: Bearer $DS_API_KEY"List work-item comments — view in REST API reference
curl -X GET "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../comments" \
-H "Authorization: Bearer $DS_API_KEY"Add work-item comment — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../comments" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-comment-20260715" \
-H "Content-Type: application/json" \
-d '{"body":"Implementation started. I will attach the PR when ready.","expected_version":7,"mentions":["user_jordan"],"confirm":true}'Edit or archive work-item comment — view in REST API reference
curl -X PATCH "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../comments/comment_01k7..." \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-comment-edit-1" \
-H "Content-Type: application/json" \
-d '{"body":"Implementation started; PR will be attached shortly.","source_comment_id":"10041","confirm":true}'Transition work-item status — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../status" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-status-in-progress-v8" \
-H "Content-Type: application/json" \
-d '{"to_state_id":"state_doing","provider_transition_id":"31","expected_version":8,"note":"Started implementation","confirm":true}'Assign or unassign work item — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../assignment" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-assign-jordan-v1" \
-H "Content-Type: application/json" \
-d '{"assignee_user_id":"user_jordan","expected_version":9,"confirm":true}'Update work-item dates — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../dates" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-due-date-v1" \
-H "Content-Type: application/json" \
-d '{"due_date":"2026-07-24","expected_version":10,"confirm":true}'Update work-item estimate — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../estimate" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-points-v1" \
-H "Content-Type: application/json" \
-d '{"points":5,"expected_version":11,"confirm":true}'Update work-item labels — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../labels" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-labels-v1" \
-H "Content-Type: application/json" \
-d '{"add":["api"],"remove":["triage"],"expected_version":12,"confirm":true}'List work-item dependencies — view in REST API reference
curl -X GET "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../dependencies" \
-H "Authorization: Bearer $DS_API_KEY"Link work-item dependency — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../dependencies" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-dep-work-43-v1" \
-H "Content-Type: application/json" \
-d '{"target_work_item_id":"work_01k3...","relationship":"depends_on","expected_version":13,"confirm":true}'Remove work-item dependency — view in REST API reference
curl -X DELETE "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../dependencies/dep_01k7..." \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-dep-remove-v1"List work-item blockers — view in REST API reference
curl -X GET "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../blockers" \
-H "Authorization: Bearer $DS_API_KEY"Raise or manage work-item blocker — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../blockers" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-blocker-v1" \
-H "Content-Type: application/json" \
-d '{"action":"raise","title":"Waiting on customer credentials","severity":"high","confirm":true}'Update work-item blocker — view in REST API reference
curl -X PATCH "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../blockers/blocker_01k7..." \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-blocker-update-v1" \
-H "Content-Type: application/json" \
-d '{"action":"resolve","resolution":"Credentials received","confirm":true}'Pin or update work-item focus — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/work_01k2.../focus" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: work-42-focus-v1" \
-H "Content-Type: application/json" \
-d '{"action":"pin","priority":10,"reason":"Customer escalation","confirm":true}'Run bulk work-item operation — view in REST API reference
curl -X POST "https://www.digitalstack360.com/api/v1/work-items/operations/bulk" \
-H "Authorization: Bearer $DS_API_KEY" \
-H "Idempotency-Key: bulk-work-labels-20260715" \
-H "Content-Type: application/json" \
-d '{"work_item_ids":["work_01k2...","work_01k3..."],"command":"labels","payload":{"add":["api"]},"confirm":true}'GraphQL examples
work-items:readRead the current version and allowed operations before preparing a confirmed command.
query WorkItemOperationContext($id: ID!) {
workItemOperationContext(id: $id) {
version
editableFields
supportedCommands
allowedTransitions {
flowStateId
name
toBucket
isTerminal
}
workItem { id key title statusBucket version }
}
}work-items:comment + work-items:assignApply ordinary Execute work-item operations; this does not invoke Work Item Enhance.
mutation CommentAndAssign($comment: AddWorkItemCommentInput!, $assignment: AssignWorkItemInput!) {
addWorkItemComment(input: $comment) {
workItem { id key version }
comment { id bodyPreview createdAt }
eventType
sourceWriteback
}
assignWorkItem(input: $assignment) {
workItem { id key version assigneeUserId }
changedFields
eventType
sourceWriteback
}
}work-items:transitionDigitalStack validates the DS flow state and passes the provider transition through to Jira when source mapping is configured.
mutation TransitionWorkItemStatus($input: TransitionWorkItemStatusInput!) {
transitionWorkItemStatus(input: $input) {
workItem { id key statusBucket flowStateId version }
transition { id fromBucket toBucket at }
sourceWriteback
eventType
}
}work-items:readRead collaboration records attached to a work item before applying a command.
query WorkItemCollaboration($id: ID!) {
workItemComments(id: $id) {
id
bodyPreview
authorUserId
createdAt
updatedAt
archivedAt
}
workItemDependencies(id: $id) {
id
targetWorkItemId
relationship
source
createdAt
archivedAt
}
}work-items:commentEdit or archive a work-item comment. Jira-backed comment edits require the provider comment id.
mutation UpdateWorkItemComment($input: UpdateWorkItemCommentInput!) {
updateWorkItemComment(input: $input) {
ok
workItem { id key version }
comment { id bodyPreview updatedAt archivedAt }
changedFields
eventType
sourceWriteback
errors { code message path }
}
}work-items:schedule + work-items:estimate + work-items:linkUpdate planning-adjacent fields through explicit commands. Jira-backed fields pass through when mapped.
mutation UpdateWorkItemPlanningFields($dates: UpdateWorkItemDatesInput!, $estimate: UpdateWorkItemEstimateInput!, $labels: UpdateWorkItemLabelsInput!) {
updateWorkItemDates(input: $dates) {
ok
workItem { id key startDate dueDate targetDate sprintId version }
changedFields
eventType
sourceWriteback
errors { code message path }
}
updateWorkItemEstimate(input: $estimate) {
ok
workItem { id key points version }
changedFields
eventType
sourceWriteback
errors { code message path }
}
updateWorkItemLabels(input: $labels) {
ok
workItem { id key labels version }
changedFields
eventType
sourceWriteback
errors { code message path }
}
}work-items:linkCreate or archive normalized work-item relationships through GraphQL.
mutation ManageWorkItemDependencies($link: LinkWorkItemDependencyInput!, $unlink: UnlinkWorkItemDependencyInput!) {
linkWorkItemDependency(input: $link) {
ok
dependency { id targetWorkItemId relationship source createdAt }
eventType
errors { code message path }
}
unlinkWorkItemDependency(input: $unlink) {
ok
dependency { id archivedAt }
eventType
errors { code message path }
}
}work-items:blockersRaise, update, transition, or resolve a blocker without invoking Work Item Enhance.
mutation ManageWorkItemBlocker($input: ManageWorkItemBlockerInput!) {
manageWorkItemBlocker(input: $input) {
ok
workItem { id key version }
blocker
changedFields
eventType
errors { code message path }
}
}work-items:focusPin, reprioritize, annotate, snooze, or clear work-item focus without mutating schedule authority.
mutation UpdateWorkItemFocus($input: UpdateWorkItemFocusInput!) {
updateWorkItemFocus(input: $input) {
ok
workItem { id key version }
focus
changedFields
eventType
errors { code message path }
}
}Webhook emits
work_item.comment_createdAvailableA comment was added to a canonical Execute work item.
Resource: work_item
work_item_idcomment_idauthor_idcreated_atwork_item.comment_updatedAvailableA work-item comment was edited or archived.
Resource: work_item
work_item_idcomment_idchanged_fieldsupdated_atwork_item.assignment_changedAvailableThe canonical work-item assignee changed.
Resource: work_item
work_item_idprior_assignee_idassignee_idoccurred_atwork_item.dates_changedAvailableWork-item start, due, target, sprint, or ordering fields changed.
Resource: work_item
work_item_idchanged_fieldsprior_valuesnew_valuesoccurred_atwork_item.estimate_changedAvailableWork-item estimate or points changed.
Resource: work_item
work_item_idprior_estimateestimateoccurred_atwork_item.labels_changedAvailableWork-item labels changed.
Resource: work_item
work_item_idadded_labelsremoved_labelsoccurred_atwork_item.dependency_linkedAvailableA work-item dependency or relationship was created.
Resource: work_item
work_item_iddependency_idtarget_work_item_idrelationshipoccurred_atwork_item.dependency_unlinkedAvailableA work-item dependency or relationship was removed.
Resource: work_item
work_item_iddependency_idtarget_work_item_idrelationshipoccurred_atwork_item.blocker_changedAvailableA blocker was raised, updated, resolved, or reopened for a work item.
Resource: work_item
work_item_idblocker_idstatusseverityoccurred_atwork_item.focus_changedAvailableA work item was pinned, reprioritized, annotated, snoozed, or cleared from focus.
Resource: work_item
work_item_idfocus_idactionpriorityoccurred_atAll webhook events use the shared v1 envelope, signed delivery, and minimal payload rule. Fetch by resource id for expanded data.
System boundaries
Systems commonly integrated with this capability. Each row states the boundary and its native status; it does not transfer canonical authority to the connected system.
DigitalStack owns
- • Public Execute command semantics, operation scopes, optimistic version checks, idempotency, and audit history
- • DigitalStack-native comments, dependencies, blockers, focus records, and webhook facts
- • Provider mapping and conflict decisions before a source-backed operation is attempted
Source systems own
- • Jira issue comments, transitions, assignees, labels, due dates, and mapped story-point fields when the work item source is Jira
- • Provider-native workflow rules and identity/account-id requirements behind a configured source mapping
- • External issue fields that are not explicitly mapped for DigitalStack writeback
Typical integration patterns
DigitalStack ExecuteJiraLinear / Azure DevOps / GitHub Issues