@shipeasy/openapi 2.3.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-PRN4AEAM.js → chunk-DBTSD3W5.js} +1085 -261
- package/dist/chunk-DBTSD3W5.js.map +1 -0
- package/dist/{chunk-LYNWK55D.js → chunk-RDMD5XQT.js} +171 -1
- package/dist/chunk-RDMD5XQT.js.map +1 -0
- package/dist/{client-DO5HTb_L.d.ts → client-ObcuFHaV.d.ts} +5605 -2734
- package/dist/client.d.ts +1 -1
- package/dist/client.js +47 -1
- package/dist/custom.d.ts +9 -4
- package/dist/custom.js +57 -9
- package/dist/custom.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +48 -2
- package/dist/index.js.map +1 -1
- package/dist/schemas.d.ts +3171 -485
- package/dist/schemas.js +229 -1
- package/openapi.json +13264 -8071
- package/openapi.yaml +5108 -1550
- package/package.json +1 -1
- package/spec/components/errors.yaml +3 -0
- package/spec/components/schemas/alerts.yaml +138 -0
- package/spec/components/schemas/attributes.yaml +53 -3
- package/spec/components/schemas/common.yaml +10 -0
- package/spec/components/schemas/configs.yaml +91 -3
- package/spec/components/schemas/connectors.yaml +5 -1
- package/spec/components/schemas/errors-api.yaml +51 -4
- package/spec/components/schemas/experiments.yaml +347 -87
- package/spec/components/schemas/gates.yaml +350 -277
- package/spec/components/schemas/i18n.yaml +169 -40
- package/spec/components/schemas/killswitches.yaml +36 -0
- package/spec/components/schemas/metrics.yaml +199 -7
- package/spec/components/schemas/ops.yaml +961 -29
- package/spec/components/schemas/projects.yaml +129 -3
- package/spec/openapi.yaml +58 -0
- package/spec/paths/alerts.yaml +184 -0
- package/spec/paths/attributes.yaml +23 -5
- package/spec/paths/configs.yaml +98 -21
- package/spec/paths/errors.yaml +16 -0
- package/spec/paths/experiments.yaml +236 -16
- package/spec/paths/gates.yaml +137 -0
- package/spec/paths/i18n.yaml +290 -6
- package/spec/paths/killswitches.yaml +6 -0
- package/spec/paths/metrics.yaml +186 -0
- package/spec/paths/ops.yaml +382 -0
- package/spec/paths/projects.yaml +60 -0
- package/dist/chunk-LYNWK55D.js.map +0 -1
- package/dist/chunk-PRN4AEAM.js.map +0 -1
|
@@ -35,9 +35,88 @@ ListOpsItemsResponse:
|
|
|
35
35
|
anyOf:
|
|
36
36
|
- type: string
|
|
37
37
|
- type: "null"
|
|
38
|
+
investigationState:
|
|
39
|
+
anyOf:
|
|
40
|
+
- $ref: "#/OpsInvestigationState"
|
|
41
|
+
- type: "null"
|
|
42
|
+
description: >-
|
|
43
|
+
Where automation has taken this item in the investigation lifecycle
|
|
44
|
+
(see `OpsInvestigationState`). Optional — absent/`null` on rows filed
|
|
45
|
+
before the field existed; derive from `status`/`type` in that case.
|
|
46
|
+
source:
|
|
47
|
+
type: string
|
|
48
|
+
enum:
|
|
49
|
+
- team
|
|
50
|
+
- system
|
|
51
|
+
description: "How the item was filed: `team` (a human admin/teammate — bug/feature) or `system` (auto-filed — error/alert/measure_plan)."
|
|
52
|
+
reporterEmail:
|
|
53
|
+
anyOf:
|
|
54
|
+
- type: string
|
|
55
|
+
- type: "null"
|
|
56
|
+
description: Reporter email (bug/feature), or `null`.
|
|
57
|
+
stepsToReproduce:
|
|
58
|
+
type: string
|
|
59
|
+
description: Reproduction steps — populated for `bug`, empty string otherwise.
|
|
60
|
+
actualResult:
|
|
61
|
+
type: string
|
|
62
|
+
description: What actually happened — `bug` only, empty string otherwise.
|
|
63
|
+
expectedResult:
|
|
64
|
+
type: string
|
|
65
|
+
description: What was expected — `bug` only, empty string otherwise.
|
|
66
|
+
description:
|
|
67
|
+
type: string
|
|
68
|
+
description: Feature description — populated for `feature_request`, empty string otherwise.
|
|
69
|
+
useCase:
|
|
70
|
+
type: string
|
|
71
|
+
description: Feature use case — `feature_request` only, empty string otherwise.
|
|
72
|
+
context:
|
|
73
|
+
anyOf:
|
|
74
|
+
- $ref: "#/OpsItemContext"
|
|
75
|
+
- type: "null"
|
|
76
|
+
description: "The RAW stored capture context on the row — NOT hydrated: list rows carry only what was captured at file time (e.g. `context.browser` for bug/feature, the trigger subset for auto-filed tickets). The live `error`/`alert` readings and `errorChart` are added only by the single-item read (`GET /api/admin/ops/{handle}`). `null` when nothing was captured."
|
|
77
|
+
connectorData:
|
|
78
|
+
anyOf:
|
|
79
|
+
- $ref: "#/ConnectorData"
|
|
80
|
+
- type: "null"
|
|
81
|
+
description: "Per-connector linkage recorded for this item, keyed by connector provider. `null` if no connector has touched the item."
|
|
82
|
+
notify:
|
|
83
|
+
anyOf:
|
|
84
|
+
- $ref: ./common.yaml#/NotificationTarget
|
|
85
|
+
- type: "null"
|
|
86
|
+
description: Per-item completion-notification target, or `null` (falls back to the project default).
|
|
87
|
+
assigneeId:
|
|
88
|
+
anyOf:
|
|
89
|
+
- type: string
|
|
90
|
+
- type: "null"
|
|
91
|
+
description: The PERSON owner — a `users.id` (resolved into `owner.user`), or `null` when unassigned.
|
|
92
|
+
assigneeConnectorId:
|
|
93
|
+
anyOf:
|
|
94
|
+
- type: string
|
|
95
|
+
- type: "null"
|
|
96
|
+
description: The AGENT owner when it is a connected trigger connector — a `connectors` row id (resolved into `owner.agent`), or `null`. Mutually exclusive with `assigneeAgent`.
|
|
97
|
+
assigneeAgent:
|
|
98
|
+
anyOf:
|
|
99
|
+
- type: string
|
|
100
|
+
- type: "null"
|
|
101
|
+
description: The AGENT owner when it is a built-in hosted Shipeasy agent — currently only `jarvis` — or `null`. Mutually exclusive with `assigneeConnectorId`.
|
|
102
|
+
owner:
|
|
103
|
+
$ref: "#/OpsItemOwner"
|
|
104
|
+
run:
|
|
105
|
+
anyOf:
|
|
106
|
+
- $ref: "#/OpsRun"
|
|
107
|
+
- type: "null"
|
|
108
|
+
description: The currently OPEN run on this item (someone acked it and is actively working — the cockpit's live working indicator), or `null` when nothing is in flight.
|
|
109
|
+
lastRun:
|
|
110
|
+
anyOf:
|
|
111
|
+
- $ref: "#/OpsRun"
|
|
112
|
+
- type: "null"
|
|
113
|
+
description: The most recently COMPLETED run (the run result — final action, PR, duration), excluding superseded runs; `null` when no run has completed yet.
|
|
38
114
|
createdAt:
|
|
39
115
|
type: string
|
|
40
116
|
description: ISO-8601 creation timestamp.
|
|
117
|
+
updatedAt:
|
|
118
|
+
type: string
|
|
119
|
+
description: ISO-8601 last-update timestamp.
|
|
41
120
|
required:
|
|
42
121
|
- id
|
|
43
122
|
- number
|
|
@@ -45,9 +124,14 @@ ListOpsItemsResponse:
|
|
|
45
124
|
- title
|
|
46
125
|
- status
|
|
47
126
|
- priority
|
|
127
|
+
- source
|
|
128
|
+
- owner
|
|
129
|
+
- run
|
|
130
|
+
- lastRun
|
|
48
131
|
- createdAt
|
|
132
|
+
- updatedAt
|
|
49
133
|
additionalProperties: {}
|
|
50
|
-
description: One queue item — any type.
|
|
134
|
+
description: One queue item — any type — plus its resolved `owner` and run state.
|
|
51
135
|
description: A page of queue items, newest first.
|
|
52
136
|
GetOpsItemResponse:
|
|
53
137
|
type: object
|
|
@@ -90,6 +174,16 @@ GetOpsItemResponse:
|
|
|
90
174
|
- type: string
|
|
91
175
|
- type: "null"
|
|
92
176
|
description: "Stable key of the originating record for auto-filed tickets (error fingerprint, `<alert source>:<dedupeKey>`, or measurement-plan ref); `null` for human-filed bugs/features."
|
|
177
|
+
investigationState:
|
|
178
|
+
anyOf:
|
|
179
|
+
- $ref: "#/OpsInvestigationState"
|
|
180
|
+
- type: "null"
|
|
181
|
+
description: >-
|
|
182
|
+
Where automation has taken this item in the investigation lifecycle
|
|
183
|
+
(see `OpsInvestigationState`). Written as a side-effect of the actions
|
|
184
|
+
that already happen (link a PR, change status, an assistant reply);
|
|
185
|
+
`null` on rows filed before the field existed — derive from
|
|
186
|
+
`status`/`type` in that case.
|
|
93
187
|
reporterEmail:
|
|
94
188
|
anyOf:
|
|
95
189
|
- type: string
|
|
@@ -132,6 +226,23 @@ GetOpsItemResponse:
|
|
|
132
226
|
- $ref: ./common.yaml#/NotificationTarget
|
|
133
227
|
- type: "null"
|
|
134
228
|
description: Per-item completion-notification target, or `null` (falls back to the project default).
|
|
229
|
+
assigneeId:
|
|
230
|
+
anyOf:
|
|
231
|
+
- type: string
|
|
232
|
+
- type: "null"
|
|
233
|
+
description: The PERSON owner — a `users.id` (resolved into `owner.user`), or `null` when unassigned.
|
|
234
|
+
assigneeConnectorId:
|
|
235
|
+
anyOf:
|
|
236
|
+
- type: string
|
|
237
|
+
- type: "null"
|
|
238
|
+
description: The AGENT owner when it is a connected trigger connector — a `connectors` row id (resolved into `owner.agent`), or `null`. Mutually exclusive with `assigneeAgent`.
|
|
239
|
+
assigneeAgent:
|
|
240
|
+
anyOf:
|
|
241
|
+
- type: string
|
|
242
|
+
- type: "null"
|
|
243
|
+
description: The AGENT owner when it is a built-in hosted Shipeasy agent — currently only `jarvis` — or `null`. Mutually exclusive with `assigneeConnectorId`.
|
|
244
|
+
owner:
|
|
245
|
+
$ref: "#/OpsItemOwner"
|
|
135
246
|
createdAt:
|
|
136
247
|
type: string
|
|
137
248
|
description: ISO-8601 creation timestamp.
|
|
@@ -148,9 +259,142 @@ GetOpsItemResponse:
|
|
|
148
259
|
- context
|
|
149
260
|
- attachments
|
|
150
261
|
- related
|
|
262
|
+
- owner
|
|
151
263
|
- createdAt
|
|
152
264
|
additionalProperties: {}
|
|
153
265
|
description: "One queue item, any of the five types. Shared fields apply to all; `stepsToReproduce`/`actualResult`/`expectedResult` are bug-specific, `description`/`useCase` feature-specific. The auto-collected browser fields (page URL, user-agent, viewport) live under `context.browser` for bug/feature. `context` also carries the hydrated per-type payload for auto-filed `error`/`alert`/`measure_plan` tickets, `attachments` lists any uploaded files, and `related` gives deep links to the underlying resources."
|
|
266
|
+
OpsItemOwner:
|
|
267
|
+
type: object
|
|
268
|
+
properties:
|
|
269
|
+
user:
|
|
270
|
+
anyOf:
|
|
271
|
+
- type: object
|
|
272
|
+
properties:
|
|
273
|
+
id:
|
|
274
|
+
type: string
|
|
275
|
+
description: The `users.id` of the assigned person (what `assigneeId` stores).
|
|
276
|
+
email:
|
|
277
|
+
type: string
|
|
278
|
+
description: The person's email.
|
|
279
|
+
name:
|
|
280
|
+
anyOf:
|
|
281
|
+
- type: string
|
|
282
|
+
- type: "null"
|
|
283
|
+
description: The person's display name, or `null` when none is set.
|
|
284
|
+
required:
|
|
285
|
+
- id
|
|
286
|
+
- email
|
|
287
|
+
- name
|
|
288
|
+
additionalProperties: false
|
|
289
|
+
description: The resolved person owner.
|
|
290
|
+
- type: "null"
|
|
291
|
+
description: The PERSON half of the owner (resolved from `assigneeId`), or `null` when no person is assigned.
|
|
292
|
+
agent:
|
|
293
|
+
anyOf:
|
|
294
|
+
- type: object
|
|
295
|
+
properties:
|
|
296
|
+
connectorId:
|
|
297
|
+
anyOf:
|
|
298
|
+
- type: string
|
|
299
|
+
- type: "null"
|
|
300
|
+
description: The `connectors` row id for a connector-backed agent; `null` for the built-in one.
|
|
301
|
+
builtin:
|
|
302
|
+
anyOf:
|
|
303
|
+
- type: string
|
|
304
|
+
const: jarvis
|
|
305
|
+
- type: "null"
|
|
306
|
+
description: The built-in-agent key (`jarvis`) when this is the hosted Shipeasy agent; `null` for a connector-backed one.
|
|
307
|
+
provider:
|
|
308
|
+
type: string
|
|
309
|
+
enum:
|
|
310
|
+
- claude_trigger
|
|
311
|
+
- cursor_trigger
|
|
312
|
+
- copilot_trigger
|
|
313
|
+
- jules_trigger
|
|
314
|
+
- jarvis
|
|
315
|
+
description: The trigger-connector provider backing this agent, or `jarvis` for the built-in hosted agent.
|
|
316
|
+
name:
|
|
317
|
+
type: string
|
|
318
|
+
description: Display name — the connector's `name`, the provider default (e.g. "Claude"), or "Jarvis".
|
|
319
|
+
required:
|
|
320
|
+
- connectorId
|
|
321
|
+
- builtin
|
|
322
|
+
- provider
|
|
323
|
+
- name
|
|
324
|
+
additionalProperties: false
|
|
325
|
+
description: The resolved agent owner. Exactly one of `connectorId` / `builtin` is set.
|
|
326
|
+
- type: "null"
|
|
327
|
+
description: The AGENT half of the owner (resolved from `assigneeConnectorId` / `assigneeAgent`), or `null` when no agent is assigned.
|
|
328
|
+
required:
|
|
329
|
+
- user
|
|
330
|
+
- agent
|
|
331
|
+
additionalProperties: false
|
|
332
|
+
description: "The fully-resolved owner of a queue item — a person and/or an AI agent. The two halves are independent: an item may have a person, an agent, both, or neither (both `null`)."
|
|
333
|
+
OpsRun:
|
|
334
|
+
type: object
|
|
335
|
+
properties:
|
|
336
|
+
id:
|
|
337
|
+
type: string
|
|
338
|
+
description: Run record id.
|
|
339
|
+
agent:
|
|
340
|
+
anyOf:
|
|
341
|
+
- type: string
|
|
342
|
+
- type: "null"
|
|
343
|
+
description: "The AI agent type working the run (`jarvis` | `claude` | `cursor` | `copilot` | `jules`); `null` for a human ack."
|
|
344
|
+
connectorId:
|
|
345
|
+
anyOf:
|
|
346
|
+
- type: string
|
|
347
|
+
- type: "null"
|
|
348
|
+
description: The trigger-connector row id backing the acking agent; `null` for a human ack or the built-in Jarvis agent.
|
|
349
|
+
ackedBy:
|
|
350
|
+
anyOf:
|
|
351
|
+
- type: string
|
|
352
|
+
- type: "null"
|
|
353
|
+
description: Email of the human who acked; `null` for an AI ack.
|
|
354
|
+
sessionId:
|
|
355
|
+
anyOf:
|
|
356
|
+
- type: string
|
|
357
|
+
- type: "null"
|
|
358
|
+
description: The agent-run session id recorded on the ack (dashboard deep-links to the run page), or `null`.
|
|
359
|
+
sessionUrl:
|
|
360
|
+
anyOf:
|
|
361
|
+
- type: string
|
|
362
|
+
- type: "null"
|
|
363
|
+
description: "The run's session-page deep link, or `null`. DERIVED (never stored): rebuilt from `sessionId` + the run's trigger connector — Claude's routine id (`?trigger=`), Copilot's repo (`/tasks/`), Cursor/Jules from the id alone."
|
|
364
|
+
startedAt:
|
|
365
|
+
type: string
|
|
366
|
+
description: ISO-8601 timestamp the run started (the ack time).
|
|
367
|
+
completedAt:
|
|
368
|
+
anyOf:
|
|
369
|
+
- type: string
|
|
370
|
+
- type: "null"
|
|
371
|
+
description: ISO-8601 timestamp the run closed, or `null` while still open.
|
|
372
|
+
completedAction:
|
|
373
|
+
$ref: "#/OpsRunActionOrNull"
|
|
374
|
+
prNumber:
|
|
375
|
+
anyOf:
|
|
376
|
+
- type: number
|
|
377
|
+
- type: "null"
|
|
378
|
+
description: The PR the run linked as its final action, or `null`.
|
|
379
|
+
prUrl:
|
|
380
|
+
anyOf:
|
|
381
|
+
- type: string
|
|
382
|
+
- type: "null"
|
|
383
|
+
description: HTML URL of that PR, or `null`.
|
|
384
|
+
required:
|
|
385
|
+
- id
|
|
386
|
+
- agent
|
|
387
|
+
- connectorId
|
|
388
|
+
- ackedBy
|
|
389
|
+
- sessionId
|
|
390
|
+
- sessionUrl
|
|
391
|
+
- startedAt
|
|
392
|
+
- completedAt
|
|
393
|
+
- completedAction
|
|
394
|
+
- prNumber
|
|
395
|
+
- prUrl
|
|
396
|
+
additionalProperties: false
|
|
397
|
+
description: "One run on a queue item — who (person or AI agent) picked it up when, and, once closed, how it ended (final action + PR + session link). Opened by `POST /api/admin/ops/{handle}/ack`."
|
|
154
398
|
OpsItemContext:
|
|
155
399
|
type: object
|
|
156
400
|
properties:
|
|
@@ -162,6 +406,38 @@ OpsItemContext:
|
|
|
162
406
|
$ref: "#/OpsAlertContext"
|
|
163
407
|
measurePlan:
|
|
164
408
|
$ref: "#/OpsMeasurePlanContext"
|
|
409
|
+
errorChart:
|
|
410
|
+
type: object
|
|
411
|
+
properties:
|
|
412
|
+
series:
|
|
413
|
+
type: array
|
|
414
|
+
items:
|
|
415
|
+
type: object
|
|
416
|
+
properties:
|
|
417
|
+
t:
|
|
418
|
+
type: number
|
|
419
|
+
description: Bucket start — unix epoch **milliseconds** (hourly buckets).
|
|
420
|
+
v:
|
|
421
|
+
type: number
|
|
422
|
+
description: Occurrence count in the bucket (sample-rate weighted).
|
|
423
|
+
required:
|
|
424
|
+
- t
|
|
425
|
+
- v
|
|
426
|
+
additionalProperties: {}
|
|
427
|
+
description: One hourly occurrence bucket.
|
|
428
|
+
description: Hourly occurrence buckets, oldest first. Hours with no occurrences are omitted.
|
|
429
|
+
domainFrom:
|
|
430
|
+
type: number
|
|
431
|
+
description: Chart domain start — unix epoch milliseconds (24h before the read).
|
|
432
|
+
domainTo:
|
|
433
|
+
type: number
|
|
434
|
+
description: Chart domain end — unix epoch milliseconds (the read time).
|
|
435
|
+
required:
|
|
436
|
+
- series
|
|
437
|
+
- domainFrom
|
|
438
|
+
- domainTo
|
|
439
|
+
additionalProperties: {}
|
|
440
|
+
description: "Occurrence timeline for an `error` ticket — hourly buckets over the last 24h from the sampled occurrences, hydrated at read time by the single-item read only. ABSENT (not `null`) on non-error tickets, on list rows (raw context), and when no occurrence landed in the window."
|
|
165
441
|
additionalProperties: {}
|
|
166
442
|
description: "Per-type capture context on a queue item. Exactly one of `browser` (bug/feature), `error`, `alert`, or `measurePlan` is populated depending on `type`; other keys (e.g. the AI dedupe block on bugs) may also be present."
|
|
167
443
|
OpsBrowserContext:
|
|
@@ -555,33 +831,35 @@ GithubConnectorData:
|
|
|
555
831
|
additionalProperties: {}
|
|
556
832
|
description: The GitHub issue this item opened.
|
|
557
833
|
pr:
|
|
558
|
-
|
|
559
|
-
properties:
|
|
560
|
-
number:
|
|
561
|
-
type: number
|
|
562
|
-
description: Pull request number.
|
|
563
|
-
url:
|
|
564
|
-
type: string
|
|
565
|
-
description: HTML URL of the linked pull request.
|
|
566
|
-
linkedAt:
|
|
567
|
-
type: string
|
|
568
|
-
description: ISO-8601 timestamp the PR was linked.
|
|
569
|
-
connectedToIssue:
|
|
570
|
-
type: boolean
|
|
571
|
-
description: "Whether the PR was wired to the issue on GitHub (via a closing keyword or a comment)."
|
|
572
|
-
method:
|
|
573
|
-
type: string
|
|
574
|
-
enum:
|
|
575
|
-
- closes
|
|
576
|
-
- comment
|
|
577
|
-
description: How the PR was connected to the issue.
|
|
578
|
-
required:
|
|
579
|
-
- number
|
|
580
|
-
- url
|
|
581
|
-
additionalProperties: {}
|
|
582
|
-
description: The pull request linked to this item via `link-pr`.
|
|
834
|
+
$ref: "#/GithubPrLink"
|
|
583
835
|
additionalProperties: {}
|
|
584
836
|
description: "GitHub connector trace — the issue it opened and, once linked, the pull request."
|
|
837
|
+
GithubPrLink:
|
|
838
|
+
type: object
|
|
839
|
+
properties:
|
|
840
|
+
number:
|
|
841
|
+
type: number
|
|
842
|
+
description: Pull request number.
|
|
843
|
+
url:
|
|
844
|
+
type: string
|
|
845
|
+
description: HTML URL of the linked pull request.
|
|
846
|
+
linkedAt:
|
|
847
|
+
type: string
|
|
848
|
+
description: ISO-8601 timestamp the PR was linked.
|
|
849
|
+
connectedToIssue:
|
|
850
|
+
type: boolean
|
|
851
|
+
description: "Whether the PR was wired to the issue on GitHub (via a closing keyword or a comment)."
|
|
852
|
+
method:
|
|
853
|
+
type: string
|
|
854
|
+
enum:
|
|
855
|
+
- closes
|
|
856
|
+
- comment
|
|
857
|
+
description: How the PR was connected to the issue.
|
|
858
|
+
required:
|
|
859
|
+
- number
|
|
860
|
+
- url
|
|
861
|
+
additionalProperties: {}
|
|
862
|
+
description: The pull request linked to a queue item via `link-pr` (stored on `connectorData.github.pr`).
|
|
585
863
|
SlackConnectorData:
|
|
586
864
|
type: object
|
|
587
865
|
properties:
|
|
@@ -638,6 +916,28 @@ CreateBugRequest:
|
|
|
638
916
|
- $ref: "#/OpsItemPriority"
|
|
639
917
|
- type: "null"
|
|
640
918
|
description: Initial triage priority, or `null`.
|
|
919
|
+
status:
|
|
920
|
+
anyOf:
|
|
921
|
+
- $ref: "#/OpsItemStatus"
|
|
922
|
+
description: Initial lifecycle status; defaults to `open` when omitted.
|
|
923
|
+
assigneeId:
|
|
924
|
+
anyOf:
|
|
925
|
+
- type: string
|
|
926
|
+
- type: "null"
|
|
927
|
+
description: The `users.id` of the person to assign as owner at creation, or `null`.
|
|
928
|
+
subscribers:
|
|
929
|
+
type: array
|
|
930
|
+
items:
|
|
931
|
+
type: string
|
|
932
|
+
format: email
|
|
933
|
+
default: []
|
|
934
|
+
description: Emails of teammates to subscribe to this item's Slack pings at creation.
|
|
935
|
+
tags:
|
|
936
|
+
type: array
|
|
937
|
+
items:
|
|
938
|
+
type: string
|
|
939
|
+
default: []
|
|
940
|
+
description: Tag names to attach at creation (get-or-created by name, deduped case-insensitively).
|
|
641
941
|
reporterEmail:
|
|
642
942
|
anyOf:
|
|
643
943
|
- type: string
|
|
@@ -707,6 +1007,28 @@ CreateFeatureRequestRequest:
|
|
|
707
1007
|
- $ref: "#/OpsItemPriority"
|
|
708
1008
|
- type: "null"
|
|
709
1009
|
description: Initial triage priority, or `null`.
|
|
1010
|
+
status:
|
|
1011
|
+
anyOf:
|
|
1012
|
+
- $ref: "#/OpsItemStatus"
|
|
1013
|
+
description: Initial lifecycle status; defaults to `open` when omitted.
|
|
1014
|
+
assigneeId:
|
|
1015
|
+
anyOf:
|
|
1016
|
+
- type: string
|
|
1017
|
+
- type: "null"
|
|
1018
|
+
description: The `users.id` of the person to assign as owner at creation, or `null`.
|
|
1019
|
+
subscribers:
|
|
1020
|
+
type: array
|
|
1021
|
+
items:
|
|
1022
|
+
type: string
|
|
1023
|
+
format: email
|
|
1024
|
+
default: []
|
|
1025
|
+
description: Emails of teammates to subscribe to this item's Slack pings at creation.
|
|
1026
|
+
tags:
|
|
1027
|
+
type: array
|
|
1028
|
+
items:
|
|
1029
|
+
type: string
|
|
1030
|
+
default: []
|
|
1031
|
+
description: Tag names to attach at creation (get-or-created by name, deduped case-insensitively).
|
|
710
1032
|
reporterEmail:
|
|
711
1033
|
anyOf:
|
|
712
1034
|
- type: string
|
|
@@ -773,17 +1095,23 @@ OpsItemStatus:
|
|
|
773
1095
|
- pending_approval
|
|
774
1096
|
- triage
|
|
775
1097
|
- triaged
|
|
1098
|
+
- investigating_by_ai
|
|
776
1099
|
- in_progress
|
|
1100
|
+
- blocked
|
|
777
1101
|
- ready_for_qa
|
|
778
1102
|
- resolved
|
|
779
1103
|
- wont_fix
|
|
780
1104
|
description: >-
|
|
781
1105
|
Lifecycle status of a queue item. The working flow is `open` → `triaged` →
|
|
782
1106
|
`in_progress` → `ready_for_qa` → `resolved` (or `wont_fix`, terminal from
|
|
783
|
-
any earlier stage). `
|
|
1107
|
+
any earlier stage). `blocked` marks an item that can't progress until an
|
|
1108
|
+
external dependency clears — a working state a human sets and clears.
|
|
1109
|
+
`ready_for_qa` is what a developer sets once a fix
|
|
784
1110
|
lands; `resolved` is the QA sign-off, normally flipped in the dashboard
|
|
785
1111
|
after verification — set it directly from code only when the fix has been
|
|
786
|
-
verified end-to-end.
|
|
1112
|
+
verified end-to-end. `investigating_by_ai` is a system-owned display state —
|
|
1113
|
+
set when the AI agent (Jarvis) picks an item up to investigate, never chosen
|
|
1114
|
+
by a human — so it is shown but not offered as a manual choice. Two
|
|
787
1115
|
human-gated holding states park an item OUT of the work queue until a human
|
|
788
1116
|
promotes it to `open` in the dashboard, so `GET /api/admin/ops` excludes
|
|
789
1117
|
them under `status=all`/default and returns them only when requested as an
|
|
@@ -806,6 +1134,31 @@ OpsItemPriority:
|
|
|
806
1134
|
Triage priority of a queue item. The lowest tier is `nice_to_have` (not
|
|
807
1135
|
`low`) — carried over from the feature-request "importance" scale this
|
|
808
1136
|
priority set replaced.
|
|
1137
|
+
OpsInvestigationState:
|
|
1138
|
+
type: string
|
|
1139
|
+
enum:
|
|
1140
|
+
- pr_ready
|
|
1141
|
+
- investigated
|
|
1142
|
+
- detected
|
|
1143
|
+
- question
|
|
1144
|
+
- ready_for_qa
|
|
1145
|
+
- pending_approval
|
|
1146
|
+
- needs_triage
|
|
1147
|
+
- working
|
|
1148
|
+
- triaged_low
|
|
1149
|
+
- backlog
|
|
1150
|
+
description: >-
|
|
1151
|
+
Where automation has taken an item in the investigation lifecycle — the
|
|
1152
|
+
signal the ops cockpit renders as "what AI did" plus the one action expected
|
|
1153
|
+
of the user. It is **written as a side-effect of the actions that already
|
|
1154
|
+
happen**, never authored on its own: linking a PR sets `pr_ready`, moving to
|
|
1155
|
+
`in_progress` sets `working`, `ready_for_qa` sets `ready_for_qa`, a
|
|
1156
|
+
system/assistant reply sets `question`, resolving clears it, and creation
|
|
1157
|
+
seeds `needs_triage`/`backlog` (by priority) or `investigated`/`detected`
|
|
1158
|
+
for auto-filed error/alert tickets. `triaged_low` marks a low-signal item AI
|
|
1159
|
+
has looked at but that nothing is moving. Absent on rows filed before the
|
|
1160
|
+
field existed — consumers should treat a missing value as "derive from the
|
|
1161
|
+
other fields".
|
|
809
1162
|
OpsItemPriorityOrNull:
|
|
810
1163
|
anyOf:
|
|
811
1164
|
- $ref: "#/OpsItemPriority"
|
|
@@ -816,6 +1169,22 @@ OpsItemNotifyOrNull:
|
|
|
816
1169
|
- $ref: ./common.yaml#/NotificationTarget
|
|
817
1170
|
- type: "null"
|
|
818
1171
|
description: Where this item's completion notification lands, or `null`.
|
|
1172
|
+
OpsRunAction:
|
|
1173
|
+
type: string
|
|
1174
|
+
enum:
|
|
1175
|
+
- link_pr
|
|
1176
|
+
- notify
|
|
1177
|
+
- status
|
|
1178
|
+
- superseded
|
|
1179
|
+
description: >-
|
|
1180
|
+
The final action that closed a run record — `link_pr`/`notify` are the
|
|
1181
|
+
agent's terminal ops actions, `status` a completion status flip
|
|
1182
|
+
(ready_for_qa/resolved), `superseded` a newer ack replacing an open run.
|
|
1183
|
+
OpsRunActionOrNull:
|
|
1184
|
+
anyOf:
|
|
1185
|
+
- $ref: "#/OpsRunAction"
|
|
1186
|
+
- type: "null"
|
|
1187
|
+
description: Which final action closed the run, or `null` while it is open (or a non-run record).
|
|
819
1188
|
UpdateOpsItemStatusRequest:
|
|
820
1189
|
type: object
|
|
821
1190
|
properties:
|
|
@@ -933,10 +1302,129 @@ LinkPrToOpsItemResponse:
|
|
|
933
1302
|
id:
|
|
934
1303
|
type: string
|
|
935
1304
|
description: Item id that was updated.
|
|
1305
|
+
pr:
|
|
1306
|
+
anyOf:
|
|
1307
|
+
- $ref: "#/GithubPrLink"
|
|
1308
|
+
- type: "null"
|
|
1309
|
+
description: "The PR link now recorded on the item (`connectorData.github.pr`), or `null` after an unlink (`prNumber: null`)."
|
|
936
1310
|
required:
|
|
937
1311
|
- id
|
|
1312
|
+
- pr
|
|
938
1313
|
additionalProperties: false
|
|
939
|
-
description: Response for
|
|
1314
|
+
description: Response for `POST /api/admin/ops/{handle}/link-pr` — the item id and the resulting PR link.
|
|
1315
|
+
AckOpsItemRequest:
|
|
1316
|
+
type: object
|
|
1317
|
+
properties:
|
|
1318
|
+
agent:
|
|
1319
|
+
type: string
|
|
1320
|
+
enum:
|
|
1321
|
+
- claude
|
|
1322
|
+
- cursor
|
|
1323
|
+
- copilot
|
|
1324
|
+
- jules
|
|
1325
|
+
- gemini
|
|
1326
|
+
- jarvis
|
|
1327
|
+
description: >-
|
|
1328
|
+
The AI agent type acking on the item's behalf — pass your own type when
|
|
1329
|
+
you are a coding agent (Claude Code passes `claude`, Cursor `cursor`,
|
|
1330
|
+
Copilot `copilot`, Jules/Gemini `jules`). Omit entirely for a human ack
|
|
1331
|
+
by the authenticated caller.
|
|
1332
|
+
sessionId:
|
|
1333
|
+
type: string
|
|
1334
|
+
maxLength: 300
|
|
1335
|
+
description: >-
|
|
1336
|
+
The agent-run session id (e.g. Claude's `session_01…`), so the dashboard
|
|
1337
|
+
can deep-link to the exact run page. Omit when the harness has no
|
|
1338
|
+
session id.
|
|
1339
|
+
additionalProperties: false
|
|
1340
|
+
description: >-
|
|
1341
|
+
Body for `POST /api/admin/ops/{handle}/ack`. With `agent` set this is an AI
|
|
1342
|
+
ack — the named agent type must have a connected trigger connector in the
|
|
1343
|
+
project, or the call fails with `AGENT_NOT_CONNECTED` and instructions to
|
|
1344
|
+
query the available agents (`ops agents list`). `gemini` is accepted as an
|
|
1345
|
+
alias for `jules`. Without `agent` it is a HUMAN ack by the authenticated
|
|
1346
|
+
caller.
|
|
1347
|
+
AckOpsItemResponse:
|
|
1348
|
+
type: object
|
|
1349
|
+
properties:
|
|
1350
|
+
id:
|
|
1351
|
+
type: string
|
|
1352
|
+
description: Item id that was acked.
|
|
1353
|
+
number:
|
|
1354
|
+
anyOf:
|
|
1355
|
+
- type: number
|
|
1356
|
+
- type: "null"
|
|
1357
|
+
description: Per-project item number.
|
|
1358
|
+
status:
|
|
1359
|
+
type: string
|
|
1360
|
+
description: The working status the ack moved the item into (`investigating_by_ai` for an AI ack, `in_progress` for a human one).
|
|
1361
|
+
runId:
|
|
1362
|
+
type: string
|
|
1363
|
+
description: Id of the run record the ack opened.
|
|
1364
|
+
agent:
|
|
1365
|
+
anyOf:
|
|
1366
|
+
- type: string
|
|
1367
|
+
- type: "null"
|
|
1368
|
+
description: The AI agent type working the item; `null` for a human ack.
|
|
1369
|
+
connectorName:
|
|
1370
|
+
anyOf:
|
|
1371
|
+
- type: string
|
|
1372
|
+
- type: "null"
|
|
1373
|
+
description: Display name of the connected agent (the connector's name); `null` for a human ack.
|
|
1374
|
+
sessionId:
|
|
1375
|
+
anyOf:
|
|
1376
|
+
- type: string
|
|
1377
|
+
- type: "null"
|
|
1378
|
+
description: The session id recorded on the run, if one was supplied.
|
|
1379
|
+
startedAt:
|
|
1380
|
+
type: string
|
|
1381
|
+
description: ISO-8601 timestamp the run started (the ack time).
|
|
1382
|
+
required:
|
|
1383
|
+
- id
|
|
1384
|
+
- number
|
|
1385
|
+
- status
|
|
1386
|
+
- runId
|
|
1387
|
+
- agent
|
|
1388
|
+
- connectorName
|
|
1389
|
+
- sessionId
|
|
1390
|
+
- startedAt
|
|
1391
|
+
additionalProperties: false
|
|
1392
|
+
description: Response for `POST /api/admin/ops/{handle}/ack` — the opened run.
|
|
1393
|
+
OpsAgentProfile:
|
|
1394
|
+
type: object
|
|
1395
|
+
properties:
|
|
1396
|
+
connectorId:
|
|
1397
|
+
type: string
|
|
1398
|
+
description: The connector row id — what an agent assignment stores.
|
|
1399
|
+
provider:
|
|
1400
|
+
type: string
|
|
1401
|
+
enum:
|
|
1402
|
+
- claude_trigger
|
|
1403
|
+
- cursor_trigger
|
|
1404
|
+
- copilot_trigger
|
|
1405
|
+
- jules_trigger
|
|
1406
|
+
description: The trigger-connector provider backing this agent.
|
|
1407
|
+
name:
|
|
1408
|
+
type: string
|
|
1409
|
+
description: Display name — the connector's `name`, or the provider default (e.g. "Claude").
|
|
1410
|
+
handle:
|
|
1411
|
+
type: string
|
|
1412
|
+
description: Mention/search handle — the kebab-cased name (e.g. `claude`).
|
|
1413
|
+
required:
|
|
1414
|
+
- connectorId
|
|
1415
|
+
- provider
|
|
1416
|
+
- name
|
|
1417
|
+
- handle
|
|
1418
|
+
additionalProperties: false
|
|
1419
|
+
description: One connected, assignable AI agent (an authenticated trigger connector).
|
|
1420
|
+
ListOpsAgentsResponse:
|
|
1421
|
+
type: array
|
|
1422
|
+
items:
|
|
1423
|
+
$ref: "#/OpsAgentProfile"
|
|
1424
|
+
description: >-
|
|
1425
|
+
The project's connected AI agents — the agent types `POST
|
|
1426
|
+
/api/admin/ops/{handle}/ack` accepts. Empty when no trigger connector is
|
|
1427
|
+
connected yet.
|
|
940
1428
|
OpsCommentAuthorType:
|
|
941
1429
|
type: string
|
|
942
1430
|
enum:
|
|
@@ -1112,3 +1600,447 @@ ListSlackChannelsResponse:
|
|
|
1112
1600
|
- channels
|
|
1113
1601
|
additionalProperties: false
|
|
1114
1602
|
description: Response for `GET /api/admin/slack/channels`.
|
|
1603
|
+
DeleteOpsItemResponse:
|
|
1604
|
+
type: object
|
|
1605
|
+
properties:
|
|
1606
|
+
ok:
|
|
1607
|
+
type: boolean
|
|
1608
|
+
const: true
|
|
1609
|
+
description: Always `true` — the item (and its comments, attachments, tags, and investigation records) was deleted.
|
|
1610
|
+
required:
|
|
1611
|
+
- ok
|
|
1612
|
+
additionalProperties: false
|
|
1613
|
+
description: Response for `DELETE /api/admin/ops/{handle}`.
|
|
1614
|
+
OpsInvestigation:
|
|
1615
|
+
type: object
|
|
1616
|
+
properties:
|
|
1617
|
+
id:
|
|
1618
|
+
type: string
|
|
1619
|
+
description: Investigation record id.
|
|
1620
|
+
feedbackId:
|
|
1621
|
+
type: string
|
|
1622
|
+
description: The queue item this record hangs off.
|
|
1623
|
+
kind:
|
|
1624
|
+
type: string
|
|
1625
|
+
enum:
|
|
1626
|
+
- investigated
|
|
1627
|
+
- detected
|
|
1628
|
+
- question
|
|
1629
|
+
- ready_for_qa
|
|
1630
|
+
- working
|
|
1631
|
+
- note
|
|
1632
|
+
description: "Which lifecycle stage the record documents — mirrors the investigation-state buckets the cockpit renders. `working` records double as run rows (see `OpsRun`)."
|
|
1633
|
+
summary:
|
|
1634
|
+
anyOf:
|
|
1635
|
+
- type: string
|
|
1636
|
+
- type: "null"
|
|
1637
|
+
description: One-line summary of the record, or `null`.
|
|
1638
|
+
findings:
|
|
1639
|
+
anyOf:
|
|
1640
|
+
- type: string
|
|
1641
|
+
- type: "null"
|
|
1642
|
+
description: The agent's full findings write-up (markdown), or `null`.
|
|
1643
|
+
question:
|
|
1644
|
+
anyOf:
|
|
1645
|
+
- type: string
|
|
1646
|
+
- type: "null"
|
|
1647
|
+
description: A blocking question for the team (markdown), or `null`.
|
|
1648
|
+
qaNotes:
|
|
1649
|
+
anyOf:
|
|
1650
|
+
- type: string
|
|
1651
|
+
- type: "null"
|
|
1652
|
+
description: How to verify the fix — QA notes (markdown), or `null`.
|
|
1653
|
+
agent:
|
|
1654
|
+
anyOf:
|
|
1655
|
+
- type: string
|
|
1656
|
+
enum:
|
|
1657
|
+
- jarvis
|
|
1658
|
+
- claude
|
|
1659
|
+
- cursor
|
|
1660
|
+
- copilot
|
|
1661
|
+
- jules
|
|
1662
|
+
- type: "null"
|
|
1663
|
+
description: Which agent produced the record (`jarvis` is the in-house assistant; the rest are trigger-connector coding agents), or `null`.
|
|
1664
|
+
model:
|
|
1665
|
+
anyOf:
|
|
1666
|
+
- type: string
|
|
1667
|
+
- type: "null"
|
|
1668
|
+
description: The model the agent ran on (self-reported), or `null`.
|
|
1669
|
+
connectorId:
|
|
1670
|
+
anyOf:
|
|
1671
|
+
- type: string
|
|
1672
|
+
- type: "null"
|
|
1673
|
+
description: The trigger-connector row id the agent ran through, or `null`.
|
|
1674
|
+
prNumber:
|
|
1675
|
+
anyOf:
|
|
1676
|
+
- type: number
|
|
1677
|
+
- type: "null"
|
|
1678
|
+
description: A PR the record references (e.g. the run's fixing PR), or `null`.
|
|
1679
|
+
prUrl:
|
|
1680
|
+
anyOf:
|
|
1681
|
+
- type: string
|
|
1682
|
+
- type: "null"
|
|
1683
|
+
description: HTML URL of that PR, or `null`.
|
|
1684
|
+
sources:
|
|
1685
|
+
anyOf:
|
|
1686
|
+
- type: array
|
|
1687
|
+
items:
|
|
1688
|
+
type: object
|
|
1689
|
+
properties:
|
|
1690
|
+
path:
|
|
1691
|
+
type: string
|
|
1692
|
+
description: Repo-relative file path the agent inspected.
|
|
1693
|
+
url:
|
|
1694
|
+
type: string
|
|
1695
|
+
description: External link the agent consulted.
|
|
1696
|
+
label:
|
|
1697
|
+
type: string
|
|
1698
|
+
description: Human-readable label for the source.
|
|
1699
|
+
additionalProperties: false
|
|
1700
|
+
description: One file/link the agent inspected while producing the record.
|
|
1701
|
+
- type: "null"
|
|
1702
|
+
description: The files/links the agent inspected, or `null`.
|
|
1703
|
+
confidence:
|
|
1704
|
+
anyOf:
|
|
1705
|
+
- type: string
|
|
1706
|
+
enum:
|
|
1707
|
+
- low
|
|
1708
|
+
- medium
|
|
1709
|
+
- high
|
|
1710
|
+
- type: "null"
|
|
1711
|
+
description: The agent's self-reported confidence, or `null`.
|
|
1712
|
+
tokensUsed:
|
|
1713
|
+
anyOf:
|
|
1714
|
+
- type: number
|
|
1715
|
+
- type: "null"
|
|
1716
|
+
description: Tokens the run consumed (self-reported), or `null`.
|
|
1717
|
+
durationMs:
|
|
1718
|
+
anyOf:
|
|
1719
|
+
- type: number
|
|
1720
|
+
- type: "null"
|
|
1721
|
+
description: Run duration in milliseconds, or `null`.
|
|
1722
|
+
visibility:
|
|
1723
|
+
type: string
|
|
1724
|
+
enum:
|
|
1725
|
+
- draft
|
|
1726
|
+
- published
|
|
1727
|
+
description: "`draft` records are the agent's scratch state; only `published` ones render in the panel (and are returned by default)."
|
|
1728
|
+
startedAt:
|
|
1729
|
+
anyOf:
|
|
1730
|
+
- type: string
|
|
1731
|
+
- type: "null"
|
|
1732
|
+
description: ISO-8601 timestamp the work started, or `null`.
|
|
1733
|
+
completedAt:
|
|
1734
|
+
anyOf:
|
|
1735
|
+
- type: string
|
|
1736
|
+
- type: "null"
|
|
1737
|
+
description: ISO-8601 timestamp the work finished, or `null`.
|
|
1738
|
+
sessionId:
|
|
1739
|
+
anyOf:
|
|
1740
|
+
- type: string
|
|
1741
|
+
- type: "null"
|
|
1742
|
+
description: "The agent-run session id, or `null`."
|
|
1743
|
+
sessionUrl:
|
|
1744
|
+
anyOf:
|
|
1745
|
+
- type: string
|
|
1746
|
+
- type: "null"
|
|
1747
|
+
description: "The run's session-page deep link, or `null`. DERIVED (never stored): rebuilt from `sessionId` + the run's trigger connector — Claude's routine id (`?trigger=`), Copilot's repo (`/tasks/`), Cursor/Jules from the id alone. Only `working` run records carry one."
|
|
1748
|
+
ackedBy:
|
|
1749
|
+
anyOf:
|
|
1750
|
+
- type: string
|
|
1751
|
+
- type: "null"
|
|
1752
|
+
description: Email of the human who acked (run records for a human ack), or `null`.
|
|
1753
|
+
completedAction:
|
|
1754
|
+
$ref: "#/OpsRunActionOrNull"
|
|
1755
|
+
createdAt:
|
|
1756
|
+
type: string
|
|
1757
|
+
description: ISO-8601 creation timestamp.
|
|
1758
|
+
updatedAt:
|
|
1759
|
+
type: string
|
|
1760
|
+
description: ISO-8601 last-update timestamp.
|
|
1761
|
+
required:
|
|
1762
|
+
- id
|
|
1763
|
+
- feedbackId
|
|
1764
|
+
- kind
|
|
1765
|
+
- summary
|
|
1766
|
+
- findings
|
|
1767
|
+
- question
|
|
1768
|
+
- qaNotes
|
|
1769
|
+
- agent
|
|
1770
|
+
- model
|
|
1771
|
+
- connectorId
|
|
1772
|
+
- prNumber
|
|
1773
|
+
- prUrl
|
|
1774
|
+
- sources
|
|
1775
|
+
- confidence
|
|
1776
|
+
- tokensUsed
|
|
1777
|
+
- durationMs
|
|
1778
|
+
- visibility
|
|
1779
|
+
- startedAt
|
|
1780
|
+
- completedAt
|
|
1781
|
+
- sessionId
|
|
1782
|
+
- sessionUrl
|
|
1783
|
+
- ackedBy
|
|
1784
|
+
- completedAction
|
|
1785
|
+
- createdAt
|
|
1786
|
+
- updatedAt
|
|
1787
|
+
additionalProperties: false
|
|
1788
|
+
description: "One structured investigation record on a queue item — the read-only write-up an AI agent produces while working it (findings / blocking question / QA notes), rendered by the cockpit's detail panel."
|
|
1789
|
+
ListOpsInvestigationsResponse:
|
|
1790
|
+
type: array
|
|
1791
|
+
items:
|
|
1792
|
+
$ref: "#/OpsInvestigation"
|
|
1793
|
+
description: Response for `GET /api/admin/ops/{handle}/investigation` — the item's `published` investigation records, newest first (max 50).
|
|
1794
|
+
CreateOpsInvestigationRequest:
|
|
1795
|
+
type: object
|
|
1796
|
+
properties:
|
|
1797
|
+
kind:
|
|
1798
|
+
type: string
|
|
1799
|
+
enum:
|
|
1800
|
+
- investigated
|
|
1801
|
+
- detected
|
|
1802
|
+
- question
|
|
1803
|
+
- ready_for_qa
|
|
1804
|
+
- working
|
|
1805
|
+
- note
|
|
1806
|
+
description: Which lifecycle stage the record documents.
|
|
1807
|
+
summary:
|
|
1808
|
+
type: string
|
|
1809
|
+
maxLength: 2000
|
|
1810
|
+
description: One-line summary of the record.
|
|
1811
|
+
findings:
|
|
1812
|
+
type: string
|
|
1813
|
+
maxLength: 50000
|
|
1814
|
+
description: The full findings write-up (markdown).
|
|
1815
|
+
question:
|
|
1816
|
+
type: string
|
|
1817
|
+
maxLength: 10000
|
|
1818
|
+
description: A blocking question for the team (markdown).
|
|
1819
|
+
qaNotes:
|
|
1820
|
+
type: string
|
|
1821
|
+
maxLength: 50000
|
|
1822
|
+
description: How to verify the fix — QA notes (markdown).
|
|
1823
|
+
agent:
|
|
1824
|
+
type: string
|
|
1825
|
+
enum:
|
|
1826
|
+
- jarvis
|
|
1827
|
+
- claude
|
|
1828
|
+
- cursor
|
|
1829
|
+
- copilot
|
|
1830
|
+
- jules
|
|
1831
|
+
description: The agent type producing the record — pass your own type when you are a coding agent.
|
|
1832
|
+
model:
|
|
1833
|
+
type: string
|
|
1834
|
+
maxLength: 200
|
|
1835
|
+
description: The model the agent ran on.
|
|
1836
|
+
connectorId:
|
|
1837
|
+
type: string
|
|
1838
|
+
maxLength: 200
|
|
1839
|
+
description: The trigger-connector row id the agent ran through.
|
|
1840
|
+
prNumber:
|
|
1841
|
+
type: integer
|
|
1842
|
+
description: A PR the record references.
|
|
1843
|
+
prUrl:
|
|
1844
|
+
type: string
|
|
1845
|
+
format: uri
|
|
1846
|
+
maxLength: 2000
|
|
1847
|
+
description: HTML URL of that PR.
|
|
1848
|
+
sources:
|
|
1849
|
+
type: array
|
|
1850
|
+
maxItems: 200
|
|
1851
|
+
items:
|
|
1852
|
+
type: object
|
|
1853
|
+
properties:
|
|
1854
|
+
path:
|
|
1855
|
+
type: string
|
|
1856
|
+
description: Repo-relative file path inspected.
|
|
1857
|
+
url:
|
|
1858
|
+
type: string
|
|
1859
|
+
description: External link consulted.
|
|
1860
|
+
label:
|
|
1861
|
+
type: string
|
|
1862
|
+
description: Human-readable label for the source.
|
|
1863
|
+
additionalProperties: false
|
|
1864
|
+
description: One file/link inspected while producing the record.
|
|
1865
|
+
description: The files/links inspected.
|
|
1866
|
+
confidence:
|
|
1867
|
+
type: string
|
|
1868
|
+
enum:
|
|
1869
|
+
- low
|
|
1870
|
+
- medium
|
|
1871
|
+
- high
|
|
1872
|
+
description: Self-reported confidence in the record.
|
|
1873
|
+
tokensUsed:
|
|
1874
|
+
type: integer
|
|
1875
|
+
description: Tokens the run consumed.
|
|
1876
|
+
durationMs:
|
|
1877
|
+
type: integer
|
|
1878
|
+
description: Run duration in milliseconds.
|
|
1879
|
+
visibility:
|
|
1880
|
+
type: string
|
|
1881
|
+
enum:
|
|
1882
|
+
- draft
|
|
1883
|
+
- published
|
|
1884
|
+
description: Record visibility. Defaults to `published`; `draft` keeps it out of the panel.
|
|
1885
|
+
startedAt:
|
|
1886
|
+
type: string
|
|
1887
|
+
description: ISO-8601 timestamp the work started.
|
|
1888
|
+
completedAt:
|
|
1889
|
+
type: string
|
|
1890
|
+
description: ISO-8601 timestamp the work finished.
|
|
1891
|
+
sessionId:
|
|
1892
|
+
type: string
|
|
1893
|
+
maxLength: 300
|
|
1894
|
+
description: The agent-run session id, so the dashboard can deep-link to the run.
|
|
1895
|
+
required:
|
|
1896
|
+
- kind
|
|
1897
|
+
additionalProperties: false
|
|
1898
|
+
description: "Body for `POST /api/admin/ops/{handle}/investigation`. `kind` is required; include at least one content field (`summary`/`findings`/`question`/`qaNotes`) — the panel renders whatever it gets."
|
|
1899
|
+
UpdateOpsInvestigationRequest:
|
|
1900
|
+
type: object
|
|
1901
|
+
properties:
|
|
1902
|
+
kind:
|
|
1903
|
+
type: string
|
|
1904
|
+
enum:
|
|
1905
|
+
- investigated
|
|
1906
|
+
- detected
|
|
1907
|
+
- question
|
|
1908
|
+
- ready_for_qa
|
|
1909
|
+
- working
|
|
1910
|
+
- note
|
|
1911
|
+
description: Reclassify the record's lifecycle stage (e.g. flip a `working` run into `investigated` once findings land).
|
|
1912
|
+
summary:
|
|
1913
|
+
type: string
|
|
1914
|
+
maxLength: 2000
|
|
1915
|
+
description: One-line summary of the record.
|
|
1916
|
+
findings:
|
|
1917
|
+
type: string
|
|
1918
|
+
maxLength: 50000
|
|
1919
|
+
description: The full findings write-up (markdown).
|
|
1920
|
+
question:
|
|
1921
|
+
type: string
|
|
1922
|
+
maxLength: 10000
|
|
1923
|
+
description: A blocking question for the team (markdown).
|
|
1924
|
+
qaNotes:
|
|
1925
|
+
type: string
|
|
1926
|
+
maxLength: 50000
|
|
1927
|
+
description: How to verify the fix — QA notes (markdown).
|
|
1928
|
+
model:
|
|
1929
|
+
type: string
|
|
1930
|
+
maxLength: 200
|
|
1931
|
+
description: The model the agent ran on.
|
|
1932
|
+
prNumber:
|
|
1933
|
+
type: integer
|
|
1934
|
+
description: A PR the record references.
|
|
1935
|
+
prUrl:
|
|
1936
|
+
type: string
|
|
1937
|
+
format: uri
|
|
1938
|
+
maxLength: 2000
|
|
1939
|
+
description: HTML URL of that PR.
|
|
1940
|
+
sources:
|
|
1941
|
+
type: array
|
|
1942
|
+
maxItems: 200
|
|
1943
|
+
items:
|
|
1944
|
+
type: object
|
|
1945
|
+
properties:
|
|
1946
|
+
path:
|
|
1947
|
+
type: string
|
|
1948
|
+
description: Repo-relative file path inspected.
|
|
1949
|
+
url:
|
|
1950
|
+
type: string
|
|
1951
|
+
description: External link consulted.
|
|
1952
|
+
label:
|
|
1953
|
+
type: string
|
|
1954
|
+
description: Human-readable label for the source.
|
|
1955
|
+
additionalProperties: false
|
|
1956
|
+
description: One file/link inspected while producing the record.
|
|
1957
|
+
description: The files/links inspected.
|
|
1958
|
+
confidence:
|
|
1959
|
+
type: string
|
|
1960
|
+
enum:
|
|
1961
|
+
- low
|
|
1962
|
+
- medium
|
|
1963
|
+
- high
|
|
1964
|
+
description: Self-reported confidence in the record.
|
|
1965
|
+
tokensUsed:
|
|
1966
|
+
type: integer
|
|
1967
|
+
description: Tokens the run consumed.
|
|
1968
|
+
durationMs:
|
|
1969
|
+
type: integer
|
|
1970
|
+
description: Run duration in milliseconds.
|
|
1971
|
+
visibility:
|
|
1972
|
+
type: string
|
|
1973
|
+
enum:
|
|
1974
|
+
- draft
|
|
1975
|
+
- published
|
|
1976
|
+
description: Record visibility. `draft` keeps it out of the panel; `published` surfaces it.
|
|
1977
|
+
completedAt:
|
|
1978
|
+
type: string
|
|
1979
|
+
description: ISO-8601 timestamp the work finished. Set it (or flip `kind` off `working`) to mark a run record done.
|
|
1980
|
+
sessionId:
|
|
1981
|
+
type: string
|
|
1982
|
+
maxLength: 300
|
|
1983
|
+
description: The agent-run session id, so the dashboard can deep-link to the run.
|
|
1984
|
+
additionalProperties: false
|
|
1985
|
+
minProperties: 1
|
|
1986
|
+
description: "Body for `PATCH /api/admin/ops/{handle}/investigation/{investigationId}` — a partial update of one existing investigation record (typically the `working` run record you were handed). Send only the fields you want to change; at least one is required."
|
|
1987
|
+
NotificationFeedItem:
|
|
1988
|
+
type: object
|
|
1989
|
+
properties:
|
|
1990
|
+
id:
|
|
1991
|
+
type: string
|
|
1992
|
+
description: Notification id (pass to the mark-read `POST` to mark just this one).
|
|
1993
|
+
event:
|
|
1994
|
+
type: string
|
|
1995
|
+
description: The notification's event key (e.g. `ops.attention`, `feedback.completed`, `comment.mention`).
|
|
1996
|
+
title:
|
|
1997
|
+
type: string
|
|
1998
|
+
description: One-line headline.
|
|
1999
|
+
body:
|
|
2000
|
+
type: string
|
|
2001
|
+
description: "Notification body. For `ops.attention` escalations: line 1 = summary, following lines = numbered unblock steps."
|
|
2002
|
+
href:
|
|
2003
|
+
anyOf:
|
|
2004
|
+
- type: string
|
|
2005
|
+
- type: "null"
|
|
2006
|
+
description: Dashboard-relative deep link to the related item, or `null`.
|
|
2007
|
+
createdAt:
|
|
2008
|
+
type: string
|
|
2009
|
+
description: ISO-8601 creation timestamp.
|
|
2010
|
+
read:
|
|
2011
|
+
type: boolean
|
|
2012
|
+
description: Whether the notification has been marked read.
|
|
2013
|
+
required:
|
|
2014
|
+
- id
|
|
2015
|
+
- event
|
|
2016
|
+
- title
|
|
2017
|
+
- body
|
|
2018
|
+
- href
|
|
2019
|
+
- createdAt
|
|
2020
|
+
- read
|
|
2021
|
+
additionalProperties: false
|
|
2022
|
+
description: One in-app notification as the bell feed renders it.
|
|
2023
|
+
ListNotificationFeedResponse:
|
|
2024
|
+
type: object
|
|
2025
|
+
properties:
|
|
2026
|
+
notifications:
|
|
2027
|
+
type: array
|
|
2028
|
+
items:
|
|
2029
|
+
$ref: "#/NotificationFeedItem"
|
|
2030
|
+
description: The feed, newest first (max 30). Project-wide broadcasts plus notifications addressed to the caller; events muted for the in-app channel are omitted.
|
|
2031
|
+
unread:
|
|
2032
|
+
type: integer
|
|
2033
|
+
description: Count of the caller's unread (visible, unmuted) notifications.
|
|
2034
|
+
required:
|
|
2035
|
+
- notifications
|
|
2036
|
+
- unread
|
|
2037
|
+
additionalProperties: false
|
|
2038
|
+
description: Response for `GET /api/admin/notifications/feed` — the bell feed plus its unread badge count.
|
|
2039
|
+
MarkNotificationsReadRequest:
|
|
2040
|
+
type: object
|
|
2041
|
+
properties:
|
|
2042
|
+
id:
|
|
2043
|
+
type: string
|
|
2044
|
+
description: Mark just this notification read. Omit to mark the caller's whole feed read.
|
|
2045
|
+
additionalProperties: false
|
|
2046
|
+
description: "Body for `POST /api/admin/notifications/feed`. An empty body (`{}`) marks ALL of the caller's notifications read."
|