AuralisDocs
Working tickets

Statuses, priorities and filters

What each ticket state means, how priority is used, and the rules filters follow — in the interface and over the API alike.

This page is the vocabulary: what the states mean, what priority actually does, and how filters combine. It applies equally to the Inbox and to GET /v1/tickets, because both are the same query.

For the Inbox itself — the panes, the sidebar, saved views — see The Inbox.

Statuses

StatusWhat it means
openNeeds a first response, or the customer has come back.
pendingYou have replied and are waiting on the customer.
on_holdParked on something outside the conversation.
solvedAnswered. Terminal.
closedFinished and filed. Terminal.
spamNot real work. Terminal.
mergedFolded into another ticket. Terminal.
deletedRemoved. Terminal, and not shown in the queue.

What can move where

The three live states — open, pending, on_hold — move freely between each other, and any of them can go to solved, closed or spam.

The terminal states have no legal moves at all. A solved ticket cannot be set back to open by an ordinary status change; the API reports its legal next states as an empty list. Getting a finished ticket back into the queue is a separate operation — see Merging, reopening and closing.

Ask, do not guess

Every ticket carries legal_next_states. Read it rather than hard-coding a transition table — it is computed from the same rules the runtime enforces, so the two cannot drift. Attempting an illegal move returns 409 illegal_transition, and the message lists what was allowed.

Priorities

urgent, high, normal, low.

Priority does two things, and neither is decoration:

  1. It selects the SLA policy stamped on the ticket when it is created. See SLA policies.
  2. It sorts the queue. The default ordering is priority first, then most recent activity within each band, then id. That ordering is stable, which is what makes paging through a moving queue return each ticket once rather than skipping and repeating.

In the list, only high and urgent get a coloured pill. That is deliberate: a hundred rows of normal would bury the two that matter.

How filters combine

Filters combine with AND. Values within one filter combine with OR.

So selecting open, pending and urgent means (open or pending) and urgent — not three separate queues, and not an empty intersection.

curl -sk -G https://api.localhost/v1/tickets \
  -H "Authorization: Bearer $AURALIS_API_KEY" \
  -d status=open -d status=pending \
  -d priority=urgent

Two filters take sentinels rather than ids:

  • assignee accepts a user id, me, or unassigned.
  • team_id accepts a team id or none.

Counts describe different things on purpose

  • total counts the tickets your current filters matched.
  • The counts on the rows and channel chips are unfiltered, workspace-wide.

That is not an inconsistency. A chip has to tell you what selecting it would give you; if it counted only within your current filter, every chip would read zero as soon as you narrowed the queue.

An unknown filter value is an error

?status=opne does not return an empty list. It returns 400 invalid_status, naming the value.

This is worth understanding because the alternative is worse: an empty result reads as "no tickets", which is a far more expensive misunderstanding than a refused request. The same applies to priority, source and sort.

A refused filter is not an outage

If you hand-edit a filter in the address bar to something the service will not accept, the queue says so and offers Clear filters. That is a different message from the one you get when the ticket service is unreachable, because the fix is different.

Saved views

A saved view is a set of filters under a name. It can be private to you or shared with the workspace.

A view stores status, priority, assignee scope, overdue and the search term. It does not store the channel filter — if one is active when you save, the dialog tells you it will not be part of the view rather than dropping it silently.

Applying a view needs no particular role. Saving one needs editor; deleting one needs admin.

Opening a ticket by hand

New ticket takes a subject, an optional description and a priority, and records the ticket with source manual.

Use it for work that reached you some other way — a phone call, a corridor conversation. Customer traffic should arrive through a connected channel instead, so that replies thread back correctly. See Channels.

Three channels cannot be set on a ticket you create

Over the API, POST /v1/tickets accepts ten of the thirteen source values. contact_form, slack and teams are live channels that produce tickets through their own ingress, but they are rejected with 422 if you try to set them on a manually created ticket. You can filter the queue by all thirteen.

See create_ticket.

Next

On this page