Docs Status Transitions

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
newopen First response timer starts
Any → waiting_on_customer Resolution timer pauses
waiting_on_customerin_progress Resolution timer resumes
Any → resolved Resolution timer stops
resolvedopen 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.