API reference / Tests and incidents
Say how bad an incident is
Keeps a look at an incident: its severity, what to do about it, and a summary that an owner understands. From a person, verdict noise also ignores an open incident until its errors grow ten times. From a teammate, it only says so, and a person ignores the incident. The QA tester calls it after it reads the incident.
/api/v1/incidents/{number}/triageOther ways to call it
troopy incidents triagetroopy_triage_incidentIdempotency-Key header. A retry with the same key gets the first answer back, and the operation runs one time.Path parameters
number*integerAt least 1
Body
application/jsonseverity*enum<string>criticalhighmediumlow
verdict*enum<string>fixnoisewatch
summary*stringWhat happened, for an owner who doesn't read code: 400 characters at most
At least 1 characters · At most 400 characters
why*stringWhy that severity and that verdict: 400 characters at most
At least 1 characters · At most 400 characters
Response
200 · application/jsondata*object24 properties
number*integerIts number in the workspace, as in Incident 14
title*stringThe error and its message
culprit*string | nullWhere it happens: the last frame of the app's own code, or the route
type*string | nullThe type of the error, like TypeError. null for a message
level*enum<string>fatalerrorwarninginfodebug
crash*booleanOne of its errors crashed the app: nothing caught it
status*enum<string>ignored becomes open when its ignore runs out
openresolvedignored
regressedAt*string | nullWhen it came back after a person resolved it
app*object4 properties
id*stringA 24-character id
name*stringslug*stringplatform*enum<string>websitenextjsnodepythonother
count*integerIts errors, each counted
users*integerThe people who saw it, about
firstSeen*stringISO 8601 date and time
lastSeen*stringISO 8601 date and time
environments*array<string>firstRelease*string | nulllastRelease*string | nullresolved*object | null3 properties
by*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringat*stringISO 8601 date and time
nextRelease*booleanResolved in the next release: only a newer release brings it back
ignored*object | null5 properties
by*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringat*stringISO 8601 date and time
until*string | nullIt is open again after this time
events*integer | nullIt is open again when its count reaches this
users*integer | nullIt is open again when this many people saw it
last24h*array<integer>Its errors in each of the last 24 hours, oldest first
alert*object | nullWhy it needs a look, and whether a person saw it. A resolve or an ignore clears it
3 properties
why*enum<string>newregressedescalatedspike
at*stringISO 8601 date and time
seen*booleantriage*object | nullThe latest look of the QA tester, or of a person
6 properties
severity*enum<string>criticalhighmediumlow
verdict*enum<string>fixnoisewatch
summary*stringWhat happened, in words that an owner understands
why*stringWhy that severity and that verdict
by*objectWho wrote it
3 properties
type*enum<string>personagentapi
id*stringname*stringat*stringISO 8601 date and time
triageDue*string | nullSince when it waits for the QA tester's look: an alert, or a person's ask
ticket*object | nullThe engineering ticket that fixes it
3 properties
key*stringLike VIR-42
title*stringstatus*enum<string>backlogtodoin_progressneeds_youin_reviewdonecanceled
fix*object | nullThe ticket that fixed it, once that ticket went live. Then Troopy resolves the incident in the next release
5 properties
key*stringThe ticket, like VIR-42
title*stringat*stringWhen the ticket went live
release*string | nullThe first release of the app after that: the fix is in it
back*string | nullWhen an error of a newer release brought the incident back