Status Transitions
Every ticket in Tiqora has a status that represents its current position in the support workflow. Status changes follow a defined state machine — only certain transitions are allowed.
Available Statuses
| Status |
Description |
new |
Freshly created, not yet reviewed by an agent |
open |
Acknowledged and being worked on |
in_progress |
Actively being investigated by an assigned agent |
waiting_on_customer |
Awaiting customer response |
escalated |
Escalated to a senior agent or team lead |
resolved |
Issue has been resolved |
closed |
Ticket is closed (no further action expected) |
auto_resolved |
Automatically resolved by AI |
State Machine Diagram
┌──────────────────────────────┐
│ Reopen │
▼ │
┌─────┐ ┌──────┐ ┌─────────────┐ ┌────────┐
│ new │────►│ open │────►│ in_progress │──►│resolved│
│ │ │ │ │ │ │ │
└──┬──┘ └──┬───┘ └──┬──────┬───┘ └───┬────┘
│ │ │ │ │
│ │ ▼ │ ▼
│ │ ┌────────────┐ │ ┌────────┐
│ └───►│ waiting_on │ │ │ closed │
│ │ _customer │──┼──────►│ │
│ └─────┬──────┘ │ └────────┘
│ │ │ ▲
│ │ ▼ │
│ │ ┌──────────┐ │
│ └───►│escalated │ │
│ └────┬─────┘ │
│ │ │
▼ ▼ │
┌──────────────┐ ┌──────────┐ │
│auto_resolved │─────────────►│ resolved │───────┘
└──────────────┘ (reopen └──────────┘
to open)
Transition Rules
From `new`
| Target |
Notes |
open |
Agent acknowledges the ticket |
auto_resolved |
AI resolves automatically (when auto-reply mode is auto) |
Hint: New tickets can only move to open or auto_resolved. To move a ticket to in_progress, first transition it to open.
From `open`
| Target |
Notes |
in_progress |
Agent starts actively working on it |
waiting_on_customer |
Agent asks customer for more info |
resolved |
Issue resolved without needing in_progress |
From `in_progress`
| Target |
Notes |
waiting_on_customer |
Awaiting customer input |
resolved |
Issue fixed |
escalated |
Beyond current agent's scope |
From `waiting_on_customer`
| Target |
Notes |
in_progress |
Customer responded, agent resumes work |
resolved |
Customer confirmed resolution |
closed |
No response after grace period |
From `escalated`
| Target |
Notes |
in_progress |
Escalation handler picks it up |
resolved |
Resolved by escalation handler |
From `resolved`
| Target |
Notes |
closed |
Final closure (no further action) |
open |
Customer reopens (issue recurred) |
From `closed`
| Target |
Notes |
open |
Ticket reopened |
From `auto_resolved`
| Target |
Notes |
open |
Customer indicates AI resolution was insufficient |
Typical Workflows
Standard Support Flow
new → open → in_progress → resolved → closed
Quick Resolution
new → open → resolved → closed
Customer Interaction Required
new → open → in_progress → waiting_on_customer → in_progress → resolved → closed
Escalation Path
new → open → in_progress → escalated → in_progress → resolved → closed
AI Auto-Resolution
new → auto_resolved
If the customer disagrees:
new → auto_resolved → open → in_progress → resolved → closed
Updating Status via API
PATCH /api/v1/external/tickets/{ticket_id}
{
"status": "open"
}
Invalid Transition Response
If you attempt an invalid transition, you'll get a 422 error:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "The given data was invalid.",
"details": [
{
"field": "status",
"message": "Cannot transition from 'new' to 'in_progress'. Allowed: open, auto_resolved."
}
]
}
}
SLA Impact
Status transitions directly affect SLA timers:
| Transition |
SLA Effect |
new → open |
First response timer starts |
Any → waiting_on_customer |
Resolution timer pauses |
waiting_on_customer → in_progress |
Resolution timer resumes |
Any → resolved |
Resolution timer stops |
resolved → open |
Resolution timer resets |
Important: Transitioning to waiting_on_customer pauses the resolution SLA timer, since the ball is in the customer's court. Make sure to use this status correctly to avoid false SLA breaches.