intentic
Download the app
Download the app
Ship and share

Issues

Bugs your own users hit, grouped, and putting an agent on one

On this page(5 sections)

The owner's side of the bug intake, and the counterpart to the pipelines group: an inbox of failures with one route that hands a failure to an agent rather than to you. Reports arrive at the public /intake/… endpoints from the reporter embedded on your sites — a separate prefix precisely because any browser on the internet can reach those and none of these — and the daemon groups them by fingerprint, so a crash that hit a thousand browsers is one row with a count. These routes read that inbox, move a row between open, resolved and ignored, start a turn on one, throw one away, and answer which sites have actually loaded the reporter. Nothing here creates an issue.

GET/issuesBugs your users have reported

Everything that has crashed or been written in, grouped so a crash that hit a thousand people is one row with a count.

What you send

Nothing. Call it as it is.

What comes back

FieldType
issuesThe inbox, most recently seen firstobject[]
kind"crash" | "report" | "detection"
titleThe one line this is listed…string
culpritThe frame it came from, when…string
automationIdWhich intake received itstring
originWhich site it came fromstring
firstSeenWhen it first happened, in millisecondsnumber
lastSeenWhen it last happened, in millisecondsnumber
countHow many times this exact thing…number
statusWhere it stands with you"open" | "investigating" | "resolved" | "ignored"
statusAtWhen the status last changed, in…number
releaseThe build the latest one came…string
sampleThe most recent one, in fullobject
kindA crash the SDK caught, something…"crash" | "report" | "detection"
messageThe error's own message, or the…string
stackThe stack, verbatim from the browserstring
urlWhere it happened: the page's address,…string
releaseWhich build it came from: a…string
userAgentWhat the browser said it wasstring
descriptionWhat the person typed, when a…string
reporterWho says they are reporting itobject
emailAn address they typed, to reach…string
nameA name they typedstring
breadcrumbsWhat happened just before, oldest firstobject[]
atWhen, in millisecondsnumber
kindWhat sort of thing it was:…string
messageWhat it said, already truncated by…string
contextWhatever else the app attached: a…object
fingerprintGroup by this instead of by…string
firedAtWhat the count stood at the…number
runsThe turns started for itobject[]
conversationIdThe conversation this run becamestring
atWhen it started, in millisecondsnumber
atCountHow many times it had happened…number
idThe issue's id, which is its…string
invalidFiles in the issues directory that…string[]
Try itanswered in this tab
curl
curl "$SANDBOX/issues" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.issues.list();
POST/issues/{id}/statusFile one away, or reopen it

Moves one issue between open, resolved and ignored. Resolving does not close anything upstream: it is your own inbox.

What you send

FieldTypeWhere
idrequiredWhich issuestringaddress
statusrequiredWhere it now stands with you"open" | "resolved" | "ignored"body

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/issues/a1b2c3d4/status" \
  -H "x-intentic-control: $INTENTIC_TOKEN" \
  -H "content-type: application/json" \
  -d '{"status":"open"}'
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.issues.status({
  "id": "a1b2c3d4",
  "status": "open"
});
POST/issues/{id}/investigatePut an agent on it now

Starts a turn on this issue with the crash, its stack and what led up to it as the brief. Answers straight away and runs detached; the issue goes to 'being looked at'.

What you send

FieldTypeWhere
idrequiredWhich issuestringaddress

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X POST "$SANDBOX/issues/a1b2c3d4/investigate" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.issues.investigate({
  "id": "a1b2c3d4"
});
DELETE/issues/{id}Throw one away

Forgets an issue entirely. It will come back as new if it happens again, which is usually what you want.

What you send

FieldTypeWhere
idrequiredWhich issuestringaddress

What comes back

FieldType
okAlways truetrue
Try itanswered in this tab
curl
curl -X DELETE "$SANDBOX/issues/a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.issues.remove({
  "id": "a1b2c3d4"
});
GET/issues/installs/{automationId}Which sites have loaded the reporter

The sites whose pages actually loaded this intake's script, and the ones that were turned away. The answer to 'did the snippet land?', which an empty inbox cannot give you.

What you send

FieldTypeWhere
automationIdrequiredWhich intakestringaddress

What comes back

FieldType
originsobject[]
originstring
allowedboolean
lastSeenAtnumber
loadsnumber
Try itanswered in this tab
curl
curl "$SANDBOX/issues/installs/a1b2c3d4" \
  -H "x-intentic-control: $INTENTIC_TOKEN"
TypeScript
import { sandbox } from "@intentic/sandbox-client";

const result = await sandbox.issues.installs({
  "automationId": "a1b2c3d4"
});
More in Ship and share

Type to search every page, in the docs and the API reference.