Transitions
A verified state change within an operation. Transitions require proof — evidence, attestation, or authority — and are permanently recorded.
The Transition object
Transition
{
"id": "tr_ghi789",
"operation_id": "op_abc123",
"from": "triaged",
"to": "verified",
"reason": "Evidence reviewed and confirmed by lead investigator",
"proof": ["att_456", "ev_xyz789"],
"initiated_by": "part_def456",
"created_at": "2025-01-16T11:00:00Z"
}| Parameter | Type | Description |
|---|---|---|
id | string | Unique identifier. Prefixed with tr_ |
operation_id | string | The operation this transition belongs to |
from | string | Previous state |
torequired | string | Target state |
reasonrequired | string | Why this transition is happening |
proof | string[] | IDs of attestations or evidence supporting the transition |
initiated_by | string | Participant who initiated the transition |
created_at | datetime | ISO 8601 timestamp |
Valid transitions
Not all state changes are valid. The API enforces a transition graph based on the operation type. Attempting an invalid transition returns a 409 Conflict.
409 Conflict
{
"error": {
"code": "invalid_transition",
"message": "Cannot transition from 'created' to 'resolved'",
"status": 409
}
}Endpoints
Create a transition
POST
/v1/operations/:id/transitionscurl -X POST https://api.microndelta.com/v1/operations/op_abc123/transitions \
-H "Authorization: Bearer md_live_xxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"to": "verified",
"reason": "Evidence reviewed and confirmed",
"proof": ["att_456"]
}'List transitions
GET
/v1/operations/:id/transitionsReturns the full transition history