Get Incident Timeline
curl --request GET \
--url http://{host}:{port}/{basePath}/incidents/{name}/timeline \
--header 'Authorization: <api-key>'import requests
url = "http://{host}:{port}/{basePath}/incidents/{name}/timeline"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('http://{host}:{port}/{basePath}/incidents/{name}/timeline', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "62437",
CURLOPT_URL => "http://{host}:{port}/{basePath}/incidents/{name}/timeline",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://{host}:{port}/{basePath}/incidents/{name}/timeline"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://{host}:{port}/{basePath}/incidents/{name}/timeline")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://{host}:{port}/{basePath}/incidents/{name}/timeline")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"apiVersion": "v1",
"kind": "IncidentTimeline",
"metadata": {
"name": "INC-20260319-001",
"namespace": "production",
"eventCount": 6
},
"events": [
{
"timestamp": "2026-03-19T15:20:00Z",
"type": "Detection",
"source": "k8s-watcher",
"message": "OOMKill detectado no pod payment-service-7d4b8c9f6-x2k4m",
"severity": "high"
},
{
"timestamp": "2026-03-19T15:20:05Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Iniciando analise de root cause com IA",
"details": {
"model": "claude-sonnet-4-20250514",
"contextSize": 4200
}
},
{
"timestamp": "2026-03-19T15:20:30Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Root cause identificado: memory limit insuficiente (512Mi) para carga atual",
"details": {
"confidence": 0.87,
"recommendation": "Aumentar memory limit para 1Gi"
}
},
{
"timestamp": "2026-03-19T15:21:00Z",
"type": "RunbookMatch",
"source": "runbook-engine",
"message": "Runbook 'oomkill-standard' selecionado para remediacao",
"details": {
"runbook": "runbook-oomkill-standard",
"matchScore": 0.92
}
},
{
"timestamp": "2026-03-19T15:21:05Z",
"type": "ApprovalRequired",
"source": "approval-workflow",
"message": "Aguardando aprovacao para executar remediacao (riskScore: 65)",
"details": {
"approvalName": "APR-20260319-001",
"requiredRole": "operator"
}
},
{
"timestamp": "2026-03-19T15:25:00Z",
"type": "Notification",
"source": "notification-manager",
"message": "Alerta enviado via Slack para canal #sre-alerts",
"details": {
"channel": "slack",
"target": "#sre-alerts"
}
}
]
}
Incidents
Get Incident Timeline
Returns the complete event timeline of an incident
GET
/
incidents
/
{name}
/
timeline
Get Incident Timeline
curl --request GET \
--url http://{host}:{port}/{basePath}/incidents/{name}/timeline \
--header 'Authorization: <api-key>'import requests
url = "http://{host}:{port}/{basePath}/incidents/{name}/timeline"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('http://{host}:{port}/{basePath}/incidents/{name}/timeline', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "62437",
CURLOPT_URL => "http://{host}:{port}/{basePath}/incidents/{name}/timeline",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "http://{host}:{port}/{basePath}/incidents/{name}/timeline"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://{host}:{port}/{basePath}/incidents/{name}/timeline")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("http://{host}:{port}/{basePath}/incidents/{name}/timeline")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"apiVersion": "v1",
"kind": "IncidentTimeline",
"metadata": {
"name": "INC-20260319-001",
"namespace": "production",
"eventCount": 6
},
"events": [
{
"timestamp": "2026-03-19T15:20:00Z",
"type": "Detection",
"source": "k8s-watcher",
"message": "OOMKill detectado no pod payment-service-7d4b8c9f6-x2k4m",
"severity": "high"
},
{
"timestamp": "2026-03-19T15:20:05Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Iniciando analise de root cause com IA",
"details": {
"model": "claude-sonnet-4-20250514",
"contextSize": 4200
}
},
{
"timestamp": "2026-03-19T15:20:30Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Root cause identificado: memory limit insuficiente (512Mi) para carga atual",
"details": {
"confidence": 0.87,
"recommendation": "Aumentar memory limit para 1Gi"
}
},
{
"timestamp": "2026-03-19T15:21:00Z",
"type": "RunbookMatch",
"source": "runbook-engine",
"message": "Runbook 'oomkill-standard' selecionado para remediacao",
"details": {
"runbook": "runbook-oomkill-standard",
"matchScore": 0.92
}
},
{
"timestamp": "2026-03-19T15:21:05Z",
"type": "ApprovalRequired",
"source": "approval-workflow",
"message": "Aguardando aprovacao para executar remediacao (riskScore: 65)",
"details": {
"approvalName": "APR-20260319-001",
"requiredRole": "operator"
}
},
{
"timestamp": "2026-03-19T15:25:00Z",
"type": "Notification",
"source": "notification-manager",
"message": "Alerta enviado via Slack para canal #sre-alerts",
"details": {
"channel": "slack",
"target": "#sre-alerts"
}
}
]
}
string
required
Unique incident name (e.g.,
INC-20260319-001){
"apiVersion": "v1",
"kind": "IncidentTimeline",
"metadata": {
"name": "INC-20260319-001",
"namespace": "production",
"eventCount": 6
},
"events": [
{
"timestamp": "2026-03-19T15:20:00Z",
"type": "Detection",
"source": "k8s-watcher",
"message": "OOMKill detectado no pod payment-service-7d4b8c9f6-x2k4m",
"severity": "high"
},
{
"timestamp": "2026-03-19T15:20:05Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Iniciando analise de root cause com IA",
"details": {
"model": "claude-sonnet-4-20250514",
"contextSize": 4200
}
},
{
"timestamp": "2026-03-19T15:20:30Z",
"type": "Analysis",
"source": "decision-engine",
"message": "Root cause identificado: memory limit insuficiente (512Mi) para carga atual",
"details": {
"confidence": 0.87,
"recommendation": "Aumentar memory limit para 1Gi"
}
},
{
"timestamp": "2026-03-19T15:21:00Z",
"type": "RunbookMatch",
"source": "runbook-engine",
"message": "Runbook 'oomkill-standard' selecionado para remediacao",
"details": {
"runbook": "runbook-oomkill-standard",
"matchScore": 0.92
}
},
{
"timestamp": "2026-03-19T15:21:05Z",
"type": "ApprovalRequired",
"source": "approval-workflow",
"message": "Aguardando aprovacao para executar remediacao (riskScore: 65)",
"details": {
"approvalName": "APR-20260319-001",
"requiredRole": "operator"
}
},
{
"timestamp": "2026-03-19T15:25:00Z",
"type": "Notification",
"source": "notification-manager",
"message": "Alerta enviado via Slack para canal #sre-alerts",
"details": {
"channel": "slack",
"target": "#sre-alerts"
}
}
]
}
Authorizations
Bearer token issued by the operator. Format: Authorization: Bearer <token>.
Path Parameters
Unique incident name.
Example:
"INC-20260319-001"
⌘I