Cases

Embed
Preview of the card
<a href="https://watchtowerops.net/docs/cases"><img src="https://watchtowerops.net/docs/_api/public/orgs/aa5959cb-1a0b-4a9a-bc9a-913e7ac31cd9/spaces/b7aac181-9916-4805-b253-becc5fd2ca62/pages/ef424a7c-5e85-453d-9beb-5d68923831a9/social-card.svg?v=3e7ae33eec8b" alt="Cases" width="600" height="315"></a>

A case tracks a piece of work that is not (or not yet) an incident: a noisy alert to tune, a recurring error, a slow endpoint, a faulty deployment to follow up. Cases live in a project and are numbered per project (#12).

Fields

Title, description, status (open, in_progress, closed), priority (P1 to P5, default P3), assignee (a project member), and custom attributes (a flat object of at most 50 keys with string, number or boolean values). The timeline records every comment and change: creation, status, priority, assignee, title, description and attribute changes, links and tickets.

A case links to alerts, issues, incidents, insights, traces (32-hex trace id), SLOs, monitors, tickets and URLs (https), at most 200. Alerts, issues, incidents and insights are looked up in the project; another project's id is a 404. Filter the list with linked_kind and linked_ref to find the cases of an object.

Creating cases

  • By hand: POST /v1/projects/{prj}/cases or the Cases page.

  • From an alert, issue, incident or insight: pass from: {kind, id}; the title defaults to the source's and the source is linked. The alert, issue and incident pages have a "Create case" button.

  • Auto-case rules (/v1/projects/{prj}/case-rules, Manage alerts): a rule watches one source (alert firing, issue created, incident declared, insight opened) and opens a case for every event matching its match: severities, slo_tier (page or ticket), services, kinds, labels, title_contains. One case per rule and source object. A ticket-tier SLO burn becomes a case with {"source": "alert", "match": {"slo_tier": "ticket"}}. Private incidents never match.

Trackers

POST /cases/{case}/tickets with a connector installation files the case:

  • Jira, Linear and the other trackers: a ticket with two-way sync. Closing the ticket closes the case; closing the case transitions the ticket.

  • GitHub and GitLab: an issue in one of the installation's repositories. Closing a GitHub issue closes the case (the App must subscribe to Issues events).

Notifications

Cases emit domain events (case.created, case.status_changed, case.assigned, case.priority_changed, case.commented, case.closed). Subscribe a receiver to them in Settings > Event subscriptions, or start from the "Notify on case assigned" workflow template.

API

Route

Access

GET/POST /v1/projects/{prj}/cases (filters status, priority, assignee = id, me or none, q, linked_kind/linked_ref, attr=key:value)

read / respond to incidents

GET/PATCH/DELETE /cases/{case}

read / respond / manage alerts

GET/POST /cases/{case}/timeline (comments)

read / respond

GET/POST /cases/{case}/links, DELETE /cases/{case}/links/{link}

read / respond

POST /cases/{case}/tickets

respond

GET/POST /case-rules, PUT/DELETE /case-rules/{rule}

read / manage alerts

Updated