# WorkflowTransition

One legal edge of a workflow: the move a work item may make from one status to another, with the label the transition button carries. Every status change is checked against these edges, so an edge that does not exist here cannot be walked by the API or in plnnrly. Edges are directed, and duplicates are legal.

## Used by
- GET /api/v2/workflow-transitions: List workflow transitions (WorkflowTransitionList)
- POST /api/v2/workflow-transitions: Create a workflow transition (WorkflowTransition)
- GET /api/v2/workflow-transitions/{workflow_transition}: Read a workflow transition (WorkflowTransition)
- PATCH /api/v2/workflow-transitions/{workflow_transition}: Update a workflow transition (WorkflowTransition)

## WorkflowTransition fields
- id (integer, required): Unique identifier.
- workflow_id (integer, required): Workflow this edge belongs to. Both statuses belong to the same workflow, and the edge cannot be moved to another one.
- from_status_id (integer, required): Status a work item must currently be in for this edge to apply.
- to_status_id (integer, required): Status the work item moves to. Always different from `from_status_id`.
- name (string ≤ 255, required): Transition label as shown on the status button, e.g. `Start progress`.
- created_at (timestamp (YYYY-MM-DDThh:mm:ssZ), required): Creation timestamp.
- updated_at (timestamp (YYYY-MM-DDThh:mm:ssZ), required): Last-write timestamp; use for incremental sync.
- workflow (Ref or WorkflowSummary, required): Workflow this edge belongs to.
- from_status (Ref or WorkflowStatusSummary, required): Status the edge leads out of.
- to_status (Ref or WorkflowStatusSummary, required): Status the edge leads into.
- links (WorkflowTransitionLinks, required)
  - self (url, required): The canonical URI of this record.

## Variants

### WorkflowTransitionList

What a collection returns, and what `?view=summary` returns on a single record.

11 fields.
Identical to the detail object above.

### WorkflowTransitionSummary

The embedded form: what you get when another resource carries this one and you did not `include` it.

3 fields.
Omits: workflow_id, name, created_at, updated_at, workflow, from_status, to_status, links

### WorkflowTransitionLinks

The `links` object on this resource.

Keys: self

## Example
```json
{
  "id": 1,
  "workflow_id": 4,
  "from_status_id": 11,
  "to_status_id": 12,
  "name": "Start progress",
  "created_at": "2026-03-04T09:15:00Z",
  "updated_at": "2026-03-04T09:15:00Z",
  "workflow": {
    "id": 1
  },
  "from_status": {
    "id": 1
  },
  "to_status": {
    "id": 1
  },
  "links": {
    "self": "https://<your-url>/api/v2/work-items/1"
  }
}
```
