1.7 KiB
1.7 KiB
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:
{
"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:
{
"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:
{
"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.