84 lines
1.7 KiB
Markdown
84 lines
1.7 KiB
Markdown
# Contract: Admin List Views
|
|||
|
|
|
||
|
|
## `GET /admin/sla-runs`
|
||
|
|
|
||
|
|
**Auth**: `fastify.authenticate` only (agent-usable, per spec.md Assumptions).
|
||
|
|
|
||
|
|
**Query**: `status?: 'running' | 'paused' | 'warning' | 'breached' | 'completed'`
|
||
|
|
|
||
|
|
**Response `200`**:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": [
|
||
|
|
{
|
||
|
|
"ticketId": "string",
|
||
|
|
"ticketCode": "string",
|
||
|
|
"status": "string",
|
||
|
|
"firstResponseDueAt": "ISO 8601 datetime | null",
|
||
|
|
"resolutionDueAt": "ISO 8601 datetime | null",
|
||
|
|
"breachedAt": "ISO 8601 datetime | null",
|
||
|
|
"firstResponseBreachedAt": "ISO 8601 datetime | null"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"meta": null
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
**Response `400`**: an invalid `status` value.
|
||
|
|
|
||
|
|
## `GET /admin/escalation-events`
|
||
|
|
|
||
|
|
**Auth**: `fastify.authenticate` only.
|
||
|
|
|
||
|
|
**Query**: `limit?: number` (1-200, default 50)
|
||
|
|
|
||
|
|
**Response `200`**:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": [
|
||
|
|
{
|
||
|
|
"ticketId": "string",
|
||
|
|
"ticketCode": "string",
|
||
|
|
"reason": "string",
|
||
|
|
"ruleId": "string | null",
|
||
|
|
"triggeredBy": "string",
|
||
|
|
"toNodeId": "string | null",
|
||
|
|
"createdAt": "ISO 8601 datetime"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"meta": null
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
Ordered most-recent-first (`createdAt desc`).
|
||
|
|
|
||
|
|
## `GET /admin/products`
|
||
|
|
|
||
|
|
**Auth**: `fastify.authenticate` + `requireRole('ADMIN')`.
|
||
|
|
|
||
|
|
**Response `200`**:
|
||
|
|
|
||
|
|
```json
|
||
|
|
{
|
||
|
|
"success": true,
|
||
|
|
"data": [
|
||
|
|
{
|
||
|
|
"id": "string",
|
||
|
|
"externalProductId": "string",
|
||
|
|
"name": "string",
|
||
|
|
"status": "string",
|
||
|
|
"supportEnabled": true,
|
||
|
|
"integrationStatus": "active | suspended | null"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"meta": null
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
`integrationStatus` is `null` when the product has no `ProductIntegration` at all — never
|
||
|
|
defaulted to `"active"` or any other value that could be mistaken for a real integration state.
|