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

RESTAvailable

REST exposes operation context plus named commands for comments, status, assignment, dates, estimates, labels, dependencies, blockers, focus, and bounded bulk operations.

MCPAvailable

MCP tools can inspect operation context and apply confirmed work-item commands through the same public v1 routes as REST.

GraphQLAvailable

GraphQL exposes operation context reads plus named work-item command mutations backed by the same Execute command service and scope checks as REST.

WebhooksAvailable

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 scoperequired
List and retrieve canonical Execute work items, transition history, and read-only board projections.
work-items:commentAPI key scoperequired
Create and edit authorized work-item comments, including provider writeback when the source owns comments.
work-items:transitionAPI key scoperequired
Apply valid Execute or provider-backed workflow transitions with audit history.
work-items:assignAPI key scoperequired
Assign, reassign, or unassign eligible owners without granting staffing or capacity authority.
work-items:scheduleAPI key scoperequired
Set or clear governed date and sprint placement fields through the Execute command boundary.
work-items:estimateAPI key scoperequired
Set or clear points/estimate fields without exposing commercial rates, margins, or subscription data.
work-items:linkAPI key scoperequired
Manage labels and normalized work-item relationships such as dependencies, related, duplicates, and parent/child links.
work-items:blockersAPI key scoperequired
Raise, update, transition, and resolve blockers linked to work items.
work-items:focusAPI key scoperequired
Pin, annotate, reprioritize, snooze, or clear work items in governed focus views.
work-items:bulkAPI key scoperequired
Run bounded, confirmation-required bulk operations across authorized work items.

Examples

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}'
What can I safely do to this work item right now?
Add this note to the work item after I confirm it.
Move this work item into progress if that transition is allowed.
Assign this work item to Jordan after verifying Jordan is eligible.
Prepare a confirmed due-date command for this work item for next Friday.
Prepare a confirmed five-point estimate command for this work item.
Prepare a confirmed label command for api and triage on this work item.
Link this work item as depending on the API contract work item.
Raise a high-severity blocker on this work item for missing credentials.
Pin this work item to focus because it is a customer escalation.

GraphQL examples

Inspect operation contextAvailablework-items:read

Read 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 }
  }
}
Comment and assign a work itemAvailablework-items:comment + work-items:assign

Apply 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
  }
}
Transition a Jira-backed work itemAvailablework-items:transition

DigitalStack 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
  }
}
Read comments and dependenciesAvailablework-items:read

Read 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
  }
}
Update or archive commentAvailablework-items:comment

Edit 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 }
  }
}
Update dates, estimate, and labelsAvailablework-items:schedule + work-items:estimate + work-items:link

Update 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 }
  }
}
Link and unlink dependenciesAvailablework-items:link

Create 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 }
  }
}
Manage blockerAvailablework-items:blockers

Raise, 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 }
  }
}
Update focusAvailablework-items:focus

Pin, 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_createdAvailable

A comment was added to a canonical Execute work item.

Resource: work_item

work_item_idcomment_idauthor_idcreated_at
work_item.comment_updatedAvailable

A work-item comment was edited or archived.

Resource: work_item

work_item_idcomment_idchanged_fieldsupdated_at
work_item.assignment_changedAvailable

The canonical work-item assignee changed.

Resource: work_item

work_item_idprior_assignee_idassignee_idoccurred_at
work_item.dates_changedAvailable

Work-item start, due, target, sprint, or ordering fields changed.

Resource: work_item

work_item_idchanged_fieldsprior_valuesnew_valuesoccurred_at
work_item.estimate_changedAvailable

Work-item estimate or points changed.

Resource: work_item

work_item_idprior_estimateestimateoccurred_at
work_item.labels_changedAvailable

Work-item labels changed.

Resource: work_item

work_item_idadded_labelsremoved_labelsoccurred_at
work_item.dependency_linkedAvailable

A work-item dependency or relationship was created.

Resource: work_item

work_item_iddependency_idtarget_work_item_idrelationshipoccurred_at
work_item.dependency_unlinkedAvailable

A work-item dependency or relationship was removed.

Resource: work_item

work_item_iddependency_idtarget_work_item_idrelationshipoccurred_at
work_item.blocker_changedAvailable

A blocker was raised, updated, resolved, or reopened for a work item.

Resource: work_item

work_item_idblocker_idstatusseverityoccurred_at
work_item.focus_changedAvailable

A work item was pinned, reprioritized, annotated, snoozed, or cleared from focus.

Resource: work_item

work_item_idfocus_idactionpriorityoccurred_at

All 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 Execute
Governed front door for authorization, validation, idempotency, event emission, and local audit/result recording.
Jira
When Jira is the work-item source, supported commands are passed through to Jira and returned with a source_writeback result.DigitalStack has a native connection and ingestion foundation for this system already — public developer-platform exposure for this capability is still limited or planned.
Linear / Azure DevOps / GitHub Issues
Planned provider pass-through adapters following the same explicit mapping/writeback policy as Jira.No native DigitalStack connector currently exists for this system.

Related guides